Using "latest git" versions of recipes


Joel A Cohen
 

Hi all,

What I've done for quite a while when creating recipes for code that is under heavy development is create 2 version of the recipe.

1) recipe_1.0.0.bb (a known-stable recipe)

2) recipe_git.bb (which contains something like:
SRCREV="${AUTOREV}"
SRCPV="1.0.1+git${SRCPV}"
DEFAULT_PREFERENCE = "-1"


The major problem I have with this, is that it defeats BB_NO_NETWORK, even if I'm not using the git version of the recipe (because bitbake wants to go check what the latest version is of the recipe during parsing).

I'm currently experimenting with a different approapch, which seems to have several advantages. I wanted to share it and get commentary.

1) Add a new class, "use-git.bbclass":
# This allows using the latest version of the source without requiring a separate
# "recipe_git.bb". To use:
# 1) Add: INHERIT += "use-git"
# 2) Add: GIT_PNS = "recipe1 recipe2 etc"

GIT_PNS ?= ""
GIT_PNS[type] = "list"

python () {
    pn = d.getVar('PN')
    git_pns = d.getVar('GIT_PNS', [])

    if pn in git_pns:
        d.setVar('SRCREV', d.getVar('AUTOREV'))
        srcpv = d.getVar('SRCPV')
        d.appendVar('PV', '+git' + srcpv)
        bb.note('Using latest git source code for %s, as recipe %s' % (pn, d.getVar('BP')))
}



2) In local.conf:
INHERIT += "use-git"
GIT_PNS = "recipe1 recipe2 etc"



This is nice, because I no longer have to create those recipe_git.bb recipes, and it's a central place to go configure a "use latest source code" setting.

Is this interesting to anyone else?

--Aaron

Join yocto@lists.yoctoproject.org to automatically receive all group messages.