summaryrefslogtreecommitdiffstats
path: root/meta
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
parent98ce0b727baa359a1e6388dd570186099df3983a (diff)
downloadpoky-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')
-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 @@
1#!/bin/sh
2#
3# Copyright 2007 Openedhand Ltd.
4#
5# Author: Richard Purdie <rpurdie@openedhand.com>
6#
7
8PKGSYSTEM=/var/lib/dpkg
9
10if [ ! -e $PKGSYSTEM/status ]; then
11 if [ -e /var/lib/opkg/status ]; then
12 PKGSYSTEM=/var/lib/opkg
13 else
14 echo "No package system found"
15 exit 1
16 fi
17fi
18
19STAMP=$PKGSYSTEM/postinsts-done
20STATFILE=$PKGSYSTEM/status
21STATFILE2=$PKGSYSTEM/status2
22
23if [ -e $STAMP ]; then
24 exit 0
25fi
26
27awk -f /usr/share/run-postinsts/run-postinsts.awk $STATFILE > $STATFILE2
28if [ $? = 0 ]; then
29 mv $STATFILE2 $STATFILE
30 touch $STAMP
31 exit 0
32else
33 rm -f $STATFILE2
34 rm -f $STAMP
35 exit 1
36fi
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 @@
1#
2# Copyright 2007 Openedhand Ltd.
3#
4# Author: Richard Purdie <rpurdie@openedhand.com>
5#
6# Rather hacky proof of concept
7#
8
9BEGIN {
10 rc=system("test -d /var/lib/dpkg/info/")
11 if (rc==0)
12 pkgdir="/var/lib/dpkg/info"
13 else
14 pkgdir="/var/lib/opkg/info"
15 package=""
16}
17/Package:.*/ {
18 package = substr($0, 10)
19}
20/Status:.*unpacked.*/ {
21 print "Configuring: " package > "/dev/stderr"
22 ret = system(pkgdir "/" package ".postinst 1>&2")
23 if (ret == 0)
24 $0 = gensub("unpacked", "installed", 1)
25 else
26 print "Postinstall failed for " package > "/dev/stderr"
27}
28{
29 print $0
30}
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 @@
1#!/bin/sh
2#
3# Copyright 2007 Openedhand Ltd.
4#
5# Author: Richard Purdie <rpurdie@openedhand.com>
6#
7
8# The following script will run all the scriptlets found in #SYSCONFDIR#/deb-postinsts or
9# #SYSCONFDIR#/ipk-postinsts
10
11pi_dir=""
12for pm in rpm deb ipk; do
13 if [ -d "#SYSCONFDIR#/${pm}-postinsts" ]; then
14 pi_dir=#SYSCONFDIR#/${pm}-postinsts
15 break
16 fi
17done
18
19[ -z "$pi_dir" ] && exit 0
20
21[ -e #SYSCONFDIR#/default/postinst ] && . #SYSCONFDIR#/default/postinst
22
23remove_pi_dir=1
24for i in `ls $pi_dir`; do
25 i=$pi_dir/$i
26 echo "Running postinst $i..."
27 if [ -x $i ]; then
28 if [ "$POSTINST_LOGGING" = "1" ]; then
29 sh -c $i >>$LOGFILE 2&>1
30 else
31 sh -c $i
32 fi
33 rm $i
34 else
35 echo "ERROR: postinst $i failed."
36 remove_pi_dir=0
37 fi
38done
39
40# since all postinstalls executed successfully, remove the postinstalls directory
41# and the rcS.d link
42if [ $remove_pi_dir = 1 ]; then
43 rm -rf $pi_dir
44 if [ -n "`which update-rc.d`" ]; then
45 update-rc.d -f run-postinsts remove
46 fi
47fi
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 @@
1DESCRIPTION = "Run postinstall scripts on device using awk" 1DESCRIPTION = "Run postinstall scripts on device"
2SECTION = "devel" 2SECTION = "devel"
3PR = "r9" 3PR = "r9"
4LICENSE = "MIT" 4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ 5LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
6 file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" 6 file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
7 7
8SRC_URI = "file://run-postinsts file://run-postinsts.awk" 8SRC_URI = "file://run-postinsts"
9 9
10INITSCRIPT_NAME = "run-postinsts" 10INITSCRIPT_NAME = "run-postinsts"
11INITSCRIPT_PARAMS = "start 98 S ." 11INITSCRIPT_PARAMS = "start 98 S ."
@@ -24,6 +24,5 @@ do_install() {
24 install -d ${D}${sysconfdir}/init.d/ 24 install -d ${D}${sysconfdir}/init.d/
25 install -m 0755 ${WORKDIR}/run-postinsts ${D}${sysconfdir}/init.d/ 25 install -m 0755 ${WORKDIR}/run-postinsts ${D}${sysconfdir}/init.d/
26 26
27 install -d ${D}${datadir}/${BPN}/ 27 sed -i -e 's:#SYSCONFDIR#:${sysconfdir}:g' ${D}${sysconfdir}/init.d/run-postinsts
28 install -m 0644 ${WORKDIR}/run-postinsts.awk ${D}${datadir}/${BPN}/
29} 28}