[OE-core] [OE-Core][PATCH 07/13] musl: Ensure GLIBC_LDSO symlink target does not exist on reinstall

richard.purdie at linuxfoundation.org richard.purdie at linuxfoundation.org
Mon Dec 17 10:44:27 UTC 2018


On Mon, 2018-12-17 at 11:49 +0200, Serhey Popovych wrote:
> Richard Purdie wrote:
> > On Fri, 2018-12-14 at 11:09 -0800, Andre McCurdy wrote:
> > > On Fri, Dec 14, 2018 at 9:57 AM Serhey Popovych
> > > <serhe.popovych at gmail.com> wrote:
> > > > Otherwise do_install task will fail on rebuild.
> > > > 
> > > > Signed-off-by: Serhey Popovych <serhe.popovych at gmail.com>
> > > > ---
> > > >  meta/recipes-core/musl/musl_git.bb | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > 
> > > > diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-
> > > > core/musl/musl_git.bb
> > > > index 9cc875c..4593cde 100644
> > > > --- a/meta/recipes-core/musl/musl_git.bb
> > > > +++ b/meta/recipes-core/musl/musl_git.bb
> > > > @@ -61,7 +61,7 @@ do_install() {
> > > >         oe_runmake install DESTDIR='${D}'
> > > > 
> > > >         install -d ${D}${bindir}
> > > > -       rm -f ${D}${bindir}/ldd
> > > > +       rm -f ${D}${bindir}/ldd ${D}${GLIBC_LDSO}
> > > 
> > > The correct fix here is actually to remove this line entirely.
> > > The
> > > official ruling is that there should be no expectation that re-
> > > running do_install should work and patches to make it work are
> > > not
> > > acceptable.
> > > 
> > >   
> > > http://lists.openembedded.org/pipermail/openembedded-core/2018-September/273723.html
> > 
> > Lets be clear, re-running the do_install task *is* supported and
> > works
> > today. It is actually meant to work when re-run. do_install clears
> > out
> > ${D} at its start so we can assume in do_install functions that it
> > is
> > empty at the start of the function.
> 
> It seems do_install does not clear ${D} or I do something wrong:
> 
> $ bitbake core-image-sato
> <success>
> 
> <Adjust gcc/musl recipe and then run>
> 
> $ bitbake core-image-sato
> 
> ...
> /image/usr/lib64/libc.so
> /home/serhe/devel/git/openembedded-core/build/tmp-
> musl/work/ppc64p8le-oe-linux-musl/musl/1.1.20+gitAUTOINC+39ef612aa1-
> r0/image/lib64/ld-musl-powerpc64le.so.1
> > > true
> > Traceback (most recent call last):
> >   File "/home/serhe/devel/git/openembedded-core/scripts/lnr", line
> > 21,
> in <module>
> >     os.symlink(target, linkname)
> > FileExistsError: [Errno 17] File exists: 'image/usr/lib64/libc.so'
> > ->
> '/home/serhe/devel/git/openembedded-core/build/tmp-
> musl/work/ppc64p8le-oe-linux-musl/musl/1.1.20+gitAUTOINC+39ef612aa1-
> r0/imageNone'
> > WARNING:
> /home/serhe/devel/git/openembedded-core/build/tmp-
> musl/work/ppc64p8le-oe-linux-musl/musl/1.1.20+gitAUTOINC+39ef612aa1-
> r0/temp/run.do_install.77856:1
> exit 1 from 'lnr
> /home/serhe/devel/git/openembedded-core/build/tmp-
> musl/work/ppc64p8le-oe-linux-musl/musl/1.1.20+gitAUTOINC+39ef612aa1-
> r0/image/usr/lib64/libc.so
> /home/serhe/devel/git/openembedded-core/build/tmp-
> musl/work/ppc64p8le-oe-linux-musl/musl/1.1.20+gitAUTOINC+39ef612aa1-
> r0/imageNone'
> > ERROR: Function failed: do_install (log file is located at
> /home/serhe/devel/git/openembedded-core/build/tmp-
> musl/work/ppc64p8le-oe-linux-musl/musl/1.1.20+gitAUTOINC+39ef612aa1-
> r0/temp/log.do_install.77856)
> ERROR: Task
> (/home/serhe/devel/git/openembedded-core/meta/recipes-
> core/musl/musl_git.bb:do_install)
> failed with exit code '1'
> NOTE: Tasks Summary: Attempted 2713 tasks of which 2703 didn't need
> to
> be rerun and 1 failed.
> 
> ...
> 
> > The only problem may be if you're manually re-running the
> > do_install
> > script in WORKDIR/temp. If you're doing that, you have other
> > problems
> > like the missing fakeroot environment to handle so the non-empty
> > directory is only one minor issue, you're missing other setup
> > pieces as
> > well.
> 
> I haven't play with do_install scripts in WORKDIR/temp. Only
> do_configure and do_build. But anyway thank for pointing for
> potential
> problems.

I just tried "bitbake musl", then "bitbake musl -c install -f" which
should have reproduced the above but it worked fine. Admittedly I was
using MACHINE=qemux86-64. Do those two steps break for you?

Something isn't adding up here and I'd like to get to the bottom of
it...

Cheers,

Richard






More information about the Openembedded-core mailing list