summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorNiko Mauno <niko.mauno@iki.fi>2018-11-12 19:30:08 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-01-08 20:14:42 +0000
commitda35b05c7f77e5e7c4221bb45a9739dd66440e84 (patch)
tree65866814865e9bf31d4df30e1847d31d7bf018af /meta
parent7e27a9c351608388d08f61ae02b7c26335364362 (diff)
downloadpoky-da35b05c7f77e5e7c4221bb45a9739dd66440e84.tar.gz
opkg-utils: Fix update-alternatives link relocation
Recently Debian-style support for link relocation was added to 'update-alternatives' script, but it fails under circumstances where host rootfs root directory differs from target rootfs root directory and two alternative packages provide a symbolic link with source located in different directories. An example of the case is busybox provided /bin/rev (symlinking to /bin/busybox.nosuid) and util-linux provided /usr/bin/rev (symlinking to /usr/bin/rev.util-linux) in which case following failure occurs during image recipe's do_rootfs() task: ERROR: core-image-minimal-1.0-r0 do_rootfs: Postinstall scriptlets of ['util-linux'] have failed. If the intention is to defer them to first boot, then please place them into pkg_postinst_ontarget_${PN} (). Deferring to first boot via 'exit 1' is no longer supported. Details of the failure are in .../tmp/work/qemux86-poky-linux/core-image-minimal/1.0-r0/temp/log.do_rootfs. ERROR: core-image-minimal-1.0-r0 do_rootfs: Function failed: do_rootfs Looking in log.do_rootfs file, following relevant lines can be observed: update-alternatives: renaming rev link from /bin/rev to /usr/bin/rev mv: cannot stat '/bin/rev': No such file or directory Mitigate issue by applying patch which adds target root filesystem root directory path prefix to failing 'mv' calls relevant variable references (From OE-Core rev: f0912e23629758fe4303284e7db8f4089bb7b4cb) (From OE-Core rev: 58f062843008c42d28f14c42fb5f991aef73728e) Signed-off-by: Niko Mauno <niko.mauno@iki.fi> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/recipes-devtools/opkg-utils/opkg-utils/0001-update-alternatives-Fix-link-relocation-support.patch40
-rw-r--r--meta/recipes-devtools/opkg-utils/opkg-utils_0.3.6.bb1
2 files changed, 41 insertions, 0 deletions
diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils/0001-update-alternatives-Fix-link-relocation-support.patch b/meta/recipes-devtools/opkg-utils/opkg-utils/0001-update-alternatives-Fix-link-relocation-support.patch
new file mode 100644
index 0000000000..9dc488b7aa
--- /dev/null
+++ b/meta/recipes-devtools/opkg-utils/opkg-utils/0001-update-alternatives-Fix-link-relocation-support.patch
@@ -0,0 +1,40 @@
1From 18562ccae6996431d37767653b061d4e9e1b9424 Mon Sep 17 00:00:00 2001
2From: Niko Mauno <niko.mauno@iki.fi>
3Date: Sun, 11 Nov 2018 15:50:22 +0200
4Subject: [opkg-utils PATCH] update-alternatives: Fix link relocation support
5
6Commit fcb26339000021eb9bb711aa264247aebcfdd4ae which added Debian-style
7support for link relocation tries to relocate symbolic link on host OS,
8resulting in following-like error when two alternative packages have
9symbolic link source located in different directories (/bin/rev ->
10/bin/busybox.nosuid and /usr/bin/rev -> /usr/bin/rev.util-linux):
11
12 update-alternatives: renaming rev link from /bin/rev to /usr/bin/rev
13 mv: cannot stat '/bin/rev': No such file or directory
14
15Fix the issue by prefixing 'olink' and 'link' variable references with
16path to targeted root filesystem's root directory.
17
18Upstream-Status: Submitted [opkg-utils]
19
20Signed-off-by: Niko Mauno <niko.mauno@iki.fi>
21---
22 update-alternatives | 2 +-
23 1 file changed, 1 insertion(+), 1 deletion(-)
24
25diff --git a/update-alternatives b/update-alternatives
26index 89a440b..d4fa7eb 100644
27--- a/update-alternatives
28+++ b/update-alternatives
29@@ -58,7 +58,7 @@ register_alt() {
30 local link_str=`echo $link | protect_slashes`
31 sed -e "1s/.*/$link_str/" $ad/$name > $ad/$name.new
32 mv $ad/$name.new $ad/$name
33- mv $olink $link
34+ mv $OPKG_OFFLINE_ROOT$olink $OPKG_OFFLINE_ROOT$link
35 fi
36 else
37 echo "$link" > "$ad/$name"
38--
392.19.1
40
diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils_0.3.6.bb b/meta/recipes-devtools/opkg-utils/opkg-utils_0.3.6.bb
index cb3775d9c9..4c41774c39 100644
--- a/meta/recipes-devtools/opkg-utils/opkg-utils_0.3.6.bb
+++ b/meta/recipes-devtools/opkg-utils/opkg-utils_0.3.6.bb
@@ -13,6 +13,7 @@ SRC_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/${BPN}/snapshot/${BPN}-${PV
13 file://0002-opkg-build-Use-local-time-for-build_date-since-opkg-.patch \ 13 file://0002-opkg-build-Use-local-time-for-build_date-since-opkg-.patch \
14 file://threaded-xz.patch \ 14 file://threaded-xz.patch \
15 file://pigz.patch \ 15 file://pigz.patch \
16 file://0001-update-alternatives-Fix-link-relocation-support.patch \
16" 17"
17SRC_URI_append_class-native = " file://tar_ignore_error.patch" 18SRC_URI_append_class-native = " file://tar_ignore_error.patch"
18UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/" 19UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/"