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






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