glibc/localedata
Joseph Myers 8540f6d2a7 Don't require test wrappers to preserve environment variables, use more consistent environment.
One wart in the original support for test wrappers for cross testing,
as noted in
<https://sourceware.org/ml/libc-alpha/2012-10/msg00722.html>, is the
requirement for test wrappers to pass a poorly-defined set of
environment variables from the build system to the system running the
glibc under test.  Although some variables are passed explicitly via
$(test-wrapper-env), including LD_* variables that simply can't be
passed implicitly because of the side effects they'd have on the build
system's dynamic linker, others are passed implicitly, including
variables such as GCONV_PATH and LOCPATH that could potentially affect
the build system's libc (so effectively relying on any such effects
not breaking the wrappers).  In addition, the code in
cross-test-ssh.sh for preserving environment variables is fragile (it
depends on how bash formats a list of exported variables, and could
well break for multi-line variable definitions where the contents
contain things looking like other variable definitions).

This patch moves to explicitly passing environment variables via
$(test-wrapper-env).  Makefile variables that previously used
$(test-wrapper) are split up into -before-env and -after-env parts
that can be passed separately to the various .sh files used in
testing, so those files can then insert environment settings between
the two parts.

The common default environment settings in make-test-out are made into
a separate makefile variable that can also be passed to scripts,
rather than many scripts duplicating those settings (for testing an
installed glibc, it is desirable to have the GCONV_PATH setting on
just one place, so just that one place needs to support it pointing to
an installed sysroot instead of the build tree).  The default settings
are included in the variables such as $(test-program-prefix), so that
if tests do not need any non-default settings they can continue to use
single variables rather than the split-up variables.

Although this patch cleans up LC_ALL=C settings (that being part of
the common defaults), various LANG=C and LANGUAGE=C settings remain.
Those are generally unnecessary and I propose a subsequent cleanup to
remove them.  LC_ALL takes precedence over LANG, and while LANGUAGE
takes precedence over LC_ALL, it only does so for settings other than
LC_ALL=C.  So LC_ALL=C on its own is sufficient to ensure the C
locale, and anything that gets LC_ALL=C does not need the other
settings.

While preparing this patch I noticed some tests with .sh files that
appeared to do nothing beyond what the generic makefile support for
tests can do (localedata/tst-wctype.sh - the makefiles support -ENV
variables and .input files - and localedata/tst-mbswcs.sh - just runs
five tests that could be run individually from the makefile).  So I
propose another subsequent cleanup to move those to using the generic
support instead of special .sh files.

