Well, now that I've resolved my spelling error, the build succeeds, but my pkg_postinst_${PN} () function doesn't seem to run. I suppose I'm resigned to making .bbappend recipes to lay down my revised version of the config files. at least they can all be localized in a layer. Sometimes you just have to bite the bullet and do things the right way. However, I don't know how to go about removing files and links after the build is done, and running transformative scripts on other files. For example, see the following code examples that I want to replicate. #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 #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 Any ideas how to do this? -Jim- ________________________________ From: Jim Rafert Sent: Monday, June 09, 2014 3:44 PM To: yocto@yoctoproject.org Subject: How do I create a recipe for laying down post-build config files? 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 }