diff options
author | Niko Mauno <niko.mauno@iki.fi> | 2018-11-12 19:30:08 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-11-14 11:14:40 +0000 |
commit | f00b998ef2403cefb0515258a87f14ad687d2325 (patch) | |
tree | 7f93a5d77f0ae9794fce9a4dc84027914ea75856 | |
parent | 8291cd25d8625d24b197da97436d113d133115c5 (diff) | |
download | poky-f00b998ef2403cefb0515258a87f14ad687d2325.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)
Signed-off-by: Niko Mauno <niko.mauno@iki.fi>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/recipes-devtools/opkg-utils/opkg-utils/0001-update-alternatives-Fix-link-relocation-support.patch | 40 | ||||
-rw-r--r-- | meta/recipes-devtools/opkg-utils/opkg-utils_0.3.6.bb | 1 |
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 @@ | |||
1 | From 18562ccae6996431d37767653b061d4e9e1b9424 Mon Sep 17 00:00:00 2001 | ||
2 | From: Niko Mauno <niko.mauno@iki.fi> | ||
3 | Date: Sun, 11 Nov 2018 15:50:22 +0200 | ||
4 | Subject: [opkg-utils PATCH] update-alternatives: Fix link relocation support | ||
5 | |||
6 | Commit fcb26339000021eb9bb711aa264247aebcfdd4ae which added Debian-style | ||
7 | support for link relocation tries to relocate symbolic link on host OS, | ||
8 | resulting in following-like error when two alternative packages have | ||
9 | symbolic 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 | |||
15 | Fix the issue by prefixing 'olink' and 'link' variable references with | ||
16 | path to targeted root filesystem's root directory. | ||
17 | |||
18 | Upstream-Status: Submitted [opkg-utils] | ||
19 | |||
20 | Signed-off-by: Niko Mauno <niko.mauno@iki.fi> | ||
21 | --- | ||
22 | update-alternatives | 2 +- | ||
23 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
24 | |||
25 | diff --git a/update-alternatives b/update-alternatives | ||
26 | index 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 | -- | ||
39 | 2.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 | " |
17 | SRC_URI_append_class-native = " file://tar_ignore_error.patch" | 18 | SRC_URI_append_class-native = " file://tar_ignore_error.patch" |
18 | UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/" | 19 | UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/" |