Remove redundant C locale settings

Message ID Pine.LNX.4.64.1406062245100.11163@digraph.polyomino.org.uk
State Committed
Headers

Commit Message

Joseph Myers June 6, 2014, 10:47 p.m. UTC
  Various glibc build / install / test code has C locale settings that
are redundant with LC_ALL=C.

LC_ALL takes precedence over LANG, so anywhere that sets LC_ALL=C
(explicitly, or through it being in the default environment for
running tests) does not need to set LANG=C.  LC_ALL=C also takes
precedence over LANGUAGE, since

2001-01-02  Ulrich Drepper  <drepper@redhat.com>

	* intl/dcigettext.c (guess_category_value): Rewrite so that LANGUAGE
	value is ignored if the selected locale is the C locale.
	* intl/tst-gettext.c: Set locale for above change.
	* intl/tst-translit.c: Likewise.

and so settings of LANGUAGE=C are also redundant when LC_ALL=C is
set.  One test also had LC_ALL=C in its -ENV setting, although it's
part of the default environment used for tests.

This patch removes the redundant settings.  It removes a suggestion in
install.texi of setting LANGUAGE=C LC_ALL=C for "make install"; the
Makefile.in target "install" already sets LC_ALL_C so there's no need
for the user to set it (and nor should there be any need for the user
to set it).

If some build machine tool used by "make install" uses a version of
libintl predating that 2001 change, and the user has LANGUAGE set, the
removal of LANGUAGE=C from the Makefile.in "install" rule could in
principle affect the user's installation.  However, I don't think we
need to be concerned about pre-2001 build tools.

Tested x86_64.

2014-06-06  Joseph Myers  <joseph@codesourcery.com>

	* Makefile (install): Don't set LANGUAGE.
	* Makefile.in (install): Likewise.
	* assert/Makefile (test-assert-ENV): Remove variable.
	(test-assert-perr-ENV): Likewise.
	* elf/Makefile (neededtest4-ENV): Likewise.
	* iconvdata/Makefile ($(inst_gconvdir)/gconv-modules)
	[$(cross-compiling) = no]: Don't set LANGUAGE.
	* io/ftwtest-sh (LANG): Remove variable.
	* libio/Makefile (tst-widetext-ENV): Likewise.
	* manual/install.texi (Running make install): Don't refer to
	environment settings for make install.
	* INSTALL: Regenerated.
	* nptl/tst-tls6.sh: Don't set LANG.
	* posix/globtest.sh (LANG): Remove variable.
	* string/Makefile (tester-ENV): Likewise.
	(inl-tester-ENV): Likewise.
	(noinl-tester-ENV): Likewise.
	* sysdeps/s390/s390-64/Makefile ($(inst_gconvdir)/gconv-modules)
	[$(cross-compiling) = no]: Don't set LANGUAGE.
	* timezone/Makefile (build-testdata): Use $(built-program-cmd)
	without explicit environment settings.

localedata/ChangeLog:
2014-06-06  Joseph Myers  <joseph@codesourcery.com>

	* tst-fmon.sh: Don't set LANGUAGE.
	* tst-locale.sh: Likewise.
  

Comments

Roland McGrath June 7, 2014, 6:11 a.m. UTC | #1
Looks good.
  

Patch

diff --git a/INSTALL b/INSTALL
index 63630b8..9ed4202 100644
--- a/INSTALL
+++ b/INSTALL
@@ -254,12 +254,12 @@  Installing the C Library
 ========================
 
 To install the library and its header files, and the Info files of the
