python-setuptools-rust: Set cargo profile from environment variable 22376/head
authorJeffery To <jeffery.to@gmail.com>
Sun, 8 Oct 2023 12:24:38 +0000 (20:24 +0800)
committerJeffery To <jeffery.to@gmail.com>
Thu, 12 Oct 2023 06:04:00 +0000 (14:04 +0800)
This adds a patch (submitted upstream in
https://github.com/PyO3/setuptools-rust/pull/364), to read the profile
to pass to cargo from an environment variable.

This also updates the Python include files to set the environment
variable based on values from rust-values.mk.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
(cherry picked from commit 29ca9797a66f7e4d2ae40d26b91f3d1c2982a744)

lang/python/python-setuptools-rust/Makefile
lang/python/python-setuptools-rust/patches/0001-Allow-profile-to-be-set-by-SETUPTOOLS_RUST_CARGO_PROFILE-env-variable.patch [new file with mode: 0644]
lang/python/python3-host.mk
lang/python/python3-package.mk

index 19325c1fda4356e75455809a9690b3c518b3863f..00a243bee3428dec90e6620c77646912ac092236 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-setuptools-rust
 PKG_VERSION:=1.7.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PYPI_NAME:=setuptools-rust
 PKG_HASH:=c7100999948235a38ae7e555fe199aa66c253dc384b125f5d85473bf81eae3a3
diff --git a/lang/python/python-setuptools-rust/patches/0001-Allow-profile-to-be-set-by-SETUPTOOLS_RUST_CARGO_PROFILE-env-variable.patch b/lang/python/python-setuptools-rust/patches/0001-Allow-profile-to-be-set-by-SETUPTOOLS_RUST_CARGO_PROFILE-env-variable.patch
new file mode 100644 (file)
index 0000000..842bc40
--- /dev/null
@@ -0,0 +1,48 @@
+From b10cab4efeb80abb5a236d651c9ff9355e470527 Mon Sep 17 00:00:00 2001
+From: Jeffery To <jeffery.to@gmail.com>
+Date: Mon, 2 Oct 2023 16:13:51 +0800
+Subject: [PATCH] Allow profile to be set by SETUPTOOLS_RUST_CARGO_PROFILE env
+ 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(-)
+
+--- a/setuptools_rust/build.py
++++ b/setuptools_rust/build.py
+@@ -528,10 +528,10 @@ class build_rust(RustCommand):
+         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("SETUPTOOLS_RUST_CARGO_PROFILE")
++        if release and not ext_profile and not env_profile:
++            args.append("--release")
+         if quiet:
+             args.append("-q")
+@@ -552,6 +552,18 @@ class build_rust(RustCommand):
+         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)
index b233c56799e0aec6076beaec40da3a12a0e69e35..3cc20c2cef0ed150241c48100ffb2a1dacdafc08 100644 (file)
@@ -78,7 +78,8 @@ HOST_PYTHON3_VARS = \
        CFLAGS="$(HOST_CFLAGS)" \
        CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON3_INC_DIR)" \
        LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON3_VERSION) -Wl$(comma)-rpath$(comma)$(STAGING_DIR_HOSTPKG)/lib" \
-       $(CARGO_HOST_CONFIG_VARS)
+       $(CARGO_HOST_CONFIG_VARS) \
+       SETUPTOOLS_RUST_CARGO_PROFILE="$(CARGO_HOST_PROFILE)"
 
 # $(1) => directory of python script
 # $(2) => python script and its arguments
index e4c7bd264cdf6f0c88b4f45e75a7ec369fa40e6c..3300f1beabe39c2c5651b100896c7f8c4369e108 100644 (file)
@@ -46,7 +46,8 @@ PYTHON3_VARS = \
        _python_prefix="/usr" \
        _python_exec_prefix="/usr" \
        $(CARGO_PKG_CONFIG_VARS) \
-       PYO3_CROSS_LIB_DIR="$(PYTHON3_LIB_DIR)"
+       PYO3_CROSS_LIB_DIR="$(PYTHON3_LIB_DIR)" \
+       SETUPTOOLS_RUST_CARGO_PROFILE="$(CARGO_PKG_PROFILE)"
 
 # $(1) => directory of python script
 # $(2) => python script and its arguments