diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2021-01-26 13:51:23 -0500 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2021-01-30 09:51:06 +0000 |
commit | 0626465ea8aa65b10776d5c4064e881fe0d6fa25 (patch) | |
tree | be11f7029bd7bd418494d45cf7f3de52cbaf435f /mesonbuild/mdist.py | |
parent | c321339b24f896d02b0839d1b1e5008eae405858 (diff) | |
download | meson-0626465ea8aa65b10776d5c4064e881fe0d6fa25.zip meson-0626465ea8aa65b10776d5c4064e881fe0d6fa25.tar.gz meson-0626465ea8aa65b10776d5c4064e881fe0d6fa25.tar.bz2 |
Fix executable as script on Windows
On Windows this would fail because of missing DLL:
```
mylib = library(...)
exe = executable(..., link_with: mylib)
meson.add_install_script(exe)
```
The reason is on Windows we cannot rely on rpath to find libraries from
build directory, they are searched in $PATH. We already have all that
mechanism in place for custom_target() using ExecutableSerialisation
class, so reuse it for install/dist/postconf scripts too.
This has bonus side effect to also use exe_wrapper for those scripts.
Fixes: #8187
Diffstat (limited to 'mesonbuild/mdist.py')
-rw-r--r-- | mesonbuild/mdist.py | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/mesonbuild/mdist.py b/mesonbuild/mdist.py index 293eef4..4547b38 100644 --- a/mesonbuild/mdist.py +++ b/mesonbuild/mdist.py @@ -26,6 +26,7 @@ from mesonbuild.environment import detect_ninja from mesonbuild.mesonlib import windows_proof_rmtree, MesonException, quiet_git from mesonbuild.wrap import wrap from mesonbuild import mlog, build +from .scripts.meson_exe import run_exe archive_choices = ['gztar', 'xztar', 'zip'] archive_extension = {'gztar': '.tar.gz', @@ -79,17 +80,15 @@ def process_submodules(dirname): def run_dist_scripts(src_root, bld_root, dist_root, dist_scripts): assert(os.path.isabs(dist_root)) - env = os.environ.copy() + env = {} env['MESON_DIST_ROOT'] = dist_root env['MESON_SOURCE_ROOT'] = src_root env['MESON_BUILD_ROOT'] = bld_root for d in dist_scripts: - script = d['exe'] - args = d['args'] - name = ' '.join(script + args) + name = ' '.join(d.cmd_args) print('Running custom dist script {!r}'.format(name)) try: - rc = subprocess.call(script + args, env=env) + rc = run_exe(d, env) if rc != 0: sys.exit('Dist script errored out') except OSError: |