[OE-core] [PATCH v2 5/7] toolchain-shar-extract: pass env to post-relocate
Joshua Watt
jpewhacker at gmail.com
Mon Jun 4 17:20:39 UTC 2018
On Fri, 2018-06-01 at 15:24 -0700, Martin Kelly wrote:
> On 06/01/2018 03:08 PM, Joshua Watt wrote:
> > On Fri, 2018-06-01 at 14:02 -0700, Martin Kelly wrote:
> > > It's useful for the post-relocate scripts to be able to see the
> > > SDK
> > > environment, for example to see the values of CC, CXX etc. in
> > > order
> > > to
> > > dynamically generate toolchain files.
> > >
> > > To enable this, source the SDK environment script prior to
> > > calling
> > > the
> > > relocate scripts.
> > >
> > > Signed-off-by: Martin Kelly <mkelly at xevo.com>
> > > ---
> > > meta/classes/toolchain-scripts.bbclass | 17 +++++++++++++
> > > ----
> > > meta/recipes-core/meta/meta-environment.bb | 5 +++--
> > > 2 files changed, 16 insertions(+), 6 deletions(-)
> > >
> > > diff --git a/meta/classes/toolchain-scripts.bbclass
> > > b/meta/classes/toolchain-scripts.bbclass
> > > index ae7bbef034..5f99fd8c03 100644
> > > --- a/meta/classes/toolchain-scripts.bbclass
> > > +++ b/meta/classes/toolchain-scripts.bbclass
> > > @@ -118,11 +118,20 @@ EOF
> > > }
> > >
> > > toolchain_create_post_relocate_script() {
> > > - script=$1
> > > - rm -f $script
> > > - touch $script
> > > + relocate_script=$1
> > > + sdk_script=$2
> > > + rm -f $relocate_script
> > > + touch $relocate_script
> > > +
> > > + cat >> $relocate_script <<EOF
> > > +# Source the SDK env script in case it is needed for the
> > > relocate
> > > scripts.
> > > +. $sdk_script
> >
> > I had originally done something similar to this when I added
> > support
> > for the post-relocate scripts with icecream. However, it is
> > insufficent
> > because there can be multiple SDK environment scripts that need to
> > be
> > sourced. In order to get a fully correct environment, I had to do:
> >
> > # Setup environment
> > for env_setup_script in `ls $1/environment-setup-*`; do
> > . $env_setup_script
> > done
> >
> > see meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-
> > setup.sh
> >
> >
>
> There's one overall "SDK environment" script (the one you source as
> a
> user to enter the SDK environment), and also customizable ones
> installed
> by nativesdk-* packages (e.g. one that cmake uses). In this patch, I
> had
> not intended that post-relocate scripts should be able to see the
> environment scripts for every project but instead just for the
> global
> SDK enivorment (to get at variables like OECORE_NATIVE_SYSROOT).
(Almost) All of the code I can find that deals with the SDK environment
supports multiple top level environment-setup-* files. If you happen to
have more than one, the relocation script will relocate all of them
(meta/files/toolchain-shar-relocate.sh), and the extraction script will
give you instructions to source them all (meta/files/toolchain-shar-
extract.sh).
It's possible this is some left over anachronism and it has no actual
use, but we should either fix it everywhere else or be consistent here.
>
> Let me know if I have missed something and not including the other
> environments could cause breakage.
>
> Here's what I mean from an example extracted SDK:
>
> martin at columbia:~$ ls /opt/xos/nanopi-neo-plus2/*environment*
> /opt/xos/nanopi-neo-plus2/environment-setup-aarch64-poky-linux
>
> martin at columbia:~$ ls
> /opt/xos/nanopi-neo-plus2/sysroots/x86_64-xevo-linux/environment-
> setup.d/
> cmake.sh
>
> In the above example, we are currently sourcing only
> /opt/xos/nanopi-neo-plus2/environment-setup-aarch64-poky-linux and
> not
> cmake.sh.
Sort of.... environment-setup-aarch64-poky-linux is going to implicitly
source the cmake.sh script (see the for loop at the end of the script)
More information about the Openembedded-core
mailing list