aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorCharles Brunet <charles.brunet@optelgroup.com>2023-02-09 07:19:52 -0500
committerXavier Claessens <xclaesse@gmail.com>2023-02-14 10:50:10 -0500
commit04f233a80d570c90c1a152114cbf3bdad6a61607 (patch)
tree3910652b33a1867f8ec1cf26f1c5a495a9d8320f /mesonbuild
parent70286a93b00868d705647dcbfbd82ab0822040e8 (diff)
downloadmeson-04f233a80d570c90c1a152114cbf3bdad6a61607.zip
meson-04f233a80d570c90c1a152114cbf3bdad6a61607.tar.gz
meson-04f233a80d570c90c1a152114cbf3bdad6a61607.tar.bz2
allow install script to run in dry-run mode
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/interpreter/mesonmain.py3
-rw-r--r--mesonbuild/minstall.py8
-rw-r--r--mesonbuild/utils/core.py1
3 files changed, 9 insertions, 3 deletions
diff --git a/mesonbuild/interpreter/mesonmain.py b/mesonbuild/interpreter/mesonmain.py
index c8c80b2..cd3d5ed 100644
--- a/mesonbuild/interpreter/mesonmain.py
+++ b/mesonbuild/interpreter/mesonmain.py
@@ -38,6 +38,7 @@ if T.TYPE_CHECKING:
skip_if_destdir: bool
install_tag: str
+ dry_run: bool
class NativeKW(TypedDict):
@@ -152,6 +153,7 @@ class MesonMain(MesonInterpreterObject):
'meson.add_install_script',
KwargInfo('skip_if_destdir', bool, default=False, since='0.57.0'),
KwargInfo('install_tag', (str, NoneType), since='0.60.0'),
+ KwargInfo('dry_run', bool, default=False, since='1.1.0'),
)
def add_install_script_method(
self,
@@ -162,6 +164,7 @@ class MesonMain(MesonInterpreterObject):
script = self._find_source_script('add_install_script', args[0], script_args)
script.skip_if_destdir = kwargs['skip_if_destdir']
script.tag = kwargs['install_tag']
+ script.dry_run = kwargs['dry_run']
self.build.install_scripts.append(script)
@typed_pos_args(
diff --git a/mesonbuild/minstall.py b/mesonbuild/minstall.py
index 8c74990..40c2d2d 100644
--- a/mesonbuild/minstall.py
+++ b/mesonbuild/minstall.py
@@ -361,9 +361,9 @@ class Installer:
return p.returncode, o, e
return 0, '', ''
- def run_exe(self, *args: T.Any, **kwargs: T.Any) -> int:
- if not self.dry_run:
- return run_exe(*args, **kwargs)
+ def run_exe(self, exe: ExecutableSerialisation, extra_env: T.Optional[T.Dict[str, str]] = None) -> int:
+ if (not self.dry_run) or exe.dry_run:
+ return run_exe(exe, extra_env)
return 0
def should_install(self, d: T.Union[TargetInstallData, InstallEmptyDir,
@@ -655,6 +655,8 @@ class Installer:
}
if self.options.quiet:
env['MESON_INSTALL_QUIET'] = '1'
+ if self.dry_run:
+ env['MESON_INSTALL_DRY_RUN'] = '1'
for i in d.install_scripts:
if not self.should_install(i):
diff --git a/mesonbuild/utils/core.py b/mesonbuild/utils/core.py
index 4398413..9b9afab 100644
--- a/mesonbuild/utils/core.py
+++ b/mesonbuild/utils/core.py
@@ -152,3 +152,4 @@ class ExecutableSerialisation:
self.pickled = False
self.skip_if_destdir = False
self.subproject = ''
+ self.dry_run = False