diff options
| author | David Lamparter <equinox@diac24.net> | 2020-04-23 20:01:14 +0200 |
|---|---|---|
| committer | David Lamparter <equinox@diac24.net> | 2020-04-27 09:30:01 +0200 |
| commit | 879a9dc5cdaa4cbf70f7615935466759c82065ff (patch) | |
| tree | 671f3a30661378d761d5614605fae28c909af649 /tools/symalyzer.py | |
| parent | 2768748b88f4133d10835255845e64a4e1e365e6 (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-x | tools/symalyzer.py | 44 |
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): |
