[Buildroot] [PATCH] package/lshw: fix the build with glibc without NLS
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Thu Jul 13 21:28:13 UTC 2017
Hello,
On Thu, 13 Jul 2017 23:04:24 +0200, Romain Naour wrote:
> Since [1], NONLS is added to LSHW_CFLAGS even for glibc based toolchain.
> Previously it was not the case since BR2_ENABLE_LOCALE is always
> selected for glibc based toolchain.
>
> With NONLS, config.h try to redefine two Intl function (textdomain and
> bindtextdomain) that are used by glibc internally.
>
> This break the build with the following error:
> sysroot/usr/include/libintl.h:82:52: error: expected unqualified-id before 'throw'
> extern char *textdomain (const char *__domainname) __THROW;
>
> Fixes:
> http://autobuild.buildroot.net/results/9bf/9bf5437b4348ea8077013b80a51ce05fa328247d
>
> [1] 3acd9f845de0489071719d52d774aab48d7f9c33
>
> Signed-off-by: Romain Naour <romain.naour at gmail.com>
> Cc: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> Cc: Gustavo Zacarias <gustavo at zacarias.com.ar>
I also had a look at this issue, and I'm not sure this is the most
appropriate fix.
Indeed, the NONLS mode is really for cases where the C library does not
provide *any* gettext implementation, as would be the case with uClibc
without intl stubs enabled.
But in the context of Buildroot, all C libraries provide a gettext
implementation. It might be full-featured or minimal, but it always
exists.
Therefore, I believe the appropriate fix is to in fact never pass
-DNONLS, because we are never in a situation where we don't have any
NLS support at all. So I believe the right fix is to remove the
following three lines:
ifeq ($(BR2_SYSTEM_ENABLE_NLS),)
LSHW_CFLAGS += -DNONLS
endif
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
More information about the buildroot
mailing list