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 Signed-off-by: Niko Mauno <niko.ma...@iki.fi> --- ...rnatives-Fix-link-relocation-support.patch | 40 +++++++++++++++++++ .../opkg-utils/opkg-utils_0.3.6.bb | 1 + 2 files changed, 41 insertions(+) create mode 100644 meta/recipes-devtools/opkg-utils/opkg-utils/0001-update-alternatives-Fix-link-relocation-support.patch 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..e1836dbb34 --- /dev/null +++ b/meta/recipes-devtools/opkg-utils/opkg-utils/0001-update-alternatives-Fix-link-relocation-support.patch @@ -0,0 +1,40 @@ +From 18562ccae6996431d37767653b061d4e9e1b9424 Mon Sep 17 00:00:00 2001 +From: Niko Mauno <niko.ma...@iki.fi> +Date: Sun, 11 Nov 2018 15:50:22 +0200 +Subject: [opkg-utils PATCH] update-alternatives: Fix link relocation support + +Commit fcb26339000021eb9bb711aa264247aebcfdd4ae which added Debian-style +support for link relocation tries to relocate symbolic link on host OS, +resulting in following-like error when two alternative packages have +symbolic link source located in different directories (/bin/rev -> +/bin/busybox.nosuid and /usr/bin/rev -> /usr/bin/rev.util-linux): + + update-alternatives: renaming rev link from /bin/rev to /usr/bin/rev + mv: cannot stat '/bin/rev': No such file or directory + +Fix the issue by prefixing 'olink' and 'link' variable references with +path to targeted root filesystem's root directory. + +Upstream-Status: Pending + +Signed-off-by: Niko Mauno <niko.ma...@iki.fi> +--- + update-alternatives | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/update-alternatives b/update-alternatives +index 89a440b..d4fa7eb 100644 +--- a/update-alternatives ++++ b/update-alternatives +@@ -58,7 +58,7 @@ register_alt() { + local link_str=`echo $link | protect_slashes` + sed -e "1s/.*/$link_str/" $ad/$name > $ad/$name.new + mv $ad/$name.new $ad/$name +- mv $olink $link ++ mv $OPKG_OFFLINE_ROOT$olink $OPKG_OFFLINE_ROOT$link + fi + else + echo "$link" > "$ad/$name" +-- +2.19.1 + 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 file://0002-opkg-build-Use-local-time-for-build_date-since-opkg-.patch \ file://threaded-xz.patch \ file://pigz.patch \ + file://0001-update-alternatives-Fix-link-relocation-support.patch \ " SRC_URI_append_class-native = " file://tar_ignore_error.patch" UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/" -- 2.19.1 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core