aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/interpreter.py9
-rw-r--r--mesonbuild/scripts/dist.py21
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):