diff options
| -rw-r--r-- | meta/recipes-devtools/opkg/opkg/alternatives-ln.patch | 56 | ||||
| -rw-r--r-- | meta/recipes-devtools/opkg/opkg_svn.bb | 3 |
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 @@ | |||
| 1 | update-alternatives: use 'ln -n' | ||
| 2 | |||
| 3 | Using the '-n' option (--no-dereference) is a better way to solve the | ||
| 4 | do-not-link-into-directory issue. Using only 'ln -sf' can cause problems | ||
| 5 | on SELinux enabled hosts when target is inaccessible; e.g. when preparing | ||
| 6 | an offline rootsystem: | ||
| 7 | |||
| 8 | | $ cd <offline root> | ||
| 9 | | $ ln -sf /lib/systemd/systemd sbin/init # alternative #1 | ||
| 10 | | $ ln -sf /bin/busybox sbin/init # alternative #2 | ||
| 11 | | ln: accessing `sbin/init': Permission denied | ||
| 12 | | | ||
| 13 | | --> strace: | ||
| 14 | | brk(0) = 0x102b000 | ||
| 15 | | stat("sbin/init", 0x7fffaa91c900) = -1 EACCES (Permission denied) | ||
| 16 | | ... | ||
| 17 | | exit_group(1) = ? | ||
| 18 | |||
| 19 | Now with '-n': | ||
| 20 | |||
| 21 | | $ ln -snf /bin/busybox sbin/init | ||
| 22 | | lstat("sbin/init", {st_mode=S_IFLNK|0777, st_size=20, ...}) = 0 | ||
| 23 | | lstat("sbin/init", {st_mode=S_IFLNK|0777, st_size=20, ...}) = 0 | ||
| 24 | | stat("/bin/busybox", 0x7fff8c1a3bd0) = -1 ENOENT (No such file or directory) | ||
| 25 | | symlink("/bin/busybox", "sbin/init") = -1 EEXIST (File exists) | ||
| 26 | | unlink("sbin/init") = 0 | ||
| 27 | | symlink("/bin/busybox", "sbin/init") = 0 | ||
| 28 | |||
| 29 | |||
| 30 | The '-n' flag is well supported (coreutils have it at least since | ||
| 31 | 1999, busybox at least since 0.60.3 (2002)) and it obsoletes the | ||
| 32 | explicit check whether target is a directory. | ||
| 33 | |||
| 34 | Upstream-Status: pending [http://code.google.com/p/opkg/issues/detail?id=95] | ||
| 35 | Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de> | ||
| 36 | |||
| 37 | Index: trunk/utils/update-alternatives.in | ||
| 38 | =================================================================== | ||
| 39 | --- trunk.orig/utils/update-alternatives.in | ||
| 40 | +++ trunk/utils/update-alternatives.in | ||
| 41 | @@ -113,14 +113,7 @@ find_best_alt() { | ||
| 42 | if [ ! -d $link_dir ]; then | ||
| 43 | mkdir -p $link_dir | ||
| 44 | fi | ||
| 45 | - if [ -h $link -a -d $link ]; then | ||
| 46 | - # If $link exists and the target is a directory, | ||
| 47 | - # 'ln -sf $path $link' doesn't replace the link to | ||
| 48 | - # that directory, it creates new link inside. | ||
| 49 | - echo "update-alternatives: Removing $link". | ||
| 50 | - rm -f $link | ||
| 51 | - fi | ||
| 52 | - ln -sf $path $link | ||
| 53 | + ln -snf $path $link | ||
| 54 | echo "update-alternatives: Linking $link to $path" | ||
| 55 | else | ||
| 56 | 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 \ | |||
| 12 | file://0009-pkg_depends-fix-version-constraints.patch \ | 12 | file://0009-pkg_depends-fix-version-constraints.patch \ |
| 13 | file://0010-pkg_depends-fix-version_constraints_satisfied.patch \ | 13 | file://0010-pkg_depends-fix-version_constraints_satisfied.patch \ |
| 14 | file://opkg-no-sync-offline.patch \ | 14 | file://opkg-no-sync-offline.patch \ |
| 15 | file://alternatives-ln.patch \ | ||
| 15 | file://don-t-add-recommends-pkgs-to-depended-upon-by.patch \ | 16 | file://don-t-add-recommends-pkgs-to-depended-upon-by.patch \ |
| 16 | file://don-t-print-provides-if-nothing-is-provided.patch \ | 17 | file://don-t-print-provides-if-nothing-is-provided.patch \ |
| 17 | " | 18 | " |
| @@ -21,4 +22,4 @@ S = "${WORKDIR}/trunk" | |||
| 21 | SRCREV = "633" | 22 | SRCREV = "633" |
| 22 | PV = "0.1.8+svnr${SRCPV}" | 23 | PV = "0.1.8+svnr${SRCPV}" |
| 23 | 24 | ||
| 24 | PR = "${INC_PR}.8" | 25 | PR = "${INC_PR}.9" |
