[yocto] How do I create a recipe for laying down post-build config files?
Jens Lucius
incnews at jenslucius.de
Tue Jun 10 01:30:39 PDT 2014
Hi
I am using a very minimal .bb for this.
DESCRIPTION = "Install additional files"
LICENSE = "CLOSED"
SECTION = "base"
PR = "r0"
SRC_URI = "file://autoinstaller.sh"
S = "${WORKDIR}"
do_install () {
install -d ${D}/usr/bin
install -m 755 ${S}/autoinstaller.sh ${D}/usr/bin
}
Am 09.06.2014 23:44, schrieb Jim Rafert:
> 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
> }
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20140610/66a86721/attachment.html>
More information about the yocto
mailing list