diff --git a/tools/crates/run_gnrt.py b/tools/crates/run_gnrt.py index a645e811118e8..f487d06949272 100755 --- a/tools/crates/run_gnrt.py +++ b/tools/crates/run_gnrt.py @@ -24,27 +24,32 @@ def main(): parser.add_argument('--out-dir', default='out/gnrt', help='put target and cargo home dir here') - args, rest = parser.parse_known_args() + parser.add_argument('gnrt_args', + nargs='*', + help='additional arguments to pass to gnrt, e.g. "gen"') + args = parser.parse_args() exe = '' if sys.platform == 'win32': exe = '.exe' - cargo_bin = os.path.join(args.rust_sysroot, 'bin', f'cargo{exe}') - rustc_bin = os.path.join(args.rust_sysroot, 'bin', f'rustc{exe}') + cargo_bin = os.path.abspath( + os.path.join(args.rust_sysroot, 'bin', f'cargo{exe}')) + rustc_bin = os.path.abspath( + os.path.join(args.rust_sysroot, 'bin', f'rustc{exe}')) cargo_env = os.environ cargo_env['CARGO_HOME'] = os.path.abspath( os.path.join(args.out_dir, 'cargo_home')) target_dir = os.path.abspath(os.path.join(args.out_dir, 'target')) - gnrt_args = rest - if gnrt_args[0] == '--': - gnrt_args = gnrt_args[1:] - + gnrt_args = args.gnrt_args + if gnrt_args and gnrt_args[0] == 'gen': + gnrt_args.extend(['--rustc-path', rustc_bin]) return subprocess.run([ cargo_bin, '--locked', 'run', '--release', '--manifest-path', - GNRT_MANIFEST_PATH, '--target-dir', target_dir, '--' + GNRT_MANIFEST_PATH, '--target-dir', target_dir, '--config', + f'build.rustc="{rustc_bin}"', '--' ] + gnrt_args).returncode