SUMMARY = "Packages to exercise postinstall functions" LICENSE = "MIT" inherit allarch PACKAGES = "${PN}-rootfs ${PN}-delayed-a ${PN}-delayed-b ${PN}-rootfs-failing" ALLOW_EMPTY_${PN}-rootfs = "1" ALLOW_EMPTY_${PN}-delayed-a = "1" ALLOW_EMPTY_${PN}-delayed-b = "1" ALLOW_EMPTY_${PN}-rootfs-failing = "1" RDEPENDS_${PN}-delayed-a = "${PN}-rootfs" RDEPENDS_${PN}-delayed-b = "${PN}-delayed-a" TESTDIR = "${sysconfdir}/postinst-test" # At rootfs time touch $TESTDIR/rootfs. Errors if the file already exists, or # if the function runs on first boot. pkg_postinst_${PN}-rootfs () { set -e if [ -z "$D" ]; then echo "${PN}-rootfs should have finished at rootfs time" exit 1 fi if [ -e $D${TESTDIR}/rootfs ]; then echo "$D${TESTDIR}/rootfs exists, but should not" exit 1 fi mkdir -p $D${TESTDIR} touch $D${TESTDIR}/rootfs } # Depends on rootfs, delays until first boot, verifies that the rootfs file was # written. pkg_postinst_ontarget_${PN}-delayed-a () { set -e if [ ! -e ${TESTDIR}/rootfs ]; then echo "${PN}-delayed-a: ${TESTDIR}/rootfs not found" exit 1 fi touch ${TESTDIR}/delayed-a } # Depends on delayed-a, delays until first boot, verifies that the delayed-a file was # written. This verifies the ordering between delayed postinsts. pkg_postinst_ontarget_${PN}-delayed-b () { set -e if [ ! -e ${TESTDIR}/delayed-a ]; then echo "${PN}-delayed-b: ${TESTDIR}/delayed-a not found" exit 1 fi touch ${TESTDIR}/delayed-b } # This scriptlet intentionally includes a bogus command in the middle to test # that we catch and report such errors properly. pkg_postinst_${PN}-rootfs-failing () { mkdir -p $D${TESTDIR} touch $D${TESTDIR}/rootfs-before-failure run_a_really_broken_command # Scriptlet execution should stop here; the following commands are NOT supposed to run. # (oe-selftest checks for it). touch $D${TESTDIR}/rootfs-after-failure }