summaryrefslogtreecommitdiff
path: root/localedata/Makefile
AgeCommit message (Collapse)Author
2018-07-25Keep expected behaviour for [a-z] and [A-z] (Bug 23393).Carlos O'Donell
In commit 9479b6d5e08eacce06c6ab60abc9b2f4eb8b71e4 we updated all of the collation data to harmonize with the new version of ISO 14651 which is derived from Unicode 9.0.0. This collation update brought with it some changes to locales which were not desirable by some users, in particular it altered the meaning of the locale-dependent-range regular expression, namely [a-z] and [A-Z], and for en_US it caused uppercase letters to be matched by [a-z] for the first time. The matching of uppercase letters by [a-z] is something which is already known to users of other locales which have this property, but this change could cause significant problems to en_US and other similar locales that had never had this change before. Whether this behaviour is desirable or not is contentious and GNU Awk has this to say on the topic: https://www.gnu.org/software/gawk/manual/html_node/Ranges-and-Locales.html While the POSIX standard also has this further to say: "RE Bracket Expression": http://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap09.html "The current standard leaves unspecified the behavior of a range expression outside the POSIX locale. ... As noted above, efforts were made to resolve the differences, but no solution has been found that would be specific enough to allow for portable software while not invalidating existing implementations." In glibc we implement the requirement of ISO POSIX-2:1993 and use collation element order (CEO) to construct the range expression, the API internally is __collseq_table_lookup(). The fact that we use CEO and also have 4-level weights on each collation rule means that we can in practice reorder the collation rules in iso14651_t1_common (the new data) to provide consistent range expression resolution *and* the weights should maintain the expected total order. Therefore this patch does three things: * Reorder the collation rules for the LATIN script in iso14651_t1_common to deinterlace uppercase and lowercase letters in the collation element orders. * Adds new test data en_US.UTF-8.in for sort-test.sh which exercises strcoll* and strxfrm* and ensures the ISO 14651 collation remains. * Add back tests to tst-fnmatch.input and tst-regexloc.c which exercise that [a-z] does not match A or Z. The reordering of the ISO 14651 data is done in an entirely mechanical fashion using the following program attached to the bug: https://sourceware.org/bugzilla/show_bug.cgi?id=23393#c28 It is up for discussion if the iso14651_t1_common data should be refined further to have 3 very tight collation element ranges that include only a-z, A-Z, and 0-9, which would implement the solution sought after in: https://sourceware.org/bugzilla/show_bug.cgi?id=23393#c12 and implemented here: https://www.sourceware.org/ml/libc-alpha/2018-07/msg00854.html No regressions on x86_64. Verified that removal of the iso14651_t1_common change causes tst-fnmatch to regress with: 422: fnmatch ("[a-z]", "A", 0) = 0 (FAIL, expected FNM_NOMATCH) *** ... 425: fnmatch ("[A-Z]", "z", 0) = 0 (FAIL, expected FNM_NOMATCH) ***
2018-07-18New locale: Yakut (Sakha) for Russia (sah_RU) [BZ #22241]Valery Timiriliyev
* localedata/Makefile (test-input): Add sah_RU.UTF-8. (LOCALES): Likewise. * localedata/SUPPORTED (sah_RU/UTF-8): New entry. * localedata/locales/sah_RU: New file. * localedata/sah_RU.UTF-8.in: New file. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2018-07-13dsb_DE locale: Fix syntax error and add tests (bug 23208).Rafal Luzynski
Fixed syntax error in the collation rules of Lower Sorbian language. Collation test added in order to test the bugs like this early. Reported-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com> [BZ #23208] * localedata/Makefile (test-input): Add dsb_DE.UTF-8. (LOCALES): Likewise. * localedata/dsb_DE.UTF-8.in: New file. * localedata/locales/dsb_DE (LC_COLLATE): Fix syntax error.
2018-07-04locale: XFAIL newlocale usage in static binary (Bug 23164)Carlos O'Donell
There is a glibc optimization which allows for locale categories to be removed during static compilation. There have been various bugs for this support over the years, with bug 16915 being the most recent. The solution there was to emit a reference to all the categories to avoid any being removed. This fix, although it's in the generic __nl_langinfo_l function, doesn't appear to be enough to fix the case for a statically linked program that uses newlocale and nl_langinfo_l. This commit doesn't fix the problem, but it does add a XFAIL'd test case such that a fix can be applied against this and the XFAIL removed. It's not entirely clear that the problem is the same as that which was seen in bug 16915.
2018-02-27Adapt collation in several locales to the new iso14651_t1_common fileMike FABIAN
[BZ #22550] - es_ES locale (and other es_* locales): collation should treat ñ as a primary different character, sync the collation for Spanish with CLDR [BZ #21547] - Tibetan script collation broken (Dzongkha and Tibetan) * localedata/Makefile: Add new test files. * localedata/lv_LV.UTF-8.in: Adapt test file to new collation order. * localedata/sv_SE.ISO-8859-1.in: Adapt test file to new collation order. * localedata/uk_UA.UTF-8.in: Adapt test file to new collation order. * localedata/am_ET.UTF-8.in: New test file. * localedata/az_AZ.UTF-8.in: Likewise. * localedata/be_BY.UTF-8.in: Likewise. * localedata/ber_DZ.UTF-8.in: Likewise. * localedata/ber_MA.UTF-8.in: Likewise. * localedata/bg_BG.UTF-8.in: Likewise. * localedata/br_FR.UTF-8.in: Likewise. * localedata/cmn_TW.UTF-8.in: Likewise. * localedata/crh_UA.UTF-8.in: Likewise. * localedata/csb_PL.UTF-8.in: Likewise. * localedata/cv_RU.UTF-8.in: Likewise. * localedata/cy_GB.UTF-8.in: Likewise. * localedata/dz_BT.UTF-8.in: Likewise. * localedata/eo.UTF-8.in: Likewise. * localedata/es_ES.UTF-8.in: Likewise. * localedata/fa_IR.UTF-8.in: Likewise. * localedata/fi_FI.UTF-8.in: Likewise. * localedata/fil_PH.UTF-8.in: Likewise. * localedata/fur_IT.UTF-8.in: Likewise. * localedata/gez_ER.UTF-8@abegede.in: Likewise. * localedata/ha_NG.UTF-8.in: Likewise. * localedata/ig_NG.UTF-8.in: Likewise. * localedata/ik_CA.UTF-8.in: Likewise. * localedata/kk_KZ.UTF-8.in: Likewise. * localedata/ku_TR.UTF-8.in: Likewise. * localedata/ky_KG.UTF-8.in: Likewise. * localedata/ln_CD.UTF-8.in: Likewise. * localedata/mi_NZ.UTF-8.in: Likewise. * localedata/ml_IN.UTF-8.in: Likewise. * localedata/mn_MN.UTF-8.in: Likewise. * localedata/mr_IN.UTF-8.in: Likewise. * localedata/mt_MT.UTF-8.in: Likewise. * localedata/nb_NO.UTF-8.in: Likewise. * localedata/om_KE.UTF-8.in: Likewise. * localedata/os_RU.UTF-8.in: Likewise. * localedata/ps_AF.UTF-8.in: Likewise. * localedata/ro_RO.UTF-8.in: Likewise. * localedata/ru_RU.UTF-8.in: Likewise. * localedata/sc_IT.UTF-8.in: Likewise. * localedata/se_NO.UTF-8.in: Likewise. * localedata/sq_AL.UTF-8.in: Likewise. * localedata/sv_SE.UTF-8.in: Likewise. * localedata/szl_PL.UTF-8.in: Likewise. * localedata/tg_TJ.UTF-8.in: Likewise. * localedata/tk_TM.UTF-8.in: Likewise. * localedata/tt_RU.UTF-8.in: Likewise. * localedata/tt_RU.UTF-8@iqtelif.in: Likewise. * localedata/ug_CN.UTF-8.in: Likewise. * localedata/uz_UZ.UTF-8.in: Likewise. * localedata/vi_VN.UTF-8.in: Likewise. * localedata/yi_US.UTF-8.in: Likewise. * localedata/yo_NG.UTF-8.in: Likewise. * localedata/zh_CN.UTF-8.in: Likewise. * localedata/locales/am_ET: Adapt collation rules to new iso14651_t1_common file and fix bugs in the collation. * localedata/locales/az_AZ: Likewise. * localedata/locales/be_BY: Likewise. * localedata/locales/ber_DZ: Likewise. * localedata/locales/ber_MA: Likewise. * localedata/locales/bg_BG: Likewise. * localedata/locales/br_FR: Likewise. * localedata/locales/br_FR@euro: Likewise. * localedata/locales/ca_ES: Likewise. * localedata/locales/cns11643_stroke: Likewise. * localedata/locales/crh_UA: Likewise. * localedata/locales/cs_CZ: Likewise. * localedata/locales/csb_PL: Likewise. * localedata/locales/cv_RU: Likewise. * localedata/locales/cy_GB: Likewise. * localedata/locales/da_DK: Likewise. * localedata/locales/dz_BT: Likewise. * localedata/locales/en_CA: Likewise. * localedata/locales/eo: Likewise. * localedata/locales/es_CU: Likewise. * localedata/locales/es_EC: Likewise. * localedata/locales/es_ES: Likewise. * localedata/locales/es_US: Likewise. * localedata/locales/et_EE: Likewise. * localedata/locales/fa_IR: Likewise. * localedata/locales/fi_FI: Likewise. * localedata/locales/fil_PH: Likewise. * localedata/locales/fur_IT: Likewise. * localedata/locales/gez_ER@abegede: Likewise. * localedata/locales/ha_NG: Likewise. * localedata/locales/hr_HR: Likewise. * localedata/locales/hsb_DE: Likewise. * localedata/locales/hu_HU: Likewise. * localedata/locales/ig_NG: Likewise. * localedata/locales/ik_CA: Likewise. * localedata/locales/is_IS: Likewise. * localedata/locales/iso14651_t1_pinyin: Likewise. * localedata/locales/kk_KZ: Likewise. * localedata/locales/ku_TR: Likewise. * localedata/locales/ky_KG: Likewise. * localedata/locales/ln_CD: Likewise. * localedata/locales/lt_LT: Likewise. * localedata/locales/lv_LV: Likewise. * localedata/locales/mi_NZ: Likewise. * localedata/locales/ml_IN: Likewise. * localedata/locales/mn_MN: Likewise. * localedata/locales/mr_IN: Likewise. * localedata/locales/mt_MT: Likewise. * localedata/locales/nb_NO: Likewise. * localedata/locales/om_KE: Likewise. * localedata/locales/os_RU: Likewise. * localedata/locales/pl_PL: Likewise. * localedata/locales/ps_AF: Likewise. * localedata/locales/ro_RO: Likewise. * localedata/locales/ru_RU: Likewise. * localedata/locales/ru_UA: Likewise. * localedata/locales/sc_IT: Likewise. * localedata/locales/se_NO: Likewise. * localedata/locales/si_LK: Likewise. * localedata/locales/sq_AL: Likewise. * localedata/locales/sv_FI: Likewise. * localedata/locales/sv_FI@euro: Likewise. * localedata/locales/sv_SE: Likewise. * localedata/locales/szl_PL: Likewise. * localedata/locales/tg_TJ: Likewise. * localedata/locales/ti_ER: Likewise. * localedata/locales/tk_TM: Likewise. * localedata/locales/tl_PH: Likewise. * localedata/locales/tr_TR: Likewise. * localedata/locales/tt_RU: Likewise. * localedata/locales/tt_RU@iqtelif: Likewise. * localedata/locales/ug_CN: Likewise. * localedata/locales/uk_UA: Likewise. * localedata/locales/uz_UZ: Likewise. * localedata/locales/uz_UZ@cyrillic: Likewise. * localedata/locales/vi_VN: Likewise. * localedata/locales/yi_US: Likewise. * localedata/locales/yo_NG: Likewise.
2018-02-23Remove --quiet argument when installing localesMike FABIAN
Using this argument hides problems. I would like to see when something fails. * localedata/Makefile: Remove --quiet argument when installing locales
2018-01-01Update copyright dates with scripts/update-copyrights.Joseph Myers
* All files with FSF copyright notices: Update copyright dates using scripts/update-copyrights. * locale/programs/charmap-kw.h: Regenerated. * locale/programs/locfile-kw.h: Likewise.
2017-12-07lt_LT locale: Base collation on copy "iso14651_t1" [BZ #22524]Mike FABIAN
[BZ #22524] * localedata/Makefile: Add lt_LT.UTF-8 to test-input and to the list of locales to be built for testing. * localedata/lt_LT.UTF-8.in: New file for testing the collation. * localedata/locales/lt_LT (LC_COLLATE): Use “copy "iso14651_t1"” and build the collation rules upon that.
2017-12-06hsb_DE locale: Base collation on copy "iso14651_t1" [BZ #22515]Mike FABIAN
[BZ #22515] * localedata/Makefile: Add hsb_DE.UTF-8 to test-input and to the list of locales to be built for testing. * localedata/hsb_DE.UTF-8.in: New file for testing the collation. * localedata/locales/hsb_DE (LC_COLLATE): Use “copy "iso14651_t1"” and build the collation rules upon that.
2017-12-05et_EE locale: Base collation on iso14651_t1 [BZ #22517]Mike FABIAN
[BZ #22517] * localedata/Makefile: Add et_EE.UTF-8 to test-input and to the list of locales to be built for testing. * localedata/et_EE.UTF-8.in: New file for testing the collation. * localedata/locales/et_EE (LC_COLLATE): Use “copy "iso14651_t1"” and build the collation rules upon that.
2017-12-01is_IS locale: Base collation on iso14651_t1 [BZ #22519]Mike FABIAN
2017-11-30sr_RS and bs_BA locales: make collation rules the same as for hr_HR [BZ #22534]Mike FABIAN
According to CLDR, collation rules for Serbian and Bosnian should be the same as for Croatian. [BZ #22534] * localedata/Makefile: Add sr_RS.UTF-8 and bs_BA.UTF-8 to test-input and to the list of locales to be built for testing. * localedata/bs_BA.UTF-8.in: New file (same as hr_HR.UTF-8.in). * localedata/sr_RS.UTF-8.in: New file (same as hr_HR.UTF-8.in). * localedata/locales/bs_BA (LC_COLLATE): Use “copy "hr_HR"”. * localedata/locales/sr_RS (LC_COLLATE): Use “copy "hr_HR"”.
2017-11-30Add test case for collation in hr_HR localeDragan Stanojević - Nevidljivi
* localedata/Makefile: Add hr_HR.UTF-8 to test-input and to the list of locales to built for testing. * localedata/hr_HR.UTF-8.in: New file.
2017-11-29Collation fix: make forward accent sorting the default [BZ #17750]Alexandre Oliva
[BZ #17750] * Makefile: add fr_CA.UTF-8 to test-input and LOCALES. * localedata/fr_CA.UTF-8.in: New file with test data for backward accents sorting. * localedata/fr_FR.UTF-8.in: Fix test data for forward accents sorting. * localedata/locales/cs_CZ (LC_COLLATE): Remove “define DIACRIT_FORWARD” * localedata/locales/de_DE (LC_COLLATE): Likewise. * localedata/locales/hu_HU (LC_COLLATE): Likewise. * localedata/locales/lb_LU (LC_COLLATE): Likewise. * localedata/locales/yuw_PG (LC_COLLATE): Likewise. * localedata/locales/fr_CA (LC_COLLATE): Add “define DIACRIT_BACKWARD” * localedata/locales/iso14651_t1_common: Use “ifdef DIACRIT_FORWARD” instead of “ifdef DIACRIT_BACKWARD”. The only locale which currently needs backward accents sorting is fr_CA. Therefore, forward accents sorting should be the default. Before this patch, backwards accent sorting was the default and all locales except fr_CA had to use define DIACRIT_FORWARD before copy "iso14651_t1" Most locales didn’t do that and thus got the inappropriate backwards accents sorting by accident. Now only the fr_CA locale needs to use define DIACRIT_BACKWARD before copy "iso14651_t1" Original patch slightly modified by: Mike FABIAN <mfabian@redhat.com>
2017-11-28localedata: Remove duplicate cs_CZ from LOCALESSiddhesh Poyarekar
The LOCALES variable in the localedata had two instances of cs_CZ which generated the following warning: ../gen-locales.mk:11: target '/opt/build/localedata/cs_CZ.UTF-8/LC_CTYPE' given more than once in the same rule Dropped the duplicate entry.
2017-11-28cs_CZ locale: Base collation on iso14651_t1 [BZ #22336]Mike FABIAN
[BZ #22336] * localedata/locales/cs_CZ (LC_COLLATE): Use “copy "iso14651_t1"” and implement the collation rules for cs from CLDR on top of that. * Makefile: Add cs_CZ.UTF-8 to test-input and to the list of locales to be built for testing. * cs_CZ.UTF-8.in: New file with test data to test the Czech sorting. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2017-11-24pl_PL locale: Base collation on iso14651_t1Mike FABIAN
[BZ #22469] * localedata/locales/pl_PL (LC_COLLATE): Use “copy "iso14651_t1"” and implement the collation rules for pl from CLDR on top of that. * Makefile: Add pl_PL.UTF-8 to test-input and to the list of locales to be built for testing. * pl_PL.UTF-8.in: New file with test data to test the Polish sorting.
2017-11-22lv_LV locale: fix collation [BZ #15537]Mike FABIAN
[BZ #15537] * localedata/locales/lv_LV (LC_COLLATE): Fix collation by using “copy "iso14651_t1"” and then implementing the collation rules for lv from CLDR on top of that. * Makefile: Add lv_LV.UTF-8 to test-input and to the list of locales to be built for testing. * lv_LV.UTF-8.in: New file with test data to test the Latvian sorting. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2017-10-25localedef: Add --no-warnings/--warnings optionCarlos O'Donell
From localedef --help: Output control: ... --no-warnings=<warnings> Comma-separated list of warnings to disable; supported warnings are: ascii, intcurrsym ... --warnings=<warnings> Comma-separated list of warnings to enable; supported warnings are: ascii, intcurrsym Locales using SHIFT_JIS and SHIFT_JISX0213 character maps are not ASCII compatible. In order to build locales using these character maps, and have localedef exit with a status of 0, we add new option to localedef to disable or enable specific warnings. The options are --no-warnings and --warnings, to disable and enable specific warnings respectively. The options take a comma-separated list of warning names. The warning names are taken directly from the generated warning. When a warning that can be disabled is issued it will print something like this: foo is not defined [--no-warnings=foo] For the initial implementation we add two controllable warnings; first 'ascii' which is used by the localedata installation makefile target to install SHIFT_JIS and SHIFT_JISX0213-using locales without error; second 'intcurrsym' which allows a program to use a non-standard international currency symbol without triggering a warning. The 'intcurrsym' is useful in the future if country codes are added that are not in our current ISO 4217 list, and the user wants to avoid the warning. Having at least two warnings to control gives an example for how the changes can be extended to more warnings if required in the future. These changes allow ja_JP.SHIFT_JIS and ja_JP.SHIFT_JISX0213 to be compiled without warnings using --no-warnings=ascii. The localedata/Makefile $(INSTALL-SUPPORTED-LOCALES) target is adjusted to automatically add `--no-warnings=ascii` for such charmaps, and likewise localedata/gen-locale.sh is adjusted with similar logic. v2: Bring verbose, be_quiet, and all warning control booleans into record-status.c, and compile this object file to be used by locale, iconv, and localedef. Any users include record-status.h. v3: Fix an instance of boolean coercion in set_warning(). Signed-off-by: Carlos O'Donell <carlos@redhat.com>
2017-10-25localedata: Locale and test name are the same.Carlos O'Donell
The localedata collation test data is encoded in a particular character set. We rename the test data to match the full locale name with encoding, and adjust the Makefile and sort-test.sh script. This allows us to have a future C.UTF-8 test that is disambiguated from the built-in C locale. Signed-off-by: Carlos O'Donell <carlos@redhat.com>
2017-08-07Fix missing redirects in testsuite targetsAndreas Schwab
2017-08-02Remove CFLAG settings that turn off warning (no longer needed).Steve Ellcey
2017-08-02 Steve Ellcey <sellcey@cavium.com> * localedata/Makefile (CFLAGS-tst_iswalnum.c, CFLAGS-tst_iswalpha.c CFLAGS-tst_iswcntrl.c, CFLAGS-tst_iswdigit.c, CFLAGS-tst_iswgraph.c, CFLAGS-tst_iswlower.c, CFLAGS-tst_iswprint.c, CFLAGS-tst_iswpunct.c, CFLAGS-tst_iswspace.c, CFLAGS-tst_iswupper.c, CFLAGS-tst_iswxdigit.c, CFLAGS-tst_towlower.c, CFLAGS-tst_towupper.c): Remove.
2017-07-21Fix localedata test builds with latest GCCSteve Ellcey
* localedata/Makefile (CFLAGS-tst_iswalnum.c, CFLAGS-tst_iswalpha.c CFLAGS-tst_iswcntrl.c, CFLAGS-tst_iswdigit.c, CFLAGS-tst_iswgraph.c, CFLAGS-tst_iswlower.c, CFLAGS-tst_iswprint.c, CFLAGS-tst_iswpunct.c, CFLAGS-tst_iswspace.c, CFLAGS-tst_iswupper.c, CFLAGS-tst_iswxdigit.c, CFLAGS-tst_towlower.c, CFLAGS-tst_towupper.c): New macros.
2017-03-28localedata: hu_HU: fix multiple sorting bugs (bug 18934)Egmont Koblinger
Fix the incorrect sorting order of a digraph and its geminated variant, regression introduced by a faulty fix to bug 13547 in commit b008d4c85619a753e441d7f473ba8af0db400bd6. Fix two inconsistencies in sorting unusual capitalization of digraphs (bug #18587). Enable DIACRIT_FORWARD to work around bug #17750. Sort foreign accents after the Hungarian ones. Add extensive unittests containing all the examples from The Rules of Hungarian Orthography and many more, including explanatory comments.
2017-01-01Update copyright dates with scripts/update-copyrights.Joseph Myers
2016-01-04Update copyright dates with scripts/update-copyrights.Joseph Myers
2015-11-27Rename localedir to complocaledir (bug 14259).Carlos O'Donell
In preparation to fix the --localedir configure argument we must move the existing conflicting definition of localedir to a more appropriate name. Given that all current internal uses of localedir relate to the compiled locales we rename to complocaledir.
2015-05-26Fix sorting order for Ukrainian locale (BZ 17293)Andriy Rysin
In the introduction for the official orthography rules for Ukrainian language (http://spelling.ulif.org.ua/peredmova.htm) there's a note that only apostrophe does not affect order of the words when sorting. As could be seen from the official alphabet the soft sign (U+044C/U+042C) has its hard position and thus affects the order and also letters "е" and "є" (CYR-IE: U+0435/U+0415 and UKR-IE: U+0454/U+0404) have their own positions and should have separate place when sorting. This also corresponds to official Unicode collation chart for these letters: http://unicode.org/charts/collation/chart_Cyrillic.html
2015-05-16Fail locale installation if localedef fails.Carlos O'Donell
If any locale fails to compile then the installation of locales via `make localedata/install-locales` also fails.
2015-05-13Split locale generation snippet into a separate fileLeonhard Holz
This patch prepares for the strcoll benchmark by moving the makefile code for generating the locale files into a standalone snippet that can be used elsewhere.
2015-03-05Avoid re-exec-self in bug-setlocale1.Roland McGrath
2015-01-02Update copyright dates with scripts/update-copyrights.Joseph Myers
2014-12-11Clean up localedata tests printf formats, don't use -Wno-format.Joseph Myers
2014-09-30Allow cross-building of testsWill Newton
Allow building tests in a cross configuration without a test wrapper defined. This is helpful for doing simple build testing of tests. ChangeLog: 2014-09-30 Will Newton <will.newton@linaro.org> * localedata/Makefile: Move assignment to tests-special into an ifdef testing run-built-tests. * timezone/Makefile: Likewise.
2014-07-10_nl_find_locale: Improve handling of crafted locale names [BZ #17137]Florian Weimer
Prevent directory traversal in locale-related environment variables (CVE-2014-0475).
2014-06-20Generate en_GB.UTF-8 during testingStefan Liebler
This patch generates en_GB.UTF-8, which is used in tst-strcoll-overflow. This solves the issue of failing xtests on s390/s390x.
2014-06-18Use $(rtld-prefix) more consistently.Joseph Myers
The glibc makefiles have a standard variable, $(rtld-prefix), to run the dynamic linker with a default --library-path option; this is used as the basis of lots of other variables for running programs compiled with the newly built library. A few places however use $(elf-objpfx)ld.so or $(elf-objpfx)${rtld-installed-name} directly, with such a --library-path option. This patch makes such places use $(rtld-prefix) instead. I'm not aware of any significance in these cases to the choice of ld.so or ${rtld-installed-name} when running the dynamic linker, or to whether $(patsubst %,:%,$(sysdep-library-path)) is included in the library-path as it is in $(rtld-prefix) and just one of the places being changed. Tested x86_64. * elf/Makefile ($(objpfx)tst-unused-dep.out): Use $(rtld-prefix). * iconvdata/Makefile ($(inst_gconvdir)/gconv-modules) [$(cross-compiling) = no]: Likewise. * sysdeps/s390/s390-64/Makefile ($(inst_gconvdir)/gconv-modules) [$(cross-compiling) = no]: Likewise. localedata/ChangeLog: * Makefile (LOCALEDEF): Use $(rtld-prefix).
2014-06-09Remove special makefile rules / .sh files for some localedata tests.Joseph Myers
The localedata tests tst-mbswcs and tst-wctype use custom .sh scripts and makefile rules, but have no need to do so. tst-mbswcs.sh runs a series of test programs in succession (and nothing special is done with the output of the programs); this patch makes the separate tests into ordinary tests run directly by the usual makefile rules. tst-wctype.sh runs one test with an environment variable and input redirection; generic makefile rules also cover that, so again this patch converts it into an ordinary test. (The makefile dependency of tst-wctype.out on sort-test.out that this patch removes appears to be a cut-and-paste error; the test does not appear to use that file. There is already a generic dependency of ordinary tests in this directory on $(addprefix $(objpfx),$(CTYPE_FILES)).) Tested x86_64. localedata/ChangeLog: * Makefile (test-srcs): Remove tst-mbswcs1, tst-mbswcs2, tst-mbswcs3, tst-mbswcs4, tst-mbswcs5 and tst-wctype. (generated): Remove tst-mbswcs.out. (tests): Add tst-mbswcs1, tst-mbswcs2, tst-mbswcs3, tst-mbswcs4, tst-mbswcs5 and tst-wctype. (tests-special): Remove $(objpfx)tst-mbswcs.out and $(objpfx)tst-wctype.out. ($(objpfx)tst-mbswcs.out): Remove rule. ($(objpfx)tst-wctype.out): Likewise. (tst-wctype-ENV): New variable. * tst-mbswcs.sh: Remove file. * tst-wctype.sh: Likewise.
2014-06-06Don't require test wrappers to preserve environment variables, use more ↵Joseph Myers
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-04Include LOCPATH in default test environment.Joseph Myers
Tests run using the default $(make-test-out) automatically get GCONV_PATH and LC_ALL set, whether or not those environment variables are actually needed for the individual test. However, they do not get LOCPATH set, meaning that a large number of tests have -ENV settings just to set LOCPATH. This patch moves LOCPATH into the default environment used for all tests, on the principle that like GCONV_PATH any settings needed to use files associated with the newly built library, rather than any old installed files, are appropriate to use by default. A further motivation is that various tests using .sh files also set some combination of LC_ALL, GCONV_PATH and LOCPATH. Preferably .sh files should also use the default environment with any additions required for the individual test. Now, it was suggested in <https://sourceware.org/ml/libc-alpha/2014-05/msg00715.html> that various Makefile variables used in testing should be derived by composing the -before-env and -after-env variables used when explicit environment settings are required. With such a change, it's also natural for those variables to include the default settings (via some intermediate makefile variable also used in make-test-out). Because some .sh files only set variables that correspond to the default settings, or a subset thereof, and this applies to more of the .sh files once LOCPATH is in the default settings, doing so reduces the size of a revised version of <https://sourceware.org/ml/libc-alpha/2014-05/msg00596.html>: scripts only needing the (expanded) default settings will not need to receive the separate -before-env and -after-env variables, only the single variable they do at present. So moving LOCPATH into the default settings can reduce churn caused by subsequent patches. Tested x86_64 and x86. * Rules (make-test-out): Include LOCPATH=$(common-objpfx)localedata in default environment. * debug/Makefile (tst-chk1-ENV): Remove variable. (tst-chk2-ENV): Likewise. (tst-chk3-ENV): Likewise. (tst-chk4-ENV): Likewise. (tst-chk5-ENV): Likewise. (tst-chk6-ENV): Likewise. (tst-lfschk1-ENV): Likewise. (tst-lfschk2-ENV): Likewise. (tst-lfschk3-ENV): Likewise. (tst-lfschk4-ENV): Likewise. (tst-lfschk5-ENV): Likewise. (tst-lfschk6-ENV): Likewise. * iconvdata/Makefile (bug-iconv6-ENV): Likewise. (tst-iconv7-ENV): Likewise. * intl/Makefile (LOCPATH-ENV): Likewise. (tst-codeset-ENV): Likewise. (tst-gettext3-ENV): Likewise. (tst-gettext5-ENV): Likewise. * libio/Makefile (tst-widetext-ENV): Don't set LOCPATH. (tst-fopenloc-ENV): Likewise. (tst-fgetws-ENV): Remove variable. (tst-ungetwc1-ENV): Likewise. (tst-ungetwc2-ENV): Likewise. (bug-ungetwc2-ENV): Likewise. (tst-swscanf-ENV): Likewise. (bug-ftell-ENV): Likewise. (tst-fgetwc-ENV): Likewise. (tst-fseek-ENV): Likewise. (tst-ftell-partial-wide-ENV): Likewise. (tst-ftell-active-handler-ENV): Likewise. (tst-ftell-append-ENV): Likewise. * posix/Makefile (tst-fnmatch-ENV): Likewise. (tst-regexloc-ENV): Likewise. (bug-regex1-ENV): Likewise. (tst-regex-ENV): Likewise. (tst-regex2-ENV): Likewise. (bug-regex5-ENV): Likewise. (bug-regex6-ENV): Likewise. (bug-regex17-ENV): Likewise. (bug-regex18-ENV): Likewise. (bug-regex19-ENV): Likewise. (bug-regex20-ENV): Likewise. (bug-regex22-ENV): Likewise. (bug-regex23-ENV): Likewise. (bug-regex25-ENV): Likewise. (bug-regex26-ENV): Likewise. (bug-regex30-ENV): Likewise. (bug-regex32-ENV): Likewise. (bug-regex33-ENV): Likewise. (bug-regex34-ENV): Likewise. (bug-regex35-ENV): Likewise. (tst-rxspencer-ENV): Likewise. (tst-rxspencer-no-utf8-ENV): Likewise. * stdio-common/Makefile (tst-sprintf-ENV): Likewise. (tst-sscanf-ENV): Likewise. (tst-swprintf-ENV): Likewise. (tst-swscanf-ENV): Likewise. (test-vfprintf-ENV): Likewise. (scanf13-ENV): Likewise. (bug14-ENV): Likewise. (tst-grouping-ENV): Likewise. * stdlib/Makefile (tst-strtod-ENV): Likewise. (tst-strtod3-ENV): Likewise. (tst-strtod4-ENV): Likewise. (tst-strtod5-ENV): Likewise. (testmb2-ENV): Likewise./ * string/Makefile (tst-strxfrm-ENV): Likewise. (tst-strxfrm2-ENV): Likewise. (bug-strcoll1-ENV): Likewise. (test-strcasecmp-ENV): Likewise. (test-strncasecmp-ENV): Likewise. * time/Makefile (tst-strptime-ENV): Likewise. (tst-ftime_l-ENV): Likewise. * wcsmbs/Makefile (tst-btowc-ENV): Likewise. (tst-mbrtowc-ENV): Likewise. (tst-wcrtomb-ENV): Likewise. (tst-mbrtowc2-ENV): Likewise. (tst-c16c32-1-ENV): Likewise. (tst-mbsnrtowcs-ENV): Likewise. localedata/ChangeLog: * Makefile (TEST_MBWC_ENV): Remove variable. (tst_iswalnum-ENV): Likewise. (tst_iswalpha-ENV): Likewise. (tst_iswcntrl-ENV): Likewise. (tst_iswctype-ENV): Likewise. (tst_iswdigit-ENV): Likewise. (tst_iswgraph-ENV): Likewise. (tst_iswlower-ENV): Likewise. (tst_iswprint-ENV): Likewise. (tst_iswpunct-ENV): Likewise. (tst_iswspace-ENV): Likewise. (tst_iswupper-ENV): Likewise. (tst_iswxdigit-ENV): Likewise. (tst_mblen-ENV): Likewise. (tst_mbrlen-ENV): Likewise. (tst_mbrtowc-ENV): Likewise. (tst_mbsrtowcs-ENV): Likewise. (tst_mbstowcs-ENV): Likewise. (tst_mbtowc-ENV): Likewise. (tst_strcoll-ENV): Likewise. (tst_strfmon-ENV): Likewise. (tst_strxfrm-ENV): Likewise. (tst_swscanf-ENV): Likewise. (tst_towctrans-ENV): Likewise. (tst_towlower-ENV): Likewise. (tst_towupper-ENV): Likewise. (tst_wcrtomb-ENV): Likewise. (tst_wcscat-ENV): Likewise. (tst_wcschr-ENV): Likewise. (tst_wcscmp-ENV): Likewise. (tst_wcscoll-ENV): Likewise. (tst_wcscpy-ENV): Likewise. (tst_wcscspn-ENV): Likewise. (tst_wcslen-ENV): Likewise. (tst_wcsncat-ENV): Likewise. (tst_wcsncmp-ENV): Likewise. (tst_wcsncpy-ENV): Likewise. (tst_wcspbrk-ENV): Likewise. (tst_wcsrtombs-ENV): Likewise. (tst_wcsspn-ENV): Likewise. (tst_wcsstr-ENV): Likewise. (tst_wcstod-ENV): Likewise. (tst_wcstok-ENV): Likewise. (tst_wcstombs-ENV): Likewise. (tst_wcswidth-ENV): Likewise. (tst_wcsxfrm-ENV): Likewise. (tst_wctob-ENV): Likewise. (tst_wctomb-ENV): Likewise. (tst_wctrans-ENV): Likewise. (tst_wctype-ENV): Likewise. (tst_wcwidth-ENV): Likewise. (tst-digits-ENV): Likewise. (tst-mbswcs6-ENV): Likewise. (tst-xlocale1-ENV): Likewise. (tst-xlocale2-ENV): Likewise. (tst-strfmon1-ENV): Likewise. (tst-strptime-ENV): Likewise. (tst-setlocale-ENV): Don't set LOCPATH. (bug-iconv-trans-ENV): Remove variable. (tst-sscanf-ENV): Likewise. (tst-leaks-ENV): Don't set LOCPATH. (bug-setlocale1-ENV): Remove variable. (bug-setlocale1-static-ENV): Likewise. (tst-setlocale2-ENV): Likewise.
2014-05-21Consistently use $(elf-objpfx).Joseph Myers
As previously noted <https://sourceware.org/ml/libc-alpha/2013-05/msg00696.html>, $(elf-objpfx) and $(elfobjdir) are redundant and should be consolidated. This patch consolidates on $(elf-objpfx) (for consistency with $(csu-objpfx)), also changing direct uses of $(common-objpfx)elf/ to use $(elf-objpfx). Tested x86_64, including that installed shared libraries are unchanged by the patch. * Makeconfig [$(build-hardcoded-path-in-tests) = yes] (rtld-tests-LDFLAGS): Use $(elf-objpfx) instead of $(common-objpfx)elf/. (link-libc-before-gnulib): Likewise. (elfobjdir): Remove variable. * Makefile (install): Use $(elf-objpfx) instead of $(common-objpfx)elf/. * Makerules (link-libc-args): Use $(elf-objpfx) instead of $(elfobjdir)/. (link-libc-deps): Likewise. ($(common-objpfx)libc.so): Likewise. ($(common-objpfx)linkobj/libc.so): Likewise. [$(cross-compiling) = no] (symbolic-link-prog): Use $(elf-objpfx) instead of $(common-objpfx)elf/. (symbolic-link-list): Likewise. * iconvdata/Makefile ($(inst_gconvdir)/gconv-modules) [$(cross-compiling) = no]: Likewise. * sysdeps/arm/Makefile (gnulib-arch): Use $(elf-objpfx) instead of $(elfobjdir)/. (static-gnulib-arch): Likewise. * sysdeps/s390/s390-64/Makefile ($(inst_gconvdir)/gconv-modules) [$(cross-compiling) = no]: Use $(elf-objpfx) instead of $(common-objpfx)elf/. localedata/ChangeLog: * Makefile (LOCALEDEF): Use $(elf-objpfx) instead of $(common-objpfx)elf/.
2014-05-20fix nl_langinfo with static linking (BZ #16915)Aurelien Jarno
For static linking the locale code avoids linking code and data for unused categories. However for nl_langinfo we know only at runtime which categories are used, so direct reference to every nl_current_CATEGORY symbol should be done. This was broken by commit bc3e1c127392da88d0c8bf2ae728147982a3d1bc where nl_langinfo_l and nl_langinfo have been merged and some code has been lost in the process. In order to detect locales issues with static linking, compile a version of tst-langinfo with static linking. Note: this is Debian bug#747103 reported by Raphael <raphael.astier@eliot-sa.com>
2014-03-07Count miscellaneous files built on host for testing as tests.Joseph Myers
In <https://sourceware.org/ml/libc-alpha/2014-01/msg00198.html> I raised the question of counting miscellaneous dependencies of tests, built on the host rather than the build system, as tests, so that when test failures don't stop "make check" neither do those other builds on the host, so that a flaky host doesn't stop "make check" from producing a complete summary of test results. Brooks supported that idea in <https://sourceware.org/ml/libc-alpha/2014-02/msg00301.html>. This patch implements that change for all the examples I could find: one message catalog in catgets/, locales in localedata/ and timezone files in timezone/. Tested x86_64. * catgets/Makefile (tests-special): Add $(objpfx)sample.SJIS.cat. ($(objpfx)sample.SJIS.cat): Use $(evaluate-test). * timezone/Makefile (testdata): Move definition above include of Rules. (test-zones): New variable. (tests-special): Add zone files. (build-testdata): Use $(evaluate-test). localedata/ChangeLog: * Makefile (LOCALES): Move definition above include of Rules. (LOCALE_SRCS): Likewise. (CHARMAPS): Likewise. (CTYPE_FILES): Likewise. (tests-special): Add locale files. ($(addprefix $(objpfx),$(CTYPE_FILES))): Use $(evaluate-test).
2014-03-07Make tests consistently use *.out output files.Joseph Myers
This patch systematically renames miscellaneous tests so their outputs use a *.out name (unless the test is just running some glibc program with its conventional output file name, rather than a special program at all, as in catgets tests generating *.cat). In the case of the iconv test test-iconvconfig, output is redirected where it wasn't before. In various places the "generated" variable is updated to reflect the revised test names; in iconvdata/Makefile a typo (mmtrace-tst-loading) is also fixed. resolv/Makefile sets both "generate" (which appears unused) and "generated". Bitrot in the settings of these variables could no doubt be fixed so that "make clean" after build and testing leaves results the same as after configure (and indeed the tests-special / xtests-special variables could be used to simplify things, by removing those files automatically rather than listing them manually in these variables), and "make distclean" leaves an empty build directory, but right now it appears various files don't get deleted. I think they are liable to continue to bitrot in the absence of routine testing that these targets actually work, given that building in the source directory isn't supported and that was the main use of such makefile targets. Tested x86_64. * elf/Makefile (tests-special): Rename tests to end with .out. ($(objpfx)noload-mem): Likewise. ($(objpfx)tst-leaks1-mem): Likewise. ($(objpfx)tst-leaks1-static-mem.out): Likewise. * iconv/Makefile (xtests-special): Change test-iconvconfig to $(objpfx)test-iconvconfig.out. (test-iconvconfig): Change to $(objpfx)test-iconvconfig.out. Use set -e inside subshell and redirect output to file. * iconvdata/Makefile (generated): Rename tests to end with .out. Correct type. (tests-special): Rename tests to end with .out. ($(objpfx)mtrace-tst-loading): Likewise. * intl/Makefile (generated): Likewise. (tests-special): Likewise. ($(objpfx)mtrace-tst-gettext): Likewise. * misc/Makefile (generated): Likewise. (tests-special): Likewise. ($(objpfx)tst-error1-mem): Likewise. * nptl/Makefile (tests-special): Likewise. ($(objpfx)tst-stack3-mem): Likewise. (generated): Likewise. * posix/Makefile (generated): Likewise. (tests-special): Likewise. (xtests-special): Likewise. ($(objpfx)tst-fnmatch-mem): Likewise. ($(objpfx)bug-regex2-mem): Likewise. ($(objpfx)bug-regex14-mem): Likewise. ($(objpfx)bug-regex21-mem): Likewise. ($(objpfx)bug-regex31-mem): Likewise. ($(objpfx)tst-vfork3-mem): Likewise. ($(objpfx)tst-rxspencer-no-utf8-mem): Likewise. ($(objpfx)tst-pcre-mem): Likewise. ($(objpfx)tst-boost-mem): Likewise. ($(objpfx)bug-ga2-mem): Likewise. ($(objpfx)bug-glob2-mem): Likewise. * resolv/Makefile (generate): Likewise. (tests-special): Likewise. (xtests-special): Likewise. (generated): Likewise. ($(objpfx)mtrace-tst-leaks): Likewise. ($(objpfx)mtrace-tst-leaks2): Likewise. localedata: * Makefile (generated): Rename tests to end with .out. (tests-special): Likewise. ($(objpfx)mtrace-tst-leaks): Likewise.
2014-03-06Enumerate tests with special rules in tests-special variable.Joseph Myers
This patch is a revised and updated version of <https://sourceware.org/ml/libc-alpha/2014-01/msg00196.html>. In order to generate overall summaries of the results of all tests in the glibc testsuite, we need to identify and concatenate the files with the results of individual tests. Tomas Dohnalek's patch used $(common-objpfx)*/*.test-result for this. However, the normal glibc approach is explicit enumeration of the expected set of files with a given property, rather than all files matching some pattern like that. Furthermore, we would like to be able to mark tests as UNRESOLVED if the file with their results is for some reason missing, and in future we would like to be able to mark tests as UNSUPPORTED if they are disabled for a particular configuration (rather than simply having them missing from the list of tests as at present). Such handling of tests that were not run or did not record results requires an explicit enumeration of tests. For the tests following the default makefile rules, $(tests) (and $(xtests)) provides such an enumeration. Others, however, are added directly as dependencies of the "tests" and "xtests" makefile targets. This patch changes the makefiles to put them in variables tests-special and xtests-special, with appropriate dependencies on the tests listed there then being added centrally. Those variables are used in Rules and so need to be set before Rules is included in a subdirectory makefile, which is often earlier in the makefile than the dependencies were present before. We previously discussed the question of where to include Rules; see the question at <https://sourceware.org/ml/libc-alpha/2012-11/msg00798.html>, and a discussion in <https://sourceware.org/ml/libc-alpha/2013-01/msg00337.html> of why Rules is included early rather than late in subdirectory makefiles. It was necessary to avoid an indirection through the check-abi target and get the check-abi-* targets for individual libraries into the tests-special variable. The intl/ test $(objpfx)tst-gettext.out, previously built only because of dependencies from other tests, was also added to tests-special for the same reason. The entries in tests-special are the full makefile targets, complete with $(objpfx) and .out. If a future change causes tests to be named consistently with a .out suffix, this can be changed to include just the path relative to $(objpfx), without .out. Tested x86_64, including that the same set of files is generated in the build directory by a build and testsuite run both before and after the patch (except for changes to the elf/tst-null-argv.debug.out.<number> file name), and a build with run-built-tests=no to verify there aren't any more obvious instances of the issue Marcus Shawcroft reported with a previous version in <https://sourceware.org/ml/libc-alpha/2014-01/msg00462.html>. * Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. (tests): Depend on $(tests-special). * Makerules (check-abi-list): New variable. (check-abi): Depend on $(check-abi-list). [$(subdir) = elf] (tests-special): Add $(objpfx)check-abi-libc.out. [$(build-shared) = yes && subdir] (tests-special): Add $(check-abi-list). [$(build-shared) = yes && subdir] (tests): Do not depend on check-abi. * Rules (tests): Depend on $(tests-special). (xtests): Depend on $(xtests-special). * catgets/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * conform/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * elf/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * grp/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * iconv/Makefile (xtests): Change dependencies to .... (xtests-special): ... additions to this variable. * iconvdata/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * intl/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. Also add $(objpfx)tst-gettext.out. * io/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * libio/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * malloc/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * misc/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * nptl/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * nptl_db/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * posix/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. (xtests): Change dependencies to .... (xtests-special): ... additions to this variable. * resolv/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. (xtests): Change dependencies to .... (xtests-special): ... additions to this variable. * stdio-common/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. (do-tst-unbputc): Remove target. (do-tst-printf): Likewise. * stdlib/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * string/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. * sysdeps/x86/Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable. localedata: * Makefile (tests): Change dependencies to .... (tests-special): ... additions to this variable.
2014-02-28Fix fallout from Joseph's untested Makeconfig change.Roland McGrath
2014-02-26Consistently include Makeconfig after defining subdir.Joseph Myers
In <https://sourceware.org/ml/libc-alpha/2014-01/msg00196.html> I noted it was necessary to add includes of Makeconfig early in various subdirectory makefiles for the tests-special variable settings added by that patch to be conditional on configuration information. No-one commented on the general question there of whether Makeconfig should always be included immediately after the definition of subdir. This patch implements that early inclusion of Makeconfig in each directory (which is a lot easier than consistent placement of includes of Rules). Includes are added if needed, or moved up if already present. Subdirectory "all:" targets are removed, since Makeconfig provides one. There is potential for further cleanups I haven't done. Rules and Makerules have code such as ifneq "$(findstring env,$(origin headers))" "" headers := endif to override to empty any value of various variables that came from the environment. I think there is a case for Makeconfig setting all the subdirectory variables (other than subdir) to empty to ensure no outside value is going to take effect if a subdirectory fails to define a variable. (A list of such variables, possibly out of date and incomplete, is in manual/maint.texi.) Rules and Makerules would give errors if Makeconfig hadn't already been included, instead of including it themselves. The special code to override values coming from the environment would then be obsolete and could be removed. Tested x86_64, including that installed binaries are identical before and after the patch. * argp/Makefile: Include Makeconfig immediately after defining subdir. * assert/Makefile: Likewise. * benchtests/Makefile: Likewise. * catgets/Makefile: Likewise. * conform/Makefile: Likewise. * crypt/Makefile: Likewise. * csu/Makefile: Likewise. (all): Remove target. * ctype/Makefile: Include Makeconfig immediately after defining subdir. * debug/Makefile: Likewise. * dirent/Makefile: Likewise. * dlfcn/Makefile: Likewise. * gmon/Makefile: Likewise. * gnulib/Makefile: Likewise. * grp/Makefile: Likewise. * gshadow/Makefile: Likewise. * hesiod/Makefile: Likewise. * hurd/Makefile: Likewise. (all): Remove target. * iconvdata/Makefile: Include Makeconfig immediately after defining subdir. * inet/Makefile: Likewise. * intl/Makefile: Likewise. * io/Makefile: Likewise. * libio/Makefile: Likewise. (all): Remove target. * locale/Makefile: Include Makeconfig immediately after defining subdir. * login/Makefile: Likewise. * mach/Makefile: Likewise. (all): Remove target. * malloc/Makefile: Include Makeconfig immediately after defining subdir. (all): Remove target. * manual/Makefile: Include Makeconfig immediately after defining subdir. * math/Makefile: Likewise. * misc/Makefile: Likewise. * nis/Makefile: Likewise. * nss/Makefile: Likewise. * po/Makefile: Likewise. (all): Remove target. * posix/Makefile: Include Makeconfig immediately after defining subdir. * pwd/Makefile: Likewise. * resolv/Makefile: Likewise. * resource/Makefile: Likewise. * rt/Makefile: Likewise. * setjmp/Makefile: Likewise. * shadow/Makefile: Likewise. * signal/Makefile: Likewise. * socket/Makefile: Likewise. * soft-fp/Makefile: Likewise. * stdio-common/Makefile: Likewise. * stdlib/Makefile: Likewise. * streams/Makefile: Likewise. * string/Makefile: Likewise. * sunrpc/Makefile: Likewise. (all): Remove target. * sysvipc/Makefile: Include Makeconfig immediately after defining subdir. * termios/Makefile: Likewise. * time/Makefile: Likewise. * timezone/Makefile: Likewise. (all): Remove target. * wcsmbs/Makefile: Include Makeconfig immediately after defining subdir. * wctype/Makefile: Likewise. libidn/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir. localedata/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir. (all): Remove target. nptl/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir. nptl_db/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir.
2014-02-21Generate .test-result files for tests with special rules.Joseph Myers
This patch, an updated version of <https://sourceware.org/ml/libc-alpha/2014-01/msg00194.html> now proposed for inclusion in glibc, extends the generation of PASS and FAIL status in .test-result files for individual tests to cover tests with their own custom makefile rules. This is just adding $(evaluate-test) calls to all such rules, since tests with multiple commands were previously split into separate tests. Note that the tests the makefiles expect to fail (posix/annexc and conformtest) currently get FAIL listed in the .test-result file, rather than XFAIL; a subsequent patch will introduce a better XFAIL mechanism. Tested x86_64. * Makefile ($(objpfx)c++-types-check.out): Use $(evaluate-test). ($(objpfx)check-local-headers.out): Likewise. ($(objpfx)begin-end-check.out): Likewise. * Makerules (check-abi-%.out): Likewise. * catgets/Makefile ($(objpfx)test1.cat): Likewise. ($(objpfx)test2.cat): Likewise. ($(objpfx)de/libc.cat): Likewise. ($(objpfx)test-gencat.out): Likewise. * conform/Makefile ($(objpfx)run-conformtest.out): Likewise. * elf/Makefile ($(objpfx)order-cmp.out): Likewise. ($(objpfx)noload-mem): Likewise. ($(objpfx)tst-pathopt.out): Likewise. ($(objpfx)tst-rtld-load-self.out): Likewise. ($(objpfx)tst-array1-cmp.out): Likewise. ($(objpfx)tst-array1-static-cmp.out): Likewise. ($(objpfx)tst-array2-cmp.out): Likewise. ($(objpfx)tst-array3-cmp.out): Likewise. ($(objpfx)tst-array4-cmp.out): Likewise. ($(objpfx)tst-array5-cmp.out): Likewise. ($(objpfx)tst-array5-static-cmp.out): Likewise. ($(objpfx)check-textrel.out): Likewise. ($(objpfx)check-execstack.out): Likewise. ($(objpfx)check-localplt.out): Likewise. ($(objpfx)order2-cmp.out): Likewise. ($(objpfx)tst-leaks1-mem): Likewise. ($(objpfx)tst-leaks1-static-mem): Likewise. ($(objpfx)tst-initorder-cmp.out): Likewise. ($(objpfx)tst-initorder2-cmp.out): Likewise. ($(objpfx)tst-unused-dep.out): Likewise. ($(objpfx)tst-unused-dep-cmp.out): Likewise. * grp/Makefile ($(objpfx)tst_fgetgrent.out): Likewise. * iconv/Makefile (test-iconvconfig): Likewise. * iconvdata/Makefile ($(objpfx)mtrace-tst-loading): Likewise. ($(objpfx)iconv-test.out): Likewise. ($(objpfx)tst-tables.out): Likewise. * intl/Makefile ($(objpfx)mtrace-tst-gettext): Likewise. ($(objpfx)tst-gettext.out): Likewise. ($(objpfx)tst-translit.out): Likewise. ($(objpfx)tst-gettext2.out): Likewise. ($(objpfx)tst-gettext4.out): Likewise. ($(objpfx)tst-gettext6.out): Likewise. * io/Makefile ($(objpfx)ftwtest.out): Likewise. * libio/Makefile ($(objpfx)test-freopen.out): Likewise. ($(objpfx)tst-fopenloc-cmp.out): Likewise. ($(objpfx)tst-fopenloc-mem.out): Likewise. * malloc/Makefile ($(objpfx)tst-mtrace.out): Likewise. * misc/Makefile ($(objpfx)tst-error1-mem): Likewise. * posix/Makefile ($(objpfx)globtest.out): Likewise. ($(objpfx)wordexp-tst.out): Likewise. ($(objpfx)annexc.out): Likewise. ($(objpfx)tst-fnmatch-mem): Likewise. ($(objpfx)bug-regex2-mem): Likewise. ($(objpfx)bug-regex14-mem): Likewise. ($(objpfx)bug-regex21-mem): Likewise. ($(objpfx)bug-regex31-mem): Likewise. ($(objpfx)tst-vfork3-mem): Likewise. ($(objpfx)tst-rxspencer-no-utf8-mem): Likewise. ($(objpfx)tst-pcre-mem): Likewise. ($(objpfx)tst-boost-mem): Likewise. ($(objpfx)tst-getconf.out): Likewise. ($(objpfx)bug-ga2-mem): Likewise. ($(objpfx)bug-glob2-mem): Likewise. * resolv/Makefile ($(objpfx)mtrace-tst-leaks): Likewise. ($(objpfx)mtrace-tst-leaks2): Likewise. * stdio-common/Makefile ($(objpfx)tst-unbputc.out): Likewise. ($(objpfx)tst-printf.out): Likewise. ($(objpfx)tst-setvbuf1.out): Likewise. ($(objpfx)tst-setvbuf1-cmp.out): Likewise. * stdlib/Makefile ($(objpfx)isomac.out): Likewise. ($(objpfx)tst-fmtmsg.out): Likewise. * string/Makefile ($(objpfx)tst-svc-cmp.out): Likewise. * sysdeps/x86/Makefile ($(objpfx)tst-xmmymm.out): Likewise. localedata: * Makefile ($(objpfx)sort-test.out): Use $(evaluate-test). ($(objpfx)tst-fmon.out): Likewise. ($(objpfx)tst-numeric.out): Likewise. ($(objpfx)tst-locale.out): Likewise. ($(objpfx)tst-rpmatch.out): Likewise. ($(objpfx)tst-trans.out): Likewise. ($(objpfx)tst-mbswcs.out): Likewise. ($(objpfx)tst-ctype.out): Likewise. ($(objpfx)tst-wctype.out): Likewise. ($(objpfx)tst-langinfo.out): Likewise. ($(objpfx)mtrace-tst-leaks): Likewise. nptl: * Makefile ($(objpfx)tst-stack3-mem): Use $(evaluate-test). ($(objpfx)tst-tls6.out): Likewise. ($(objpfx)tst-cleanup0.out): Likewise. ($(objpfx)tst-cleanup0-cmp.out): Likewise. ($(objpfx)tst-cancel-wrappers.out): Likewise. ($(objpfx)tst-oddstacklimit.out): Likewise. nptl_db: * Makefile ($(objpfx)db-symbols.out): Use $(evaluate-test).
2014-01-01Update copyright notices with scripts/update-copyrightsAllan McRae
2013-01-14Use $(host-test-program-cmd) not $(test-program-cmd) for bug-setlocale1.Joseph Myers