[oe-commits] [openembedded-core] 47/60: run-postinsts: for dpkg/opkg, do not rely on /etc/*-postinsts

git at git.openembedded.org git at git.openembedded.org
Mon Jun 18 10:11:47 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master
in repository openembedded-core.

commit 1af421fcf05457223bf271f3951599b6c150cdff
Author: Stefan Agner <stefan.agner at toradex.com>
AuthorDate: Wed May 16 11:13:51 2018 +0200

    run-postinsts: for dpkg/opkg, do not rely on /etc/*-postinsts
    
    Start opkg/dpkg as soon as the respective package managers status
    file is present, no matter whether /etc/$pm-postinsts exists. This
    decouples the implicit link between postinsts scripts in /etc and
    the package manager: Currently the package manager is only started
    if those scripts are present, although the package manager does not
    use those scripts at all! Package managers install their own set of
    postinst scripts.
    
    The behavior when using rpm packages stays the same.
    
    Note that using the package managers capability to execute postinst
    scripts is preferred for good reasons: It makes sure that the
    package managers database reflects that the packages have been
    completely installed and configured.
    
    This change allows to drop installation of the postinsts scripts
    when package management is present. This will be done in a separate
    change.
    
    Note: Before commit 5aae19959a44 ("rootfs.py: Change logic to
    unistall packages") rootfs.py did not install /etc/$pm-postinsts
    when package management is installed! The change caused YOCTO #8235
    which lead to the behavior change of run-postinsts in first place.
    
    Signed-off-by: Stefan Agner <stefan.agner at toradex.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 .../run-postinsts/run-postinsts/run-postinsts       | 21 ++++++++++++---------
 .../run-postinsts/run-postinsts.service             |  1 -
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
index 307feb7..95eff04 100755
--- a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
+++ b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
@@ -6,7 +6,8 @@
 #
 
 # The following script will run all the scriptlets found in #SYSCONFDIR#/deb-postinsts,
-# #SYSCONFDIR#/ipk-postinsts or #SYSCONFDIR#/rpm-postinsts.
+# #SYSCONFDIR#/ipk-postinsts or #SYSCONFDIR#/rpm-postinsts or the package manager in
+# case available.
 
 # the order of this list is important, do not change!
 backend_list="rpm deb ipk"
@@ -14,27 +15,29 @@ 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
+				break
 			fi
 			;;
 
 		"ipk")
 			if [ -s "#LOCALSTATEDIR#/lib/opkg/status" ]; then
 				pm_installed=true
+				break
 			fi
 			;;
 	esac
-	break
+
+	pi_dir="#SYSCONFDIR#/$pm-postinsts"
+
+	# found postinsts directory
+	if [ -d $pi_dir ]; then
+		break
+	fi
 done
 
 remove_rcsd_link () {
@@ -43,7 +46,7 @@ remove_rcsd_link () {
 	fi
 }
 
-if ! [ -d $pi_dir ]; then
+if ! [ -d $pi_dir ] && ! $pm_installed; then
 	remove_rcsd_link
 	exit 0
 fi
diff --git a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts.service b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts.service
index 1b71a1f..d42addf 100644
--- a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts.service
+++ b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts.service
@@ -3,7 +3,6 @@ Description=Run pending postinsts
 DefaultDependencies=no
 After=systemd-remount-fs.service systemd-tmpfiles-setup.service tmp.mount
 Before=sysinit.target
-ConditionPathExistsGlob=#SYSCONFDIR#/*-postinsts
 
 [Service]
 Type=oneshot

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list