From 0222e6740ee4670bbf42d246ab3ecad415ffcdee Mon Sep 17 00:00:00 2001 From: Laurentiu Palcu Date: Thu, 23 May 2013 11:03:56 +0300 Subject: 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. Signed-off-by: Laurentiu Palcu Signed-off-by: Saul Wold --- .../dpkg/run-postinsts/run-postinsts | 36 ----------------- .../dpkg/run-postinsts/run-postinsts.awk | 30 -------------- meta/recipes-devtools/dpkg/run-postinsts_1.0.bb | 29 ------------- .../run-postinsts/run-postinsts/run-postinsts | 47 ++++++++++++++++++++++ .../run-postinsts/run-postinsts_1.0.bb | 28 +++++++++++++ 5 files changed, 75 insertions(+), 95 deletions(-) delete mode 100755 meta/recipes-devtools/dpkg/run-postinsts/run-postinsts delete mode 100644 meta/recipes-devtools/dpkg/run-postinsts/run-postinsts.awk delete mode 100644 meta/recipes-devtools/dpkg/run-postinsts_1.0.bb create mode 100755 meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts create mode 100644 meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb (limited to 'meta/recipes-devtools') 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 -# - -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 -# -# 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/dpkg/run-postinsts_1.0.bb b/meta/recipes-devtools/dpkg/run-postinsts_1.0.bb deleted file mode 100644 index 4c9b2fd75a..0000000000 --- a/meta/recipes-devtools/dpkg/run-postinsts_1.0.bb +++ /dev/null @@ -1,29 +0,0 @@ -DESCRIPTION = "Run postinstall scripts on device using awk" -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" - -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/ - - install -d ${D}${datadir}/${BPN}/ - install -m 0644 ${WORKDIR}/run-postinsts.awk ${D}${datadir}/${BPN}/ -} 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 +# + +# 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 0000000000..5dd1709ff5 --- /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 +} -- cgit 1.2.3-korg