[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