-manual, type `env LANGUAGE=C LC_ALL=C make install'.  This will build
-things, if necessary, before installing them; however, you should still
-compile everything first.  If you are installing the GNU C Library as
-your primary C library, we recommend that you shut the system down to
-single-user mode first, and reboot afterward.  This minimizes the risk
-of breaking things when the library changes out from underneath.
+manual, type `make install'.  This will build things, if necessary,
+before installing them; however, you should still compile everything
+first.  If you are installing the GNU C Library as your primary C
+library, we recommend that you shut the system down to single-user mode
+first, and reboot afterward.  This minimizes the risk of breaking
+things when the library changes out from underneath.
 
    `make install' will do the entire job of upgrading from a previous
 installation of the GNU C Library version 2.x.  There may sometimes be
diff --git a/Makefile b/Makefile
index 2eab98c..ad18034 100644
--- a/Makefile
+++ b/Makefile
@@ -105,7 +105,7 @@  install-symbolic-link: subdir_install
 	rm -f $(symbolic-link-list)
 
 install:
-	-test ! -x $(elf-objpfx)ldconfig || LC_ALL=C LANGUAGE=C \
+	-test ! -x $(elf-objpfx)ldconfig || LC_ALL=C \
 	  $(elf-objpfx)ldconfig $(addprefix -r ,$(install_root)) \
 				$(slibdir) $(libdir)
 ifneq (no,$(PERL))
diff --git a/Makefile.in b/Makefile.in
index 945bc32..710ce7e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -9,7 +9,7 @@  all .DEFAULT:
 	$(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@
 
 install:
-	LANGUAGE=C LC_ALL=C; export LANGUAGE LC_ALL; \
+	LC_ALL=C; export LC_ALL; \
 	$(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@
 
 bench bench-clean:
diff --git a/assert/Makefile b/assert/Makefile
index 97fb476..3ed21be 100644
--- a/assert/Makefile
+++ b/assert/Makefile
@@ -28,6 +28,3 @@  routines := assert assert-perr __assert
 tests := test-assert test-assert-perr
 
 include ../Rules
-
-test-assert-ENV = LANGUAGE=C
-test-assert-perr-ENV = LANGUAGE=C
diff --git a/elf/Makefile b/elf/Makefile
index eb16c59..a2f5ce5 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -591,7 +591,6 @@  $(objpfx)neededtest3: $(libdl)
 $(objpfx)neededtest3.out: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \
 			  $(objpfx)neededobj3.so $(objpfx)neededobj4.so
 
-neededtest4-ENV = LC_ALL=C LANGUAGE=C
 $(objpfx)neededtest4: $(libdl) $(objpfx)neededobj1.so
 $(objpfx)neededtest4.out: $(objpfx)neededobj5.so $(objpfx)neededobj6.so
 
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index 8fb746e..424e8ee 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -251,7 +251,7 @@  ifeq (no,$(cross-compiling))
 # Update the $(prefix)/lib/gconv/gconv-modules.cache file. This is necessary
 # if this libc has more gconv modules than the previously installed one.
 	if test -f "$(inst_gconvdir)/gconv-modules.cache"; then \
-	   LC_ALL=C LANGUAGE=C \
+	   LC_ALL=C \
 	   $(elf-objpfx)ld.so --library-path $(rpath-link) \
 	   $(common-objpfx)iconv/iconvconfig \
 	     $(addprefix --prefix=,$(install_root)); \
diff --git a/io/ftwtest-sh b/io/ftwtest-sh
index db1c6bc..3a9e8f4 100644
--- a/io/ftwtest-sh
+++ b/io/ftwtest-sh
@@ -40,8 +40,6 @@  fi
 # Since we use `sort' we must make sure to use the same locale everywhere.
 LC_ALL=C
 export LC_ALL
-LANG=C
-export LANG
 
 # First create our scenario:
 tmp=${objpfx}io
diff --git a/libio/Makefile b/libio/Makefile
index 4552360..56952ce 100644
--- a/libio/Makefile
+++ b/libio/Makefile
@@ -148,7 +148,6 @@  CFLAGS-tst_putwc.c = -DOBJPFX=\"$(objpfx)\"
 
 tst_wprintf2-ARGS = "Some Text"
 
-tst-widetext-ENV = LANGUAGE=C
 tst-fopenloc-ENV = MALLOC_TRACE=$(objpfx)tst-fopenloc.mtrace
 
 generated += tst-fopenloc.mtrace tst-fopenloc.check
diff --git a/localedata/tst-fmon.sh b/localedata/tst-fmon.sh
index 7f1b248..275428e 100755
--- a/localedata/tst-fmon.sh
+++ b/localedata/tst-fmon.sh
@@ -37,7 +37,7 @@  for cns in `cd ./tst-fmon-locales && ls tstfmon_*`; do
     fn=charmaps/ISO-8859-1
     ${run_program_prefix_before_env} \
     ${run_program_env} \
-    I18NPATH=. LANGUAGE=C \
+    I18NPATH=. \
     ${run_program_prefix_after_env} ${common_objpfx}locale/localedef \
     --quiet -i $cn -f $fn ${common_objpfx}localedata/$cns
 done
diff --git a/localedata/tst-locale.sh b/localedata/tst-locale.sh
index 7c71dcf..7942a69 100755
--- a/localedata/tst-locale.sh
+++ b/localedata/tst-locale.sh
@@ -36,7 +36,7 @@  test_locale ()
     fi
     ${localedef_before_env} \
     ${run_program_env} \
-    I18NPATH=. LANGUAGE=C \
+    I18NPATH=. \
     ${localedef_after_env} --quiet -c -f $charmap -i $input \
       ${rep} ${common_objpfx}localedata/$out
 
diff --git a/manual/install.texi b/manual/install.texi
index 08851e1..6ca3ea1 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -291,7 +291,7 @@  the last assignment specified must take precedence.
 @cindex installing
 
 To install the library and its header files, and the Info files of the
-manual, type @code{env LANGUAGE=C LC_ALL=C make install}.  This will
+manual, type @code{make install}.  This will
 build things, if necessary, before installing them; however, you should
 still compile everything first.  If you are installing @theglibc{} as your
 primary C library, we recommend that you shut the system down to
diff --git a/nptl/tst-tls6.sh b/nptl/tst-tls6.sh
index 2d31826..846c321 100755
--- a/nptl/tst-tls6.sh
+++ b/nptl/tst-tls6.sh
@@ -36,7 +36,7 @@  for aligned in a e f; do
   echo "preload tst-tls5mod{$aligned,b,c,d}.so" >> $logfile
   echo "===============" >> $logfile
   ${test_wrapper_env} \
