[elbe-devel] [PATCH] Make SDK install script buster compatible

Torben Hohn torben.hohn at linutronix.de
Wed Oct 23 13:06:30 CEST 2019


On Wed, Oct 23, 2019 at 12:28:22PM +0200, Bastian Germann wrote:
> Am 23.10.19 um 11:54 schrieb Torben Hohn:
> > On Wed, Oct 23, 2019 at 10:08:27AM +0200, John Ogness wrote:
> >> On 2019-10-22, bage at linutronix.de wrote:
> >>> From: Bastian Germann <bage at linutronix.de>
> >>>
> >>> The SDK install script searches for ld-linux.so* in $native_sysroot/lib which
> >>
> >> No, it searches for ld-linux*
> >>
> >>> is not available on buster (tested for armhf target).
> >>>
> >>> Search the whole $native_sysroot directory to find files in usr/lib as well.
> >>>
> >>> Signed-off-by: Bastian Germann <bage at linutronix.de>
> >>> ---
> >>>  elbepack/makofiles/toolchain-shar-extract.sh.mako | 2 +-
> >>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/elbepack/makofiles/toolchain-shar-extract.sh.mako b/elbepack/makofiles/toolchain-shar-extract.sh.mako
> >>> index a56d1ae8c..7e432d125 100644
> >>> --- a/elbepack/makofiles/toolchain-shar-extract.sh.mako
> >>> +++ b/elbepack/makofiles/toolchain-shar-extract.sh.mako
> >>> @@ -282,7 +282,7 @@ fi
> >>>  
> >>>  # fix dynamic loader paths in all ELF SDK binaries
> >>>  native_sysroot=$target_sdk_dir/sysroots/host
> >>> -dl_path=$($SUDO_EXEC find $native_sysroot/lib -name "ld-linux*")
> >>> +dl_path=$($SUDO_EXEC find $native_sysroot -name "ld-linux.so*")
> >>
> >> This is a problem for several reasons:
> >>
> >> 1. ld-linux.so* does not match the dynamic loader for other
> >>    architectures
> > 
> > hmm... please name them.
> > this is a mako template, we know the target architecture, and the target
> > suite.
> > 
> > we can change from searching to a "hardcoded" matrix[suite][arch]
> > we have something similar already in elbepack/xmldefaults.py
> > this is not suite dependent though.
> > 
> > this will at least make the generated script simpler.
> > I prefer having somthing implemented in python, which yields
> > less moving parts in the generated shell scripts.
> > 
> > 
> > 
> >>
> >> 2. searching that openly could match unintentional files
> >>
> >> IMO it should look more like this:
> >>
> >> dl_path=''
> >> for p in $native_sysroot/lib $native_sysroot/usr/lib; do
> >>     test -d $p && ! test -L $p || continue
> >>     dl_path=$($SUDO_EXEC find $p -name 'ld-linux*')
> >>     break
> >> done
> >>
> >> Actually, there are quite a few things that the script does that I find
> >> horribly hacky. But the above suggestion should at least let things work
> >> as good as before, but for stretch and buster.
> > 
> > can you list them ?
> > i am not happy at all with this script.
> > 
> > This script is based on a script from yocto.
> > but we should start to move more logic into mako/python.
> > 
> > hmm... that said, i actually dont think, that the dynamic linker
> > actually changes, maybe its just the /lib link, that is broken in the
> > sysroot ?
> 
> There is no /lib in the sysroot. So adding it as a symbolic link
> pointing to /usr/lib would also fix the problem indeed.

hmm... that is probably a serious bug :(

elbepack/elbeproject.py:292
--------------------------------------------------------------------------------------
        with self.sysrootenv.rfs:
	            chroot(self.sysrootpath, "/usr/bin/symlinks -cr /usr/lib")

        paths = self.get_sysroot_paths()

        do("rm %s" % sysrootfilelist, allow_fail=True)
        os.chdir(self.sysrootpath)
        for p in paths:
            do('find -path "%s" >> %s' % (p, sysrootfilelist))
--------------------------------------------------------------------------------------

this should probably do it for the whole sysroot or a least for /lib
also. and then we need a change in get_sysroot_paths() so that the /lib
link is also included. (need to make sure its relative (thats what
symlinks -cr does....))



> 
> > 
> > i mean... the linker should always be /lib/ld-linux*, shouldnt it ?
> > where that link points to, is another question, though.
> > 
> >>
> >> John Ogness
> > 

-- 
Torben Hohn
Linutronix GmbH | Bahnhofstrasse 3 | D-88690 Uhldingen-Mühlhofen
Phone: +49 7556 25 999 18; Fax.: +49 7556 25 999 99

Hinweise zum Datenschutz finden Sie hier (Informations on data privacy 
can be found here): https://linutronix.de/kontakt/Datenschutz.php

Linutronix GmbH | Firmensitz (Registered Office): Uhldingen-Mühlhofen | 
Registergericht (Registration Court): Amtsgericht Freiburg i.Br., HRB700 
806 | Geschäftsführer (Managing Directors): Heinz Egger, Thomas Gleixner



More information about the elbe-devel mailing list