[OE-core] [PATCH 1/1] linux-yocto_3.4: use ${KSRC_linux_yocto_3_4_repo} based SRC_URI

Richard Purdie richard.purdie at linuxfoundation.org
Sun Jan 20 13:44:44 UTC 2013


On Fri, 2013-01-18 at 17:43 +0000, Kamble, Nitin A wrote:
> 
> > -----Original Message-----
> > From: Saul Wold [mailto:sgw at linux.intel.com]
> > Sent: Friday, January 18, 2013 9:37 AM
> > To: Kamble, Nitin A
> > Cc: Openembedded-core at lists.openembedded.org
> > Subject: Re: [OE-core] [PATCH 1/1] linux-yocto_3.4: use
> > ${KSRC_linux_yocto_3_4_repo} based SRC_URI
> > 
> > On 01/18/2013 09:23 AM, Kamble, Nitin A wrote:
> > >
> > >
> > >> -----Original Message-----
> > >> From: Saul Wold [mailto:sgw at linux.intel.com]
> > >> Sent: Friday, January 18, 2013 9:19 AM
> > >> To: Kamble, Nitin A
> > >> Cc: Openembedded-core at lists.openembedded.org
> > >> Subject: Re: [OE-core] [PATCH 1/1] linux-yocto_3.4: use
> > >> ${KSRC_linux_yocto_3_4_repo} based SRC_URI
> > >>
> > >> On 01/16/2013 11:46 AM, nitin.a.kamble at intel.com wrote:
> > >>> From: Nitin A Kamble <nitin.a.kamble at intel.com>
> > >>>
> > >>> This makes replacing kernel git repository easy.
> > >>> For example you can add the following line in your local.conf to use
> > >>> your own local kernel repository:
> > >>>
> > >>> KSRC_linux_yocto_3_4_repo = "/home/nitin/linux-yocto-
> > >> 3.4.git/;protocol=file"
> > >>>
> > >>> Signed-off-by: Nitin A Kamble <nitin.a.kamble at intel.com>
> > >>> ---
> > >>>    meta/recipes-kernel/linux/linux-yocto_3.4.bb |    3 ++-
> > >>>    1 files changed, 2 insertions(+), 1 deletions(-)
> > >>>
> > >>> diff --git a/meta/recipes-kernel/linux/linux-yocto_3.4.bb
> > >>> b/meta/recipes-kernel/linux/linux-yocto_3.4.bb
> > >>> index 70ed967..92129b6 100644
> > >>> --- a/meta/recipes-kernel/linux/linux-yocto_3.4.bb
> > >>> +++ b/meta/recipes-kernel/linux/linux-yocto_3.4.bb
> > >>> @@ -11,7 +11,8 @@ SRCREV_machine_qemux86-64 ?=
> > >> "5432e2acb6053f9f7563cf63abd101ed2fdc1b6f"
> > >>>    SRCREV_machine ?= "5432e2acb6053f9f7563cf63abd101ed2fdc1b6f"
> > >>>    SRCREV_meta ?= "7e0cd2990798aae80565baa17d3b6c771874f284"
> > >>>
> > >>> -SRC_URI = "git://git.yoctoproject.org/linux-yocto-
> > >>
> > 3.4.git;protocol=git;nocheckout=1;branch=${KBRANCH},${KMETA};name=ma
> > >> chine,meta"
> > >>> +KSRC_linux_yocto_3_4_repo ?= "git.yoctoproject.org/linux-yocto-
> > >> 3.4.git;protocol=git"
> > >>> +SRC_URI =
> > >>
> > "git://${KSRC_linux_yocto_3_4_repo};nocheckout=1;branch=${KBRANCH},${
> > >> KMETA};name=machine,meta"
> > >>>
> > >>
> > >> Nitin,
> > >>
> > >> Can't the same be accomplished by setting SRC_URI-yocto-linux in your
> > >> local.conf file:
> > >>
> > >>> SRC_URI_linux-yocto =
> > >>> "/home/nitin/linux-yocto-3.4.git/;protocol=file
> > >> ;nocheckout=1;branch=${KBRANCH},${KMETA};name=machine,meta"
> > >>
> > >> Yes, it might require a little cut paste of the nocheck... part.
> > >>
> > >> Sau!
> > >>
> > >
> > >
> > > Saul,
> > >     This way same settings can be used for any BSP. And shouldn't we make
> > life of YP developer easy?
> > >
> > This just seems like an extra variable that then needs to be documented
> > when the SRC_URI already exists for this purpose.
> 
> And this new variable is going to make kernel developer's life easy to just replace the kernel repository
> while keeping all the kernel repo branch names same. 
> 
> As a kernel/BSP developer it definitely makes my life easier.

I'm not taking things like this which solve a given specialist use case
but would need to result in every recipe changing where someone wanted
to do this. To be blunt, your choice of variable name also sucks.

Embrace the power of the scripting we have, there are much more
interesting ways to solve this problem generically. For example, I wrote
this piece of code in a few minutes (admittedly untested):


urlremapper.bbclass:

python () {
    mod = False
    newsrcuri = []
    srcuri = (d.getVar("SRC_URI", True) or "").split()
    maps = d.getVarFlags("URLREMAP")
    for uri in srcuri:
        for u in maps: 
        if uri.startswith(u):
            uri.replace(u, maps[u])
            mod = True
        newsrcuri.append(uri)
    if mod:
        d.setVar("SRC_URI", " ".join(newsrcuri))
}


URLREMAP[git://git.yoctoproject.org/linux-yocto-3.4.git] = "git:///home/nitin/linux-yocto-3.4.git/;protocol=file"

which should do what you want but in a generic way which doesn't require
us to hack each recipe. You can do it completely locally if you create a
classes directory alongside your conf directory and place the .bbclass
there, then add INHERIT += "urlremapper" in local.conf.

Cheers,

Richard






More information about the Openembedded-core mailing list