[oe] [Bitbake-dev] Commit ca257adc587bb0937ea76d8b32b654fdbf4192b8 changes behavior on which recipes rely
Richard Purdie
rpurdie at rpsys.net
Wed Jul 7 14:02:10 UTC 2010
On Sat, 2010-07-03 at 18:01 -0700, Khem Raj wrote:
> Hi
>
> Due to this commit here
>
> commit ca257adc587bb0937ea76d8b32b654fdbf4192b8
> Author: Nitin A Kamble <nitin.a.kamble at intel.com>
> Date: Thu Jun 3 21:50:02 2010 -0700
>
> bitbake decodeurl: fix the file:// url handling
>
> Without this patch decoding a url of this kind file://dir/filename
> gives
> path=/filename host=dir.
> With the patch it decodes as path=/dir/filename host=""
>
> Probably nobody stumbled on this issue yet because nobody used
> file:// urls with directory names in the path.
>
> (From Poky rev: c3682bf89bdf236a4b4d834069d947b6a1456791)
>
> Signed-off-by: Nitin A Kamble <nitin.a.kamble at intel.com>
> Signed-off-by: Richard Purdie <rpurdie at linux.intel.com>
>
>
> few recipes in OE are broken now.
> Previous behavior was that if it has
> file://pam.d/securetty in SRC_URI
> then bitbake would copy it into
> $WORKDIR/pam.d/securetty and recipes used
> this location to access these files. But after
> this commit the directory is ignored and it gets
> copied into ${WORKDIT}
>
> Problem is that I have found three places where it happens
> two were ok because the build failed as it could not find
> the file where it was looking for but third one took me
> a day to debug because it copied only if directory existed
> otherwise it used the old files so the build passed and image
> got created but it would not let login happen
>
> see shadow recipes
>
> do_install_append() {
> # Ensure that /etc/skel is created so any default files that we want
> # copied into new users home
> # dirs can be put in there later (ideal for .xinitrc for example).
> install -d ${D}${sysconfdir}/skel/
>
> # Ensure that the image has as /var/spool/mail dir so shadow can put
> # mailboxes there if the user
> # reconfigures Shadow to default (see sed below).
> install -d ${D}${SHADOW_MAILDIR}
>
> if [ -e ${WORKDIR}/pam.d ]; then
> install -d ${D}${sysconfdir}/pam.d/
> install -m 0644 ${WORKDIR}/pam.d/* ${D}${sysconfdir}/pam.d/
> fi
>
> ...
>
>
> I would propose the revert the above commit as I am reluctant
> to fix so many recipes I know only 3 and who know how many more
> will start doing wrong things silently.
Hmm, I synced up Poky's bitbake fixes but I'd forgotten about this
commit:
http://git.pokylinux.org/cgit.cgi/poky/commit/?id=2160dddcc14d9378aff5d48ee72e3dc39b4ab8c7
How about using this code in base.bbclass:
if type == "file":
# When we switch to bitbake 1.10, simplify this mess
check = bb.decodeurl(url)[1]
if check:
destdir = check
elif path.find("/") != -1:
destdir = path.rsplit("/", 1)[0]
else:
destdir = "."
I don't like the idea of ignoring this as returning a host which is
really a path and is special cased in base.bbclass is just wrong and
should be fixed (with a sensible migration path).
We found this by noticing that file:/// urls don't work so it is a valid
fix.
Is someone with an old bitbake around able to test if the above solves
the problem?
Cheers,
Richard
More information about the Openembedded-devel
mailing list