mirror of
https://git.yoctoproject.org/poky
synced 2026-04-18 12:32:12 +02:00
binutils: Use alternatives for the binutils-symlinks package.
The ar and strings utilities are provided as alternatives, but the rest of binutils is being done with binutils-symlinks. This has the side effect that if you want "as", and you install binutils-symlinks to get it, you don't get "ar" from it, because it's not in the symlinks package. Solution: Use the same mechanisms for everything, putting everything in ALTERNATIVES, so installing binutils on a target produces the expected behavior of having the various utilities in place. (We do this only for class-target, though.) Issues: The "embedspu" and "ld.gold" binaries may or may not exist, but the determination of whether to list them as alternatives is being made before the point at which we can easily check for them, so that can produce warnings. (From OE-Core rev: 1395aefcaeac94dd0e6ed3a718b7e58dd43b355e) Signed-off-by: Peter Seebach <peter.seebach@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
d6cc7c8ed7
commit
77ff02ffa8
@@ -22,31 +22,49 @@ FILES_${PN} = " \
|
||||
${libdir}/lib*-*.so \
|
||||
${prefix}/${TARGET_SYS}/bin/*"
|
||||
|
||||
# Use alternatives rather than actual symlinks.
|
||||
FILES_${PN}-symlinks = ""
|
||||
|
||||
ALLOW_EMPTY_${PN}-symlinks = "1"
|
||||
|
||||
FILES_${PN}-dev = " \
|
||||
${includedir} \
|
||||
${libdir}/*.la \
|
||||
${libdir}/libbfd.so \
|
||||
${libdir}/libopcodes.so"
|
||||
|
||||
FILES_${PN}-symlinks = " \
|
||||
${bindir}/addr2line \
|
||||
${bindir}/as \
|
||||
${bindir}/c++filt \
|
||||
${bindir}/embedspu \
|
||||
${bindir}/gprof \
|
||||
${bindir}/ld \
|
||||
${bindir}/ld.bfd \
|
||||
${bindir}/ld.gold \
|
||||
${bindir}/nm \
|
||||
${bindir}/objcopy \
|
||||
${bindir}/objdump \
|
||||
${bindir}/ranlib \
|
||||
${bindir}/readelf \
|
||||
${bindir}/elfedit \
|
||||
${bindir}/size \
|
||||
${bindir}/strip"
|
||||
# Rather than duplicating multiple entries for these, make one
|
||||
# list and reuse it.
|
||||
|
||||
FILES_${PN}-dbg += "${prefix}/${TARGET_SYS}/bin/.debug"
|
||||
USE_ALTERNATIVES_FOR = " \
|
||||
addr2line \
|
||||
ar \
|
||||
as \
|
||||
c++filt \
|
||||
elfedit \
|
||||
gprof \
|
||||
ld \
|
||||
${@base_contains('DISTRO_FEATURES', 'ld-is-gold', 'ld.gold', 'ld.bfd', d)} \
|
||||
nm \
|
||||
objcopy \
|
||||
objdump \
|
||||
ranlib \
|
||||
readelf \
|
||||
size \
|
||||
strings \
|
||||
strip \
|
||||
"
|
||||
|
||||
python do_package_prepend() {
|
||||
make_alts = d.getVar("USE_ALTERNATIVES_FOR", True) or ""
|
||||
prefix = d.getVar("TARGET_PREFIX", True)
|
||||
bindir = d.getVar("bindir", True)
|
||||
for alt in make_alts.split():
|
||||
d.setVarFlag('ALTERNATIVE_TARGET', alt, bindir + "/" + prefix + alt)
|
||||
d.setVarFlag('ALTERNATIVE_LINK_NAME', alt, bindir + "/" + alt)
|
||||
}
|
||||
|
||||
# FILES_${PN}-dbg = "${prefix}/${TARGET_SYS}/bin/.debug ${prefix}/${libdir}/.debug"
|
||||
|
||||
B = "${S}/build.${HOST_SYS}.${TARGET_SYS}"
|
||||
|
||||
@@ -120,7 +138,9 @@ do_install () {
|
||||
ln -sf $p `echo $p | sed -e s,${TARGET_PREFIX},,`
|
||||
done
|
||||
|
||||
rm -f ${D}${bindir}/ar ${D}${bindir}/strings
|
||||
for alt in ${USE_ALTERNATIVES_FOR}; do
|
||||
rm -f ${D}${bindir}/$alt
|
||||
done
|
||||
|
||||
oe_multilib_header bfd.h
|
||||
}
|
||||
@@ -129,10 +149,5 @@ inherit update-alternatives
|
||||
|
||||
ALTERNATIVE_PRIORITY = "100"
|
||||
|
||||
ALTERNATIVE_${PN}-symlinks = "ar strings"
|
||||
ALTERNATIVE_${PN}-symlinks_class-target = "${USE_ALTERNATIVES_FOR}"
|
||||
|
||||
ALTERNATIVE_LINK_NAME[ar] = "${bindir}/ar"
|
||||
ALTERNATIVE_TARGET[ar] = "${bindir}/${TARGET_PREFIX}ar"
|
||||
|
||||
ALTERNATIVE_LINK_NAME[strings] = "${bindir}/strings"
|
||||
ALTERNATIVE_TARGET[strings] = "${bindir}/${TARGET_PREFIX}strings"
|
||||
|
||||
Reference in New Issue
Block a user