From: "Richard Purdie" <richard.purdie@linuxfoundation.org>
To: "Kuber, Esteban" <ekuber@amazon.com>,
Randy MacLeod <randy.macleod@windriver.com>,
Patches and discussions about the oe-core layer
<openembedded-core@lists.openembedded.org>
Cc: "steven@stevenwalter.org" <steven@stevenwalter.org>,
"johan.anderholm@gmail.com" <johan.anderholm@gmail.com>,
"derek@asterius.io" <derek@asterius.io>,
"cardoe@cardoe.com" <cardoe@cardoe.com>,
"dev@codyps.com" <dev@codyps.com>,
"tylerwhall@gmail.com" <tylerwhall@gmail.com>,
Khem Raj <raj.khem@gmail.com>,
"vinay.kumar@blackfigtech.com" <vinay.kumar@blackfigtech.com>,
"saul.wold@windriver.com" <saul.wold@windriver.com>,
"martin.jansa@gmail.com" <martin.jansa@gmail.com>,
"paul@pbarker.dev" <paul@pbarker.dev>,
Trevor Gamblin <trevor.gamblin@windriver.com>,
"anbelski@linux.microsoft.com" <anbelski@linux.microsoft.com>,
Vinay Kumar <vinay.m.engg@gmail.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
"Orling, Timothy T" <timothy.t.orling@intel.com>,
"Elberger, Richard" <elberger@amazon.com>
Subject: Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
Date: Wed, 01 Sep 2021 09:44:49 +0100 [thread overview]
Message-ID: <a29dcef3c659c57af8c25066a4949a80b6d82699.camel@linuxfoundation.org> (raw)
In-Reply-To: <7A95231E-0879-46D6-8653-85338E9BDDFA@amazon.com>
Hi Esteban,
On Fri, 2021-08-27 at 15:18 +0000, Kuber, Esteban wrote:
> On 2021/8/27, 2:03 AM, "Richard Purdie" <richard.purdie@linuxfoundation.org> wrote:
> > and:
> >
> > 2. a reproducible build failure on CentOS-7:
> >
> > https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/597
> >
> > where, we see:
> > = note: /bin/sh: /lib64/libc.so.6: version `GLIBC_2.33' \
> > not found (required by \
> > /home/pokybuild/yocto-worker/reproducible-centos/build/\
> > build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
> > 1.54.0-r0/recipe-sysroot-native/usr/lib/libtinfo.so.5)
> >
> >
> >
> >
> >
> > error: linking with `\
> > /home/pokybuild/yocto-worker/reproducible-centos/build/\
> > build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
> > 1.54.0-r0/wrapper/target-rust-ccld` failed: exit status: 1
>
>
> I had a quick look at this. It reproduces if you build cargo-native on a centos7
> machine with our M2 buildtools tarball in the environment of the build.
>
> Adding the uninative relocation hack to the cargo snapshot binary with:
>
> do_cargo_setup_snapshot () {
> ${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
> + # Need to use uninative's loader if enabled/present since the library paths
> + # are used internally by rust and result in symbol mismatches if we don't
> + if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
> + patchelf-uninative ${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo --set-interpreter ${UNINATIVE_LOADER}
> + fi
> }
>
> didn't help.
>
> Running the command it mentions failing by hand in the same toolchain enabled
> shell works. It therefore seems likely that something rust is putting into the
> environment is breaking things. What that is, I don't know, I'm out of time to
> debug further.
>
> I'm looking at what that could be. If I can't give you the actual list (from the
> code), I can give you a patch to print out to stderr *everything* that rustc is
> setting during builds. We currently have a `-v` verbose flag in cargo that
> gives out the full command with wich rustc in invoked, but as you say, the
> problem is likely the environment variables at play.
With some further debugging as I mentioned in my other reply, it is the
LD_LIBRARY_PATH setting which is confusing things. Probably as a result of:
https://doc.rust-lang.org/cargo/reference/environment-variables.html#dynamic-library-paths
> It looks to me like it is using the ld from the host instead of the buildtools
> tarball. I did change tmp/work/x86_64-linux/cargo-native/1.54.0-
> r0/wrapper/target-rust-ccld to a full path to gcc and messed with PATH to ensure
> it would find "our" ld first but that didn't help.
>
> This is making me wonder, could it be that we are defaulting to a linker that is
> not supplied in the buildtools tar.gz? That would explain why it ends up picking
> up the system's even when changing the $PATH.
It is a bit more subtle than that. The ccld script has /bin/sh as the
interpreter which uses the host libc and host libtinfo. The LD_LIBRARY_PATH
injected by cargo causes it to find the libtinfo in the recipe-sysroot-native
which is incompatible with it and things then fail :(.
>
> In the error output is some:
>
> Usage: which [options] [--] COMMAND [...]
> Write the full path of COMMAND(s) to standard output.
>
> suggesting some which call might not be compatible with centos7?
>
> Cheers,
>
> Richard
>
> One clarification I would like to have is, is this the *first* time you are
> trying to build rustc in this configuration, or is this a *recent* problem
> introduced in 1.54? Just want to make sure that my understanding that we are
> dealing with the former is correct.
This is the first time we've tried this as far as I know.
It is a horrible mix of different host tools and libcs from uninative,
buildtools and the host all conflicting when LD_LIBRARY_PATH is set :(.
I'm not sure how to go about resolving this.
Cheers,
Richard
next prev parent reply other threads:[~2021-09-01 8:44 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-11 0:22 [v3] [RFC] Merge meta-rust to oe-core Randy MacLeod
2021-08-11 13:14 ` Randy MacLeod
2021-08-11 15:18 ` Randy MacLeod
2021-08-13 15:19 ` [OE-core] [v4] " Vinay Kumar
2021-08-13 15:22 ` Vinay Kumar
2021-08-17 14:52 ` Randy MacLeod
[not found] ` <169C1FA457B99CA0.23238@lists.openembedded.org>
2021-08-20 10:06 ` [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update Randy MacLeod
2021-08-21 2:48 ` Randy MacLeod
2021-08-21 8:46 ` Richard Purdie
[not found] ` <169D3274AAECC435.19323@lists.openembedded.org>
2021-08-22 3:12 ` Randy MacLeod
2021-08-22 11:19 ` Richard Purdie
2021-08-22 12:45 ` Randy MacLeod
2021-08-23 9:21 ` Richard Purdie
2021-08-24 16:48 ` Randy MacLeod
[not found] ` <169E4C0C80951608.1595@lists.openembedded.org>
2021-08-27 4:05 ` Randy MacLeod
2021-08-27 9:03 ` Richard Purdie
[not found] ` <7A95231E-0879-46D6-8653-85338E9BDDFA@amazon.com>
2021-09-01 8:44 ` Richard Purdie [this message]
[not found] ` <16A0A6483A22DE64.7229@lists.openembedded.org>
2021-09-01 9:15 ` Richard Purdie
[not found] ` <169F1E62C63E8EDC.31425@lists.openembedded.org>
2021-08-27 12:04 ` Richard Purdie
[not found] ` <169F2844BF9C5B85.31425@lists.openembedded.org>
2021-09-01 8:38 ` Richard Purdie
2021-08-27 14:31 ` Armin Kuster
2021-08-27 20:09 ` Tim Orling
[not found] ` <169D9CED4738B0BB.18298@lists.openembedded.org>
2021-08-22 12:38 ` Richard Purdie
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=a29dcef3c659c57af8c25066a4949a80b6d82699.camel@linuxfoundation.org \
--to=richard.purdie@linuxfoundation.org \
--cc=alexandre.belloni@bootlin.com \
--cc=anbelski@linux.microsoft.com \
--cc=cardoe@cardoe.com \
--cc=derek@asterius.io \
--cc=dev@codyps.com \
--cc=ekuber@amazon.com \
--cc=elberger@amazon.com \
--cc=johan.anderholm@gmail.com \
--cc=martin.jansa@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=paul@pbarker.dev \
--cc=raj.khem@gmail.com \
--cc=randy.macleod@windriver.com \
--cc=saul.wold@windriver.com \
--cc=steven@stevenwalter.org \
--cc=timothy.t.orling@intel.com \
--cc=trevor.gamblin@windriver.com \
--cc=tylerwhall@gmail.com \
--cc=vinay.kumar@blackfigtech.com \
--cc=vinay.m.engg@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox