diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2025-12-04 14:19:04 +0100 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-12-04 11:05:37 -0800 |
| commit | 05105325bd22ad96b0ba932cd8f1a58293d11d13 (patch) | |
| tree | 18260aa2a216bbb9148bb6b1a650ec5399b8269b /mesonbuild/scripts | |
| parent | 997e83d68d9ff966ce87d46dcaf48565a9880178 (diff) | |
| download | meson-05105325bd22ad96b0ba932cd8f1a58293d11d13.tar.gz | |
implement --env-set parameter manually in rustdoc script
Rustdoc does not yet support the --env-set parameter, change the
environment directly instead.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild/scripts')
| -rw-r--r-- | mesonbuild/scripts/run_tool.py | 4 | ||||
| -rw-r--r-- | mesonbuild/scripts/rustdoc.py | 15 |
2 files changed, 13 insertions, 6 deletions
diff --git a/mesonbuild/scripts/run_tool.py b/mesonbuild/scripts/run_tool.py index 591c25c0c..4b3878c78 100644 --- a/mesonbuild/scripts/run_tool.py +++ b/mesonbuild/scripts/run_tool.py @@ -19,14 +19,14 @@ import typing as T Info = T.TypeVar("Info") -async def run_with_buffered_output(cmdlist: T.List[str]) -> int: +async def run_with_buffered_output(cmdlist: T.List[str], env: T.Optional[T.Dict[str, str]] = None) -> int: """Run the command in cmdlist, buffering the output so that it is not mixed for multiple child processes. Kill the child on cancellation.""" quoted_cmdline = join_args(cmdlist) p: T.Optional[asyncio.subprocess.Process] = None try: - p = await asyncio.create_subprocess_exec(*cmdlist, + p = await asyncio.create_subprocess_exec(*cmdlist, env=env, stdin=asyncio.subprocess.DEVNULL, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.STDOUT) diff --git a/mesonbuild/scripts/rustdoc.py b/mesonbuild/scripts/rustdoc.py index 071b36b8a..c1c0d8c43 100644 --- a/mesonbuild/scripts/rustdoc.py +++ b/mesonbuild/scripts/rustdoc.py @@ -15,8 +15,8 @@ from ..wrap import WrapMode, wrap if T.TYPE_CHECKING: from ..compilers.rust import RustCompiler -async def run_and_confirm_success(cmdlist: T.List[str], crate: str) -> int: - returncode = await run_with_buffered_output(cmdlist) +async def run_and_confirm_success(cmdlist: T.List[str], environ: T.Dict[str, str], crate: str) -> int: + returncode = await run_with_buffered_output(cmdlist, environ) if returncode == 0: print(mlog.green('Generated'), os.path.join('doc', crate)) return returncode @@ -54,18 +54,25 @@ class Rustdoc: prev = None crate_name = None is_test = False + environ = dict(os.environ) for arg in src_block['parameters']: if prev: if prev == '--crate-name': cmdlist.extend((prev, arg)) crate_name = arg + elif prev == '--env-set': + try: + key, val = arg.split('=', maxsplit=1) + environ[key] = val + except ValueError: + pass prev = None continue if arg == '--test': is_test = True break - elif arg in {'--crate-name', '--emit', '--out-dir', '-l'}: + elif arg in {'--crate-name', '--emit', '--out-dir', '-l', '--env-set'}: prev = arg elif arg != '-g' and not arg.startswith('-l'): cmdlist.append(arg) @@ -80,7 +87,7 @@ class Rustdoc: cmdlist.append('--document-private-items') cmdlist.append('-o') cmdlist.append('doc') - yield run_and_confirm_success(cmdlist, crate_name) + yield run_and_confirm_success(cmdlist, environ, crate_name) else: print(mlog.yellow('Skipping'), target['name'], '(no crate name)') |
