[OE-core] [PATCH] relocate_sdk.py: remove hardcoded SDK path

Richard Purdie richard.purdie at linuxfoundation.org
Wed Jul 25 15:44:10 UTC 2018


Whilst we merged this, it has unfortunately totally broken uninative-
tarball. We're under pressure to update to a new uninative to unbreak
builds on recent distros with sstate sharing and this now blocks doing
so.

I can't add the value to the relocate_sdk.py call from
uninative.bbclass since I don't know what value the tarball would have
been generated with.

I suspect I'll have to revert this and then you can work on a way to
fix this...

Cheers,

Richard

On Tue, 2018-07-17 at 08:22 -0700, Christopher Larson wrote:
> IMHO this is a solid improvement that should go in.
> 
> On Tue, Jul 17, 2018 at 8:09 AM Ruslan Bilovol via Openembedded-core
> <openembedded-core at lists.openembedded.org> wrote:
> > Hi all,
> > 
> > Any comments on this patch?
> > 
> > Thanks
> > Ruslan
> > 
> > On 11/22/2017 01:20 PM, Ruslan Bilovol wrote:
> > > This patch removes hardcodes added to relocate_sdk.py
> > > during SDK build, making it flexible and reusable.
> > > Now default SDK path is passed to the script as
> > > parameter rather then harcoded inside it.
> > > 
> > > This allows to reuse this script for multiple
> > > relocations, and adds possibility to relocate
> > > SDK multiple times
> > > 
> > > Signed-off-by: Ruslan Bilovol <rbilovol at cisco.com>
> > > ---
> > >   meta/classes/populate_sdk_base.bbclass |  5 -----
> > >   meta/files/toolchain-shar-relocate.sh  |  2 +-
> > >   scripts/relocate_sdk.py                | 17 +++++++++--------
> > >   3 files changed, 10 insertions(+), 14 deletions(-)
> > > 
> > > diff --git a/meta/classes/populate_sdk_base.bbclass
> > b/meta/classes/populate_sdk_base.bbclass
> > > index 424c63c..e7aa5a8 100644
> > > --- a/meta/classes/populate_sdk_base.bbclass
> > > +++ b/meta/classes/populate_sdk_base.bbclass
> > > @@ -152,11 +152,6 @@ do_populate_sdk[stamp-extra-info] =
> > "${MACHINE}${SDKMACHINE}"
> > >   
> > >   fakeroot create_sdk_files() {
> > >       cp ${COREBASE}/scripts/relocate_sdk.py
> > ${SDK_OUTPUT}/${SDKPATH}/
> > > -
> > > -     # Replace the ##DEFAULT_INSTALL_DIR## with the correct
> > pattern.
> > > -     # Escape special characters like '+' and '.' in the SDKPATH
> > > -     escaped_sdkpath=$(echo ${SDKPATH} |sed -e
> > "s:[\+\.]:\\\\\\\\\0:g")
> > > -     sed -i -e "s:##DEFAULT_INSTALL_DIR##:$escaped_sdkpath:"
> > ${SDK_OUTPUT}/${SDKPATH}/relocate_sdk.py
> > >   }
> > >   
> > >   python check_sdk_sysroots() {
> > > diff --git a/meta/files/toolchain-shar-relocate.sh
> > b/meta/files/toolchain-shar-relocate.sh
> > > index e3c1001..f82ff2b 100644
> > > --- a/meta/files/toolchain-shar-relocate.sh
> > > +++ b/meta/files/toolchain-shar-relocate.sh
> > > @@ -36,7 +36,7 @@ if [ x\${PYTHON} = "x"  ]; then
> > >       echo "SDK could not be relocated.  No python found."
> > >       exit 1
> > >   fi
> > > -\${PYTHON} ${env_setup_script%/*}/relocate_sdk.py
> > $target_sdk_dir $dl_path $executable_files
> > > +\${PYTHON} ${env_setup_script%/*}/relocate_sdk.py
> > $DEFAULT_INSTALL_DIR $target_sdk_dir $dl_path $executable_files
> > >   EOF
> > >   
> > >   $SUDO_EXEC mv $tdir/relocate_sdk.sh
> > ${env_setup_script%/*}/relocate_sdk.sh
> > > diff --git a/scripts/relocate_sdk.py b/scripts/relocate_sdk.py
> > > index c752fa2..0d5a6f5 100755
> > > --- a/scripts/relocate_sdk.py
> > > +++ b/scripts/relocate_sdk.py
> > > @@ -38,8 +38,6 @@ else:
> > >       def b(x):
> > >           return x.encode(sys.getfilesystemencoding())
> > >   
> > > -old_prefix = re.compile(b("##DEFAULT_INSTALL_DIR##"))
> > > -
> > >   def get_arch():
> > >       f.seek(0)
> > >       e_ident =f.read(16)
> > > @@ -212,19 +210,22 @@ def change_dl_sysdirs(elf_file_name):
> > >           f.write(sysdirslen)
> > >   
> > >   # MAIN
> > > -if len(sys.argv) < 4:
> > > +if len(sys.argv) < 5:
> > >       sys.exit(-1)
> > >   
> > >   # In python > 3, strings may also contain Unicode characters.
> > So, convert
> > >   # them to bytes
> > >   if sys.version_info < (3,):
> > > -    new_prefix = sys.argv[1]
> > > -    new_dl_path = sys.argv[2]
> > > +    new_prefix = sys.argv[2]
> > > +    new_dl_path = sys.argv[3]
> > >   else:
> > > -    new_prefix = sys.argv[1].encode()
> > > -    new_dl_path = sys.argv[2].encode()
> > > +    new_prefix = sys.argv[2].encode()
> > > +    new_dl_path = sys.argv[3].encode()
> > > +
> > > +executables_list = sys.argv[4:]
> > >   
> > > -executables_list = sys.argv[3:]
> > > +old_prefix_ne = b(sys.argv[1])
> > > +old_prefix = re.compile(re.escape(old_prefix_ne));
> > >   
> > >   for e in executables_list:
> > >       perms = os.stat(e)[stat.ST_MODE]
> > > 
> > -- 
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core at lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
> 
> 



More information about the Openembedded-core mailing list