From: "Richard Purdie" <richard.purdie@linuxfoundation.org>
To: Randy MacLeod <randy.macleod@windriver.com>,
Patches and discussions about the oe-core layer
<openembedded-core@lists.openembedded.org>
Cc: steven@stevenwalter.org, johan.anderholm@gmail.com,
derek@asterius.io, cardoe@cardoe.com, dev@codyps.com,
tylerwhall@gmail.com, Khem Raj <raj.khem@gmail.com>,
vinay.kumar@blackfigtech.com, saul.wold@windriver.com,
martin.jansa@gmail.com, paul@pbarker.dev,
Trevor Gamblin <trevor.gamblin@windriver.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>,
Richard Elberger <elberger@amazon.com>,
"Kuber, Esteban" <ekuber@amazon.com>
Subject: Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
Date: Wed, 01 Sep 2021 09:38:47 +0100 [thread overview]
Message-ID: <4be1ffd84c34d5dd4d46cc534e89620a09ea4e1a.camel@linuxfoundation.org> (raw)
In-Reply-To: <169F2844BF9C5B85.31425@lists.openembedded.org>
On Fri, 2021-08-27 at 13:04 +0100, Richard Purdie via lists.openembedded.org
wrote:
> On Fri, 2021-08-27 at 10:03 +0100, Richard Purdie via lists.openembedded.org
> wrote:
> > On Fri, 2021-08-27 at 00:05 -0400, Randy MacLeod wrote:
> > > 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.
> >
> > 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.
> >
> > 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?
>
> temp/run.do_compile: bbnote "cargo = $(which /home/pokybuild/yocto-worker/reproducible-centos/build/build-st/tmp2/work/x86_64-linux/cargo-native/1.54.0-r0/cargo-1.53.0-x86_64-unknown-linux-gnu/bin/cargo)"
> temp/run.do_compile: bbnote "rustc = $(which ${RUSTC})"
>
> so probably not important.
>
Distilling through all the noise, we reach this test case:
where you:
a) install buildtools-tarball and source the buildtools env
b) build cargo-native
then the failure can be reproduced with something like:
[pokybuild@centos7-ty-4 build-st]$ LD_LIBRARY_PATH=/home/pokybuild/yocto-worker/reproducible-centos/build/build-st/tmp/work/x86_64-linux/cargo-native/1.54.0-r0/recipe-sysroot-native/usr/lib /home/pokybuild/yocto-worker/reproducible-centos/build/build-st/tmp/work/x86_64-linux/cargo-native/1.54.0-r0/wrapper/target-rust-ccld
/bin/sh: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by /home/pokybuild/yocto-worker/reproducible-centos/build/build-st/tmp/work/x86_64-linux/cargo-native/1.54.0-r0/recipe-sysroot-native/usr/lib/libtinfo.so.5)
which is because /bin/sh comes from the host and links against libtinfo,
LD_LIBRARY_PATH is set by cargo to the recipe sysroot, it finds our libtinfo
rather than the host one and it is incompatible with the libc/loader being used
by /bin/sh.
I did find this is documented in:
https://doc.rust-lang.org/cargo/reference/environment-variables.html#dynamic-library-paths
and I suspect this is because it is adding "the rustc sysroot library path".
This also explains why running the reported ccld command by hand works since the
LD_LIBRARY_PATH is no longer set.
How to fix this? No idea.
Could/should we make rust use a different sysroot location?
Cheers,
Richard
next prev parent reply other threads:[~2021-09-01 8:38 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
[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 [this message]
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=4be1ffd84c34d5dd4d46cc534e89620a09ea4e1a.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