All of lore.kernel.org
 help / color / mirror / Atom feed
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



  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 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.