From: Saul Wold <sgw@linux.intel.com>
To: Peter Seebach <peter.seebach@windriver.com>,
OE-core <openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH 1/2] Use alternatives for the binutils-symlinks package.
Date: Fri, 18 Oct 2013 22:22:40 -0700 [thread overview]
Message-ID: <52621720.6020001@linux.intel.com> (raw)
In-Reply-To: <3ccdc8aa31b31e23e22f3a65ffc2543df1718a94.1382138424.git.peter.seebach@windriver.com>
Peter,
The commit short message needs to be corrected to the binutils: ...
format please.
I will test this version in MUT.
Thanks
Sau!
On 10/18/2013 04:24 PM, Peter Seebach wrote:
> 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.
>
> Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
> ---
> meta/recipes-devtools/binutils/binutils.inc | 67 ++++++++++++++++----------
> 1 files changed, 41 insertions(+), 26 deletions(-)
>
> diff --git a/meta/recipes-devtools/binutils/binutils.inc b/meta/recipes-devtools/binutils/binutils.inc
> index 5e78dc0..eaf20bf 100644
> --- a/meta/recipes-devtools/binutils/binutils.inc
> +++ b/meta/recipes-devtools/binutils/binutils.inc
> @@ -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"
> -
> -FILES_${PN}-dbg += "${prefix}/${TARGET_SYS}/bin/.debug"
> +# Rather than duplicating multiple entries for these, make one
> +# list and reuse it.
> +
> +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_LINK_NAME[ar] = "${bindir}/ar"
> -ALTERNATIVE_TARGET[ar] = "${bindir}/${TARGET_PREFIX}ar"
> +ALTERNATIVE_${PN}-symlinks_class-target = "${USE_ALTERNATIVES_FOR}"
>
> -ALTERNATIVE_LINK_NAME[strings] = "${bindir}/strings"
> -ALTERNATIVE_TARGET[strings] = "${bindir}/${TARGET_PREFIX}strings"
>
next prev parent reply other threads:[~2013-10-19 5:22 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-10 20:06 [PATCH 0/2] Use alternatives for all of binutils instead of -symlinks Peter Seebach
2013-10-10 20:06 ` [PATCH 1/2] Use alternatives for the binutils-symlinks package Peter Seebach
2013-10-10 20:06 ` [PATCH 2/2] Drop binutils-symlinks Peter Seebach
2013-10-16 16:48 ` [PATCH 0/2] Use alternatives for all of binutils instead of -symlinks Saul Wold
2013-10-16 19:18 ` Mark Hatle
2013-10-18 23:24 ` [PATCH 0/2] v2: Use alternatives for binutils Peter Seebach
2013-10-18 23:24 ` [PATCH 1/2] Use alternatives for the binutils-symlinks package Peter Seebach
2013-10-19 5:22 ` Saul Wold [this message]
2013-10-21 3:46 ` Peter Seebach
2013-11-04 18:40 ` Peter Seebach
2013-10-18 23:24 ` [PATCH 2/2] Drop binutils-symlinks Peter Seebach
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52621720.6020001@linux.intel.com \
--to=sgw@linux.intel.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=peter.seebach@windriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox