Updating glibc to 2.5-r3 on my amd64 system, which has system-wide locale settings of tr_TR.UTF-8, fails with the following error: x86_64-pc-linux-gnu-gcc nsswitch.c -c -std=gnu99 -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -fno-strict-aliasing -march=k8 -pipe -Wstrict-prototypes -mpreferred-stack-boundary=2 -fno-strict-aliasing -I../include -I/var/tmp/portage/sys-libs/glibc-2.5-r3/work/build-x86-x86_64-pc-linux-gnu-nptl/nss -I/var/tmp/portage/sys-libs/glibc-2.5-r3/work/build-x86-x86_64-pc-linux-gnu-nptl -I../sysdeps/i386/elf -I../nptl/sysdeps/unix/sysv/linux/i386/i686 -I../nptl/sysdeps/unix/sysv/linux/i386 -I../sysdeps/unix/sysv/linux/i386 -I../ports/sysdeps/unix/sysv/linux -I../nptl/sysdeps/unix/sysv/linux -I../nptl/sysdeps/pthread -I../sysdeps/pthread -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../ports/sysdeps/unix/sysv/i386 -I../sysdeps/unix/sysv/i386 -I../ports/sysdeps/unix/sysv -I../nptl/sysdeps/unix/sysv -I../sysdeps/unix/sysv -I../sysdeps/unix/i386 -I../ports/sysdeps/unix -I../nptl/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/i386/i686/fpu -I../nptl/sysdeps/i386/i686 -I../sysdeps/i386/i686 -I../sysdeps/i386/i486 -I../nptl/sysdeps/i386/i486 -I../sysdeps/i386/fpu -I../nptl/sysdeps/i386 -I../sysdeps/i386 -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -I../ports -I../nptl -I.. -I../libio -I. -nostdinc -isystem /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include -isystem /usr/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -o /var/tmp/portage/sys-libs/glibc-2.5-r3/work/build-x86-x86_64-pc-linux-gnu-nptl/nss/nsswitch.o -MD -MP -MF /var/tmp/portage/sys-libs/glibc-2.5-r3/work/build-x86-x86_64-pc-linux-gnu-nptl/nss/nsswitch.o.dt -MT /var/tmp/portage/sys-libs/glibc-2.5-r3/work/build-x86-x86_64-pc-linux-gnu-nptl/nss/nsswitch.o In file included from nsswitch.c:39: /var/tmp/portage/sys-libs/glibc-2.5-r3/work/build-x86-x86_64-pc-linux-gnu-nptl/gnu/lib-names.h:10:14: warning: ISO C99 requires whitespace after the macro name /var/tmp/portage/sys-libs/glibc-2.5-r3/work/build-x86-x86_64-pc-linux-gnu-nptl/gnu/lib-names.h:12:11: warning: ISO C99 requires whitespace after the macro name /var/tmp/portage/sys-libs/glibc-2.5-r3/work/build-x86-x86_64-pc-linux-gnu-nptl/gnu/lib-names.h:13:11: warning: ISO C99 requires whitespace after the macro name /var/tmp/portage/sys-libs/glibc-2.5-r3/work/build-x86-x86_64-pc-linux-gnu-nptl/gnu/lib-names.h:13:1: warning: "L" redefined /var/tmp/portage/sys-libs/glibc-2.5-r3/work/build-x86-x86_64-pc-linux-gnu-nptl/gnu/lib-names.h:12:1: warning: this is the location of the previous definition /var/tmp/portage/sys-libs/glibc-2.5-r3/work/build-x86-x86_64-pc-linux-gnu-nptl/gnu/lib-names.h:14:11: warning: ISO C99 requires whitespace after the macro name ... Checking the contents of /var/tmp/portage/sys-libs/glibc-2.5-r3/work/build-x86-x86_64-pc-linux-gnu-nptl/gnu/lib-names.h, I see the following: /* This file is automatically generated. It defines macros to allow user program to find the shared library files which come as part of GNU libc. */ #ifndef __GNU_LIB_NAMES_H #define __GNU_LIB_NAMES_H 1 #include <bits/wordsize.h> #if __WORDSIZE == 32 # define LD_LİNUX_SO "ld-linux.so.2" # define LD_SO "ld-linux.so.2" # define LİBANL_SO "libanl.so.1" # define LİBBROKENLOCALE_SO "libBrokenLocale.so.1" # define LİBCRYPT_SO "libcrypt.so.1" # define LİBC_SO "libc.so.6" # define LİBCİDN_SO "libcidn.so.1" Note that the I's on the define lines are "I with dot above", i.e., what you get if you convert 'i' to upper case in the locale tr_TR.UTF-8. (The lowercase of "I" is "i dotless" in Turkish.) I guess portage uses the system locale in the build environment and the lib-names.h is automatically generated, with the errors above. I haven't looked into the ebuild to see why the file lib-names.h gets mangled that way. Putting the lines unset LANG unset LC_ALL unset LC_CTYPE in the glibc-2.5-rc3 ebuild fixes the problem. Maybe clearing the system locale settings in the portage build environment should be considered as a general solution to this problem.
should be fixed in cvs ... the one awk in question can be run with LC_ALL=C