2005-10-26 16:50:43

by Yuri Vasilevski

[permalink] [raw]
Subject: Patch that allows >=2.6.12 kernel to build on nls free systems

Hi all,

I made a patch that detects if libintl.h (needed for nls) is present on
the host system and if it's not, it nls support is disabled by
providing dummies for the used nls functions.

This way if there is nls support on the host system the *config targets
will build according to Arnaldo Carvalho de Melo's i18n modifications,
else it just uses the original English messages.

I have also made a bug report at kernel's bugzilla:
http://bugzilla.kernel.org/show_bug.cgi?id=5501
And there is a discussion about this problem in Gentoo's bugzilla:
http://bugs.gentoo.org/show_bug.cgi?id=99810

diff -Naur linux-2.6.14_rc2.orig/scripts/kconfig/Makefile linux-2.6.14_rc2/scripts/kconfig/Makefile
--- linux-2.6.14_rc2.orig/scripts/kconfig/Makefile 2005-11-06 04:13:01 +0000
+++ linux-2.6.14_rc2/scripts/kconfig/Makefile 2005-11-18 03:52:03 +0000
@@ -116,6 +116,15 @@
clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \
.tmp_gtkcheck zconf.tab.c zconf.tab.h lex.zconf.c

+# Needed for systems without gettext
+KBUILD_HAVE_NLS := $(shell \
+ if echo "\#include <libint.h>" | $(HOSTCC) $(HOSTCFLAGS) -E - > /dev/null 2>&1 ; \
+ then echo yes ; \
+ else echo no ; fi)
+ifeq ($(KBUILD_HAVE_NLS),no)
+HOSTCFLAGS += -DKBUILD_NO_NLS
+endif
+
# generated files seem to need this to find local include files
HOSTCFLAGS_lex.zconf.o := -I$(src)
HOSTCFLAGS_zconf.tab.o := -I$(src)
diff -Naur linux-2.6.14_rc2.orig/scripts/kconfig/lkc.h linux-2.6.14_rc2/scripts/kconfig/lkc.h
--- linux-2.6.14_rc2.orig/scripts/kconfig/lkc.h 2005-11-06 04:13:01 +0000
+++ linux-2.6.14_rc2/scripts/kconfig/lkc.h 2005-11-18 02:23:07 +0000
@@ -8,7 +8,13 @@

#include "expr.h"

-#include <libintl.h>
+#ifndef KBUILD_NO_NLS
+# include <libintl.h>
+#else
+# define gettext(Msgid) ((const char *) (Msgid))
+# define textdomain(Domainname) ((const char *) (Domainname))
+# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
+#endif

