All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [RFC PATCH] package/libiberty: use the same version as binutils
@ 2022-02-23 11:55 John Keeping
  2022-02-23 14:27 ` Yann E. MORIN
  0 siblings, 1 reply; 5+ messages in thread
From: John Keeping @ 2022-02-23 11:55 UTC (permalink / raw)
  To: buildroot; +Cc: John Keeping, Yann E . MORIN

libiberty is built from the binutils source but this package has
languished on version 2.32 while the binutils package now uses 2.36.1 by
default.

Even between the 2.32 version and GDB 10.2 which is the default (and
where host-libiberty is used instead of a version bundled in the GDB
source) there are memory leak fixes and several improvements to
demangling.

Update the libiberty package to simply use the same version as binutils
so that there is no need to remember to update this package in the
future.  Replace the .hash file with a symlink so that the binutils
hashes are used automatically.

Signed-off-by: John Keeping <john@metanate.com>
---
I'm not sure if this is this is the best way to improve the situation
here - it's the smallest change to get something a bit more modern (in
most circumstances), but I wonder if libiberty should use the GDB source
instead as that's the one package we know both bundles libiberty source
and will use host-libiberty in preference.

 package/libiberty/libiberty.hash | 6 +-----
 package/libiberty/libiberty.mk   | 4 ++--
 2 files changed, 3 insertions(+), 7 deletions(-)
 mode change 100644 => 120000 package/libiberty/libiberty.hash

diff --git a/package/libiberty/libiberty.hash b/package/libiberty/libiberty.hash
deleted file mode 100644
index 0dafcea520..0000000000
--- a/package/libiberty/libiberty.hash
+++ /dev/null
@@ -1,5 +0,0 @@
-# From ftp://gcc.gnu.org/pub/binutils/releases/sha512.sum
-sha512  d326408f12a03d9a61a9de56584c2af12f81c2e50d2d7e835d51565df8314df01575724afa1e43bd0db45cfc9916b41519b67dfce03232aa4978704492a6994a  binutils-2.32.tar.xz
-
-# Locally computed, same as binutils.hash
-sha256  56bdea73b6145ef6ac5259b3da390b981d840c24cb03b8e1cbc678de7ecfa18d  COPYING.LIB
diff --git a/package/libiberty/libiberty.hash b/package/libiberty/libiberty.hash
new file mode 120000
index 0000000000..e0655d3af3
--- /dev/null
+++ b/package/libiberty/libiberty.hash
@@ -0,0 +1 @@
+../binutils/binutils.hash
\ No newline at end of file
diff --git a/package/libiberty/libiberty.mk b/package/libiberty/libiberty.mk
index 6235a8b956..d0847bf298 100644
--- a/package/libiberty/libiberty.mk
+++ b/package/libiberty/libiberty.mk
@@ -4,8 +4,8 @@
 #
 ################################################################################
 
-LIBIBERTY_VERSION = 2.32
-LIBIBERTY_SOURCE = binutils-$(LIBIBERTY_VERSION).tar.xz
+LIBIBERTY_VERSION = $(BINUTILS_VERSION)
+LIBIBERTY_SOURCE = $(BINUTILS_SOURCE)
 LIBIBERTY_SITE = $(BR2_GNU_MIRROR)/binutils
 HOST_LIBIBERTY_DL_SUBDIR = binutils
 
-- 
2.35.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [RFC PATCH] package/libiberty: use the same version as binutils
  2022-02-23 11:55 [Buildroot] [RFC PATCH] package/libiberty: use the same version as binutils John Keeping
@ 2022-02-23 14:27 ` Yann E. MORIN
  2022-02-23 14:51   ` Thomas Petazzoni via buildroot
  0 siblings, 1 reply; 5+ messages in thread
From: Yann E. MORIN @ 2022-02-23 14:27 UTC (permalink / raw)
  To: John Keeping; +Cc: buildroot

John, All,

On 2022-02-23 11:55 +0000, John Keeping spake thusly:
> libiberty is built from the binutils source but this package has
> languished on version 2.32 while the binutils package now uses 2.36.1 by
> default.
> 
> Even between the 2.32 version and GDB 10.2 which is the default (and
> where host-libiberty is used instead of a version bundled in the GDB
> source) there are memory leak fixes and several improvements to
> demangling.
> 
> Update the libiberty package to simply use the same version as binutils
> so that there is no need to remember to update this package in the
> future.  Replace the .hash file with a symlink so that the binutils
> hashes are used automatically.
> 
> Signed-off-by: John Keeping <john@metanate.com>
> ---
> I'm not sure if this is this is the best way to improve the situation
> here - it's the smallest change to get something a bit more modern (in
> most circumstances), but I wonder if libiberty should use the GDB source
> instead as that's the one package we know both bundles libiberty source
> and will use host-libiberty in preference.
> 
>  package/libiberty/libiberty.hash | 6 +-----
>  package/libiberty/libiberty.mk   | 4 ++--
>  2 files changed, 3 insertions(+), 7 deletions(-)
>  mode change 100644 => 120000 package/libiberty/libiberty.hash
> 
> diff --git a/package/libiberty/libiberty.hash b/package/libiberty/libiberty.hash
> deleted file mode 100644
> index 0dafcea520..0000000000
> --- a/package/libiberty/libiberty.hash
> +++ /dev/null
> @@ -1,5 +0,0 @@
> -# From ftp://gcc.gnu.org/pub/binutils/releases/sha512.sum
> -sha512  d326408f12a03d9a61a9de56584c2af12f81c2e50d2d7e835d51565df8314df01575724afa1e43bd0db45cfc9916b41519b67dfce03232aa4978704492a6994a  binutils-2.32.tar.xz
> -
> -# Locally computed, same as binutils.hash
> -sha256  56bdea73b6145ef6ac5259b3da390b981d840c24cb03b8e1cbc678de7ecfa18d  COPYING.LIB
> diff --git a/package/libiberty/libiberty.hash b/package/libiberty/libiberty.hash
> new file mode 120000
> index 0000000000..e0655d3af3
> --- /dev/null
> +++ b/package/libiberty/libiberty.hash
> @@ -0,0 +1 @@
> +../binutils/binutils.hash
> \ No newline at end of file
> diff --git a/package/libiberty/libiberty.mk b/package/libiberty/libiberty.mk
> index 6235a8b956..d0847bf298 100644
> --- a/package/libiberty/libiberty.mk
> +++ b/package/libiberty/libiberty.mk
> @@ -4,8 +4,8 @@
>  #
>  ################################################################################
>  
> -LIBIBERTY_VERSION = 2.32
> -LIBIBERTY_SOURCE = binutils-$(LIBIBERTY_VERSION).tar.xz
> +LIBIBERTY_VERSION = $(BINUTILS_VERSION)
> +LIBIBERTY_SOURCE = $(BINUTILS_SOURCE)

Although this works, this is by pure chance: binutils is included before
libiberty, so BINUTILS_VERSION is defined. But we try and avoid such a
situation, unless we explicitly guarantee the include ordering (eg. gcc,
fftw, util-linux, or previously, qt5).

Instead, in such a case, we prefer that the version strin is duplicated,
and a comment added above to note that both shoujld be updated in sync.
See for example bluez5_utils and bluez5_utils-headers, mesa3d and
mesa3d-headers.

Regards,
Yann E. MORIN.

>  LIBIBERTY_SITE = $(BR2_GNU_MIRROR)/binutils
>  HOST_LIBIBERTY_DL_SUBDIR = binutils
>  
> -- 
> 2.35.1
> 

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [RFC PATCH] package/libiberty: use the same version as binutils
  2022-02-23 14:27 ` Yann E. MORIN
