mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
* [ptxdist] [PATCH] host-localedef: Fix on Darwin
@ 2012-01-21 23:29 Bernhard Walle
  2012-01-23 21:29 ` Andreas Bießmann
  2012-02-07 14:46 ` Michael Olbrich
  0 siblings, 2 replies; 5+ messages in thread
From: Bernhard Walle @ 2012-01-21 23:29 UTC (permalink / raw)
  To: ptxdist

This patch is by far the most ugly part of all of the Darwin patches.
At least the md5sum of a locale-archive when generating a de_DE.UTF-8
locale is identical...

A first review, please.

Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
---
 ...n-Fix-problem-with-__block-parameter-name.patch |   33 ++++
 ...ide-dummy-implementation-of-gettext-funct.patch |   45 +++++
 ...-some-locale-related-definitions-from-Lin.patch |  182 ++++++++++++++++++++
 ...004-Darwin-Compile-with-fnested-functions.patch |   37 ++++
 ...005-Use-own-implementation-of-__rawmemchr.patch |   40 +++++
 patches/localedef-eglibc-2.11.90-ptx1/autogen.sh   |    1 +
 patches/localedef-eglibc-2.11.90-ptx1/series       |    8 +
 7 files changed, 346 insertions(+), 0 deletions(-)
 create mode 100644 patches/localedef-eglibc-2.11.90-ptx1/0001-Darwin-Fix-problem-with-__block-parameter-name.patch
 create mode 100644 patches/localedef-eglibc-2.11.90-ptx1/0002-Darwin-Provide-dummy-implementation-of-gettext-funct.patch
 create mode 100644 patches/localedef-eglibc-2.11.90-ptx1/0003-Darwin-Copy-some-locale-related-definitions-from-Lin.patch
 create mode 100644 patches/localedef-eglibc-2.11.90-ptx1/0004-Darwin-Compile-with-fnested-functions.patch
 create mode 100644 patches/localedef-eglibc-2.11.90-ptx1/0005-Use-own-implementation-of-__rawmemchr.patch
 create mode 120000 patches/localedef-eglibc-2.11.90-ptx1/autogen.sh
 create mode 100644 patches/localedef-eglibc-2.11.90-ptx1/series

