[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