Tested x86_64 (native) and powerpc32 (cross).

	* Makeconfig (run-program-env): New variable.
	(run-program-prefix-before-env): Likewise.
	(run-program-prefix-after-env): Likewise.
	(run-program-prefix): Define in terms of new variables.
	(built-program-cmd-before-env): New variable.
	(built-program-cmd-after-env): Likewise.
	(built-program-cmd): Define in terms of new variables.
	(test-program-prefix-before-env): New variable.
	(test-program-prefix-after-env): Likewise.
	(test-program-prefix): Define in terms of new variables.
	(test-program-cmd-before-env): New variable.
	(test-program-cmd-after-env): Likewise.
	(test-program-cmd): Define in terms of new variables.
	* Rules (make-test-out): Use $(run-program-env).
	* scripts/cross-test-ssh.sh (env_blacklist): Remove variable.
	(help): Do not mention environment variables.  Mention
	--timeoutfactor option.
	(timeoutfactor): New variable.
	(blacklist_exports): Remove function.
	(exports): Remove variable.
	(command): Do not include ${exports}.
	* manual/install.texi (Configuring and compiling): Do not mention
	test wrappers preserving environment variables.  Mention that last
	assignment to a variable must take precedence.
	* INSTALL: Regenerated.
	* benchtests/Makefile (run-bench): Use $(run-program-env).
	* catgets/Makefile ($(objpfx)test1.cat): Use
	$(built-program-cmd-before-env), $(run-program-env) and
	$(built-program-cmd-after-env).
	($(objpfx)test2.cat): Do not specify environment variables
	explicitly.
	($(objpfx)de/libc.cat): Use $(built-program-cmd-before-env),
	$(run-program-env) and $(built-program-cmd-after-env).
	($(objpfx)test-gencat.out): Use $(test-program-cmd-before-env),
	$(run-program-env) and $(test-program-cmd-after-env).
	($(objpfx)sample.SJIS.cat): Do not specify environment variables
	explicitly.
	* catgets/test-gencat.sh: Use test_program_cmd_before_env,
	run_program_env and test_program_cmd_after_env arguments.
	* elf/Makefile ($(objpfx)tst-pathopt.out): Use $(run-program-env).
	* elf/tst-pathopt.sh: Use run_program_env argument.
	* iconvdata/Makefile ($(objpfx)iconv-test.out): Use
	$(test-wrapper-env) and $(run-program-env).
	* iconvdata/run-iconv-test.sh: Use test_wrapper_env and
	run_program_env arguments.
	* iconvdata/tst-table.sh: Do not set GCONV_PATH explicitly.
	* intl/Makefile ($(objpfx)tst-gettext.out): Use
	$(test-program-prefix-before-env), $(run-program-env) and
	$(test-program-prefix-after-env).
	($(objpfx)tst-gettext2.out): Likewise.
	* intl/tst-gettext.sh: Use test_program_prefix_before_env,
	run_program_env and test_program_prefix_after_env arguments.
	* intl/tst-gettext2.sh: Likewise.
	* intl/tst-gettext4.sh: Do not set environment variables
	explicitly.
	* intl/tst-gettext6.sh: Likewise.
	* intl/tst-translit.sh: Likewise.
	* malloc/Makefile ($(objpfx)tst-mtrace.out): Use
	$(test-program-prefix-before-env), $(run-program-env) and
	$(test-program-prefix-after-env).
	* malloc/tst-mtrace.sh: Use test_program_prefix_before_env,
	run_program_env and test_program_prefix_after_env arguments.
	* math/Makefile (run-regen-ulps): Use $(run-program-env).
	* nptl/Makefile ($(objpfx)tst-tls6.out): Use $(run-program-env).
	* nptl/tst-tls6.sh: Use run_program_env argument.  Set LANG=C
	explicitly with each use of ${test_wrapper_env}.
	* posix/Makefile ($(objpfx)wordexp-tst.out): Use
	$(test-program-prefix-before-env), $(run-program-env) and
	$(test-program-prefix-after-env).
	* posix/tst-getconf.sh: Do not set environment variables
	explicitly.
	* posix/wordexp-tst.sh: Use test_program_prefix_before_env,
	run_program_env and test_program_prefix_after_env arguments.
	* stdio-common/tst-printf.sh: Do not set environment variables
	explicitly.
	* stdlib/Makefile ($(objpfx)tst-fmtmsg.out): Use
	$(test-program-prefix-before-env), $(run-program-env) and
	$(test-program-prefix-after-env).
	* stdlib/tst-fmtmsg.sh: Use test_program_prefix_before_env,
	run_program_env and test_program_prefix_after_env arguments.
	Split $test calls into $test_pre and $test.
	* timezone/Makefile (build-testdata): Use
	$(built-program-cmd-before-env), $(run-program-env) and
	$(built-program-cmd-after-env).

