diff mbox series

[v3,5/7] package/diffutils: disable getopt_long replacement with glibc

Message ID 20170923212414.16744-6-romain.naour@gmail.com
State Accepted
Headers show
Series glibc: bump to 2.26 | expand

Commit Message

Romain Naour Sept. 23, 2017, 9:24 p.m. UTC
Since glibc >= 2.26, don't try to use getopt_long replacement bundled
with diffutils. It will conflict with the one from glibc.
The getopt copy bundled in glibc has been updated with the one from gnulib.

After a lot of warnings...
Fixes:
xstrtol-error.c: In function 'xstrtol_error':
xstrtol-error.c:84:26: error: invalid use of undefined type 'struct rpl_option'
     option = long_options[opt_idx].name;
                          ^
xstrtol-error.c:84:26: error: dereferencing pointer to incomplete type 'const struct rpl_option'

[...]

xstrtol-error.c:92:1: error: conflicting types for 'xstrtol_fatal'
 xstrtol_fatal (enum strtol_error err,
 ^~~~~~~~~~~~~
In file included from xstrtol-error.c:20:0:
xstrtol.h:69:16: note: previous declaration of 'xstrtol_fatal' was here
 _Noreturn void xstrtol_fatal (enum strtol_error,
                ^~~~~~~~~~~~~

Signed-off-by: Romain Naour <romain.naour@gmail.com>
---
 package/diffutils/diffutils.mk | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Yann E. MORIN Sept. 27, 2017, 9:01 p.m. UTC | #1
Romain, All,

On 2017-09-23 23:24 +0200, Romain Naour spake thusly:
> Since glibc >= 2.26, don't try to use getopt_long replacement bundled
> with diffutils. It will conflict with the one from glibc.
> The getopt copy bundled in glibc has been updated with the one from gnulib.

Yeah, because gnulib was such a bright idea... ;-)

> After a lot of warnings...
> Fixes:
> xstrtol-error.c: In function 'xstrtol_error':
> xstrtol-error.c:84:26: error: invalid use of undefined type 'struct rpl_option'
>      option = long_options[opt_idx].name;
>                           ^
> xstrtol-error.c:84:26: error: dereferencing pointer to incomplete type 'const struct rpl_option'
> 
> [...]
> 
> xstrtol-error.c:92:1: error: conflicting types for 'xstrtol_fatal'
>  xstrtol_fatal (enum strtol_error err,
>  ^~~~~~~~~~~~~
> In file included from xstrtol-error.c:20:0:
> xstrtol.h:69:16: note: previous declaration of 'xstrtol_fatal' was here
>  _Noreturn void xstrtol_fatal (enum strtol_error,
>                 ^~~~~~~~~~~~~
> 
> Signed-off-by: Romain Naour <romain.naour@gmail.com>

Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.

> ---
>  package/diffutils/diffutils.mk | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/package/diffutils/diffutils.mk b/package/diffutils/diffutils.mk
> index 6e5b9b6..79785d6 100644
> --- a/package/diffutils/diffutils.mk
> +++ b/package/diffutils/diffutils.mk
> @@ -11,6 +11,12 @@ DIFFUTILS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)
>  DIFFUTILS_LICENSE = GPL-3.0+
>  DIFFUTILS_LICENSE_FILES = COPYING
>  
> +# Since glibc >= 2.26, don't try to use getopt_long replacement bundled
> +# with diffutils. It will conflict with the one from glibc.
> +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)
> +DIFFUTILS_CONF_ENV += gl_cv_func_getopt_gnu=yes
> +endif
> +
>  ifeq ($(BR2_PACKAGE_BUSYBOX),y)
>  DIFFUTILS_DEPENDENCIES += busybox
>  endif
> -- 
> 2.9.5
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/package/diffutils/diffutils.mk b/package/diffutils/diffutils.mk
index 6e5b9b6..79785d6 100644
--- a/package/diffutils/diffutils.mk
+++ b/package/diffutils/diffutils.mk
@@ -11,6 +11,12 @@  DIFFUTILS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)
 DIFFUTILS_LICENSE = GPL-3.0+
 DIFFUTILS_LICENSE_FILES = COPYING
 
+# Since glibc >= 2.26, don't try to use getopt_long replacement bundled
+# with diffutils. It will conflict with the one from glibc.
+ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)
+DIFFUTILS_CONF_ENV += gl_cv_func_getopt_gnu=yes
+endif
+
 ifeq ($(BR2_PACKAGE_BUSYBOX),y)
 DIFFUTILS_DEPENDENCIES += busybox
 endif