mirror of
https://git.yoctoproject.org/poky
synced 2026-04-23 09:32:17 +02:00
package.bbclass: add support for pkg_postinst_ontarget()
This function is a convenient and more readable shortcut for situations when the postinst code always needs to run on target. All commands that cannot be executed during cross-install and can only be run on target should go into this function. They will only be executed on first boot (if package was cross-installed) or immediately during package installation on target. Plain pkg_postinst() works as before: it is run during cross-install time, it can contain a request to defer to first boot, and it is also run during package installation on target. Also fix the oeqa test for this functionality to use the new function where appropriate. (From OE-Core rev: 229f4e975fb6957f44b5c56735fd6d58564098d7) Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
32c500b8ea
commit
6ca669105f
@@ -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
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user