diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-01-02 16:05:19 +0100 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-01-07 22:24:49 +0100 |
commit | a1d8c1d3e93974bde114743c8b624221b776cb16 (patch) | |
tree | 9019edb85db5cd28425c41fafc9449a200798172 | |
parent | 3bf2ca483e9ca80ee81ee0a07d5f5c9f36817bb3 (diff) | |
download | meson-a1d8c1d3e93974bde114743c8b624221b776cb16.zip meson-a1d8c1d3e93974bde114743c8b624221b776cb16.tar.gz meson-a1d8c1d3e93974bde114743c8b624221b776cb16.tar.bz2 |
Changed introspection target format
-rw-r--r-- | mesonbuild/mintro.py | 19 | ||||
-rwxr-xr-x | run_unittests.py | 28 |
2 files changed, 16 insertions, 31 deletions
diff --git a/mesonbuild/mintro.py b/mesonbuild/mintro.py index b183d2a..b09ea88 100644 --- a/mesonbuild/mintro.py +++ b/mesonbuild/mintro.py @@ -117,6 +117,7 @@ def list_installed(installdata): def list_targets(builddata: build.Build, installdata, backend: backends.Backend): tlist = [] + build_dir = builddata.environment.get_build_dir() # Fast lookup table for installation files install_lookuptable = {} @@ -128,24 +129,18 @@ def list_targets(builddata: build.Build, installdata, backend: backends.Backend) if not isinstance(target, build.Target): raise RuntimeError('The target object in `builddata.get_targets()` is not of type `build.Target`. Please file a bug with this error message.') - # TODO Change this to the full list in a seperate PR - fname = [os.path.join(target.subdir, x) for x in target.get_outputs()] - if len(fname) == 1: - fname = fname[0] - t = { 'name': target.get_basename(), 'id': idname, 'type': target.get_typename(), - 'filename': fname, + 'filename': [os.path.join(build_dir, target.subdir, x) for x in target.get_outputs()], 'build_by_default': target.build_by_default, 'target_sources': backend.get_introspection_data(idname, target) } if installdata and target.should_install(): t['installed'] = True - # TODO Change this to the full list in a seperate PR - t['install_filename'] = [install_lookuptable.get(x, None) for x in target.get_outputs()][0] + t['install_filename'] = [install_lookuptable.get(x, None) for x in target.get_outputs()] else: t['installed'] = False tlist.append(t) @@ -298,7 +293,7 @@ def list_buildoptions_from_source(sourcedir, backend, indent): mlog.enable() print(json.dumps(list_buildoptions(intr.coredata), indent=indent)) -def list_target_files(target_name, targets, builddata: build.Build): +def list_target_files(target_name, targets): result = [] tgt = None @@ -314,9 +309,6 @@ def list_target_files(target_name, targets, builddata: build.Build): for i in tgt['target_sources']: result += i['sources'] + i['generated_sources'] - # TODO Remove this line in a future PR with other breaking changes - result = list(map(lambda x: os.path.relpath(x, builddata.environment.get_source_dir()), result)) - return result def list_buildoptions(coredata: cdata.CoreData): @@ -531,8 +523,7 @@ def run(options): targets_file = os.path.join(infodir, 'intro-targets.json') with open(targets_file, 'r') as fp: targets = json.load(fp) - builddata = build.load(options.builddir) # TODO remove this in a breaking changes PR - results += [('target_files', list_target_files(options.target_files, targets, builddata))] + results += [('target_files', list_target_files(options.target_files, targets))] # Extract introspection information from JSON for i in toextract: diff --git a/run_unittests.py b/run_unittests.py index 55a5bd6..eb5607d 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -1439,7 +1439,7 @@ class AllPlatformTests(BasePlatformTests): # Get name of static library targets = self.introspect('--targets') self.assertEqual(len(targets), 1) - libname = targets[0]['filename'] # TODO Change filename back to a list again + libname = targets[0]['filename'][0] # Build and get contents of static library self.build() before = self._run(['ar', 't', os.path.join(self.builddir, libname)]).split() @@ -1496,8 +1496,8 @@ class AllPlatformTests(BasePlatformTests): intro = self.introspect('--targets') if intro[0]['type'] == 'executable': intro = intro[::-1] - self.assertPathListEqual([intro[0]['install_filename']], ['/usr/lib/libstat.a']) - self.assertPathListEqual([intro[1]['install_filename']], ['/usr/bin/prog' + exe_suffix]) + self.assertPathListEqual(intro[0]['install_filename'], ['/usr/lib/libstat.a']) + self.assertPathListEqual(intro[1]['install_filename'], ['/usr/bin/prog' + exe_suffix]) def test_install_introspection_multiple_outputs(self): ''' @@ -1514,14 +1514,10 @@ class AllPlatformTests(BasePlatformTests): intro = self.introspect('--targets') if intro[0]['type'] == 'executable': intro = intro[::-1] - #self.assertPathListEqual(intro[0]['install_filename'], ['/usr/include/diff.h', '/usr/bin/diff.sh']) - #self.assertPathListEqual(intro[1]['install_filename'], ['/opt/same.h', '/opt/same.sh']) - #self.assertPathListEqual(intro[2]['install_filename'], ['/usr/include/first.h', None]) - #self.assertPathListEqual(intro[3]['install_filename'], [None, '/usr/bin/second.sh']) - self.assertPathListEqual([intro[0]['install_filename']], ['/usr/include/diff.h']) - self.assertPathListEqual([intro[1]['install_filename']], ['/opt/same.h']) - self.assertPathListEqual([intro[2]['install_filename']], ['/usr/include/first.h']) - self.assertPathListEqual([intro[3]['install_filename']], [None]) + self.assertPathListEqual(intro[0]['install_filename'], ['/usr/include/diff.h', '/usr/bin/diff.sh']) + self.assertPathListEqual(intro[1]['install_filename'], ['/opt/same.h', '/opt/same.sh']) + self.assertPathListEqual(intro[2]['install_filename'], ['/usr/include/first.h', None]) + self.assertPathListEqual(intro[3]['install_filename'], [None, '/usr/bin/second.sh']) def test_uninstall(self): exename = os.path.join(self.installdir, 'usr/bin/prog' + exe_suffix) @@ -2569,7 +2565,7 @@ int main(int argc, char **argv) { for t in t_intro: id = t['id'] tf_intro = self.introspect(['--target-files', id]) - #tf_intro = list(map(lambda x: os.path.relpath(x, testdir), tf_intro)) TODO make paths absolute in future PR + tf_intro = list(map(lambda x: os.path.relpath(x, testdir), tf_intro)) self.assertEqual(tf_intro, expected[id]) self.wipe() @@ -2584,9 +2580,7 @@ int main(int argc, char **argv) { for t in t_intro: id = t['id'] tf_intro = self.introspect(['--target-files', id]) - print(tf_intro) - #tf_intro = list(map(lambda x: os.path.relpath(x, testdir), tf_intro)) TODO make paths absolute in future PR - print(tf_intro) + tf_intro = list(map(lambda x: os.path.relpath(x, testdir), tf_intro)) self.assertEqual(tf_intro, expected[id]) self.wipe() @@ -3180,7 +3174,7 @@ recommended as it is not supported on some platforms''') ('name', str), ('id', str), ('type', str), - ('filename', str), + ('filename', list), ('build_by_default', bool), ('target_sources', list), ('installed', bool), @@ -4417,7 +4411,7 @@ class LinuxlikeTests(BasePlatformTests): break self.assertIsInstance(docbook_target, dict) ifile = self.introspect(['--target-files', 'generated-gdbus-docbook@cus'])[0] - self.assertListEqual([t['filename']], ['gdbus/generated-gdbus-doc-' + os.path.basename(ifile)]) + self.assertListEqual(t['filename'], [os.path.join(self.builddir ,'gdbus/generated-gdbus-doc-' + os.path.basename(ifile))]) def test_build_rpath(self): if is_cygwin(): |