From 77a0d619d914b6ff80f38aced7704891f7f63fc8 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Mon, 2 Oct 2023 16:13:51 +0800 Subject: [PATCH] Allow cargo profile to be set by CARGO_PROFILE environment variable This allows the profile to be set dynamically, without having to edit pyproject.toml/setup.py. --- setuptools_rust/build.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/setuptools_rust/build.py b/setuptools_rust/build.py index 859c3ad0..14412046 100644 --- a/setuptools_rust/build.py +++ b/setuptools_rust/build.py @@ -517,10 +517,10 @@ def _cargo_args( if target_triple is not None: args.extend(["--target", target_triple]) - if release: - profile = ext.get_cargo_profile() - if not profile: - args.append("--release") + ext_profile = ext.get_cargo_profile() + env_profile = os.getenv("CARGO_PROFILE") + if release and not ext_profile and not env_profile: + args.append("--release") if quiet: args.append("-q") @@ -541,6 +541,18 @@ def _cargo_args( if ext.args is not None: args.extend(ext.args) + if env_profile: + if ext_profile: + args = [p for p in args if not p.startswith("--profile=")] + while True: + try: + index = args.index("--profile") + del args[index:index + 2] + except ValueError: + break + + args.extend(["--profile", env_profile]) + if ext.cargo_manifest_args is not None: args.extend(ext.cargo_manifest_args)