[OE-core] [PATCH v2 5/7] toolchain-shar-extract: pass env to post-relocate

Martin Kelly mkelly at xevo.com
Mon Jun 4 18:10:02 UTC 2018


On 06/04/2018 10:20 AM, Joshua Watt wrote:
> 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.
> 

OK, that's good to know.

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

Yes, I see that now. Given that the top-level environment-setup script 
implicitly sources the individual project sh scripts, isn't it correct 
to source only the top-level one? In that way, if the path to the 
individual sh scripts changes, this code won't break, and it leaves the 
top-level script to the single source of truth with regard to 
environment setup scripts.


More information about the Openembedded-core mailing list