diff options
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/interpreter.py | 9 | ||||
-rw-r--r-- | mesonbuild/scripts/dist.py | 21 |
2 files changed, 17 insertions, 13 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 131c24e..a4d9472 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -1686,12 +1686,15 @@ class MesonMain(InterpreterObject): @permittedKwargs({}) def add_dist_script_method(self, args, kwargs): - if len(args) != 1: - raise InterpreterException('add_dist_script takes exactly one argument') + if len(args) < 1: + raise InterpreterException('add_dist_script takes one or more arguments') + if len(args) > 1: + FeatureNew('Calling "add_dist_script" with multiple arguments', '0.49.0').use(self.interpreter.subproject) check_stringlist(args, 'add_dist_script argument must be a string') if self.interpreter.subproject != '': raise InterpreterException('add_dist_script may not be used in a subproject.') - self.build.dist_scripts.append(os.path.join(self.interpreter.subdir, args[0])) + script = self._find_source_script(args[0], args[1:]) + self.build.dist_scripts.append(script) @noPosargs @permittedKwargs({}) diff --git a/mesonbuild/scripts/dist.py b/mesonbuild/scripts/dist.py index 68cfcd0..56ac585 100644 --- a/mesonbuild/scripts/dist.py +++ b/mesonbuild/scripts/dist.py @@ -81,16 +81,17 @@ def run_dist_scripts(dist_root, dist_scripts): env = os.environ.copy() env['MESON_DIST_ROOT'] = dist_root for d in dist_scripts: - print('Processing dist script %s' % d) - ddir, dname = os.path.split(d) - ep = ExternalProgram(dname, - search_dir=os.path.join(dist_root, ddir), - silent=True) - if not ep.found(): - sys.exit('Script %s could not be found in dist directory' % d) - pc = subprocess.run(ep.command, env=env) - if pc.returncode != 0: - sys.exit('Dist script errored out') + script = d['exe'] + args = d['args'] + name = ' '.join(script + args) + print('Running custom dist script {!r}'.format(name)) + try: + rc = subprocess.call(script + args, env=env) + if rc != 0: + sys.exit('Dist script errored out') + except OSError: + print('Failed to run dist script {!r}'.format(name)) + sys.exit(1) def git_have_dirty_index(src_root): |