diff options
author | Laurentiu Palcu <laurentiu.palcu@intel.com> | 2014-03-06 14:15:41 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-03-07 15:04:36 +0000 |
commit | f33555f52a4ee83f0bd205cdf483045fcd0578b2 (patch) | |
tree | d6654e186ef1bf2a9738efaa0040c4878c4bd402 /meta/recipes-devtools | |
parent | 1dd9a16030bc2dc673c7b121dea6e78f2681f55e (diff) | |
download | openembedded-core-f33555f52a4ee83f0bd205cdf483045fcd0578b2.tar.gz openembedded-core-f33555f52a4ee83f0bd205cdf483045fcd0578b2.tar.bz2 openembedded-core-f33555f52a4ee83f0bd205cdf483045fcd0578b2.zip |
run-postinsts: use it for opkg/dpkg too
Currently, opkg/dpkg have their own postinstalls that create a
run-postinsts script which is run at first boot.
This commit prepares the run-postinsts recipe/script to be used by
opkg/dpkg when DISTRO_FEATURES includes package-management.
[YOCTO #5666]
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools')
-rwxr-xr-x | meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts | 63 | ||||
-rw-r--r-- | meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb | 2 |
2 files changed, 42 insertions, 23 deletions
diff --git a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts index 11141ec71f..08cfa9e59f 100755 --- a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts +++ b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts @@ -8,13 +8,9 @@ # The following script will run all the scriptlets found in #SYSCONFDIR#/deb-postinsts, # #SYSCONFDIR#/ipk-postinsts or #SYSCONFDIR#/rpm-posinsts. -pi_dir="" -for pm in rpm deb ipk; do - if [ -d "#SYSCONFDIR#/${pm}-postinsts" ]; then - pi_dir=#SYSCONFDIR#/${pm}-postinsts - break - fi -done +pm=#IMAGE_PKGTYPE# +pm_installed=#PM_INSTALLED# +pi_dir=#SYSCONFDIR#/${pm}-postinsts remove_rcsd_link () { if [ -n "`which update-rc.d`" ]; then @@ -29,24 +25,45 @@ fi [ -e #SYSCONFDIR#/default/postinst ] && . #SYSCONFDIR#/default/postinst -remove_pi_dir=1 -for i in `ls $pi_dir`; do - i=$pi_dir/$i - echo "Running postinst $i..." - [ "$POSTINST_LOGGING" = "1" ] && echo "Running postinst $i..." >> $LOGFILE - if [ -x $i ]; then - if [ "$POSTINST_LOGGING" = "1" ]; then - sh -c $i >>$LOGFILE 2>&1 +if [ "$POSTINST_LOGGING" = "1" ]; then + rm -f $LOGFILE + append_log=">>$LOGFILE 2>&1" +fi + +exec_postinst_scriptlets() { + for i in `ls $pi_dir`; do + i=$pi_dir/$i + echo "Running postinst $i..." + [ "$POSTINST_LOGGING" = "1" ] && eval echo "Running postinst $i..." $append_log + if [ -x $i ]; then + eval sh -c $i $append_log + rm $i else - sh -c $i + echo "ERROR: postinst $i failed." + [ "$POSTINST_LOGGING" = "1" ] && eval echo "ERROR: postinst $i failed." $append_log + remove_pi_dir=0 fi - rm $i - else - echo "ERROR: postinst $i failed." - [ "$POSTINST_LOGGING" = "1" ] && echo "ERROR: postinst $i failed." >> $LOGFILE - remove_pi_dir=0 - fi -done + done +} + +remove_pi_dir=1 +if $pm_installed; then + case $pm in + "ipk") + eval opkg-cl configure $append_log + ;; + + "deb") + eval dpkg --configure -a $append_log + ;; + + "rpm") + exec_postinst_scriptlets + ;; + esac +else + exec_postinst_scriptlets +fi # since all postinstalls executed successfully, remove the postinstalls directory # and the rcS.d link diff --git a/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb b/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb index 64f85c262d..e990c670c0 100644 --- a/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb +++ b/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb @@ -37,6 +37,8 @@ do_install() { sed -i -e 's:#SYSCONFDIR#:${sysconfdir}:g' \ -e 's:#SBINDIR#:${sbindir}:g' \ -e 's:#BASE_BINDIR#:${base_bindir}:g' \ + -e 's:#IMAGE_PKGTYPE#:${IMAGE_PKGTYPE}:g' \ + -e 's:#PM_INSTALLED#:${@base_contains("IMAGE_FEATURES", "package-management", "true", "false", d)}:g' \ ${D}${sbindir}/run-postinsts \ ${D}${systemd_unitdir}/system/run-postinsts.service } |