localedata/ChangeLog:
	* Makefile ($(addprefix $(objpfx),$(CTYPE_FILES))): Use
	$(built-program-cmd-before-env), $(run-program-env) and
	$(built-program-cmd-after-env).
	($(objpfx)sort-test.out): Use $(test-program-prefix-before-env),
	$(run-program-env) and $(test-program-prefix-after-env).
	($(objpfx)tst-fmon.out): Use $(run-program-prefix-before-env),
	$(run-program-env) and $(run-program-prefix-after-env).
	($(objpfx)tst-locale.out): Use $(built-program-cmd-before-env),
	$(run-program-env) and $(built-program-cmd-after-env).
	($(objpfx)tst-trans.out): Use $(run-program-prefix-before-env),
	$(run-program-env), $(run-program-prefix-after-env),
	$(test-program-prefix-before-env) and
	$(test-program-prefix-after-env).
	($(objpfx)tst-ctype.out): Use $(test-program-cmd-before-env),
	$(run-program-env) and $(test-program-cmd-after-env).
	($(objpfx)tst-wctype.out): Likewise.
	($(objpfx)tst-langinfo.out): Likewise.
	($(objpfx)tst-langinfo-static.out): Likewise.
	* gen-locale.sh: Use localedef_before_env, run_program_env and
	localedef_after_env arguments.
	* sort-test.sh: Use test_program_prefix_before_env,
	run_program_env and test_program_prefix_after_env arguments.
	* tst-ctype.sh: Use tst_ctype_before_env, run_program_env and
	tst_ctype_after_env arguments.
	* tst-fmon.sh: Use run_program_prefix_before_env, run_program_env
	and run_program_prefix_after_env arguments.
	* tst-langinfo.sh: Use tst_langinfo_before_env, run_program_env
	and tst_langinfo_after_env arguments.
	* tst-locale.sh: Use localedef_before_env, run_program_env and
	localedef_after_env arguments.
	* tst-mbswcs.sh: Do not set environment variables explicitly.
	* tst-numeric.sh: Likewise.
	* tst-rpmatch.sh: Likewise.
	* tst-trans.sh: Use run_program_prefix_before_env,
	run_program_env, run_program_prefix_after_env,
	test_program_prefix_before_env and test_program_prefix_after_env
	arguments.
	* tst-wctype.sh: Use tst_wctype_before_env, run_program_env and
	tst_wctype_after_env arguments.
