summaryrefslogtreecommitdiffstats
path: root/poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
diff options
context:
space:
mode:
Diffstat (limited to 'poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts')
-rwxr-xr-xpoky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts97
1 files changed, 97 insertions, 0 deletions
diff --git a/poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts b/poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
new file mode 100755
index 000000000..307feb718
--- /dev/null
+++ b/poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
@@ -0,0 +1,97 @@
+#!/bin/sh
+#
+# Copyright 2007 Openedhand Ltd.
+#
+# Author: Richard Purdie <rpurdie@openedhand.com>
+#
+
+# The following script will run all the scriptlets found in #SYSCONFDIR#/deb-postinsts,
+# #SYSCONFDIR#/ipk-postinsts or #SYSCONFDIR#/rpm-postinsts.
+
+# the order of this list is important, do not change!
+backend_list="rpm deb ipk"
+
+pm_installed=false
+
+for pm in $backend_list; do
+ pi_dir="#SYSCONFDIR#/$pm-postinsts"
+
+ if [ ! -d $pi_dir ]; then
+ continue
+ fi
+
+ # found the package manager, it has postinsts
+ case $pm in
+ "deb")
+ if [ -s "#LOCALSTATEDIR#/lib/dpkg/status" ]; then
+ pm_installed=true
+ fi
+ ;;
+
+ "ipk")
+ if [ -s "#LOCALSTATEDIR#/lib/opkg/status" ]; then
+ pm_installed=true
+ fi
+ ;;
+ esac
+ break
+done
+
+remove_rcsd_link () {
+ if [ -n "`which update-rc.d`" ]; then
+ update-rc.d -f run-postinsts remove
+ fi
+}
+
+if ! [ -d $pi_dir ]; then
+ remove_rcsd_link
+ exit 0
+fi
+
+echo "Configuring packages on first boot...."
+echo " (This may take several minutes. Please do not power off the machine.)"
+
+[ -e #SYSCONFDIR#/default/postinst ] && . #SYSCONFDIR#/default/postinst
+
+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
+ echo "ERROR: postinst $i failed."
+ [ "$POSTINST_LOGGING" = "1" ] && eval echo "ERROR: postinst $i failed." $append_log
+ remove_pi_dir=0
+ fi
+ done
+}
+
+remove_pi_dir=1
+if $pm_installed; then
+ case $pm in
+ "ipk")
+ eval opkg configure $append_log
+ ;;
+
+ "deb")
+ eval dpkg --configure -a $append_log
+ ;;
+ esac
+else
+ exec_postinst_scriptlets
+fi
+
+# since all postinstalls executed successfully, remove the postinstalls directory
+# and the rcS.d link
+if [ $remove_pi_dir = 1 ]; then
+ rm -rf $pi_dir
+ remove_rcsd_link
+fi
OpenPOWER on IntegriCloud