summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2018-05-16 11:13:51 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-06-18 11:07:58 +0100
commita7d0346825a04bb05dd1b110d825afb2e12af84a (patch)
treea4e02460ba9183cbc271569214c4a6fb7bda7df6
parentdcef944e334663570ce2d13fc22f96d86a2b9a72 (diff)
downloadpoky-a7d0346825a04bb05dd1b110d825afb2e12af84a.tar.gz
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. (From OE-Core rev: 1af421fcf05457223bf271f3951599b6c150cdff) Signed-off-by: Stefan Agner <stefan.agner@toradex.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xmeta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts21
-rw-r--r--meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts.service1
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 307feb7187..95eff04e17 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 @@
6# 6#
7 7
8# The following script will run all the scriptlets found in #SYSCONFDIR#/deb-postinsts, 8# The following script will run all the scriptlets found in #SYSCONFDIR#/deb-postinsts,
9# #SYSCONFDIR#/ipk-postinsts or #SYSCONFDIR#/rpm-postinsts. 9# #SYSCONFDIR#/ipk-postinsts or #SYSCONFDIR#/rpm-postinsts or the package manager in
10# case available.
10 11
11# the order of this list is important, do not change! 12# the order of this list is important, do not change!
12backend_list="rpm deb ipk" 13backend_list="rpm deb ipk"
@@ -14,27 +15,29 @@ backend_list="rpm deb ipk"
14pm_installed=false 15pm_installed=false
15 16
16for pm in $backend_list; do 17for pm in $backend_list; do
17 pi_dir="#SYSCONFDIR#/$pm-postinsts"
18
19 if [ ! -d $pi_dir ]; then
20 continue
21 fi
22
23 # found the package manager, it has postinsts 18 # found the package manager, it has postinsts
24 case $pm in 19 case $pm in
25 "deb") 20 "deb")
26 if [ -s "#LOCALSTATEDIR#/lib/dpkg/status" ]; then 21 if [ -s "#LOCALSTATEDIR#/lib/dpkg/status" ]; then
27 pm_installed=true 22 pm_installed=true
23 break
28 fi 24 fi
29 ;; 25 ;;
30 26
31 "ipk") 27 "ipk")
32 if [ -s "#LOCALSTATEDIR#/lib/opkg/status" ]; then 28 if [ -s "#LOCALSTATEDIR#/lib/opkg/status" ]; then
33 pm_installed=true 29 pm_installed=true
30 break
34 fi 31 fi
35 ;; 32 ;;
36 esac 33 esac
37 break 34
35 pi_dir="#SYSCONFDIR#/$pm-postinsts"
36
37 # found postinsts directory
38 if [ -d $pi_dir ]; then
39 break
40 fi
38done 41done
39 42
40remove_rcsd_link () { 43remove_rcsd_link () {
@@ -43,7 +46,7 @@ remove_rcsd_link () {
43 fi 46 fi
44} 47}
45 48
46if ! [ -d $pi_dir ]; then 49if ! [ -d $pi_dir ] && ! $pm_installed; then
47 remove_rcsd_link 50 remove_rcsd_link
48 exit 0 51 exit 0
49fi 52fi
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 1b71a1f8be..d42addf510 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
3DefaultDependencies=no 3DefaultDependencies=no
4After=systemd-remount-fs.service systemd-tmpfiles-setup.service tmp.mount 4After=systemd-remount-fs.service systemd-tmpfiles-setup.service tmp.mount
5Before=sysinit.target 5Before=sysinit.target
6ConditionPathExistsGlob=#SYSCONFDIR#/*-postinsts
7 6
8[Service] 7[Service]
9Type=oneshot 8Type=oneshot