image.bbclass: run postinst scripts once, at rootfs time

This patch will allow the repeating postinst scriptlets to be run
only once, on host, at do_rootfs time. This will lower the time for
rootfs generation and, also, instead of running some time consuming
scriptlets at target's first boot, we will do on the host.

(From OE-Core rev: 0d239328b1c6b9e4afadad75972d359181fbe1a5)

Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Laurentiu Palcu 2012-09-18 18:39:49 +03:00 committed by Richard Purdie
parent dde5e6402a
commit 6b76f04195
1 changed files with 17 additions and 3 deletions

View File

@ -156,7 +156,7 @@ inherit ${IMAGE_CLASSES}
IMAGE_POSTPROCESS_COMMAND ?= ""
MACHINE_POSTPROCESS_COMMAND ?= ""
ROOTFS_POSTPROCESS_COMMAND ?= ""
ROOTFS_POSTPROCESS_COMMAND_prepend = "run_intercept_scriptlets; "
# some default locales
IMAGE_LINGUAS ?= "de-de fr-fr en-gb"
@ -166,15 +166,29 @@ LINGUAS_INSTALL ?= "${@" ".join(map(lambda s: "locale-base-%s" % s, d.getVar('IM
PSEUDO_PASSWD = "${IMAGE_ROOTFS}"
do_rootfs[nostamp] = "1"
do_rootfs[dirs] = "${TOPDIR}"
do_rootfs[dirs] = "${TOPDIR} ${WORKDIR}/intercept_scripts"
do_rootfs[lockfiles] += "${IMAGE_ROOTFS}.lock"
do_rootfs[cleandirs] += "${S}"
do_rootfs[cleandirs] += "${S} ${WORKDIR}/intercept_scripts"
do_build[nostamp] = "1"
# Must call real_do_rootfs() from inside here, rather than as a separate
# task, so that we have a single fakeroot context for the whole process.
do_rootfs[umask] = "022"
run_intercept_scriptlets () {
if [ -d ${WORKDIR}/intercept_scripts ]; then
cd ${WORKDIR}/intercept_scripts
echo "Running intercept scripts:"
for script in *; do
if [ "$script" = "*" ]; then break; fi
echo "> Executing $script"
chmod +x $script
./$script
done
fi
}
fakeroot do_rootfs () {
#set -x
# When use the rpm incremental image generation, don't remove the rootfs