]> git.puffer.fish Git - matthieu/frr.git/commitdiff
python: move MakeVars class into separate module
authorDavid Lamparter <equinox@diac24.net>
Thu, 23 Apr 2020 18:01:14 +0000 (20:01 +0200)
committerDavid Lamparter <equinox@diac24.net>
Mon, 27 Apr 2020 07:30:01 +0000 (09:30 +0200)
... so I can reuse it.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Makefile.am
python/makevars.py [new file with mode: 0644]
tools/symalyzer.py

index 6dc8e0d354967e89a6d4d9361863783557d1ec62..2937c2893378071a15a98e3389d84fd330d6d0c7 100644 (file)
@@ -183,6 +183,7 @@ EXTRA_DIST += \
        \
        python/clidef.py \
        python/clippy/__init__.py \
+       python/makevars.py \
        \
        redhat/frr.logrotate \
        redhat/frr.pam \
diff --git a/python/makevars.py b/python/makevars.py
new file mode 100644 (file)
index 0000000..e0e2031
--- /dev/null
@@ -0,0 +1,50 @@
+#
+# helper class to grab variables from FRR's Makefile
+#
+
+import os
+import subprocess
+
+class MakeVars(object):
+    '''
+    makevars['FOO_CFLAGS'] gets you "FOO_CFLAGS" from Makefile
+    '''
+    def __init__(self):
+        self._data = dict()
+
+    def getvars(self, varlist):
+        '''
+        get a batch list of variables from make.  faster than individual calls.
+        '''
+        rdfd, wrfd = os.pipe()
+
+        shvars = ['shvar-%s' % s for s in varlist]
+        make = subprocess.Popen(['make', '-s', 'VARFD=%d' % wrfd] + shvars, pass_fds = [wrfd])
+        os.close(wrfd)
+        data = b''
+
+        rdf = os.fdopen(rdfd, 'rb')
+        while True:
+            rdata = rdf.read()
+            if len(rdata) == 0:
+                break
+            data += rdata
+
+        del rdf
+        make.wait()
+
+        data = data.decode('US-ASCII').strip().split('\n')
+        for row in data:
+            k, v = row.split('=', 1)
+            v = v[1:-1]
+            self._data[k] = v
+
+    def __getitem__(self, k):
+        if k not in self._data:
+            self.getvars([k])
+        return self._data[k]
+
+    def get(self, k, defval = None):
+        if k not in self._data:
+            self.getvars([k])
+        return self._data[k] or defval
index b3b5c4e5674ae372e699630178fb358dab820d2c..a067053edb3c09a3ea5bf5f81013a975ec1cfc0b 100755 (executable)
@@ -21,49 +21,9 @@ import sys, os, subprocess
 import re
 from collections import namedtuple
 
-class MakeVars(object):
-    '''
-    makevars['FOO_CFLAGS'] gets you "FOO_CFLAGS" from Makefile
-    '''
-    def __init__(self):
-        self._data = dict()
+sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'python'))
 
-    def getvars(self, varlist):
-        '''
-        get a batch list of variables from make.  faster than individual calls.
-        '''
-        rdfd, wrfd = os.pipe()
-
-        shvars = ['shvar-%s' % s for s in varlist]
-        make = subprocess.Popen(['make', '-s', 'VARFD=%d' % wrfd] + shvars, pass_fds = [wrfd])
-        os.close(wrfd)
-        data = b''
-
-        rdf = os.fdopen(rdfd, 'rb')
-        while True:
-            rdata = rdf.read()
-            if len(rdata) == 0:
-                break
-            data += rdata
-
-        del rdf
-        make.wait()
-
-        data = data.decode('US-ASCII').strip().split('\n')
-        for row in data:
-            k, v = row.split('=', 1)
-            v = v[1:-1]
-            self._data[k] = v
-
-    def __getitem__(self, k):
-        if k not in self._data:
-            self.getvars([k])
-        return self._data[k]
-
-    def get(self, k, defval = None):
-        if k not in self._data:
-            self.getvars([k])
-        return self._data[k] or defval
+from makevars import MakeVars
 
 SymRowBase = namedtuple('SymRow', ['target', 'object', 'name', 'address', 'klass', 'typ', 'size', 'line', 'section', 'loc'])
 class SymRow(SymRowBase):