1From ae84e5ef59bb24d5b8fd17e6756952f42c2d5c36 Mon Sep 17 00:00:00 2001
2From: rpm-build <rpm-build>
3Date: Thu, 23 Feb 2017 08:17:07 +0100
4Subject: [PATCH] Do not export/use setools.InfoFlowAnalysis and
5 setools.DomainTransitionAnalysis
6
7dta and infoflow modules require networkx which brings lot of dependencies.
8These dependencies are not necessary for setools module itself as it's
9used in policycoreutils.
10
11Therefore it's better to use setools.infoflow.InfoFlowAnalysis and
12setools.dta.DomainTransitionAnalysis and let the package containing
13sedta and seinfoflow to require python3-networkx
14
15Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
16[Refreshed for 4.3.0]
17Signed-off-by: Adam Duskett <aduskett@gmail.com>
18[Refreshed for 4.4.2]
19---
20 sedta                       | 3 ++-
21 seinfoflow                  | 5 +++--
22 setools/__init__.py         | 4 ++--
23 setoolsgui/apol/dta.py      | 2 +-
24 setoolsgui/apol/infoflow.py | 2 +-
25 tests/test_dta.py           | 2 +-
26 tests/test_infoflow.py      | 2 +-
27 7 files changed, 11 insertions(+), 9 deletions(-)
28
29diff --git a/sedta b/sedta
30index ffd9ede..4c53825 100755
31--- a/sedta
32+++ b/sedta
33@@ -10,6 +10,7 @@ import logging
34 import signal
35
36 import setools
37+import setools.dta
38
39
40 def print_transition(trans: setools.DomainTransition) -> None:
41@@ -104,7 +105,7 @@ else:
42
43 try:
44     p = setools.SELinuxPolicy(args.policy)
45-    g = setools.DomainTransitionAnalysis(p, reverse=args.reverse, exclude=args.exclude)
46+    g = setools.dta.DomainTransitionAnalysis(p, reverse=args.reverse, exclude=args.exclude)
47
48     if args.shortest_path or args.all_paths:
49         if args.shortest_path:
50diff --git a/seinfoflow b/seinfoflow
51index 5f4e764..a27b781 100755
52--- a/seinfoflow
53+++ b/seinfoflow
54@@ -5,6 +5,7 @@
55 #
56
57 import setools
58+import setools.infoflow
59 import argparse
60 import sys
61 import logging
62@@ -94,8 +95,8 @@ elif args.booleans is not None:
63 try:
64     p = setools.SELinuxPolicy(args.policy)
65     m = setools.PermissionMap(args.map)
66-    g = setools.InfoFlowAnalysis(p, m, min_weight=args.min_weight, exclude=args.exclude,
67-                                 booleans=booleans)
68+    g = setools.infoflow.InfoFlowAnalysis(p, m, min_weight=args.min_weight, exclude=args.exclude,
69+                                          booleans=booleans)
70
71     if args.shortest_path or args.all_paths:
72         if args.shortest_path:
73diff --git a/setools/__init__.py b/setools/__init__.py
74index ad9b36a..2bde01b 100644
75--- a/setools/__init__.py
76+++ b/setools/__init__.py
77@@ -77,11 +77,11 @@ from .pcideviceconquery import PcideviceconQuery
78 from .devicetreeconquery import DevicetreeconQuery
79
80 # Information Flow Analysis
81-from .infoflow import InfoFlowAnalysis
82+# from .infoflow import InfoFlowAnalysis
83 from .permmap import PermissionMap, RuleWeight, Mapping
84
85 # Domain Transition Analysis
86-from .dta import DomainTransitionAnalysis, DomainEntrypoint, DomainTransition
87+# from .dta import DomainTransitionAnalysis, DomainEntrypoint, DomainTransition
88
89 # Policy difference
90 from .diff import PolicyDifference
91diff --git a/setoolsgui/apol/dta.py b/setoolsgui/apol/dta.py
92index a78d960..e71c70a 100644
93--- a/setoolsgui/apol/dta.py
94+++ b/setoolsgui/apol/dta.py
95@@ -11,7 +11,7 @@ from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread
96 from PyQt5.QtGui import QPalette, QTextCursor
97 from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \
98     QTreeWidgetItem
99-from setools import DomainTransitionAnalysis
100+from setools.dta import DomainTransitionAnalysis
101
102 from ..logtosignal import LogHandlerToSignal
103 from .analysistab import AnalysisSection, AnalysisTab
104diff --git a/setoolsgui/apol/infoflow.py b/setoolsgui/apol/infoflow.py
105index fb9b409..738f1b8 100644
106--- a/setoolsgui/apol/infoflow.py
107+++ b/setoolsgui/apol/infoflow.py
108@@ -13,7 +13,7 @@ from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread
109 from PyQt5.QtGui import QPalette, QTextCursor
110 from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \
111     QTreeWidgetItem
112-from setools import InfoFlowAnalysis
113+from setools.infoflow import InfoFlowAnalysis
114 from setools.exception import UnmappedClass, UnmappedPermission
115
116 from ..logtosignal import LogHandlerToSignal
117diff --git a/tests/test_dta.py b/tests/test_dta.py
118index 7f9bbc9..48338c5 100644
119--- a/tests/test_dta.py
120+++ b/tests/test_dta.py
121@@ -5,7 +5,7 @@
122 import os
123 import unittest
124
125-from setools import DomainTransitionAnalysis
126+from setools.dta import DomainTransitionAnalysis
127 from setools import TERuletype as TERT
128 from setools.exception import InvalidType
129 from setools.policyrep import Type
130diff --git a/tests/test_infoflow.py b/tests/test_infoflow.py
131index 5a8f745..e25993b 100644
132--- a/tests/test_infoflow.py
133+++ b/tests/test_infoflow.py
134@@ -5,7 +5,7 @@
135 import os
136 import unittest
137
138-from setools import InfoFlowAnalysis
139+from setools.infoflow import InfoFlowAnalysis
140 from setools import TERuletype as TERT
141 from setools.exception import InvalidType
142 from setools.permmap import PermissionMap
143--
1442.26.2
145
146