commit:     6937fcb873120179a5bb32055b26612ac4a72c52
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Mar 23 11:12:00 2025 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Sat Mar 29 15:57:39 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6937fcb8

cargo.eclass: Only tell Cargo to cross-compile when actually needed

This avoids the build host vs target flag separation issue. Sometimes it
is important for the build host to use the right flags. We cannot fix
this for cross-compiling now, but it should at least work for native
builds.

Closes: https://bugs.gentoo.org/951740
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>

 eclass/cargo.eclass | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/eclass/cargo.eclass b/eclass/cargo.eclass
index dae2b93f24f3..95d485ab20c3 100644
--- a/eclass/cargo.eclass
+++ b/eclass/cargo.eclass
@@ -448,7 +448,9 @@ _cargo_gen_git_config() {
 # Return the directory within target that contains the build, e.g.
 # target/aarch64-unknown-linux-gnu/release.
 cargo_target_dir() {
-       echo "${CARGO_TARGET_DIR:-target}/$(rust_abi)/$(usex debug debug 
release)"
+       local abi
+       tc-is-cross-compiler && abi=/$(rust_abi)
+       echo "${CARGO_TARGET_DIR:-target}${abi}/$(usex debug debug release)"
 }
 
 # @FUNCTION: cargo_update_crates
@@ -762,6 +764,10 @@ cargo_env() {
                # locally. Do this in a subshell so that they remain set 
afterwards.
                unset CARGO_BUILD_RUSTFLAGS CARGO_ENCODED_RUSTFLAGS RUSTFLAGS
 
+               # Only tell Cargo to cross-compile when actually needed to 
avoid the
+               # aforementioned build host vs target flag separation issue.
+               tc-is-cross-compiler || unset CARGO_BUILD_TARGET
+
                "${@}"
        )
 }

Reply via email to