From: Harish Sadineni <Harish.Sadineni@windriver.com>
To: Richard Purdie <richard.purdie@linuxfoundation.org>,
openembedded-core@lists.openembedded.org
Cc: Sundeep.Kokkonda@windriver.com
Subject: Re: [OE-core] [PATCH v2 1/3] rust-cross-canadian: install target-specific env scripts and fix rustlib lookup
Date: Mon, 7 Sep 2026 23:47:50 +0530 [thread overview]
Message-ID: <fafbd39b-6914-478a-af3a-7c5a2b7022bc@windriver.com> (raw)
In-Reply-To: <661986274bd867b38fcd20ea5e99bab704fbc1bc.camel@linuxfoundation.org>
On 27-08-2026 11:01 pm, Richard Purdie wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> On Fri, 2026-08-21 at 14:25 +0530, Sadineni, Harish via lists.openembedded.org wrote:
>> Even though the script filename includes ${RUST_TARGET_SYS}, for
>> multilib SDKs both the 32-bit and 64-bit scripts end up in the same
>> environment-setup directory.
>>
>> The SDK's environment-sourcing logic sources every '*.sh' file in
>> that directory, so both scripts get sourced regardless of which
>> target you're building for. Since 'CARGO_TARGET_<TRIPLE>_RUSTFLAGS'
>> and 'CARGO_BUILD_TARGET' are set unconditionally in each script,
>> whichever one is sourced last wins and that can silently override the
>> 32-bit settings with the 64-bit ones (or vice versa). That's what
>> causes the 32-bit Cargo build to fail.
> Ok, can you point me to which "environment-sourcing logic" we're taking
> about? Is this in the test code or within the SDK itself. I suspect we
> should be fixing that issue...
Hi Richard,
toolchain-scripts.bbclass is responsible for generating the
environment-setup-* files for the SDK, and
the generated script includes logic (in toolchain_shared_env_script())
that sources every .sh file in the
environment-setup.d/ directory (both under $OECORE_TARGET_SYSROOT and
$OECORE_NATIVE_SYSROOT).
https://git.openembedded.org/openembedded-core/tree/meta/classes-recipe/toolchain-scripts.bbclass#n164
>> Putting each script in a target-specific subdirectory (environment-
>> setup.d/${TARGET_SYS}/) ensures only the script matching the selected
>> target gets sourced, so the two configurations no longer clobber each
>> other.
>>
> Perhaps. I'd like to avoid the complexity if we can so I'd like to
> understand more about where this is happening.
This is happening with multilib enabled, do_testsdk & In sdk 32-bit
cargo build fails because of this issue.
I've got another implementation this can be fixed with a if condition
based on target arch instead of a subdirectory.
New approach is below with this we can also drop "[PATCH v2 2/3]
toolchain-scripts: source target-specific environment setup scripts"
--- a/meta/recipes-devtools/rust/rust-cross-canadian.inc
+++ b/meta/recipes-devtools/rust/rust-cross-canadian.inc
@@ -58,9 +58,13 @@ do_install () {
RUST_TARGET_TRIPLE=`echo ${RUST_TARGET_SYS} | tr '[:lower:]'
'[:upper:]' | sed 's/-/_/g'`
cat <<- EOF > "${RUST_ENV_SETUP_SH}"
- export
CARGO_TARGET_${RUST_TARGET_TRIPLE}_RUSTFLAGS="--sysroot=\$OECORE_TARGET_SYSROOT/usr
-C link-arg=--sysroot=\$OECORE_TARGET_SYSROOT"
- export CARGO_BUILD_TARGET="${RUST_TARGET_SYS}"
- export
RUST_TARGET_PATH="\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib"
+
LIB_PATH="\$OECORE_TARGET_SYSROOT/usr/${baselib}/rustlib/${RUST_TARGET_SYS}/lib"
+ export
CARGO_TARGET_${RUST_TARGET_TRIPLE}_RUSTFLAGS="--sysroot=\$OECORE_TARGET_SYSROOT/usr
-C link-arg=--sysroot=\$OECORE_TARGET_SYSROOT -L \$LIB_PATH"
+ if [ "\$OECORE_TARGET_ARCH" = "${TARGET_ARCH}" ]; then
+ export RUST_TARGET_SYS_VALUE="${RUST_TARGET_SYS}"
+ export CARGO_BUILD_TARGET="${RUST_TARGET_SYS}"
+ export
RUST_TARGET_PATH="\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib"
+ fi
EOF
chown -R root.root ${D}
If this fine?, i will send a v3.
Thanks,
Harish
>
> Cheers,
>
> Richard
prev parent reply other threads:[~2026-09-07 18:18 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-07 9:31 [PATCH v2 1/3] rust-cross-canadian: install target-specific env scripts and fix rustlib lookup Harish.Sadineni
2026-08-07 9:31 ` [PATCH v2 2/3] toolchain-scripts: source target-specific environment setup scripts Harish.Sadineni
2026-09-07 21:56 ` [OE-core] " Richard Purdie
[not found] ` <18D328AC1287253A.77878@lists.openembedded.org>
2026-09-07 22:10 ` Richard Purdie
2026-08-07 9:31 ` [PATCH v2 3/3] oeqa/sdk/cases/rust.py: Expand test to verify cargo build builds for target Harish.Sadineni
2026-08-20 8:54 ` [OE-core] [PATCH v2 1/3] rust-cross-canadian: install target-specific env scripts and fix rustlib lookup Richard Purdie
2026-08-21 8:55 ` Harish Sadineni
2026-08-27 17:31 ` Richard Purdie
2026-09-07 18:17 ` Harish Sadineni [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fafbd39b-6914-478a-af3a-7c5a2b7022bc@windriver.com \
--to=harish.sadineni@windriver.com \
--cc=Sundeep.Kokkonda@windriver.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=richard.purdie@linuxfoundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.