-  ${run_program_env} LANG=C \
+  ${run_program_env} \
   LD_PRELOAD="`echo ${common_objpfx}nptl/tst-tls5mod{$aligned,b,c,d}.so \
 	      | sed 's/:$//;s/: /:/g'`" ${tst_tls5} >> $logfile || fail=1
   echo >> $logfile
@@ -44,7 +44,7 @@  for aligned in a e f; do
   echo "preload tst-tls5mod{b,$aligned,c,d}.so" >> $logfile
   echo "===============" >> $logfile
   ${test_wrapper_env} \
-  ${run_program_env} LANG=C \
+  ${run_program_env} \
   LD_PRELOAD="`echo ${common_objpfx}nptl/tst-tls5mod{b,$aligned,c,d}.so \
 	      | sed 's/:$//;s/: /:/g'`" ${tst_tls5} >> $logfile || fail=1
   echo >> $logfile
@@ -52,7 +52,7 @@  for aligned in a e f; do
   echo "preload tst-tls5mod{b,c,d,$aligned}.so" >> $logfile
   echo "===============" >> $logfile
   ${test_wrapper_env} \
-  ${run_program_env} LANG=C \
+  ${run_program_env} \
   LD_PRELOAD="`echo ${common_objpfx}nptl/tst-tls5mod{b,c,d,$aligned}.so \
 	      | sed 's/:$//;s/: /:/g'`" ${tst_tls5} >> $logfile || fail=1
   echo >> $logfile
@@ -61,7 +61,7 @@  done
 echo "preload tst-tls5mod{d,a,b,c,e}" >> $logfile
 echo "===============" >> $logfile
 ${test_wrapper_env} \
-${run_program_env} LANG=C \
+${run_program_env} \
 LD_PRELOAD="`echo ${common_objpfx}nptl/tst-tls5mod{d,a,b,c,e}.so \
 	    | sed 's/:$//;s/: /:/g'`" ${tst_tls5} >> $logfile || fail=1
 echo >> $logfile
@@ -69,7 +69,7 @@  echo >> $logfile
 echo "preload tst-tls5mod{d,a,b,e,f}" >> $logfile
 echo "===============" >> $logfile
 ${test_wrapper_env} \
-${run_program_env} LANG=C \
+${run_program_env} \
 LD_PRELOAD="`echo ${common_objpfx}nptl/tst-tls5mod{d,a,b,e,f}.so \
 	    | sed 's/:$//;s/: /:/g'`" ${tst_tls5} >> $logfile || fail=1
 echo >> $logfile
diff --git a/posix/globtest.sh b/posix/globtest.sh
index d76fc6c..77f0094 100755
--- a/posix/globtest.sh
+++ b/posix/globtest.sh
@@ -40,8 +40,6 @@  esac
 # Since we use `sort' we must make sure to use the same locale everywhere.
 LC_ALL=C
 export LC_ALL
-LANG=C
-export LANG
 
 # Create the arena
 testdir=${common_objpfx}posix/globtest-dir
diff --git a/string/Makefile b/string/Makefile
index 70b9c19..98c2961 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -64,9 +64,6 @@  endif
 
 include ../Rules
 
-tester-ENV = LANGUAGE=C
-inl-tester-ENV = LANGUAGE=C
-noinl-tester-ENV = LANGUAGE=C
 CFLAGS-inl-tester.c = -fno-builtin
 CFLAGS-noinl-tester.c = -fno-builtin
 CFLAGS-tst-strlen.c = -fno-builtin
diff --git a/sysdeps/s390/s390-64/Makefile b/sysdeps/s390/s390-64/Makefile
index 9fee71b..4e69e90 100644
--- a/sysdeps/s390/s390-64/Makefile
+++ b/sysdeps/s390/s390-64/Makefile
@@ -76,7 +76,7 @@  ifeq (no,$(cross-compiling))
 # Update the $(prefix)/lib/gconv/gconv-modules.cache file. This is necessary
 # if this libc has more gconv modules than the previously installed one.
 	if test -f "$(inst_gconvdir)/gconv-modules.cache"; then \
-	   LC_ALL=C LANGUAGE=C \
+	   LC_ALL=C \
 	   $(elf-objpfx)ld.so --library-path $(rpath-link) \
 	   $(common-objpfx)iconv/iconvconfig \
 	     $(addprefix --prefix=,$(install_root)); \
diff --git a/timezone/Makefile b/timezone/Makefile
index d10c3a5..6e008bc 100644
--- a/timezone/Makefile
+++ b/timezone/Makefile
@@ -80,8 +80,7 @@  CFLAGS-scheck.c = -Wno-strict-prototypes -DNOID -DHAVE_GETTEXT
 # Don't add leapseconds here since test-tz made checks that work only without
 # leapseconds.
 define build-testdata
-$(built-program-cmd-before-env) $(run-program-env) LANGUAGE=C \
-  $(built-program-cmd-after-env) -d $(testdata) -y ./yearistype $<; \
+$(built-program-cmd) -d $(testdata) -y ./yearistype $<; \
 $(evaluate-test)
 endef