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] (From OE-Core rev: f33555f52a4ee83f0bd205cdf483045fcd0578b2) Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
635c08c8c2
commit
5159ddcb62
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue