summaryrefslogtreecommitdiff
path: root/meta/recipes-devtools
diff options
context:
space:
mode:
authorEnrico Scholz <enrico.scholz@sigma-chemnitz.de>2012-11-16 18:05:05 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-11-18 11:52:27 +0000
commite5aef500e11cbf7d1cd20b588fcea2c5fd6b5d0e (patch)
tree400581f65d4625496ba0a93da3faa4eb65df6e43 /meta/recipes-devtools
parent60fe4e80ca5845a0d03f918b80d6e980c13378b9 (diff)
downloadopenembedded-core-e5aef500e11cbf7d1cd20b588fcea2c5fd6b5d0e.tar.gz
openembedded-core-e5aef500e11cbf7d1cd20b588fcea2c5fd6b5d0e.tar.bz2
openembedded-core-e5aef500e11cbf7d1cd20b588fcea2c5fd6b5d0e.zip
opkg: added alternatives-ln patch
Use 'ln -n' to avoid dereferencing links to host files. Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools')
-rw-r--r--meta/recipes-devtools/opkg/opkg/alternatives-ln.patch56
-rw-r--r--meta/recipes-devtools/opkg/opkg_svn.bb3
2 files changed, 58 insertions, 1 deletions
diff --git a/meta/recipes-devtools/opkg/opkg/alternatives-ln.patch b/meta/recipes-devtools/opkg/opkg/alternatives-ln.patch
new file mode 100644
index 0000000000..f257eb0e1c
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg/alternatives-ln.patch
@@ -0,0 +1,56 @@
+update-alternatives: use 'ln -n'
+
+Using the '-n' option (--no-dereference) is a better way to solve the
+do-not-link-into-directory issue. Using only 'ln -sf' can cause problems
+on SELinux enabled hosts when target is inaccessible; e.g. when preparing
+an offline rootsystem:
+
+ | $ cd <offline root>
+ | $ ln -sf /lib/systemd/systemd sbin/init # alternative #1
+ | $ ln -sf /bin/busybox sbin/init # alternative #2
+ | ln: accessing `sbin/init': Permission denied
+ |
+ | --> strace:
+ | brk(0) = 0x102b000
+ | stat("sbin/init", 0x7fffaa91c900) = -1 EACCES (Permission denied)
+ | ...
+ | exit_group(1) = ?
+
+Now with '-n':
+
+ | $ ln -snf /bin/busybox sbin/init
+ | lstat("sbin/init", {st_mode=S_IFLNK|0777, st_size=20, ...}) = 0
+ | lstat("sbin/init", {st_mode=S_IFLNK|0777, st_size=20, ...}) = 0
+ | stat("/bin/busybox", 0x7fff8c1a3bd0) = -1 ENOENT (No such file or directory)
+ | symlink("/bin/busybox", "sbin/init") = -1 EEXIST (File exists)
+ | unlink("sbin/init") = 0
+ | symlink("/bin/busybox", "sbin/init") = 0
+
+
+The '-n' flag is well supported (coreutils have it at least since
+1999, busybox at least since 0.60.3 (2002)) and it obsoletes the
+explicit check whether target is a directory.
+
+Upstream-Status: pending [http://code.google.com/p/opkg/issues/detail?id=95]
+Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+
+Index: trunk/utils/update-alternatives.in
+===================================================================
+--- trunk.orig/utils/update-alternatives.in
++++ trunk/utils/update-alternatives.in
+@@ -113,14 +113,7 @@ find_best_alt() {
+ if [ ! -d $link_dir ]; then
+ mkdir -p $link_dir
+ fi
+- if [ -h $link -a -d $link ]; then
+- # If $link exists and the target is a directory,
+- # 'ln -sf $path $link' doesn't replace the link to
+- # that directory, it creates new link inside.
+- echo "update-alternatives: Removing $link".
+- rm -f $link
+- fi
+- ln -sf $path $link
++ ln -snf $path $link
+ echo "update-alternatives: Linking $link to $path"
+ else
+ echo "update-alternatives: Error: not linking $link to $path since $link exists and is not a link"
diff --git a/meta/recipes-devtools/opkg/opkg_svn.bb b/meta/recipes-devtools/opkg/opkg_svn.bb
index e1049a71de..064cf43af1 100644
--- a/meta/recipes-devtools/opkg/opkg_svn.bb
+++ b/meta/recipes-devtools/opkg/opkg_svn.bb
@@ -12,6 +12,7 @@ SRC_URI = "svn://opkg.googlecode.com/svn;module=trunk;protocol=http \
file://0009-pkg_depends-fix-version-constraints.patch \
file://0010-pkg_depends-fix-version_constraints_satisfied.patch \
file://opkg-no-sync-offline.patch \
+ file://alternatives-ln.patch \
file://don-t-add-recommends-pkgs-to-depended-upon-by.patch \
file://don-t-print-provides-if-nothing-is-provided.patch \
"
@@ -21,4 +22,4 @@ S = "${WORKDIR}/trunk"
SRCREV = "633"
PV = "0.1.8+svnr${SRCPV}"
-PR = "${INC_PR}.8"
+PR = "${INC_PR}.9"