diff options
-rw-r--r-- | meta-selftest/recipes-test/postinst/postinst_1.0.bb | 14 | ||||
-rw-r--r-- | meta/classes/package.bbclass | 20 |
2 files changed, 22 insertions, 12 deletions
diff --git a/meta-selftest/recipes-test/postinst/postinst_1.0.bb b/meta-selftest/recipes-test/postinst/postinst_1.0.bb index 112aa08c80..d4bab6dcc2 100644 --- a/meta-selftest/recipes-test/postinst/postinst_1.0.bb +++ b/meta-selftest/recipes-test/postinst/postinst_1.0.bb @@ -35,14 +35,9 @@ pkg_postinst_${PN}-rootfs () { # Depends on rootfs, delays until first boot, verifies that the rootfs file was # written. -pkg_postinst_${PN}-delayed-a () { +pkg_postinst_ontarget_${PN}-delayed-a () { set -e - if [ -n "$D" ]; then - echo "Delaying ${PN}-delayed-a until first boot" - exit 1 - fi - if [ ! -e ${TESTDIR}/rootfs ]; then echo "${PN}-delayed-a: ${TESTDIR}/rootfs not found" exit 1 @@ -53,14 +48,9 @@ pkg_postinst_${PN}-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_${PN}-delayed-b () { +pkg_postinst_ontarget_${PN}-delayed-b () { set -e - if [ -n "$D" ]; then - echo "Delaying ${PN}-delayed-b until first boot" - exit 1 - fi - if [ ! -e ${TESTDIR}/delayed-a ]; then echo "${PN}-delayed-b: ${TESTDIR}/delayed-a not found" exit 1 diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 7dc759699f..6a7f35a3e7 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -1320,6 +1320,25 @@ python emit_pkgdata() { from glob import glob import json + def process_postinst_on_target(pkg, mlprefix): + defer_fragment = """ +if [ -n "$D" ]; then + $INTERCEPT_DIR/postinst_intercept delay_to_first_boot %s mlprefix=%s + exit 0 +fi +""" % (pkg, mlprefix) + + postinst = d.getVar('pkg_postinst_%s' % pkg) + postinst_ontarget = d.getVar('pkg_postinst_ontarget_%s' % pkg) + + if postinst_ontarget: + bb.debug(1, 'adding deferred pkg_postinst_ontarget() to pkg_postinst() for %s' % pkg) + if not postinst: + postinst = '#!/bin/sh\n' + postinst += defer_fragment + postinst += postinst_ontarget + d.setVar('pkg_postinst_%s' % pkg, postinst) + def write_if_exists(f, pkg, var): def encode(str): import codecs @@ -1415,6 +1434,7 @@ python emit_pkgdata() { write_if_exists(sf, pkg, 'ALLOW_EMPTY') write_if_exists(sf, pkg, 'FILES') write_if_exists(sf, pkg, 'CONFFILES') + process_postinst_on_target(pkg, d.getVar("MLPREFIX")) write_if_exists(sf, pkg, 'pkg_postinst') write_if_exists(sf, pkg, 'pkg_postrm') write_if_exists(sf, pkg, 'pkg_preinst') |