[yocto] How do I create a recipe for laying down post-build config files?

Maxim Radugin maxim.radugin at gmail.com
Tue Jun 10 08:02:47 PDT 2014


Hello Jim,

I don't think this is a good idea to put all the config files for different
packages in one recipe.
IMHO you should use .bbappend file for each recipe you are
overriding/modifying files for, otherwise you can run into situation when,
you recipe gets installed before, for example, grub.
Then your config will be overwritten by grub.cfg provided in grub package
(this is just an example, I'm not sure grub provides default one).

I wonder why you don't get another QA warning that you are overwriting
files that were installed by different package.

It is OK to put your specific files in such recipe, like RELEASE-NOTES.txt,
etc.

BR,
Maxim.



On Tue, Jun 10, 2014 at 12:44 AM, Jim Rafert <jimr at spectralogic.com> wrote:

>  I'm trying to gather all my post-build tweaks into a recipe that will be
> built as part of an upper-level layer, so that they are installed after the
> meta layer is processed.  Many of these could be accomplished as part of
> .bbappend files for the recipes that originally supply the config files,
> but I wanted to gather all my customizations in one spot, so that they're
> easy to find.
>
> The recipe doesn't actually build anything, so there's no do_build task.
>
> This is surely something that is commonly wanted.
>
> Here's my current recipe, in spectra-postbuild_0.1.bb.
>
> When I try to build an image, the build fails with
> ERROR: QA Issue: spectra-postbuild: Files/directories were installed but
> not shipped
>   /RELEASE-NOTES.txt
>
> When I disable the installed-vs-shipped QA test,  it fails later when it
> can't find a package file.
>
> I must be missing something critical here?
> SUMMARY = "Post processing of configuration files for SpectraOS"
> SECTION = "base"
> LICENSE = "GPLv2"
> LIC_FILES_CHKSUM =
> "file://${WORKDIR}/COPYRIGHT;md5=349c872e0066155e1818b786938876a4"
> RDEPENDS_${PN} = "initscripts"
> PR = "r0"
>
> SRC_URI = "file://inittab \
>        file://fstab \
>        file://rsyslog.conf \
>        file://grub.cfg \
>        file://mount.sh \
>        file://RELEASE-NOTES.txt \
>        file://Spectra-OS-Version \
>        file://initializeCustomKernelModules \
>        file://firewall \
>        file://sysctl.conf \
>        file://COPYRIGHT \
>        "
>
> CONFFILES_${PN} += "${sysconfdir}/init.d/firewall "
> CONFFILES_${PN} += "${sysconfdir}/init.d/initializeCustomKernelModules "
> FILES_${PN} =  "/RELEASE_NOTES.txt /Spectra-OS-Version "
>
> #INSANE_SKIP_${PN} = "installed-vs-shipped"
>
> do_install () {
>     install -m 755 ${WORKDIR}/RELEASE-NOTES.txt ${D}
>     install -m 755 ${WORKDIR}/Spectra-OS-Version ${D}
> }
>
> pkg_postinst_${PN} () {
>     install -d ${D}${sysconfdir}/init.d
>     install -d ${D}${sbindir}
>
>     #Install our inittab and fstab
>     echo Install our inittab and fstab
>     install -m 544 ${WORKDIR}/inittab ${D}/etc/inittab
>     install -m 755 ${WORKDIR}/fstab ${D}/etc/fstab
>     install -m 755 ${WORKDIR}/rsyslog.conf ${D}/etc/rsyslog.conf
>     mkdir -p ${D}/boot/grub
>     install -m 755 ${WORKDIR}/grub.cfg ${D}/boot/grub/grub.cfg
>         install -d ${D}/etc/udev/scripts
>     install -m 755 ${WORKDIR}/mount.sh ${D}/etc/udev/scripts/mount.sh
>     chmod 755 ${D}/etc/udev/scripts/mount.sh
>     install -m 755 ${WORKDIR}/RELEASE-NOTES.txt ${D}
>     install -m 755 ${WORKDIR}/Spectra-OS-Version ${D}
>
>     #Remove unneeded services from startup
>     echo Remove unneeded services from startup
>     rm ${D}/etc/rc5.d/S20nfsserver
>     rm ${D}/etc/rc5.d/S20syslog
>     rm ${D}/etc/rc5.d/S70lighttpd
>
>     #Add /dev/sdd to the auto mount blacklist
>     chmod 777 ${D}/etc/udev/mount.blacklist
>     echo "/dev/sda*" >> ${D}/etc/udev/mount.blacklist
>     echo "/dev/sdd*" >> ${D}/etc/udev/mount.blacklist
>     echo "/dev/sde*" >> ${D}/etc/udev/mount.blacklist
>     chmod 644 ${D}/etc/udev/mount.blacklist
>
>     #Remove /var/log link to /var/volatile/log, persist log.
>     rm ${D}/var/log
>     mkdir ${D}/var/log
>     mv ${D}/etc/default/volatiles/00_core
> ${D}/etc/default/volatiles/00_core.orig
>     grep -v volatile/log ${D}/etc/default/volatiles/00_core.orig |  tee
> ${D}/etc/default/volatiles/00_core >/dev/null
>     rm ${D}/etc/default/volatiles/00_core.orig
>
>     #Create directory for SCST
>     mkdir -p ${D}/var/lib/scst/pr
>     mkdir -p ${D}/usr/local/bin
>     mkdir -p ${D}/etc/logrotate.d
>     #Install drivers load script
>     echo Install drivers load script
>     install -m 755 ${WORKDIR}initializeCustomKernelModules ${D}/etc/init.d
>     ln -s ${D}/etc/init.d/initializeCustomKernelModules
> ${D}/etc/rc5.d/S70initializeCustomKernelModules
>     echo Install firewall configuration boot script
>     install -m 755 ${WORKDIR}firewall ${D}/etc/init.d
>     chmod +x ${D}/etc/init.d/firewall
>     ln -s ${D}/etc/init.d/firewall ${D}/etc/rc5.d/S80firewall
>     #copy config change for console log level
>     install -m 755 ${WORKDIR}sysctl.conf ${D}/etc/sysctl.conf
> }
>
>
>
> --
> _______________________________________________
> yocto mailing list
> yocto at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20140610/20a06310/attachment.html>


More information about the yocto mailing list