#ifdef __cplusplus
extern "C" {


Yuri.

PS: Please CC me on replay as I'm not in the kernel mailing list.


2005-10-27 20:43:37

by Roman Zippel

[permalink] [raw]
Subject: Re: Patch that allows >=2.6.12 kernel to build on nls free systems

Hi,

On Wed, 26 Oct 2005, Yuri Vasilevski wrote:

> I have also made a bug report at kernel's bugzilla:
> http://bugzilla.kernel.org/show_bug.cgi?id=5501
> And there is a discussion about this problem in Gentoo's bugzilla:
> http://bugs.gentoo.org/show_bug.cgi?id=99810
>
> diff -Naur linux-2.6.14_rc2.orig/scripts/kconfig/Makefile linux-2.6.14_rc2/scripts/kconfig/Makefile
> --- linux-2.6.14_rc2.orig/scripts/kconfig/Makefile 2005-11-06 04:13:01 +0000
> +++ linux-2.6.14_rc2/scripts/kconfig/Makefile 2005-11-18 03:52:03 +0000
> @@ -116,6 +116,15 @@
> clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \
> .tmp_gtkcheck zconf.tab.c zconf.tab.h lex.zconf.c
>
> +# Needed for systems without gettext
> +KBUILD_HAVE_NLS := $(shell \
> + if echo "\#include <libint.h>" | $(HOSTCC) $(HOSTCFLAGS) -E - > /dev/null 2>&1 ; \
> + then echo yes ; \
> + else echo no ; fi)
> +ifeq ($(KBUILD_HAVE_NLS),no)
> +HOSTCFLAGS += -DKBUILD_NO_NLS
> +endif
> +
> # generated files seem to need this to find local include files
> HOSTCFLAGS_lex.zconf.o := -I$(src)
> HOSTCFLAGS_zconf.tab.o := -I$(src)

Sam, I was wondering about this kind runtime configuration stuff, if we
could cache the information and don't run the tests every time.

bye, Roman

2005-10-27 22:01:52

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: Patch that allows >=2.6.12 kernel to build on nls free systems

On 10/26/05, Yuri Vasilevski <[email protected]> wrote:
> Hi all,
>
> I made a patch that detects if libintl.h (needed for nls) is present on
> the host system and if it's not, it nls support is disabled by
> providing dummies for the used nls functions.
>
> This way if there is nls support on the host system the *config targets
> will build according to Arnaldo Carvalho de Melo's i18n modifications,
> else it just uses the original English messages.

Haven't tested this myself, but looks like the way to go.

Thanks,

- Arnaldo

2005-11-01 17:13:51

by Nish Aravamudan

[permalink] [raw]
Subject: Re: Patch that allows >=2.6.12 kernel to build on nls free systems

On 10/26/05, Yuri Vasilevski <[email protected]> wrote:
> Hi all,
>
> I made a patch that detects if libintl.h (needed for nls) is present on
> the host system and if it's not, it nls support is disabled by
> providing dummies for the used nls functions.
>
> This way if there is nls support on the host system the *config targets
> will build according to Arnaldo Carvalho de Melo's i18n modifications,
> else it just uses the original English messages.
>
> I have also made a bug report at kernel's bugzilla:
> http://bugzilla.kernel.org/show_bug.cgi?id=5501
> And there is a discussion about this problem in Gentoo's bugzilla:
> http://bugs.gentoo.org/show_bug.cgi?id=99810
>
> diff -Naur linux-2.6.14_rc2.orig/scripts/kconfig/Makefile linux-2.6.14_rc2/scripts/kconfig/Makefile
> --- linux-2.6.14_rc2.orig/scripts/kconfig/Makefile 2005-11-06 04:13:01 +0000
> +++ linux-2.6.14_rc2/scripts/kconfig/Makefile 2005-11-18 03:52:03 +0000
> @@ -116,6 +116,15 @@
> clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \
> .tmp_gtkcheck zconf.tab.c zconf.tab.h lex.zconf.c
>
> +# Needed for systems without gettext
> +KBUILD_HAVE_NLS := $(shell \
> + if echo "\#include <libint.h>" | $(HOSTCC) $(HOSTCFLAGS) -E - > /dev/null 2>&1 ; \
> + then echo yes ; \
> + else echo no ; fi)
> +ifeq ($(KBUILD_HAVE_NLS),no)
> +HOSTCFLAGS += -DKBUILD_NO_NLS
> +endif
> +
> # generated files seem to need this to find local include files
> HOSTCFLAGS_lex.zconf.o := -I$(src)
> HOSTCFLAGS_zconf.tab.o := -I$(src)
> diff -Naur linux-2.6.14_rc2.orig/scripts/kconfig/lkc.h linux-2.6.14_rc2/scripts/kconfig/lkc.h
> --- linux-2.6.14_rc2.orig/scripts/kconfig/lkc.h 2005-11-06 04:13:01 +0000
> +++ linux-2.6.14_rc2/scripts/kconfig/lkc.h 2005-11-18 02:23:07 +0000
> @@ -8,7 +8,13 @@
>
> #include "expr.h"
>
> -#include <libintl.h>
> +#ifndef KBUILD_NO_NLS
> +# include <libintl.h>
> +#else
> +# define gettext(Msgid) ((const char *) (Msgid))
> +# define textdomain(Domainname) ((const char *) (Domainname))
> +# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
> +#endif
>
> #ifdef __cplusplus
> extern "C" {
>

Looks like this patch was merged:

http://www.kernel.org/git/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=70a6a0cb92f24fd6bbe2e75299168909f735676a

I noticed with builds of -git3/-git4, I get the following complaints
from oldconfig:

scripts/kconfig/mconf.c: In function `main':
scripts/kconfig/mconf.c:1048: warning: statement with no effect
scripts/kconfig/mconf.c:1049: warning: statement with no effect

Not a big deal, just more complaints to have to see during the build
process (with CONFIG_NLS=y) :)

Thanks,
Nish

2005-11-01 18:36:23

by Yuri Vasilevski

[permalink] [raw]
Subject: Re: Patch that allows >=2.6.12 kernel to build on nls free systems

Hi,

It was caused by my copy/pasting error.

On Tue, 1 Nov 2005 09:13:50 -0800
Nish Aravamudan <[email protected]> wrote:

> On 10/26/05, Yuri Vasilevski <[email protected]> wrote:
> > diff -Naur linux-2.6.14_rc2.orig/scripts/kconfig/Makefile linux-2.6.14_rc2/scripts/kconfig/Makefile
> > --- linux-2.6.14_rc2.orig/scripts/kconfig/Makefile 2005-11-06 04:13:01 +0000
> > +++ linux-2.6.14_rc2/scripts/kconfig/Makefile 2005-11-18 03:52:03 +0000
> > @@ -116,6 +116,15 @@
> > clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \
> > .tmp_gtkcheck zconf.tab.c zconf.tab.h lex.zconf.c
> >
> > +# Needed for systems without gettext
> > +KBUILD_HAVE_NLS := $(shell \
> > + if echo "\#include <libint.h>" | $(HOSTCC) $(HOSTCFLAGS) -E - > /dev/null 2>&1 ; \

The file name is libintl.h and not libint.h (patch in the next e-mail)

>
> Looks like this patch was merged:
>
> http://www.kernel.org/git/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=70a6a0cb92f24fd6bbe2e75299168909f735676a
>
> I noticed with builds of -git3/-git4, I get the following complaints
> from oldconfig:
>
> scripts/kconfig/mconf.c: In function `main':
> scripts/kconfig/mconf.c:1048: warning: statement with no effect
> scripts/kconfig/mconf.c:1049: warning: statement with no effect

This should be the output on nls free systems, but all systems were
detected as nls free because of that error.

> Not a big deal, just more complaints to have to see during the build
> process (with CONFIG_NLS=y) :)
>
> Thanks,
> Nish

Sorry for this mistake.

Yuri.

2005-11-01 18:42:33

by Nish Aravamudan

[permalink] [raw]
Subject: Re: Patch that allows >=2.6.12 kernel to build on nls free systems

On 11/1/05, Yuri Vasilevski <[email protected]> wrote:
> Hi,
>
> It was caused by my copy/pasting error.
>
> On Tue, 1 Nov 2005 09:13:50 -0800
> Nish Aravamudan <[email protected]> wrote:
>
> > On 10/26/05, Yuri Vasilevski <[email protected]> wrote:
> > > diff -Naur linux-2.6.14_rc2.orig/scripts/kconfig/Makefile linux-2.6.14_rc2/scripts/kconfig/Makefile
> > > --- linux-2.6.14_rc2.orig/scripts/kconfig/Makefile 2005-11-06 04:13:01 +0000
> > > +++ linux-2.6.14_rc2/scripts/kconfig/Makefile 2005-11-18 03:52:03 +0000
> > > @@ -116,6 +116,15 @@
> > > clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \
> > > .tmp_gtkcheck zconf.tab.c zconf.tab.h lex.zconf.c
> > >
> > > +# Needed for systems without gettext
> > > +KBUILD_HAVE_NLS := $(shell \
> > > + if echo "\#include <libint.h>" | $(HOSTCC) $(HOSTCFLAGS) -E - > /dev/null 2>&1 ; \
>
> The file name is libintl.h and not libint.h (patch in the next e-mail)

Makes sense.

> > Looks like this patch was merged:
> >
> > http://www.kernel.org/git/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=70a6a0cb92f24fd6bbe2e75299168909f735676a
> >
> > I noticed with builds of -git3/-git4, I get the following complaints
> > from oldconfig:
> >
> > scripts/kconfig/mconf.c: In function `main':
> > scripts/kconfig/mconf.c:1048: warning: statement with no effect
> > scripts/kconfig/mconf.c:1049: warning: statement with no effect
>
> This should be the output on nls free systems, but all systems were
> detected as nls free because of that error.

Ah, I see.

> > Not a big deal, just more complaints to have to see during the build
> > process (with CONFIG_NLS=y) :)
> >
> > Thanks,
> > Nish
>
> Sorry for this mistake.

No worries, it didn't make the compile fail :) Thanks for the quick response!

Thanks,
Nish