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 () { | |||
| 35 | 35 | ||
| 36 | # Depends on rootfs, delays until first boot, verifies that the rootfs file was | 36 | # Depends on rootfs, delays until first boot, verifies that the rootfs file was |
| 37 | # written. | 37 | # written. |
| 38 | pkg_postinst_${PN}-delayed-a () { | 38 | pkg_postinst_ontarget_${PN}-delayed-a () { |
| 39 | set -e | 39 | set -e |
| 40 | 40 | ||
| 41 | if [ -n "$D" ]; then | ||
| 42 | echo "Delaying ${PN}-delayed-a until first boot" | ||
| 43 | exit 1 | ||
| 44 | fi | ||
| 45 | |||
| 46 | if [ ! -e ${TESTDIR}/rootfs ]; then | 41 | if [ ! -e ${TESTDIR}/rootfs ]; then |
| 47 | echo "${PN}-delayed-a: ${TESTDIR}/rootfs not found" | 42 | echo "${PN}-delayed-a: ${TESTDIR}/rootfs not found" |
| 48 | exit 1 | 43 | exit 1 |
| @@ -53,14 +48,9 @@ pkg_postinst_${PN}-delayed-a () { | |||
| 53 | 48 | ||
| 54 | # Depends on delayed-a, delays until first boot, verifies that the delayed-a file was | 49 | # Depends on delayed-a, delays until first boot, verifies that the delayed-a file was |
| 55 | # written. This verifies the ordering between delayed postinsts. | 50 | # written. This verifies the ordering between delayed postinsts. |
| 56 | pkg_postinst_${PN}-delayed-b () { | 51 | pkg_postinst_ontarget_${PN}-delayed-b () { |
| 57 | set -e | 52 | set -e |
| 58 | 53 | ||
| 59 | if [ -n "$D" ]; then | ||
| 60 | echo "Delaying ${PN}-delayed-b until first boot" | ||
| 61 | exit 1 | ||
| 62 | fi | ||
| 63 | |||
| 64 | if [ ! -e ${TESTDIR}/delayed-a ]; then | 54 | if [ ! -e ${TESTDIR}/delayed-a ]; then |
| 65 | echo "${PN}-delayed-b: ${TESTDIR}/delayed-a not found" | 55 | echo "${PN}-delayed-b: ${TESTDIR}/delayed-a not found" |
| 66 | exit 1 | 56 | 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() { | |||
| 1320 | from glob import glob | 1320 | from glob import glob |
| 1321 | import json | 1321 | import json |
| 1322 | 1322 | ||
| 1323 | def process_postinst_on_target(pkg, mlprefix): | ||
| 1324 | defer_fragment = """ | ||
| 1325 | if [ -n "$D" ]; then | ||
| 1326 | $INTERCEPT_DIR/postinst_intercept delay_to_first_boot %s mlprefix=%s | ||
| 1327 | exit 0 | ||
| 1328 | fi | ||
| 1329 | """ % (pkg, mlprefix) | ||
| 1330 | |||
| 1331 | postinst = d.getVar('pkg_postinst_%s' % pkg) | ||
| 1332 | postinst_ontarget = d.getVar('pkg_postinst_ontarget_%s' % pkg) | ||
| 1333 | |||
| 1334 | if postinst_ontarget: | ||
| 1335 | bb.debug(1, 'adding deferred pkg_postinst_ontarget() to pkg_postinst() for %s' % pkg) | ||
| 1336 | if not postinst: | ||
| 1337 | postinst = '#!/bin/sh\n' | ||
| 1338 | postinst += defer_fragment | ||
| 1339 | postinst += postinst_ontarget | ||
| 1340 | d.setVar('pkg_postinst_%s' % pkg, postinst) | ||
| 1341 | |||
| 1323 | def write_if_exists(f, pkg, var): | 1342 | def write_if_exists(f, pkg, var): |
| 1324 | def encode(str): | 1343 | def encode(str): |
| 1325 | import codecs | 1344 | import codecs |
| @@ -1415,6 +1434,7 @@ python emit_pkgdata() { | |||
| 1415 | write_if_exists(sf, pkg, 'ALLOW_EMPTY') | 1434 | write_if_exists(sf, pkg, 'ALLOW_EMPTY') |
| 1416 | write_if_exists(sf, pkg, 'FILES') | 1435 | write_if_exists(sf, pkg, 'FILES') |
| 1417 | write_if_exists(sf, pkg, 'CONFFILES') | 1436 | write_if_exists(sf, pkg, 'CONFFILES') |
| 1437 | process_postinst_on_target(pkg, d.getVar("MLPREFIX")) | ||
| 1418 | write_if_exists(sf, pkg, 'pkg_postinst') | 1438 | write_if_exists(sf, pkg, 'pkg_postinst') |
| 1419 | write_if_exists(sf, pkg, 'pkg_postrm') | 1439 | write_if_exists(sf, pkg, 'pkg_postrm') |
| 1420 | write_if_exists(sf, pkg, 'pkg_preinst') | 1440 | write_if_exists(sf, pkg, 'pkg_preinst') |