2014-06-06 22:19:27 +00:00
..
charmaps Update BIG5-HKSCS charmap to HKSCS-2008 2013-06-11 17:02:59 +02:00
locales Add lang_name to various locales. 2013-12-26 19:35:18 -05:00
tests Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tests-mbwc Remove unused variable. 2013-11-18 13:12:29 +01:00
tst-fmon-locales Update. 2003-12-05 09:51:08 +00:00
bug-iconv-trans.c Update. 2001-08-14 22:29:43 +00:00
bug-setlocale1-static.c Support run bug-setlocale1 directly 2013-01-10 14:15:49 -08:00
bug-setlocale1.c Support run bug-setlocale1 directly 2013-01-10 14:15:49 -08:00
bug-usesetlocale.c * locale/lc-ctype.c (_nl_postload_ctype): Update _nl_global_locale's 2003-10-31 23:35:42 +00:00
ChangeLog Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
collate-test.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
cs_CZ.in
da_DK.in * stdio-common/vfscanf.c: Remove unused WIDTH handling. 2007-02-18 09:25:25 +00:00
de_DE.in * locale/programs/locfile-token.h: Remove tok_elif, add tok_elifdef 2007-10-11 02:36:04 +00:00
Depend
dump-ctype.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
en_US.in
fr_FR.in * string/strcoll_l.c (STRCOLL): Correct test for alloca use. 2007-10-02 17:19:53 +00:00
gen-locale.sh Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
gen-unicode-ctype.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
hr_HR.in
Makefile Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
README Change sources.redhat.com references to sourceware.org. 2012-12-06 15:32:46 +00:00
show-ucs-data.c [BZ #4098] 2007-10-14 20:51:58 +00:00
si_LK.in [BZ #6947] 2008-10-31 17:29:46 +00:00
sort-test.sh Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
SUPPORTED Install uz_UZ.UTF-8 locale (BZ #16095) 2014-06-05 15:12:16 +02:00
sv_SE.in Update. 2000-09-01 17:49:19 +00:00
th_TH.in
tr_TR.in [BZ #19] 2004-08-07 23:38:40 +00:00
tst-ctype-de_DE.ISO-8859-1.in Update. 2000-09-26 00:05:52 +00:00
tst-ctype.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-ctype.sh Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
tst-digits.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-fmon.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-fmon.data Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-fmon.sh Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
tst-langinfo-static.c fix nl_langinfo with static linking (BZ #16915) 2014-05-20 18:43:14 +02:00
tst-langinfo.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-langinfo.sh Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
tst-leaks.c Update. 2001-06-27 07:59:20 +00:00
tst-locale.sh Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
tst-mbswcs1.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-mbswcs2.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-mbswcs3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-mbswcs4.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-mbswcs5.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-mbswcs6.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-mbswcs.sh Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
tst-numeric.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-numeric.data Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-numeric.sh Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
tst-rpmatch.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-rpmatch.sh Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
tst-setlocale2.c Optimize access to isXYZ and toXYZ tables 2011-10-15 16:27:08 -04:00
tst-setlocale.c Test case for handling string passed to setlocale. 2000-12-01 00:15:38 +00:00
tst-sscanf.c Use fa_IR.UTF-8 which exists internally. 2007-03-14 22:32:31 +00:00
tst-strfmon1.c [BZ #2420] 2006-04-26 05:52:58 +00:00
tst-trans.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-trans.sh Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
tst-wctype.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-wctype.input
tst-wctype.sh Don't require test wrappers to preserve environment variables, use more consistent environment. 2014-06-06 22:19:27 +00:00
tst-xlocale1.c * sysdeps/mach/hurd/Versions (ld: GLIBC_2.0): Move __libc_read, 2002-09-25 03:26:16 +00:00
tst-xlocale2.c * sysdeps/mach/hurd/Versions (ld: GLIBC_2.0): Move __libc_read, 2002-09-25 03:26:16 +00:00
xfrm-test.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00

		       POSIX locale descriptions
				  and
		    POSIX character set descriptions

Ulrich Drepper			Time-stamp: <2004/11/27 13:06:54 drepper>
drepper@redhat.com


This directory contains the data needed to build the locale data files
to use the internationalization features of the GNU libc.

POSIX.2 describes the `localedef' utility which is part of the GNU libc.
You need this program to "compile" the locale description in a form
suitable for fast access by the GNU libc functions.  Any compilation is
based on a given character set.

Once you run `make install' for the GNU libc the data files are
automatically installed in the right place, ready for use by the
`localedef' program.

To compile the locale data files you simply have to decide which locale
(based on the location and the language) and which character set you
use.  E.g., French speaking Canadians would use the locale `fr_CA' and
the character set `ISO_8859-1,1987'.  Calling `localedef' to get the
desired data should happen like this:

	localedef -i fr_CA -f ISO-8859-1 fr_CA

This will place the 6 output files in the appropriate directory where
the GNU libc functions can find them.  Please note that you need
permission to write to this directory ($(prefix)/share/locale, where
$(prefix) is the value you specified while configuring GNU libc).  If
you do not have the necessary permissions, you can write the files into an
arbitrary directory by giving a path including a '/' character instead
of `fr_CA'.  E.g., to put the new files in a subdirectory of the
current directory simply use

	localedef -i fr_CA -f ISO-8859-1 ./fr_CA

How to use these data files is described in the GNU libc manual,
especially in the section describing the `setlocale' function.

All problems should be reported using

  http://sourceware.org/bugzilla/


One more note: the `POSIX' locale definition is not meant to be used
as an input file for `localedef'.  It is rather there to show the
values with are built in the libc binaries as default values when no
legal locale is found or the "C" or "POSIX" locale is selected.


		       The collation test suite
		       ########################

This package also contains a (beginning of a) test suite for the
collation functions in the GNU libc.  The files are provided sorted.
The test program shuffles the lines and sort them afterwards.

Some of the files are provided in 8bit form, i.e., not only ASCII
characters.  So the tools you use to process the files should be 8bit
clean.

To run the test program the appropriate locale information must be
installed.  Therefore the localedef program is used to generate this
data used the locale and charmap description files contained here.
Since we cannot run the localedef program in case of cross-compilation
no tests at all are performed.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Local Variables:
 mode:text
 eval:(load-library "time-stamp")
 eval:(make-local-variable 'write-file-hooks)
 eval:(add-hook 'write-file-hooks 'time-stamp)
 eval:(setq time-stamp-format '(time-stamp-yyyy/mm/dd time-stamp-hh:mm:ss user-login-name))
End: