summaryrefslogtreecommitdiff
path: root/tools/symalyzer.py
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@diac24.net>2020-04-23 20:01:14 +0200
committerDavid Lamparter <equinox@diac24.net>2020-04-27 09:30:01 +0200
commit879a9dc5cdaa4cbf70f7615935466759c82065ff (patch)
tree671f3a30661378d761d5614605fae28c909af649 /tools/symalyzer.py
parent2768748b88f4133d10835255845e64a4e1e365e6 (diff)
python: move MakeVars class into separate module
... so I can reuse it. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'tools/symalyzer.py')
-rwxr-xr-xtools/symalyzer.py44
1 files changed, 2 insertions, 42 deletions
diff --git a/tools/symalyzer.py b/tools/symalyzer.py
index b3b5c4e567..a067053edb 100755
--- a/tools/symalyzer.py
+++ b/tools/symalyzer.py
@@ -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):