From patchwork Fri Apr 20 16:45:00 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [CONSOLIDATED, PULL, 09/43] coreutils_*.bb: Use update alternatives and add missing manual alt links Date: Fri, 20 Apr 2012 16:45:00 -0000 From: Saul Wold X-Patchwork-Id: 26265 Message-Id: To: openembedded-core@lists.openembedded.org From: Mark Hatle Coreutils was capable of providing many of the necessary binaries for the system, however it never told the package manager what was being provided via the alternatives. Use the MANUAL_ALTERNATIVE_LINKS to do this. It also should have been using the update-alternatives class as that automatically sets the file rprovides. Signed-off-by: Mark Hatle coreutils - 8.14 - update-alt --- meta/recipes-core/coreutils/coreutils_6.9.bb | 34 +++++++++------------- meta/recipes-core/coreutils/coreutils_8.14.bb | 38 +++++++++++++------------ 2 files changed, 34 insertions(+), 38 deletions(-) diff --git a/meta/recipes-core/coreutils/coreutils_6.9.bb b/meta/recipes-core/coreutils/coreutils_6.9.bb index 8a47a60..32ea321 100644 --- a/meta/recipes-core/coreutils/coreutils_6.9.bb +++ b/meta/recipes-core/coreutils/coreutils_6.9.bb @@ -8,11 +8,11 @@ BUGTRACKER = "http://debbugs.gnu.org/coreutils" LICENSE = "GPLv2+" LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \ file://src/ls.c;startline=4;endline=16;md5=482a96d4f25010a4e13f8743e0c3685e" -PR = "r2" +PR = "r3" DEPENDS = "coreutils-native-${PV}" DEPENDS_virtclass-native = "gettext-native" -inherit autotools gettext +inherit update-alternatives autotools gettext SRC_URI_BASE = "${GNU_MIRROR}/coreutils/${BP}.tar.bz2 \ file://gnulib_m4.patch \ @@ -30,6 +30,9 @@ SRC_URI_virtclass-native = "${SRC_URI_BASE}" SRC_URI[md5sum] = "c9607d8495f16e98906e7ed2d9751a06" SRC_URI[sha256sum] = "89c2895ad157de50e53298b22d91db116ee4e1dd3fdf4019260254e2e31497b0" +ALTERNATIVE_PRIORITY = "100" +ALTERNATIVE_LINKS = "" + # [ gets a special treatment and is not included in this bindir_progs = "base64 basename cksum comm csplit cut dir dircolors dirname du \ env expand expr factor fmt fold groups head hostid id install \ @@ -37,23 +40,26 @@ bindir_progs = "base64 basename cksum comm csplit cut dir dircolors dirname du \ pinky pr printenv printf ptx readlink seq sha1sum sha224sum sha256sum \ sha384sum sha512sum shred shuf sort split stat sum tac tail tee test \ tr tsort tty unexpand uniq unlink users vdir wc who whoami yes" +ALTERNATIVE_LINKS += "${bindir}/${@' ${bindir}/'.join((d.getVar('bindir_progs', True)).split())}" # hostname gets a special treatment and is not included in this base_bindir_progs = "cat chgrp chmod chown cp date dd echo false kill ln ls mkdir \ mknod mv pwd rm rmdir sleep stty sync touch true uname" +ALTERNATIVE_LINKS += "${base_bindir}/${@' ${base_bindir}/'.join((d.getVar('base_bindir_progs', True)).split())}" sbindir_progs= "chroot" +ALTERNATIVE_LINKS += "${sbindir}/${@' ${sbindir}/'.join((d.getVar('sbindir_progs', True)).split())}" -do_install() { - autotools_do_install - - for i in ${bindir_progs}; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${PN}; done +# rprovides for manually controlled alternatives +MANUAL_ALTERNATIVE_LINKS += "${bindir}/uptime ${base_bindir}/hostname" +MANUAL_ALTERNATIVE_LINKS += "${bindir}/[:${bindir}/lbracket.${PN}" +do_install_append() { install -d ${D}${base_bindir} - for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i.${PN}; done + for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i; done install -d ${D}${sbindir} - for i in ${sbindir_progs}; do mv ${D}${bindir}/$i ${D}${sbindir}/$i.${PN}; done + for i in ${sbindir_progs}; do mv ${D}${bindir}/$i ${D}${sbindir}/$i; done # [ requires special handling because [.coreutils will cause the sed stuff # in update-alternatives to fail, therefore use lbracket - the name used @@ -66,12 +72,6 @@ do_install() { } pkg_postinst_${PN} () { - for i in ${bindir_progs}; do update-alternatives --install ${bindir}/$i $i $i.${PN} 100; done - - for i in ${base_bindir_progs}; do update-alternatives --install ${base_bindir}/$i $i $i.${PN} 100; done - - for i in ${sbindir_progs}; do update-alternatives --install ${sbindir}/$i $i $i.${PN} 100; done - # Special cases. uptime and hostname is broken, prefer busybox's version. [ needs to be treated separately. update-alternatives --install ${bindir}/uptime uptime uptime.${PN} 10 update-alternatives --install ${base_bindir}/hostname hostname hostname.${PN} 10 @@ -79,12 +79,6 @@ pkg_postinst_${PN} () { } pkg_prerm_${PN} () { - for i in ${bindir_progs}; do update-alternatives --remove $i $i.${PN}; done - - for i in ${base_bindir_progs}; do update-alternatives --remove $i $i.${PN}; done - - for i in ${sbindir_progs}; do update-alternatives --remove $i $i.${PN}; done - # The special cases update-alternatives --remove hostname hostname.${PN} update-alternatives --remove uptime uptime.${PN} diff --git a/meta/recipes-core/coreutils/coreutils_8.14.bb b/meta/recipes-core/coreutils/coreutils_8.14.bb index 688cec9..9ccb813 100644 --- a/meta/recipes-core/coreutils/coreutils_8.14.bb +++ b/meta/recipes-core/coreutils/coreutils_8.14.bb @@ -7,11 +7,11 @@ BUGTRACKER = "http://debbugs.gnu.org/coreutils" LICENSE = "GPLv3+" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504\ file://src/ls.c;startline=5;endline=16;md5=e1a509558876db58fb6667ba140137ad" -PR = "r3" +PR = "r4" DEPENDS = "gmp libcap" DEPENDS_virtclass-native = "" -inherit autotools gettext +inherit update-alternatives autotools gettext SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \ file://remove-usr-local-lib-from-m4.patch \ @@ -21,6 +21,9 @@ SRC_URI[sha256sum] = "0d120817c19292edb19e92ae6b8eac9020e03d51e0af9cb116cf82b65d EXTRA_OECONF_virtclass-native = "--without-gmp" +ALTERNATIVE_PRIORITY = "100" +ALTERNATIVE_LINKS = "" + # [ df mktemp base64 gets a special treatment and is not included in this bindir_progs = "basename chcon cksum comm csplit cut dir dircolors dirname du \ env expand expr factor fmt fold groups head hostid id install \ @@ -28,37 +31,42 @@ bindir_progs = "basename chcon cksum comm csplit cut dir dircolors dirname du \ pinky pr printenv printf ptx readlink runcon seq sha1sum sha224sum sha256sum \ sha384sum sha512sum shred shuf sort split stat stdbuf sum tac tail tee test timeout\ tr truncate tsort tty unexpand uniq unlink uptime users vdir wc who whoami yes" +ALTERNATIVE_LINKS += "${bindir}/${@' ${bindir}/'.join((d.getVar('bindir_progs', True)).split())}" # hostname gets a special treatment and is not included in this base_bindir_progs = "cat chgrp chmod chown cp date dd echo false kill ln ls mkdir \ mknod mv pwd rm rmdir sleep stty sync touch true uname" +ALTERNATIVE_LINKS += "${base_bindir}/${@' ${base_bindir}/'.join((d.getVar('base_bindir_progs', True)).split())}" sbindir_progs= "chroot" +ALTERNATIVE_LINKS += "${sbindir}/${@' ${sbindir}/'.join((d.getVar('sbindir_progs', True)).split())}" -do_install_append() { - for i in ${bindir_progs} df mktemp base64; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${PN}; done +# Manual file provides for manually controlled alternatives +MANUAL_ALTERNATIVE_LINKS += "${base_bindir}/df:${bindir}/df.${PN}" +MANUAL_ALTERNATIVE_LINKS += "${base_bindir}/mktemp:${bindir}/mktemp.${PN}" +MANUAL_ALTERNATIVE_LINKS += "${base_bindir}/base64:${bindir}/base64.${PN}" +MANUAL_ALTERNATIVE_LINKS += "${bindir}/[:${bindir}/lbracket.${PN}" +do_install_append() { install -d ${D}${base_bindir} - for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i.${PN}; done + for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i; done install -d ${D}${sbindir} - for i in ${sbindir_progs}; do mv ${D}${bindir}/$i ${D}${sbindir}/$i.${PN}; done + for i in ${sbindir_progs}; do mv ${D}${bindir}/$i ${D}${sbindir}/$i; done + + # Process the special items due to mismatch with busybox + for i in df mktemp base64; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${PN}; done # [ requires special handling because [.coreutils will cause the sed stuff # in update-alternatives to fail, therefore use lbracket - the name used # for the actual source file. mv ${D}${bindir}/[ ${D}${bindir}/lbracket.${PN} + install -d ${D}${libdir}/coreutils mv ${D}${libexecdir}/coreutils/libstdbuf.so ${D}${libdir}/coreutils } pkg_postinst_${PN} () { - for i in ${bindir_progs}; do update-alternatives --install ${bindir}/$i $i $i.${PN} 100; done - - for i in ${base_bindir_progs}; do update-alternatives --install ${base_bindir}/$i $i $i.${PN} 100; done - - for i in ${sbindir_progs}; do update-alternatives --install ${sbindir}/$i $i $i.${PN} 100; done - # Special cases. [ needs to be treated separately. update-alternatives --install '${bindir}/[' '[' 'lbracket.${PN}' 100 @@ -69,12 +77,6 @@ pkg_postinst_${PN} () { } pkg_prerm_${PN} () { - for i in ${bindir_progs}; do update-alternatives --remove $i $i.${PN}; done - - for i in ${base_bindir_progs}; do update-alternatives --remove $i $i.${PN}; done - - for i in ${sbindir_progs}; do update-alternatives --remove $i $i.${PN}; done - # The special cases update-alternatives --remove hostname hostname.${PN} update-alternatives --remove uptime uptime.${PN}