diff --git a/patches/localedef-eglibc-2.11.90-ptx1/0001-Darwin-Fix-problem-with-__block-parameter-name.patch b/patches/localedef-eglibc-2.11.90-ptx1/0001-Darwin-Fix-problem-with-__block-parameter-name.patch
new file mode 100644
index 0000000..a80321e
--- /dev/null
+++ b/patches/localedef-eglibc-2.11.90-ptx1/0001-Darwin-Fix-problem-with-__block-parameter-name.patch
@@ -0,0 +1,33 @@
+From: Bernhard Walle <bernhard@bwalle.de>
+Date: Sat, 21 Jan 2012 22:00:14 +0100
+Subject: [PATCH] Darwin: Fix problem with __block parameter name
+
+This fixes the following compile error:
+
+-------------------- 8< ---------------------------
+./glibc/malloc/obstack.h:190: error: __block attribute can be specified
+on variables only
+In file included from glibc/locale/programs/charmap.c:32:
+-------------------- >8 ---------------------------
+
+Compiler war gcc-4.2 [i686-apple-darwin11-gcc-4.2.1 (GCC) 4.2.1 (Apple
+Inc. build 5666) (dot 3)].
+
+Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
+---
+ eglibc/malloc/obstack.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/eglibc/malloc/obstack.h b/eglibc/malloc/obstack.h
+index 449070e..0c4f2e4 100644
+--- a/eglibc/malloc/obstack.h
++++ b/eglibc/malloc/obstack.h
+@@ -187,7 +187,7 @@ extern int _obstack_begin_1 (struct obstack *, int, int,
+ 			     void (*) (void *, void *), void *);
+ extern int _obstack_memory_used (struct obstack *);
+ 
+-void obstack_free (struct obstack *__obstack, void *__block);
++void obstack_free (struct obstack *__obstack, void *);
+ 
+ \f
+ /* Error handler called when `obstack_chunk_alloc' failed to allocate
diff --git a/patches/localedef-eglibc-2.11.90-ptx1/0002-Darwin-Provide-dummy-implementation-of-gettext-funct.patch b/patches/localedef-eglibc-2.11.90-ptx1/0002-Darwin-Provide-dummy-implementation-of-gettext-funct.patch
new file mode 100644
index 0000000..9c3f005
--- /dev/null
+++ b/patches/localedef-eglibc-2.11.90-ptx1/0002-Darwin-Provide-dummy-implementation-of-gettext-funct.patch
@@ -0,0 +1,45 @@
+From: Bernhard Walle <bernhard@bwalle.de>
+Date: Sat, 21 Jan 2012 23:00:43 +0100
+Subject: [PATCH] Darwin: Provide dummy implementation of gettext functions
+
+It's just not worth the effort requiring gettext for building locales in
+a cross build system. English error messages are sufficient.
+
+Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
+---
+ include/libintl.h |   23 ++++++++++++++++++++++-
+ 1 files changed, 22 insertions(+), 1 deletions(-)
+
+diff --git a/include/libintl.h b/include/libintl.h
+index 096aa8c..edf34eb 100644
+--- a/include/libintl.h
++++ b/include/libintl.h
+@@ -1,6 +1,27 @@
+ #ifdef HAVE_LIBINTL_H
+ #include_next <libintl.h>
+-#endif
++#else
++
++#ifndef LIBINTL_H_
++#define LIBINTL_H_  1
++
++// dummy implementations of gettext() and textdomain()
++//
++static inline char *gettext(const char *msgid)
++{
++    return (char *)msgid;
++}
++
++static inline char *textdomain (const char * domainname)
++{
++    static char current_domain[1024];
++    strncpy(current_domain, domainname, sizeof(current_domain));
++    current_domain[sizeof(current_domain)-1] = '\0';
++    return current_domain;
++}
++
++#endif /* LIBINTL_H_ */
++#endif /* !HAVE_LIBINTL_H */
+ 
+ #ifndef _
+ #define _(X) (X)
diff --git a/patches/localedef-eglibc-2.11.90-ptx1/0003-Darwin-Copy-some-locale-related-definitions-from-Lin.patch b/patches/localedef-eglibc-2.11.90-ptx1/0003-Darwin-Copy-some-locale-related-definitions-from-Lin.patch
new file mode 100644
index 0000000..fad815a
--- /dev/null
+++ b/patches/localedef-eglibc-2.11.90-ptx1/0003-Darwin-Copy-some-locale-related-definitions-from-Lin.patch
@@ -0,0 +1,182 @@
+From: Bernhard Walle <bernhard@bwalle.de>
+Date: Sat, 21 Jan 2012 23:06:49 +0100
+Subject: [PATCH] Darwin: Copy some locale-related definitions from Linux
+
+Darwin lacks support for GNU locale extensions like some LC_* macros
+like LC_PAPER, all __LC_* macros. Also we have the problem that system
+<nl_types.h> redefines _NL_ITEM.
+
+The function nl_langinfo() is not used in that source code, but its
+declaration fails on Darwin because of the missing nl_item.
+
+The fix adds own versions of <bits/locale.h>, <locale.h> and
+<nl_types.h> that just contain constants, no function definitions. That
+should be quite safe. On Linux, the header are just including system
+headers using include_next.
+
+Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
+---
+ eglibc/locale/bits/locale.h |   46 +++++++++++++++++++++++++++++++++++++++++++
+ eglibc/locale/langinfo.h    |    2 +
+ eglibc/locale/locale.h      |   40 +++++++++++++++++++++++++++++++++++++
+ eglibc/locale/nl_types.h    |   37 ++++++++++++++++++++++++++++++++++
+ 4 files changed, 125 insertions(+), 0 deletions(-)
+ create mode 100644 eglibc/locale/bits/locale.h
+ create mode 100644 eglibc/locale/locale.h
+ create mode 100644 eglibc/locale/nl_types.h
+
+diff --git a/eglibc/locale/bits/locale.h b/eglibc/locale/bits/locale.h
+new file mode 100644
+index 0000000..aac2823
+--- /dev/null
++++ b/eglibc/locale/bits/locale.h
+@@ -0,0 +1,46 @@
++/* Definition of locale category symbol values.
++   Copyright (C) 2001 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, write to the Free
++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++   02111-1307 USA.  */
++
++#ifdef __linux__
++#include_next <bits/locale.h>
++#else
++
++#ifndef _BITS_LOCALE_H 
++#define _BITS_LOCALE_H  1 
++ 
++enum 
++{ 
++  __LC_CTYPE = 0, 
++  __LC_NUMERIC = 1, 
++  __LC_TIME = 2, 
++  __LC_COLLATE = 3, 
++  __LC_MONETARY = 4, 
++  __LC_MESSAGES = 5, 
++  __LC_ALL = 6, 
++  __LC_PAPER = 7, 
++  __LC_NAME = 8, 
++  __LC_ADDRESS = 9, 
++  __LC_TELEPHONE = 10, 
++  __LC_MEASUREMENT = 11, 
++  __LC_IDENTIFICATION = 12 
++}; 
++ 
++#endif  /* bits/locale.h */
++
++#endif /* __linux__ */
+diff --git a/eglibc/locale/langinfo.h b/eglibc/locale/langinfo.h
+index 0a53365..4e4480e 100644
+--- a/eglibc/locale/langinfo.h
++++ b/eglibc/locale/langinfo.h
+@@ -581,7 +581,9 @@ enum
+    The string returned will not change until `setlocale' is called;
+    it is usually in read-only memory and cannot be modified.  */
+ 
++#ifdef __linux__
+ extern char *nl_langinfo (nl_item __item) __THROW;
++#endif
+ 
+ 
+ #ifdef	__USE_XOPEN2K
+diff --git a/eglibc/locale/locale.h b/eglibc/locale/locale.h
+new file mode 100644
+index 0000000..9e0b2de
+--- /dev/null
++++ b/eglibc/locale/locale.h
+@@ -0,0 +1,40 @@
++/* 
++   This program is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published
++   by the Free Software Foundation; version 2 of the License, or
++   (at your option) any later version.
++
++   This program is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with this program; if not, write to the Free Software Foundation,
++   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
++
++#ifdef __linux__
++#include_next <locale.h>
++#else
++
++#include <bits/locale.h>
++
++/* These are the possibilities for the first argument to setlocale.
++   The code assumes that the lowest LC_* symbol has the value zero.  */
++#define LC_CTYPE          __LC_CTYPE
++#define LC_NUMERIC        __LC_NUMERIC
++#define LC_TIME           __LC_TIME
++#define LC_COLLATE        __LC_COLLATE
++#define LC_MONETARY       __LC_MONETARY
++#define LC_MESSAGES       __LC_MESSAGES
++#define LC_ALL        __LC_ALL
++#define LC_PAPER      __LC_PAPER
++#define LC_NAME       __LC_NAME
++#define LC_ADDRESS    __LC_ADDRESS
++#define LC_TELEPHONE      __LC_TELEPHONE
++#define LC_MEASUREMENT    __LC_MEASUREMENT
++#define LC_IDENTIFICATION __LC_IDENTIFICATION
++
++char *setlocale(int category, const char *locale);
++
++#endif /* __linux__ */
+diff --git a/eglibc/locale/nl_types.h b/eglibc/locale/nl_types.h
+new file mode 100644
+index 0000000..0425604
+--- /dev/null
++++ b/eglibc/locale/nl_types.h
+@@ -0,0 +1,37 @@
++
++#ifdef __linux__
++#include_next <nl_types.h>
++#else
++
++/* Copyright (C) 1996, 1997, 1999, 2003, 2004 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, write to the Free
++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++   02111-1307 USA.  */
++
++#ifndef _NL_TYPES_H
++#define _NL_TYPES_H 1
++
++#include <features.h>
++
++/* The default message set used by the gencat program.  */
++#define NL_SETD 1
++
++/* Value for FLAG parameter of `catgets' to say we want XPG4 compliance.  */
++#define NL_CAT_LOCALE 1
++
++#endif /* nl_types.h  */
++
++#endif /* __linux__ */
diff --git a/patches/localedef-eglibc-2.11.90-ptx1/0004-Darwin-Compile-with-fnested-functions.patch b/patches/localedef-eglibc-2.11.90-ptx1/0004-Darwin-Compile-with-fnested-functions.patch
new file mode 100644
index 0000000..65f6aa0
--- /dev/null
+++ b/patches/localedef-eglibc-2.11.90-ptx1/0004-Darwin-Compile-with-fnested-functions.patch
@@ -0,0 +1,37 @@
+From: Bernhard Walle <bernhard@bwalle.de>
+Date: Sat, 21 Jan 2012 23:40:16 +0100
+Subject: [PATCH] Darwin: Compile with -fnested-functions
+
+glibc/locale/programs/ld-ctype.c:2948: error: nested functions are disabled, use -fnested-functions to re-enable
+
+Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
+---
+ configure.ac |    8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 85d3ca2..6f8d4b3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -24,6 +24,7 @@ AC_CONFIG_HEADERS([config.h])
+ AC_EXEEXT
+ AC_PROG_CC
+ AC_PROG_LN_S
++AC_CANONICAL_HOST
+ AC_C_BIGENDIAN([AC_DEFINE([BUILD_BYTE_ORDER], [__BIG_ENDIAN],
+ 		          [Define to your build machine's byte order])],
+ 	       [AC_DEFINE([BUILD_BYTE_ORDER], [__LITTLE_ENDIAN])])
+@@ -59,6 +60,13 @@ LOCAL_CHECK_VAR([program_invocation_short_name], [#include <errno.h>])
+ AC_CHECK_LIB([intl], [gettext])
+ AC_CHECK_LIB([posix4], [nanosleep])
+ 
++# use -fnested-functions on Mac OS
++case ${host_os} in
++darwin*)
++    CFLAGS="${CFLAGS} -fnested-functions"
++    ;;
++esac
++
+ # These two macros are taken from GCC's config/acx.m4.
+ dnl Support the --with-pkgversion configure option.
+ dnl ACX_PKGVERSION(default-pkgversion)
diff --git a/patches/localedef-eglibc-2.11.90-ptx1/0005-Use-own-implementation-of-__rawmemchr.patch b/patches/localedef-eglibc-2.11.90-ptx1/0005-Use-own-implementation-of-__rawmemchr.patch
new file mode 100644
index 0000000..97956a5
--- /dev/null
+++ b/patches/localedef-eglibc-2.11.90-ptx1/0005-Use-own-implementation-of-__rawmemchr.patch
@@ -0,0 +1,40 @@
+From: Bernhard Walle <bernhard@bwalle.de>
+Date: Sat, 21 Jan 2012 23:48:27 +0100
+Subject: [PATCH] Use own implementation of __rawmemchr()
+
+rawmemchr() and its alias __rawmemchr() are non-standard function.
+For compatibility with non-GNU platforms, use a self-implemented
+_rawmemchr().
+
+Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
+---
+ eglibc/intl/explodename.c |    9 ++++++++-
+ 1 files changed, 8 insertions(+), 1 deletions(-)
+
+diff --git a/eglibc/intl/explodename.c b/eglibc/intl/explodename.c
+index 321204d..c58abad 100644
+--- a/eglibc/intl/explodename.c
++++ b/eglibc/intl/explodename.c
+@@ -50,6 +50,13 @@ _nl_find_language (name)
+   return (char *) name;
+ }
+ 
++static char *_rawmemchr(const void *s, int c)
++{
++  char *p = (unsigned char *)s;
++  while (*p != c)
++    p++;
++  return p;
++}
+ 
+ int
+ _nl_explode_name (name, language, modifier, territory, codeset,
+@@ -78,7 +85,7 @@ _nl_explode_name (name, language, modifier, territory, codeset,
+   if (*language == cp)
+     /* This does not make sense: language has to be specified.  Use
+        this entry as it is without exploding.  Perhaps it is an alias.  */
+-    cp = __rawmemchr (*language, '\0');
++    cp = _rawmemchr (*language, '\0');
+   else if (cp[0] != '@')
+     {
+       if (cp[0] == '_')
diff --git a/patches/localedef-eglibc-2.11.90-ptx1/autogen.sh b/patches/localedef-eglibc-2.11.90-ptx1/autogen.sh
new file mode 120000
index 0000000..9f8a4cb
--- /dev/null
+++ b/patches/localedef-eglibc-2.11.90-ptx1/autogen.sh
@@ -0,0 +1 @@
+../autogen.sh
\ No newline at end of file
diff --git a/patches/localedef-eglibc-2.11.90-ptx1/series b/patches/localedef-eglibc-2.11.90-ptx1/series
new file mode 100644
index 0000000..f1f5d21
--- /dev/null
+++ b/patches/localedef-eglibc-2.11.90-ptx1/series
@@ -0,0 +1,8 @@
+# generated by git-ptx-patches
+#tag:base --start-number 1
+0001-Darwin-Fix-problem-with-__block-parameter-name.patch
+0002-Darwin-Provide-dummy-implementation-of-gettext-funct.patch
+0003-Darwin-Copy-some-locale-related-definitions-from-Lin.patch
+0004-Darwin-Compile-with-fnested-functions.patch
+0005-Use-own-implementation-of-__rawmemchr.patch
+# fa05ef2055e4fe1c9215d7660d438608  - git-ptx-patches magic
-- 
1.7.7.4


-- 
ptxdist mailing list
ptxdist@pengutronix.de

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

* Re: [ptxdist] [PATCH] host-localedef: Fix on Darwin
  2012-01-21 23:29 [ptxdist] [PATCH] host-localedef: Fix on Darwin Bernhard Walle
@ 2012-01-23 21:29 ` Andreas Bießmann
  2012-01-23 22:02   ` Bernhard Walle
  2012-02-07 14:46 ` Michael Olbrich
  1 sibling, 1 reply; 5+ messages in thread
From: Andreas Bießmann @ 2012-01-23 21:29 UTC (permalink / raw)
  To: ptxdist; +Cc: Bernhard Walle

Hi Bernhard,

On 22.01.12 00:29, Bernhard Walle wrote:
> This patch is by far the most ugly part of all of the Darwin patches.
> At least the md5sum of a locale-archive when generating a de_DE.UTF-8
> locale is identical...
> 
> A first review, please.

I get some warnings and a linker error:

---8<---
glibc/locale -I./include -I. -I. -include ./include/always.h -Wall
-Wno-format -c -o getopt.o glibc/posix/getopt.c
glibc/posix/getopt.c:74:1: warning: "_" redefined
In file included from ./include/gettext.h:1,
                 from glibc/posix/getopt.c:73:
./include/libintl.h:27:1: warning: this is the location of the previous
definition

...

gcc
-I/Users/andreas/Documents/source/ptxdist-arm-boards/platform-beagle/sysroot-host/include
-g -O2 -fnested-functions -DNO_SYSCONF
-DLOCALE_PATH='"/usr/lib/locale:/usr/share/i18n"'
-DLOCALEDIR='"/usr/lib/locale"'
-DLOCALE_ALIAS_PATH='"/usr/share/locale"'
-DCHARMAP_PATH='"/usr/share/i18n/charmaps"'
-DREPERTOIREMAP_PATH='"/usr/share/i18n/repertoiremaps"'
-DLOCSRCDIR='"/usr/share/i18n/locales"' -Iglibc/locale/programs
-Iglibc/locale -I./include -I. -I. -include ./include/always.h -Wall
-Wno-format -c -o vasprintf.o vasprintf.c
gcc -o localedef charmap.o charmap-dir.o ld-address.o ld-collate.o
ld-ctype.o ld-identification.o ld-measurement.o ld-messages.o
ld-monetary.o ld-name.o ld-numeric.o ld-paper.o ld-telephone.o ld-time.o
linereader.o localedef.o locarchive.o locfile.o repertoire.o
simple-hash.o xmalloc.o xstrdup.o argp-ba.o argp-eexst.o
argp-fmtstream.o argp-help.o argp-parse.o argp-pv.o argp-xinl.o error.o
getopt.o getopt1.o md5.o obstack.o asprintf.o getdelim.o
localedef_extra.o obstack_printf.o vasprintf.o
Undefined symbols for architecture x86_64:
  "_argp_fmtstream_putc", referenced from:
      _usage_argful_short_opt in argp-help.o
      _argp_args_usage in argp-help.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[1]: *** [localedef] Error 1
make: ***
[/Users/andreas/Documents/source/ptxdist-arm-boards/platform-beagle/state/host-localedef.compile]
Error 2
--->8---

regards

Andreas

-- 
ptxdist mailing list
ptxdist@pengutronix.de

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

* Re: [ptxdist] [PATCH] host-localedef: Fix on Darwin
  2012-01-23 21:29 ` Andreas Bießmann
@ 2012-01-23 22:02   ` Bernhard Walle
  0 siblings, 0 replies; 5+ messages in thread
From: Bernhard Walle @ 2012-01-23 22:02 UTC (permalink / raw)
  To: ptxdist

* Andreas Bießmann <andreas@biessmann.de> [2012-01-23 22:29]:
> On 22.01.12 00:29, Bernhard Walle wrote:
> > This patch is by far the most ugly part of all of the Darwin patches.
> > At least the md5sum of a locale-archive when generating a de_DE.UTF-8
> > locale is identical...
> > 
> > A first review, please.
> 
> I get some warnings and a linker error:

Is 'gcc' llvm-gcc (gcc --version)?

I'm using gcc-4.2 (FSF gcc) as host compiler, but of course it should be
fixed to work with llvm-gcc too as it's the default on Lion (and I think
even Snow Leopard).


Regards,
Bernhard

-- 
ptxdist mailing list
ptxdist@pengutronix.de

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

* Re: [ptxdist] [PATCH] host-localedef: Fix on Darwin
  2012-01-21 23:29 [ptxdist] [PATCH] host-localedef: Fix on Darwin Bernhard Walle
  2012-01-23 21:29 ` Andreas Bießmann
@ 2012-02-07 14:46 ` Michael Olbrich
  2012-02-07 14:53   ` Bernhard Walle
  1 sibling, 1 reply; 5+ messages in thread
From: Michael Olbrich @ 2012-02-07 14:46 UTC (permalink / raw)
  To: ptxdist

On Sun, Jan 22, 2012 at 12:29:48AM +0100, Bernhard Walle wrote:
> This patch is by far the most ugly part of all of the Darwin patches.
> At least the md5sum of a locale-archive when generating a de_DE.UTF-8
> locale is identical...
> 
> A first review, please.

We're creating the localedef package anyway, so I'd like to create a new
tarball with all the paches included.
I've pushed my current WIP to git://git.pengutronix.de/git/mol/localedef.git
please test. This contains most of your patches (or modified versions). For
the gettext stuff: we already have getttext-dummy package[1]. We can create
a host-getttext-dummy package from that.

Michael

[1] http://www.pengutronix.de/software/gettext-dummy/download/gettext-dummy-1.0.1.tar.bz2

> Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
> ---
>  ...n-Fix-problem-with-__block-parameter-name.patch |   33 ++++
>  ...ide-dummy-implementation-of-gettext-funct.patch |   45 +++++
>  ...-some-locale-related-definitions-from-Lin.patch |  182 ++++++++++++++++++++
>  ...004-Darwin-Compile-with-fnested-functions.patch |   37 ++++
>  ...005-Use-own-implementation-of-__rawmemchr.patch |   40 +++++
>  patches/localedef-eglibc-2.11.90-ptx1/autogen.sh   |    1 +
>  patches/localedef-eglibc-2.11.90-ptx1/series       |    8 +
>  7 files changed, 346 insertions(+), 0 deletions(-)
>  create mode 100644 patches/localedef-eglibc-2.11.90-ptx1/0001-Darwin-Fix-problem-with-__block-parameter-name.patch
>  create mode 100644 patches/localedef-eglibc-2.11.90-ptx1/0002-Darwin-Provide-dummy-implementation-of-gettext-funct.patch
>  create mode 100644 patches/localedef-eglibc-2.11.90-ptx1/0003-Darwin-Copy-some-locale-related-definitions-from-Lin.patch
>  create mode 100644 patches/localedef-eglibc-2.11.90-ptx1/0004-Darwin-Compile-with-fnested-functions.patch
>  create mode 100644 patches/localedef-eglibc-2.11.90-ptx1/0005-Use-own-implementation-of-__rawmemchr.patch
>  create mode 120000 patches/localedef-eglibc-2.11.90-ptx1/autogen.sh
>  create mode 100644 patches/localedef-eglibc-2.11.90-ptx1/series
> 
> diff --git a/patches/localedef-eglibc-2.11.90-ptx1/0001-Darwin-Fix-problem-with-__block-parameter-name.patch b/patches/localedef-eglibc-2.11.90-ptx1/0001-Darwin-Fix-problem-with-__block-parameter-name.patch
> new file mode 100644
> index 0000000..a80321e
> --- /dev/null
> +++ b/patches/localedef-eglibc-2.11.90-ptx1/0001-Darwin-Fix-problem-with-__block-parameter-name.patch
> @@ -0,0 +1,33 @@
> +From: Bernhard Walle <bernhard@bwalle.de>
> +Date: Sat, 21 Jan 2012 22:00:14 +0100
> +Subject: [PATCH] Darwin: Fix problem with __block parameter name
> +
> +This fixes the following compile error:
> +
> +-------------------- 8< ---------------------------
> +./glibc/malloc/obstack.h:190: error: __block attribute can be specified
> +on variables only
> +In file included from glibc/locale/programs/charmap.c:32:
> +-------------------- >8 ---------------------------
> +
> +Compiler war gcc-4.2 [i686-apple-darwin11-gcc-4.2.1 (GCC) 4.2.1 (Apple
> +Inc. build 5666) (dot 3)].
> +
> +Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
> +---
> + eglibc/malloc/obstack.h |    2 +-
> + 1 files changed, 1 insertions(+), 1 deletions(-)
> +
> +diff --git a/eglibc/malloc/obstack.h b/eglibc/malloc/obstack.h
> +index 449070e..0c4f2e4 100644
> +--- a/eglibc/malloc/obstack.h
> ++++ b/eglibc/malloc/obstack.h
> +@@ -187,7 +187,7 @@ extern int _obstack_begin_1 (struct obstack *, int, int,
> + 			     void (*) (void *, void *), void *);
> + extern int _obstack_memory_used (struct obstack *);
> + 
> +-void obstack_free (struct obstack *__obstack, void *__block);
> ++void obstack_free (struct obstack *__obstack, void *);
> + 
> + \f
> + /* Error handler called when `obstack_chunk_alloc' failed to allocate
> diff --git a/patches/localedef-eglibc-2.11.90-ptx1/0002-Darwin-Provide-dummy-implementation-of-gettext-funct.patch b/patches/localedef-eglibc-2.11.90-ptx1/0002-Darwin-Provide-dummy-implementation-of-gettext-funct.patch
> new file mode 100644
> index 0000000..9c3f005
> --- /dev/null
> +++ b/patches/localedef-eglibc-2.11.90-ptx1/0002-Darwin-Provide-dummy-implementation-of-gettext-funct.patch
> @@ -0,0 +1,45 @@
> +From: Bernhard Walle <bernhard@bwalle.de>
> +Date: Sat, 21 Jan 2012 23:00:43 +0100
> +Subject: [PATCH] Darwin: Provide dummy implementation of gettext functions
> +
> +It's just not worth the effort requiring gettext for building locales in
> +a cross build system. English error messages are sufficient.
> +
> +Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
> +---
> + include/libintl.h |   23 ++++++++++++++++++++++-
> + 1 files changed, 22 insertions(+), 1 deletions(-)
> +
> +diff --git a/include/libintl.h b/include/libintl.h
> +index 096aa8c..edf34eb 100644
> +--- a/include/libintl.h
> ++++ b/include/libintl.h
> +@@ -1,6 +1,27 @@
> + #ifdef HAVE_LIBINTL_H
> + #include_next <libintl.h>
> +-#endif
> ++#else
> ++
> ++#ifndef LIBINTL_H_
> ++#define LIBINTL_H_  1
> ++
> ++// dummy implementations of gettext() and textdomain()
> ++//
> ++static inline char *gettext(const char *msgid)
> ++{
> ++    return (char *)msgid;
> ++}
> ++
> ++static inline char *textdomain (const char * domainname)
> ++{
> ++    static char current_domain[1024];
> ++    strncpy(current_domain, domainname, sizeof(current_domain));
> ++    current_domain[sizeof(current_domain)-1] = '\0';
> ++    return current_domain;
> ++}
> ++
> ++#endif /* LIBINTL_H_ */
> ++#endif /* !HAVE_LIBINTL_H */
> + 
> + #ifndef _
> + #define _(X) (X)
> diff --git a/patches/localedef-eglibc-2.11.90-ptx1/0003-Darwin-Copy-some-locale-related-definitions-from-Lin.patch b/patches/localedef-eglibc-2.11.90-ptx1/0003-Darwin-Copy-some-locale-related-definitions-from-Lin.patch
> new file mode 100644
> index 0000000..fad815a
> --- /dev/null
> +++ b/patches/localedef-eglibc-2.11.90-ptx1/0003-Darwin-Copy-some-locale-related-definitions-from-Lin.patch
> @@ -0,0 +1,182 @@
> +From: Bernhard Walle <bernhard@bwalle.de>
> +Date: Sat, 21 Jan 2012 23:06:49 +0100
> +Subject: [PATCH] Darwin: Copy some locale-related definitions from Linux
> +
> +Darwin lacks support for GNU locale extensions like some LC_* macros
> +like LC_PAPER, all __LC_* macros. Also we have the problem that system
> +<nl_types.h> redefines _NL_ITEM.
> +
> +The function nl_langinfo() is not used in that source code, but its
> +declaration fails on Darwin because of the missing nl_item.
> +
> +The fix adds own versions of <bits/locale.h>, <locale.h> and
> +<nl_types.h> that just contain constants, no function definitions. That
> +should be quite safe. On Linux, the header are just including system
> +headers using include_next.
> +
> +Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
> +---
> + eglibc/locale/bits/locale.h |   46 +++++++++++++++++++++++++++++++++++++++++++
> + eglibc/locale/langinfo.h    |    2 +
> + eglibc/locale/locale.h      |   40 +++++++++++++++++++++++++++++++++++++
> + eglibc/locale/nl_types.h    |   37 ++++++++++++++++++++++++++++++++++
> + 4 files changed, 125 insertions(+), 0 deletions(-)
> + create mode 100644 eglibc/locale/bits/locale.h
> + create mode 100644 eglibc/locale/locale.h
> + create mode 100644 eglibc/locale/nl_types.h
> +
> +diff --git a/eglibc/locale/bits/locale.h b/eglibc/locale/bits/locale.h
> +new file mode 100644
> +index 0000000..aac2823
> +--- /dev/null
> ++++ b/eglibc/locale/bits/locale.h
> +@@ -0,0 +1,46 @@
> ++/* Definition of locale category symbol values.
> ++   Copyright (C) 2001 Free Software Foundation, Inc.
> ++   This file is part of the GNU C Library.
> ++
> ++   The GNU C Library is free software; you can redistribute it and/or
> ++   modify it under the terms of the GNU Lesser General Public
> ++   License as published by the Free Software Foundation; either
> ++   version 2.1 of the License, or (at your option) any later version.
> ++
> ++   The GNU C Library is distributed in the hope that it will be useful,
> ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
> ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> ++   Lesser General Public License for more details.
> ++
> ++   You should have received a copy of the GNU Lesser General Public
> ++   License along with the GNU C Library; if not, write to the Free
> ++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
> ++   02111-1307 USA.  */
> ++
> ++#ifdef __linux__
> ++#include_next <bits/locale.h>
> ++#else
> ++
> ++#ifndef _BITS_LOCALE_H 
> ++#define _BITS_LOCALE_H  1 
> ++ 
> ++enum 
> ++{ 
> ++  __LC_CTYPE = 0, 
> ++  __LC_NUMERIC = 1, 
> ++  __LC_TIME = 2, 
> ++  __LC_COLLATE = 3, 
> ++  __LC_MONETARY = 4, 
> ++  __LC_MESSAGES = 5, 
> ++  __LC_ALL = 6, 
> ++  __LC_PAPER = 7, 
> ++  __LC_NAME = 8, 
> ++  __LC_ADDRESS = 9, 
> ++  __LC_TELEPHONE = 10, 
> ++  __LC_MEASUREMENT = 11, 
> ++  __LC_IDENTIFICATION = 12 
> ++}; 
> ++ 
> ++#endif  /* bits/locale.h */
> ++
> ++#endif /* __linux__ */
> +diff --git a/eglibc/locale/langinfo.h b/eglibc/locale/langinfo.h
> +index 0a53365..4e4480e 100644
> +--- a/eglibc/locale/langinfo.h
> ++++ b/eglibc/locale/langinfo.h
> +@@ -581,7 +581,9 @@ enum
> +    The string returned will not change until `setlocale' is called;
> +    it is usually in read-only memory and cannot be modified.  */
> + 
> ++#ifdef __linux__
> + extern char *nl_langinfo (nl_item __item) __THROW;
> ++#endif
> + 
> + 
> + #ifdef	__USE_XOPEN2K
> +diff --git a/eglibc/locale/locale.h b/eglibc/locale/locale.h
> +new file mode 100644
> +index 0000000..9e0b2de
> +--- /dev/null
> ++++ b/eglibc/locale/locale.h
> +@@ -0,0 +1,40 @@
> ++/* 
> ++   This program is free software; you can redistribute it and/or modify
> ++   it under the terms of the GNU General Public License as published
> ++   by the Free Software Foundation; version 2 of the License, or
> ++   (at your option) any later version.
> ++
> ++   This program is distributed in the hope that it will be useful,
> ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
> ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> ++   GNU General Public License for more details.
> ++
> ++   You should have received a copy of the GNU General Public License
> ++   along with this program; if not, write to the Free Software Foundation,
> ++   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
> ++
> ++#ifdef __linux__
> ++#include_next <locale.h>
> ++#else
> ++
> ++#include <bits/locale.h>
> ++
> ++/* These are the possibilities for the first argument to setlocale.
> ++   The code assumes that the lowest LC_* symbol has the value zero.  */
> ++#define LC_CTYPE          __LC_CTYPE
> ++#define LC_NUMERIC        __LC_NUMERIC
> ++#define LC_TIME           __LC_TIME
> ++#define LC_COLLATE        __LC_COLLATE
> ++#define LC_MONETARY       __LC_MONETARY
> ++#define LC_MESSAGES       __LC_MESSAGES
> ++#define LC_ALL        __LC_ALL
> ++#define LC_PAPER      __LC_PAPER
> ++#define LC_NAME       __LC_NAME
> ++#define LC_ADDRESS    __LC_ADDRESS
> ++#define LC_TELEPHONE      __LC_TELEPHONE
> ++#define LC_MEASUREMENT    __LC_MEASUREMENT
> ++#define LC_IDENTIFICATION __LC_IDENTIFICATION
> ++
> ++char *setlocale(int category, const char *locale);
> ++
> ++#endif /* __linux__ */
> +diff --git a/eglibc/locale/nl_types.h b/eglibc/locale/nl_types.h
> +new file mode 100644
> +index 0000000..0425604
> +--- /dev/null
> ++++ b/eglibc/locale/nl_types.h
> +@@ -0,0 +1,37 @@
> ++
> ++#ifdef __linux__
> ++#include_next <nl_types.h>
> ++#else
> ++
> ++/* Copyright (C) 1996, 1997, 1999, 2003, 2004 Free Software Foundation, Inc.
> ++   This file is part of the GNU C Library.
> ++
> ++   The GNU C Library is free software; you can redistribute it and/or
> ++   modify it under the terms of the GNU Lesser General Public
> ++   License as published by the Free Software Foundation; either
> ++   version 2.1 of the License, or (at your option) any later version.
> ++
> ++   The GNU C Library is distributed in the hope that it will be useful,
> ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
> ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> ++   Lesser General Public License for more details.
> ++
> ++   You should have received a copy of the GNU Lesser General Public
> ++   License along with the GNU C Library; if not, write to the Free
> ++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
> ++   02111-1307 USA.  */
> ++
> ++#ifndef _NL_TYPES_H
> ++#define _NL_TYPES_H 1
> ++
> ++#include <features.h>
> ++
> ++/* The default message set used by the gencat program.  */
> ++#define NL_SETD 1
> ++
> ++/* Value for FLAG parameter of `catgets' to say we want XPG4 compliance.  */
> ++#define NL_CAT_LOCALE 1
> ++
> ++#endif /* nl_types.h  */
> ++
> ++#endif /* __linux__ */
> diff --git a/patches/localedef-eglibc-2.11.90-ptx1/0004-Darwin-Compile-with-fnested-functions.patch b/patches/localedef-eglibc-2.11.90-ptx1/0004-Darwin-Compile-with-fnested-functions.patch
> new file mode 100644
> index 0000000..65f6aa0
> --- /dev/null
> +++ b/patches/localedef-eglibc-2.11.90-ptx1/0004-Darwin-Compile-with-fnested-functions.patch
> @@ -0,0 +1,37 @@
> +From: Bernhard Walle <bernhard@bwalle.de>
> +Date: Sat, 21 Jan 2012 23:40:16 +0100
> +Subject: [PATCH] Darwin: Compile with -fnested-functions
> +
> +glibc/locale/programs/ld-ctype.c:2948: error: nested functions are disabled, use -fnested-functions to re-enable
> +
> +Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
> +---
> + configure.ac |    8 ++++++++
> + 1 files changed, 8 insertions(+), 0 deletions(-)
> +
> +diff --git a/configure.ac b/configure.ac
> +index 85d3ca2..6f8d4b3 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -24,6 +24,7 @@ AC_CONFIG_HEADERS([config.h])
> + AC_EXEEXT
> + AC_PROG_CC
> + AC_PROG_LN_S
> ++AC_CANONICAL_HOST
> + AC_C_BIGENDIAN([AC_DEFINE([BUILD_BYTE_ORDER], [__BIG_ENDIAN],
> + 		          [Define to your build machine's byte order])],
> + 	       [AC_DEFINE([BUILD_BYTE_ORDER], [__LITTLE_ENDIAN])])
> +@@ -59,6 +60,13 @@ LOCAL_CHECK_VAR([program_invocation_short_name], [#include <errno.h>])
> + AC_CHECK_LIB([intl], [gettext])
> + AC_CHECK_LIB([posix4], [nanosleep])
> + 
> ++# use -fnested-functions on Mac OS
> ++case ${host_os} in
> ++darwin*)
> ++    CFLAGS="${CFLAGS} -fnested-functions"
> ++    ;;
> ++esac
> ++
> + # These two macros are taken from GCC's config/acx.m4.
> + dnl Support the --with-pkgversion configure option.
> + dnl ACX_PKGVERSION(default-pkgversion)
> diff --git a/patches/localedef-eglibc-2.11.90-ptx1/0005-Use-own-implementation-of-__rawmemchr.patch b/patches/localedef-eglibc-2.11.90-ptx1/0005-Use-own-implementation-of-__rawmemchr.patch
> new file mode 100644
> index 0000000..97956a5
> --- /dev/null
> +++ b/patches/localedef-eglibc-2.11.90-ptx1/0005-Use-own-implementation-of-__rawmemchr.patch
> @@ -0,0 +1,40 @@
> +From: Bernhard Walle <bernhard@bwalle.de>
> +Date: Sat, 21 Jan 2012 23:48:27 +0100
> +Subject: [PATCH] Use own implementation of __rawmemchr()
> +
> +rawmemchr() and its alias __rawmemchr() are non-standard function.
> +For compatibility with non-GNU platforms, use a self-implemented
> +_rawmemchr().
> +
> +Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
> +---
> + eglibc/intl/explodename.c |    9 ++++++++-
> + 1 files changed, 8 insertions(+), 1 deletions(-)
> +
> +diff --git a/eglibc/intl/explodename.c b/eglibc/intl/explodename.c
> +index 321204d..c58abad 100644
> +--- a/eglibc/intl/explodename.c
> ++++ b/eglibc/intl/explodename.c
> +@@ -50,6 +50,13 @@ _nl_find_language (name)
> +   return (char *) name;
> + }
> + 
> ++static char *_rawmemchr(const void *s, int c)
> ++{
> ++  char *p = (unsigned char *)s;
> ++  while (*p != c)
> ++    p++;
> ++  return p;
> ++}
> + 
> + int
> + _nl_explode_name (name, language, modifier, territory, codeset,
> +@@ -78,7 +85,7 @@ _nl_explode_name (name, language, modifier, territory, codeset,
> +   if (*language == cp)
> +     /* This does not make sense: language has to be specified.  Use
> +        this entry as it is without exploding.  Perhaps it is an alias.  */
> +-    cp = __rawmemchr (*language, '\0');
> ++    cp = _rawmemchr (*language, '\0');
> +   else if (cp[0] != '@')
> +     {
> +       if (cp[0] == '_')
> diff --git a/patches/localedef-eglibc-2.11.90-ptx1/autogen.sh b/patches/localedef-eglibc-2.11.90-ptx1/autogen.sh
> new file mode 120000
> index 0000000..9f8a4cb
> --- /dev/null
> +++ b/patches/localedef-eglibc-2.11.90-ptx1/autogen.sh
> @@ -0,0 +1 @@
> +../autogen.sh
> \ No newline at end of file
> diff --git a/patches/localedef-eglibc-2.11.90-ptx1/series b/patches/localedef-eglibc-2.11.90-ptx1/series
> new file mode 100644
> index 0000000..f1f5d21
> --- /dev/null
> +++ b/patches/localedef-eglibc-2.11.90-ptx1/series
> @@ -0,0 +1,8 @@
> +# generated by git-ptx-patches
> +#tag:base --start-number 1
> +0001-Darwin-Fix-problem-with-__block-parameter-name.patch
> +0002-Darwin-Provide-dummy-implementation-of-gettext-funct.patch
> +0003-Darwin-Copy-some-locale-related-definitions-from-Lin.patch
> +0004-Darwin-Compile-with-fnested-functions.patch
> +0005-Use-own-implementation-of-__rawmemchr.patch
> +# fa05ef2055e4fe1c9215d7660d438608  - git-ptx-patches magic
> -- 
> 1.7.7.4
> 
> 
> -- 
> ptxdist mailing list
> ptxdist@pengutronix.de
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

-- 
ptxdist mailing list
ptxdist@pengutronix.de

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

* Re: [ptxdist] [PATCH] host-localedef: Fix on Darwin
  2012-02-07 14:46 ` Michael Olbrich
@ 2012-02-07 14:53   ` Bernhard Walle
  0 siblings, 0 replies; 5+ messages in thread
From: Bernhard Walle @ 2012-02-07 14:53 UTC (permalink / raw)
  To: ptxdist

* Michael Olbrich <m.olbrich@pengutronix.de> [2012-02-07 15:46]:
> On Sun, Jan 22, 2012 at 12:29:48AM +0100, Bernhard Walle wrote:
> > This patch is by far the most ugly part of all of the Darwin patches.
> > At least the md5sum of a locale-archive when generating a de_DE.UTF-8
> > locale is identical...
> > 
> > A first review, please.
> 
> We're creating the localedef package anyway, so I'd like to create a new
> tarball with all the paches included.
> I've pushed my current WIP to git://git.pengutronix.de/git/mol/localedef.git
> please test. This contains most of your patches (or modified versions). For
> the gettext stuff: we already have getttext-dummy package[1]. We can create
> a host-getttext-dummy package from that.

Ah, ok, thanks. Currently I'm reworking my patches but I didn't have
time to finish it and post it... Expect something at the end of the
week.


Regards,
Bernhard

-- 
ptxdist mailing list
ptxdist@pengutronix.de

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

end of thread, other threads:[~2012-02-07 14:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-21 23:29 [ptxdist] [PATCH] host-localedef: Fix on Darwin Bernhard Walle
2012-01-23 21:29 ` Andreas Bießmann
2012-01-23 22:02   ` Bernhard Walle
2012-02-07 14:46 ` Michael Olbrich
2012-02-07 14:53   ` Bernhard Walle

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox