aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xmeta/recipes-devtools/dpkg/run-postinsts/run-postinsts36
-rw-r--r--meta/recipes-devtools/dpkg/run-postinsts/run-postinsts.awk30
-rwxr-xr-xmeta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts47
-rw-r--r--meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb (renamed from meta/recipes-devtools/dpkg/run-postinsts_1.0.bb)7
4 files changed, 50 insertions, 70 deletions
diff --git a/meta/recipes-devtools/dpkg/run-postinsts/run-postinsts b/meta/recipes-devtools/dpkg/run-postinsts/run-postinsts
deleted file mode 100755
index 5f6442cbe3..0000000000
--- a/meta/recipes-devtools/dpkg/run-postinsts/run-postinsts
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2007 Openedhand Ltd.
-#
-# Author: Richard Purdie <rpurdie@openedhand.com>
-#
-
-PKGSYSTEM=/var/lib/dpkg
-
-if [ ! -e $PKGSYSTEM/status ]; then
- if [ -e /var/lib/opkg/status ]; then
- PKGSYSTEM=/var/lib/opkg
- else
- echo "No package system found"
- exit 1
- fi
-fi
-
-STAMP=$PKGSYSTEM/postinsts-done
-STATFILE=$PKGSYSTEM/status
-STATFILE2=$PKGSYSTEM/status2
-
-if [ -e $STAMP ]; then
- exit 0
-fi
-
-awk -f /usr/share/run-postinsts/run-postinsts.awk $STATFILE > $STATFILE2
-if [ $? = 0 ]; then
- mv $STATFILE2 $STATFILE
- touch $STAMP
- exit 0
-else
- rm -f $STATFILE2
- rm -f $STAMP
- exit 1
-fi
diff --git a/meta/recipes-devtools/dpkg/run-postinsts/run-postinsts.awk b/meta/recipes-devtools/dpkg/run-postinsts/run-postinsts.awk
deleted file mode 100644
index cbc8d1a109..0000000000
--- a/meta/recipes-devtools/dpkg/run-postinsts/run-postinsts.awk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Copyright 2007 Openedhand Ltd.
-#
-# Author: Richard Purdie <rpurdie@openedhand.com>
-#
-# Rather hacky proof of concept
-#
-
-BEGIN {
- rc=system("test -d /var/lib/dpkg/info/")
- if (rc==0)
- pkgdir="/var/lib/dpkg/info"
- else
- pkgdir="/var/lib/opkg/info"
- package=""
-}
-/Package:.*/ {
- package = substr($0, 10)
-}
-/Status:.*unpacked.*/ {
- print "Configuring: " package > "/dev/stderr"
- ret = system(pkgdir "/" package ".postinst 1>&2")
- if (ret == 0)
- $0 = gensub("unpacked", "installed", 1)
- else
- print "Postinstall failed for " package > "/dev/stderr"
-}
-{
- print $0
-}
diff --git a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
new file mode 100755
index 0000000000..2593066da0
--- /dev/null
+++ b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
@@ -0,0 +1,47 @@
+#!/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 or
+# #SYSCONFDIR#/ipk-postinsts
+
+pi_dir=""
+for pm in rpm deb ipk; do
+ if [ -d "#SYSCONFDIR#/${pm}-postinsts" ]; then
+ pi_dir=#SYSCONFDIR#/${pm}-postinsts
+ break
+ fi
+done
+
+[ -z "$pi_dir" ] && exit 0
+
+[ -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..."
+ if [ -x $i ]; then
+ if [ "$POSTINST_LOGGING" = "1" ]; then
+ sh -c $i >>$LOGFILE 2&>1
+ else
+ sh -c $i
+ fi
+ rm $i
+ else
+ echo "ERROR: postinst $i failed."
+ remove_pi_dir=0
+ fi
+done
+
+# since all postinstalls executed successfully, remove the postinstalls directory
+# and the rcS.d link
+if [ $remove_pi_dir = 1 ]; then
+ rm -rf $pi_dir
+ if [ -n "`which update-rc.d`" ]; then
+ update-rc.d -f run-postinsts remove
+ fi
+fi
diff --git a/meta/recipes-devtools/dpkg/run-postinsts_1.0.bb b/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb
index 4c9b2fd75a..5dd1709ff5 100644
--- a/meta/recipes-devtools/dpkg/run-postinsts_1.0.bb
+++ b/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb
@@ -1,11 +1,11 @@
-DESCRIPTION = "Run postinstall scripts on device using awk"
+DESCRIPTION = "Run postinstall scripts on device"
SECTION = "devel"
PR = "r9"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-SRC_URI = "file://run-postinsts file://run-postinsts.awk"
+SRC_URI = "file://run-postinsts"
INITSCRIPT_NAME = "run-postinsts"
INITSCRIPT_PARAMS = "start 98 S ."
@@ -24,6 +24,5 @@ do_install() {
install -d ${D}${sysconfdir}/init.d/
install -m 0755 ${WORKDIR}/run-postinsts ${D}${sysconfdir}/init.d/
- install -d ${D}${datadir}/${BPN}/
- install -m 0644 ${WORKDIR}/run-postinsts.awk ${D}${datadir}/${BPN}/
+ sed -i -e 's:#SYSCONFDIR#:${sysconfdir}:g' ${D}${sysconfdir}/init.d/run-postinsts
}