summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/setup.py38
-rw-r--r--python/vyos/defaults.py3
-rw-r--r--python/vyos/proto/__init__.py0
3 files changed, 40 insertions, 1 deletions
diff --git a/python/setup.py b/python/setup.py
index 2d614e724..96dc211f7 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -1,5 +1,11 @@
import os
+import sys
+import subprocess
from setuptools import setup
+from setuptools.command.build_py import build_py
+
+sys.path.append('./vyos')
+from defaults import directories
def packages(directory):
return [
@@ -8,6 +14,35 @@ def packages(directory):
if os.path.isfile(os.path.join(_[0], '__init__.py'))
]
+
+class GenerateProto(build_py):
+ ver = os.environ.get('OCAML_VERSION')
+ if ver:
+ proto_path = f'/opt/opam/{ver}/share/vyconf'
+ else:
+ proto_path = directories['proto_path']
+
+ def run(self):
+ # find all .proto files in vyconf proto_path
+ proto_files = []
+ for _, _, files in os.walk(self.proto_path):
+ for file in files:
+ if file.endswith('.proto'):
+ proto_files.append(file)
+
+ # compile each .proto file to Python
+ for proto_file in proto_files:
+ subprocess.check_call(
+ [
+ 'protoc',
+ '--python_out=vyos/proto',
+ f'--proto_path={self.proto_path}/',
+ proto_file,
+ ]
+ )
+
+ build_py.run(self)
+
setup(
name = "vyos",
version = "1.3.0",
@@ -29,4 +64,7 @@ setup(
"config-mgmt = vyos.config_mgmt:run",
],
},
+ cmdclass={
+ 'build_py': GenerateProto,
+ },
)
diff --git a/python/vyos/defaults.py b/python/vyos/defaults.py
index 86194cd55..2600cf4fb 100644
--- a/python/vyos/defaults.py
+++ b/python/vyos/defaults.py
@@ -38,7 +38,8 @@ directories = {
'vyos_configdir' : '/opt/vyatta/config',
'completion_dir' : f'{base_dir}/completion',
'ca_certificates' : '/usr/local/share/ca-certificates/vyos',
- 'ppp_nexthop_dir' : '/run/ppp_nexthop'
+ 'ppp_nexthop_dir' : '/run/ppp_nexthop',
+ 'proto_path': '/usr/share/vyos/vyconf'
}
systemd_services = {
diff --git a/python/vyos/proto/__init__.py b/python/vyos/proto/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/python/vyos/proto/__init__.py