add support for python installer
The best I could come up with for allowing compile_seccomp_policy
to be an executable script installed via setup.py.
Originally I cooked up a trick where setup.py also had:
data_files=[('minijail', ['constants.json'])],
and compile_seccomp_policy.py used:
constants_file = 'constants.json'
if pkg_resources.resource_exists(__name__, constants_file):
constants_file = pkg_resources.resource_filename(__name__, constants_file)
so that a package can ship with a constants.json and auotmatically use
it. This works when installed as a 'dist-package' egg, but CrOS installs
as a 'site-package' where this trick don't work (constants.json ends up in
another location under /usr, not to mention being stored with a board) and it
complicates the dependency story for the Makefile so I punted.
For both 'dist-package' and 'site-package' the plain "import XXX" form doesn't work
for files located in the same directory (results in a ModuleNotFoundError error),
so I've added a "from minijail import XXX" fallback so new & original cases both
work okay.
Bug: None
Test: `make tests`. Ran 'python3 setup.py install --record files.txt'
and verified the stubs in /usr/local/bin could be used to launch the 3
scripts without import errors.
Change-Id: I61fe0b624960c89fd715c1c60213edc2b736ad1c
diff --git a/tools/compiler.py b/tools/compiler.py
index 4e3881a..161eadf 100644
--- a/tools/compiler.py
+++ b/tools/compiler.py
@@ -20,8 +20,12 @@
import enum
-import bpf
-import parser # pylint: disable=wrong-import-order
+try:
+ import bpf
+ import parser # pylint: disable=wrong-import-order
+except ImportError:
+ from minijail import bpf
+ from minijail import parser # pylint: disable=wrong-import-order
class OptimizationStrategy(enum.Enum):