@ 2022-02-23 14:51   ` Thomas Petazzoni via buildroot
  2022-02-23 15:17     ` Yann E. MORIN
  0 siblings, 1 reply; 5+ messages in thread
From: Thomas Petazzoni via buildroot @ 2022-02-23 14:51 UTC (permalink / raw)
  To: Yann E. MORIN; +Cc: John Keeping, buildroot

On Wed, 23 Feb 2022 15:27:31 +0100
"Yann E. MORIN" <yann.morin.1998@free.fr> wrote:

> Although this works, this is by pure chance: binutils is included before
> libiberty, so BINUTILS_VERSION is defined. But we try and avoid such a
> situation, unless we explicitly guarantee the include ordering (eg. gcc,
> fftw, util-linux, or previously, qt5).
> 
> Instead, in such a case, we prefer that the version strin is duplicated,
> and a comment added above to note that both shoujld be updated in sync.
> See for example bluez5_utils and bluez5_utils-headers, mesa3d and
> mesa3d-headers.

libiberty/binutils is different than mesa3d or bluez5_utils, as the
version is user-selectable, or even different depending on the selected
CPU architecture.

So we would have to replicate all the version selection logic (like we
admittedly do for linux vs. linux-headers).

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [RFC PATCH] package/libiberty: use the same version as binutils
  2022-02-23 14:51   ` Thomas Petazzoni via buildroot
@ 2022-02-23 15:17     ` Yann E. MORIN
  2022-02-23 16:39       ` John Keeping
  0 siblings, 1 reply; 5+ messages in thread
From: Yann E. MORIN @ 2022-02-23 15:17 UTC (permalink / raw)
  To: Thomas Petazzoni; +Cc: John Keeping, buildroot

Thomas, All,

On 2022-02-23 15:51 +0100, Thomas Petazzoni spake thusly:
> On Wed, 23 Feb 2022 15:27:31 +0100
> "Yann E. MORIN" <yann.morin.1998@free.fr> wrote:
> > Although this works, this is by pure chance: binutils is included before
> > libiberty, so BINUTILS_VERSION is defined. But we try and avoid such a
> > situation, unless we explicitly guarantee the include ordering (eg. gcc,
> > fftw, util-linux, or previously, qt5).
> > Instead, in such a case, we prefer that the version strin is duplicated,
> > and a comment added above to note that both shoujld be updated in sync.
> > See for example bluez5_utils and bluez5_utils-headers, mesa3d and
> > mesa3d-headers.
> libiberty/binutils is different than mesa3d or bluez5_utils, as the
> version is user-selectable, or even different depending on the selected
> CPU architecture.

Right, I forgot about that... But still, I don't like that we rely on
the implied include order here, as we try and avoid that elsewhere...

> So we would have to replicate all the version selection logic (like we
> admittedly do for linux vs. linux-headers).

That would not be very convenient and maintainable in the long run, as
we update binutils to newer versions with various arch support changes:
indeed, as we can see here, we'd eventually forget to update libibert in
sync.

Unless we move libiberty as a sub-directory in pacage/binutils/libiberty/
(like for util-linux-libs) to make it obvious that we need to share the
version... That'd be my favourite option.

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [RFC PATCH] package/libiberty: use the same version as binutils
  2022-02-23 15:17     ` Yann E. MORIN
