summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/run-postinsts
diff options
context:
space:
mode:
authorLaurentiu Palcu <laurentiu.palcu@intel.com>2013-05-23 11:03:56 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-06-11 15:38:04 +0100
commit76cd8a776b02385945ad13ce79bbe1c33d8bad9b (patch)
tree9dcab44beb956d59dad58696cdfffb7679d406af /meta/recipes-devtools/run-postinsts
parent98ce0b727baa359a1e6388dd570186099df3983a (diff)
downloadast2050-yocto-poky-76cd8a776b02385945ad13ce79bbe1c33d8bad9b.zip
ast2050-yocto-poky-76cd8a776b02385945ad13ce79bbe1c33d8bad9b.tar.gz
run-postinsts: make it generic
This recipe is used only when the package manager is not deployed on target and there still are delayed postinstalls that need to be run on target. At the moment, run-postinsts is targeted to dpkg/opkg. RPM uses another recipe, called rpm-postinsts which, in turn, is used even when the rpm package is deployed. This patch intends to make run-postinsts generic and deprecate rpm-postinsts. Here's why: * when opkg/dpkg are not deplyed, the meta-data files are useless. Hence, the awk script is not needed. The postinstall files are already saved in /etc/(deb|ipk)-postinsts directory and we can use the same procedure as in rpm's case; Also, the recipe is moved out from meta/recipes-devel/dpkg to meta/recipes-devel/run-postinsts. (From OE-Core rev: 0222e6740ee4670bbf42d246ab3ecad415ffcdee) 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>
Diffstat (limited to 'meta/recipes-devtools/run-postinsts')
-rwxr-xr-xmeta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts47
-rw-r--r--meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb28
2 files changed, 75 insertions, 0 deletions
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 0000000..2593066
--- /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/run-postinsts/run-postinsts_1.0.bb b/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb
new file mode 100644
index 0000000..5dd1709
--- /dev/null
+++ b/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb
@@ -0,0 +1,28 @@
+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"
+
+INITSCRIPT_NAME = "run-postinsts"
+INITSCRIPT_PARAMS = "start 98 S ."
+
+inherit update-rc.d
+
+do_configure() {
+ :
+}
+
+do_compile () {
+ :
+}
+
+do_install() {
+ install -d ${D}${sysconfdir}/init.d/
+ install -m 0755 ${WORKDIR}/run-postinsts ${D}${sysconfdir}/init.d/
+
+ sed -i -e 's:#SYSCONFDIR#:${sysconfdir}:g' ${D}${sysconfdir}/init.d/run-postinsts
+}
OpenPOWER on IntegriCloud