From a261b230b0951f14845b4bcd21dc28bfc91826bc Mon Sep 17 00:00:00 2001 From: Flatcar Buildbot Date: Mon, 12 Jan 2026 07:12:34 +0000 Subject: [PATCH] eclass/cargo: Sync with Gentoo It's from Gentoo commit 94de850364cc06256d3824871bb12f9612706a26. Signed-off-by: Flatcar Buildbot --- .../third_party/portage-stable/eclass/cargo.eclass | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sdk_container/src/third_party/portage-stable/eclass/cargo.eclass b/sdk_container/src/third_party/portage-stable/eclass/cargo.eclass index 5c2b89b6a7..cbde35be72 100644 --- a/sdk_container/src/third_party/portage-stable/eclass/cargo.eclass +++ b/sdk_container/src/third_party/portage-stable/eclass/cargo.eclass @@ -453,13 +453,22 @@ _cargo_gen_git_config() { fi } +# @FUNCTION: _cargo_needs_target +# @INTERNAL +# @DESCRIPTION: +# Cargo does not apply flags to the build host when --target is given, even if +# it is the native target, so only pass it when actually needed. +_cargo_needs_target() { + tc-is-cross-compiler || { has multilib-build ${INHERITED} && ! multilib_is_native_abi; } +} + # @FUNCTION: cargo_target_dir # @DESCRIPTION: # Return the directory within target that contains the build, e.g. # target/aarch64-unknown-linux-gnu/release. cargo_target_dir() { local abi - tc-is-cross-compiler && abi=/$(rust_abi) + _cargo_needs_target && abi=/$(rust_abi) echo "${CARGO_TARGET_DIR:-target}${abi}/$(usex debug debug release)" } @@ -776,7 +785,7 @@ cargo_env() { # 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 + _cargo_needs_target || unset CARGO_BUILD_TARGET "${@}" )