[yocto] bbappend on top of bbappend

Paul Eggleton paul.eggleton at linux.intel.com
Thu Aug 22 03:28:15 PDT 2013


Hi Paul,

On Friday 16 August 2013 16:22:00 Paul D. DeRocco wrote:
> In meta-oe/recipes-graphics/xinput-calibrator (Danny branch, currently
> used by Gumstix), there's a recipe called xinput-calibrator-git.bb, which
> installs a script for running a touchscreen calibration app if not already
> calibrated.
> 
> In
> meta-openembedded/meta-systemd/meta-oe/recipes-graphics/xinput-calibrator,
> there's a bbappend for this recipe, which declares a local file called
> xinput-calibrator.service, which is supposed to run the above script on
> startup. It inherits the systemd bbclass, which I assume knows how to
> install this service file automagically, since there's no explicit
> do_install copying the file anywhere.

The systemd.bbclass we now have in OE-Core (as of dylan) does not handle this 
automatically. The old one in meta-systemd does appear to though.

> The trouble is, on my Gumstix, the service fails because it needs a
> DISPLAY environment variable to tell it what display to calibrate. I
> figured the simplest thing to do would be to add an Environment=DISPLAY=:0
> line to the service unit file.

FWIW, when xinput-calibrator was moved over to OE-Core it was determined that 
this shouldn't even be started as a service by systemd, but instead launched 
using Xsession.d. You may have better results if you bring in the recipe from 
OE-Core master and use that instead.

> My shameless hack was to add a ROOTFS_POSTPROCESS_COMMAND that runs sed on
> the final copy of this service file in the rootfs, to insert the
> Environment= line, and that works. But I'd rather just provide my own
> version of the file, and use another .bbappend to prepend its file
> location to FILESEXTRAPATHS, overriding the one in the systemd .bbappend
> file.
> 
> So I tried that, just putting the following two lines into my own
> .bbappend:
> 
>     FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
>     PRINC := "${@int(PRINC) + 1}"
> 
> and of course putting the tweaked service file into my files subdirectory.
> On starting the build, it almost immediately spat this out:
> 
> NOTE:
> ['/home/pauld/yocto/meta-foo/recipes/xinput-calibrator_git.bbappend',
> '/home/pauld/yocto/poky/meta-openembedded/meta-systemd/meta-oe/recipes-gra
> phics/xinput-calibrator/xinput-calibrator_git.bbappend'] to
> ['/home/pauld/yocto/poky/meta-openembedded/meta-systemd/meta-oe/recipes-gr
> aphics/xinput-calibrator/xinput-calibrator_git.bbappend']
> 
> (That was all on one line, of course.)

BitBake will report new appends this way so this is expected. It is ugly 
though.

> The do_rootfs failed, and its log says that xinput-calibrator is an
> unknown package, and that it can't satisfy the dependency from
> packagegroup-core-x11-base.

I don't know why this would happen. It's unlikely to be related to changes 
you've made that are discussed here. Does the package appear under 
tmp/deploy/(ipk|rpm|deb)/ ?

> I read somewhere that stacked bbappends are handled in the order of layer
> priority. Mine is 5, the meta-systemd layer is 7. I don't know which is
> "higher", or if one wants a higher or lower priority in order to be the
> last one to prepend to the path. 

They will be applied in ascending order, so anything in the bbappend from a 
layer with a higher layer priority number takes precedence. FYI you can see 
the appends in effect in your configuration using:

bitbake-layers show-appends

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre



More information about the yocto mailing list