@ 2022-02-23 16:39       ` John Keeping
  0 siblings, 0 replies; 5+ messages in thread
From: John Keeping @ 2022-02-23 16:39 UTC (permalink / raw)
  To: Yann E. MORIN; +Cc: Thomas Petazzoni, buildroot

On Wed, Feb 23, 2022 at 04:17:32PM +0100, Yann E. MORIN wrote:
> Thomas, All,
> 
> On 2022-02-23 15:51 +0100, Thomas Petazzoni spake thusly:
> > On Wed, 23 Feb 2022 15:27:31 +0100
> > "Yann E. MORIN" <yann.morin.1998@free.fr> wrote:
> > > Although this works, this is by pure chance: binutils is included before
> > > libiberty, so BINUTILS_VERSION is defined. But we try and avoid such a
> > > situation, unless we explicitly guarantee the include ordering (eg. gcc,
> > > fftw, util-linux, or previously, qt5).
> > > Instead, in such a case, we prefer that the version strin is duplicated,
> > > and a comment added above to note that both shoujld be updated in sync.
> > > See for example bluez5_utils and bluez5_utils-headers, mesa3d and
> > > mesa3d-headers.
> > libiberty/binutils is different than mesa3d or bluez5_utils, as the
> > version is user-selectable, or even different depending on the selected
> > CPU architecture.
> 
> Right, I forgot about that... But still, I don't like that we rely on
> the implied include order here, as we try and avoid that elsewhere...
> 
> > So we would have to replicate all the version selection logic (like we
> > admittedly do for linux vs. linux-headers).
> 
> That would not be very convenient and maintainable in the long run, as
> we update binutils to newer versions with various arch support changes:
> indeed, as we can see here, we'd eventually forget to update libibert in
> sync.
> 
> Unless we move libiberty as a sub-directory in pacage/binutils/libiberty/
> (like for util-linux-libs) to make it obvious that we need to share the
> version... That'd be my favourite option.

If we're doing that, should it be in gdb instead of binutils?

The gdb and binutils source all comes from the same repository but gdb
is the one package for which we actually use host-libiberty so tying
this in to the gdb version seems more sensible than using the binutils
version.

For example, given the default versions of binutils and gdb gives:

    $ git log --left-right --oneline binutils-2_36_1...gdb-10.2-release -- libiberty/
    > f42f69f6f38 libiberty: Support the new ("v0") mangling scheme in rust-demangle
    < d750c713c9a Update libiberty with latest sources from gcc mainline
    < f9a6a8f09dc PR27116, Spelling errors found by Debian style checker
    < 250d07de5cf Update year range in copyright notice of binutils files
    < d7b477c541b Sync libiberty and include with GCC for get_DW_UT_name.

so the GDB branch has a new feature (not included in the binutils
branch) whereas binutils has some updates not included for GDB.

It's a bit of a mess, but given where we need libiberty (for
prelink-cross) and what uses the package version (host-gdb) it looks
like it would make more sense to move this to the gdb package source.

What do you think?


John
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-02-23 16:39 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-23 11:55 [Buildroot] [RFC PATCH] package/libiberty: use the same version as binutils John Keeping
2022-02-23 14:27 ` Yann E. MORIN
2022-02-23 14:51   ` Thomas Petazzoni via buildroot
2022-02-23 15:17     ` Yann E. MORIN
2022-02-23 16:39       ` John Keeping

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.