summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-selftest/recipes-test/postinst/postinst_1.0.bb14
-rw-r--r--meta/classes/package.bbclass20
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')