On Sat, 2025-03-08 at 15:59 +0200, Arthur Zamarin wrote: > From: Michal Rostecki <vadorov...@protonmail.com> > > Rust defaults to static linking (`-C target-feature=+crt-static`) on > musl targets. We already patch dev-lang/rust to always prefer dynamic > linking, but to ensure that behavior with dev-lang/rust-bin, set the > opposite option (`-C target-feature=-crt-static`) in RUSTFLAGS. > > Bug: https://bugs.gentoo.org/940722 > Signed-off-by: Michal Rostecki <vadorov...@protonmail.com> > Closes: https://github.com/gentoo/gentoo/pull/40797 > Signed-off-by: Arthur Zamarin <arthur...@gentoo.org> > --- > eclass/cargo.eclass | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/eclass/cargo.eclass b/eclass/cargo.eclass > index 909321c355b..dae2b93f24f 100644 > --- a/eclass/cargo.eclass > +++ b/eclass/cargo.eclass > @@ -745,10 +745,15 @@ cargo_env() { > # The default linker is "cc" so override by setting linker to CC in the > # RUSTFLAGS. The given linker cannot include any arguments, so split > these > # into link-args along with LDFLAGS. > + # > + # Rust defaults to static linking (-C target-feature=+crt-static) on > musl > + # targets. We already patch dev-lang/rust to always prefer dynamic > linking, > + # but to ensure that behavior with dev-lang/rust-bin, set the opposite > option > + # (-C target-feature=-crt-static) in RUSTFLAGS. > local -x CARGO_BUILD_TARGET=$(rust_abi) > local TRIPLE=${CARGO_BUILD_TARGET//-/_} > local TRIPLE=${TRIPLE^^} LD_A=( $(tc-getCC) ${LDFLAGS} ) > - local -Ix CARGO_TARGET_"${TRIPLE}"_RUSTFLAGS+=" -C strip=none -C > linker=${LD_A[0]}" > + local -Ix CARGO_TARGET_"${TRIPLE}"_RUSTFLAGS+=" -C strip=none -C > linker=${LD_A[0]} -C target-feature=-crt-static" > [[ ${#LD_A[@]} -gt 1 ]] && local > CARGO_TARGET_"${TRIPLE}"_RUSTFLAGS+="$(printf -- ' -C link-arg=%s' > "${LD_A[@]:1}")" > local CARGO_TARGET_"${TRIPLE}"_RUSTFLAGS+=" ${RUSTFLAGS}"
I considered this when writing the above lines, but I wasn't sure if it was a good idea. If the testing has been done, then I'm glad to see it.
signature.asc
Description: This is a digitally signed message part