From 0457f649e3fe6299efe384da13dfc923bbe65707 Mon Sep 17 00:00:00 2001 From: Carlos O'Donell Date: Sep 17 2015 16:24:49 +0000 Subject: Resolves: #902094, #1262040 * Wed Sep 16 2015 Mike FABIAN - 2.22.90-7 - Add the C.UTF-8 locale (#902094). * Wed Sep 16 2015 Carlos O'Donell - 2.22.90-6 - Fix GCC 5 and -Werror related build failures. - Fix --install-langs bug which causes SIGABRT (#1262040). --- diff --git a/README.quilt b/README.quilt index a93a583..7b67937 100644 --- a/README.quilt +++ b/README.quilt @@ -7,7 +7,11 @@ Setup environment: export QUILT_PATCHES=$PWD Setup the source: -./quilt-patch.sh +./quilt-patch.sh [-f] + +Use `-f` if you want to have quilt-patch always remove the existing +source directory before starting. Otherwise you'll be patching on top of +an already patched tree generated perhaps by `*pkg prep`. Create a new patch: cd glibc-2.17-c758a686/ diff --git a/build-locale-archive.c b/build-locale-archive.c index a506876..5fc93ff 100644 --- a/build-locale-archive.c +++ b/build-locale-archive.c @@ -313,8 +313,7 @@ fill_archive (struct locarhandle *tmpl_ah, /* Add one for "_" and one for the null terminator. */ size_t len = strlen (install_langs_list[i]) + 2; char *install_lang = (char *)xmalloc (len); - strncpy (install_lang, install_langs_list[i], len - 2); - install_lang[len - 1] = '\0'; + strcpy (install_lang, install_langs_list[i]); if (strchr (install_lang, '_') == NULL) strcat (install_lang, "_"); if (strncmp (name, install_lang, strlen (install_lang)) == 0) diff --git a/glibc-bug-regex-gcc5.patch b/glibc-bug-regex-gcc5.patch new file mode 100644 index 0000000..c5a704e --- /dev/null +++ b/glibc-bug-regex-gcc5.patch @@ -0,0 +1,140 @@ +Index: glibc-2.22-193-g315267a/posix/bug-regex11.c +=================================================================== +--- glibc-2.22-193-g315267a.orig/posix/bug-regex11.c ++++ glibc-2.22-193-g315267a/posix/bug-regex11.c +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + /* Tests supposed to match. */ + struct +@@ -119,6 +120,14 @@ main (void) + continue; + } + ++ DIAG_PUSH_NEEDS_COMMENT ++#if __GNUC_PREREQ (5, 0) ++ /* GCC 5.0 warns about array subscript being above array bounds, ++ but that's not entirely possible since n is limited to ++ static nmatch which is limited to at most 5 (see tests above). ++ This is likely PR/59124 which is still not fixed. */ ++ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") ++#endif + for (n = 0; n < tests[i].nmatch; ++n) + if (rm[n].rm_so != tests[i].rm[n].rm_so + || rm[n].rm_eo != tests[i].rm[n].rm_eo) +@@ -130,6 +139,7 @@ main (void) + ret = 1; + break; + } ++ DIAG_POP_NEEDS_COMMENT + + regfree (&re); + } +Index: glibc-2.22-193-g315267a/posix/bug-regex17.c +=================================================================== +--- glibc-2.22-193-g315267a.orig/posix/bug-regex17.c ++++ glibc-2.22-193-g315267a/posix/bug-regex17.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + /* Tests supposed to match. */ + struct +@@ -87,6 +88,14 @@ do_test (void) + continue; + } + ++ DIAG_PUSH_NEEDS_COMMENT ++#if __GNUC_PREREQ (5, 0) ++ /* GCC 5.0 warns about array subscript being above array bounds, ++ but that's not entirely possible since n is limited to ++ static nmatch which is limited to at most 5 (see tests above). ++ This is likely PR/59124 which is still not fixed. */ ++ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") ++#endif + for (n = 0; n < tests[i].nmatch; ++n) + if (rm[n].rm_so != tests[i].rm[n].rm_so + || rm[n].rm_eo != tests[i].rm[n].rm_eo) +@@ -98,6 +107,7 @@ do_test (void) + ret = 1; + break; + } ++ DIAG_POP_NEEDS_COMMENT + + regfree (&re); + } +Index: glibc-2.22-193-g315267a/posix/bug-regex18.c +=================================================================== +--- glibc-2.22-193-g315267a.orig/posix/bug-regex18.c ++++ glibc-2.22-193-g315267a/posix/bug-regex18.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + /* Tests supposed to match. */ + struct +@@ -80,6 +81,14 @@ main (void) + continue; + } + ++ DIAG_PUSH_NEEDS_COMMENT ++#if __GNUC_PREREQ (5, 0) ++ /* GCC 5.0 warns about array subscript being above array bounds, ++ but that's not entirely possible since n is limited to ++ static nmatch which is limited to at most 5 (see tests above). ++ This is likely PR/59124 which is still not fixed. */ ++ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") ++#endif + for (n = 0; n < tests[i].nmatch; ++n) + if (rm[n].rm_so != tests[i].rm[n].rm_so + || rm[n].rm_eo != tests[i].rm[n].rm_eo) +@@ -91,6 +100,7 @@ main (void) + ret = 1; + break; + } ++ DIAG_POP_NEEDS_COMMENT + + regfree (&re); + } +Index: glibc-2.22-193-g315267a/posix/bug-regex30.c +=================================================================== +--- glibc-2.22-193-g315267a.orig/posix/bug-regex30.c ++++ glibc-2.22-193-g315267a/posix/bug-regex30.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + /* Tests supposed to match. */ + struct +@@ -80,6 +81,14 @@ do_test (void) + continue; + } + ++ DIAG_PUSH_NEEDS_COMMENT ++#if __GNUC_PREREQ (5, 0) ++ /* GCC 5.0 warns about array subscript being above array bounds, ++ but that's not entirely possible since n is limited to ++ static nmatch which is limited to at most 5 (see tests above). ++ This is likely PR/59124 which is still not fixed. */ ++ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") ++#endif + for (n = 0; n < tests[i].nmatch; ++n) + if (rm[n].rm_so != tests[i].rm[n].rm_so + || rm[n].rm_eo != tests[i].rm[n].rm_eo) +@@ -91,6 +100,7 @@ do_test (void) + ret = 1; + break; + } ++ DIAG_POP_NEEDS_COMMENT + + regfree (&re); + } diff --git a/glibc-c-utf8-locale.patch b/glibc-c-utf8-locale.patch new file mode 100644 index 0000000..f5da419 --- /dev/null +++ b/glibc-c-utf8-locale.patch @@ -0,0 +1,270 @@ +From 2eda7b462b415105f5a05c1323372d4e39d46439 Mon Sep 17 00:00:00 2001 +From: Mike FABIAN +Date: Mon, 10 Aug 2015 15:58:12 +0200 +Subject: [PATCH] Add a C.UTF-8 locale + +--- + localedata/SUPPORTED | 1 + + localedata/locales/C | 238 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 239 insertions(+) + create mode 100644 localedata/locales/C + +diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED +index 8ca023e..2a78391 100644 +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -1,6 +1,7 @@ + # This file names the currently supported and somewhat tested locales. + # If you have any additions please file a glibc bug report. + SUPPORTED-LOCALES=\ ++C.UTF-8/UTF-8 \ + aa_DJ.UTF-8/UTF-8 \ + aa_DJ/ISO-8859-1 \ + aa_ER/UTF-8 \ +diff --git a/localedata/locales/C b/localedata/locales/C +new file mode 100644 +index 0000000..fdf460e +--- /dev/null ++++ b/localedata/locales/C +@@ -0,0 +1,238 @@ ++escape_char / ++comment_char % ++% Locale for C locale in UTF-8 ++ ++LC_IDENTIFICATION ++title "C locale" ++source "" ++address "" ++contact "" ++email "mfabian@redhat.com" ++tel "" ++fax "" ++language "C" ++territory "" ++revision "1.0" ++date "2015-08-10" ++% ++category "C:2015";LC_IDENTIFICATION ++category "C:2015";LC_CTYPE ++category "C:2015";LC_COLLATE ++category "C:2015";LC_TIME ++category "C:2015";LC_NUMERIC ++category "C:2015";LC_MONETARY ++category "C:2015";LC_MESSAGES ++category "C:2015";LC_PAPER ++category "C:2015";LC_NAME ++category "C:2015";LC_ADDRESS ++category "C:2015";LC_TELEPHONE ++category "C:2015";LC_MEASUREMENT ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++ ++translit_start ++include "translit_combining";"" ++translit_end ++ ++END LC_CTYPE ++ ++LC_COLLATE ++order_start forward ++ ++.. ++ ++ ++.. ++ ++ ++.. ++ ++ ++.. ++ ++ ++.. ++ ++ ++.. ++ ++UNDEFINED ++order_end ++END LC_COLLATE ++ ++LC_MONETARY ++% This is the 14652 i18n fdcc-set definition for ++% the LC_MONETARY category ++% (except for the int_curr_symbol and currency_symbol, they are empty in ++% the 14652 i18n fdcc-set definition and also empty in ++% glibc/locale/C-monetary.c. But localedef complains in that case). ++% ++% Using "USD" for int_curr_symbol. But maybe "XXX" would be better? ++% XXX is "No currency" (https://en.wikipedia.org/wiki/ISO_4217) ++int_curr_symbol "" ++% Using "$" for currency_symbol. But maybe would be better? ++% U+00A4 is the "generic currency symbol" ++% (https://en.wikipedia.org/wiki/Currency_sign_%28typography%29) ++currency_symbol "" ++mon_decimal_point "" ++mon_thousands_sep "" ++mon_grouping -1 ++positive_sign "" ++negative_sign "" ++int_frac_digits -1 ++frac_digits -1 ++p_cs_precedes -1 ++int_p_sep_by_space -1 ++p_sep_by_space -1 ++n_cs_precedes -1 ++int_n_sep_by_space -1 ++n_sep_by_space -1 ++p_sign_posn -1 ++n_sign_posn -1 ++% ++END LC_MONETARY ++ ++LC_NUMERIC ++% This is the POSIX Locale definition for ++% the LC_NUMERIC category. ++% ++decimal_point "" ++thousands_sep "" ++grouping -1 ++END LC_NUMERIC ++ ++LC_TIME ++% This is the POSIX Locale definition for ++% the LC_TIME category. ++% ++% Abbreviated weekday names (%a) ++abday "";"";/ ++ "";"";/ ++ "";"";/ ++ "" ++ ++% Full weekday names (%A) ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++ ++% Abbreviated month names (%b) ++abmon "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" ++ ++% Full month names (%B) ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++ ++% Week description, consists of three fields: ++% 1. Number of days in a week. ++% 2. Gregorian date that is a first weekday (19971130 for Sunday, 19971201 for Monday). ++% 3. The weekday number to be contained in the first week of the year. ++% ++% ISO 8601 conforming applications should use the values 7, 19971201 (a ++% Monday), and 4 (Thursday), respectively. ++week 7;19971201;4 ++first_weekday 1 ++first_workday 1 ++ ++% Appropriate date and time representation (%c) ++% "%a %b %e %H:%M:%S %Y" ++d_t_fmt "" ++ ++% Appropriate date representation (%x) ++% "%m/%d/%y" ++d_fmt "" ++ ++% Appropriate time representation (%X) ++% "%H:%M:%S" ++t_fmt "" ++ ++% Appropriate AM/PM time representation (%r) ++% "%I:%M:%S %p" ++t_fmt_ampm "" ++ ++% Equivalent of AM/PM (%p) "AM"/"PM" ++% ++am_pm "";"" ++ ++% Appropriate date representation (date(1)) "%a %b %e %H:%M:%S %Z %Y" ++date_fmt "" ++END LC_TIME ++ ++LC_MESSAGES ++% This is the POSIX Locale definition for ++% the LC_NUMERIC category. ++% ++yesexpr "" ++noexpr "" ++yesstr "" ++nostr "" ++END LC_MESSAGES ++ ++LC_PAPER ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_PAPER category. ++% (A4 paper, this is also used in the built in C/POSIX ++% locale in glibc/locale/C-paper.c) ++height 297 ++width 210 ++END LC_PAPER ++ ++LC_NAME ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_NAME category. ++% "%p%t%g%t%m%t%f" ++% (also used in the built in C/POSIX locale in glibc/locale/C-name.c) ++name_fmt "/ ++" ++END LC_NAME ++ ++LC_ADDRESS ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_ADDRESS category. ++% "%a%N%f%N%d%N%b%N%s %h %e %r%N%C-%z %T%N%c%N" ++% (also used in the built in C/POSIX locale in glibc/locale/C-address.c) ++postal_fmt "/ ++/ ++/ ++/ ++" ++END LC_ADDRESS ++ ++LC_TELEPHONE ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_TELEPHONE category. ++% "+%c %a %l" ++tel_int_fmt "/ ++" ++% (also used in the built in C/POSIX locale in glibc/locale/C-telephone.c) ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_MEASUREMENT category. ++% (same as in the built in C/POSIX locale in glibc/locale/C-measurement.c) ++%metric ++measurement 1 ++END LC_MEASUREMENT ++ +-- +2.4.3 + diff --git a/glibc-dns-host-gcc5.patch b/glibc-dns-host-gcc5.patch new file mode 100644 index 0000000..abbceb2 --- /dev/null +++ b/glibc-dns-host-gcc5.patch @@ -0,0 +1,32 @@ +Index: glibc-2.22-193-g315267a/resolv/nss_dns/dns-host.c +=================================================================== +--- glibc-2.22-193-g315267a.orig/resolv/nss_dns/dns-host.c ++++ glibc-2.22-193-g315267a/resolv/nss_dns/dns-host.c +@@ -79,6 +79,7 @@ + #include + #include + #include ++#include + + #include "nsswitch.h" + +@@ -561,10 +562,19 @@ addrsort (char **ap, int num) + num = MAX_NR_ADDRS; + for (i = 0; i < num; i++, p++) + { ++ DIAG_PUSH_NEEDS_COMMENT ++#if __GNUC_PREREQ (5, 0) ++ /* GCC 5.0 warns about array subscript being above array bounds, ++ but that's not entirely possible since i is limited to ++ _res.nsort which is limited to MAXRESOLVSORT. This ++ is likely PR/59124 which is still not fixed. */ ++ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") ++#endif + for (j = 0 ; (unsigned)j < _res.nsort; j++) + if (_res.sort_list[j].addr.s_addr == + (((struct in_addr *)(*p))->s_addr & _res.sort_list[j].mask)) + break; ++ DIAG_POP_NEEDS_COMMENT + aval[i] = j; + if (needsort == 0 && i > 0 && j < aval[i-1]) + needsort = i; diff --git a/glibc-gethnamaddr-gcc5.patch b/glibc-gethnamaddr-gcc5.patch new file mode 100644 index 0000000..43b7ef3 --- /dev/null +++ b/glibc-gethnamaddr-gcc5.patch @@ -0,0 +1,32 @@ +Index: glibc-2.22-193-g315267a/resolv/gethnamaddr.c +=================================================================== +--- glibc-2.22-193-g315267a.orig/resolv/gethnamaddr.c ++++ glibc-2.22-193-g315267a/resolv/gethnamaddr.c +@@ -71,6 +71,7 @@ static char sccsid[] = "@(#)gethostnamad + #include + #include + #include ++#include + + #define RESOLVSORT + +@@ -986,10 +987,19 @@ addrsort(ap, num) + + p = ap; + for (i = 0; i < num; i++, p++) { ++ DIAG_PUSH_NEEDS_COMMENT ++#if __GNUC_PREREQ (5, 0) ++ /* GCC 5.0 warns about array subscript being above array bounds, ++ but that's not entirely possible since i is limited to ++ _res.nsort which is limited to MAXRESOLVSORT. This ++ is likely PR/59124 which is still not fixed. */ ++ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") ++#endif + for (j = 0 ; (unsigned)j < _res.nsort; j++) + if (_res.sort_list[j].addr.s_addr == + (((struct in_addr *)(*p))->s_addr & _res.sort_list[j].mask)) + break; ++ DIAG_POP_NEEDS_COMMENT + aval[i] = j; + if (needsort == 0 && i > 0 && j < aval[i-1]) + needsort = i; diff --git a/glibc-ld-ctype-gcc5.patch b/glibc-ld-ctype-gcc5.patch new file mode 100644 index 0000000..78e7fd4 --- /dev/null +++ b/glibc-ld-ctype-gcc5.patch @@ -0,0 +1,72 @@ +Index: glibc-2.22-193-g315267a/locale/programs/ld-ctype.c +=================================================================== +--- glibc-2.22-193-g315267a.orig/locale/programs/ld-ctype.c ++++ glibc-2.22-193-g315267a/locale/programs/ld-ctype.c +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + #include "localedef.h" + #include "charmap.h" +@@ -2534,9 +2535,19 @@ with character code range values one mus + { + size_t cnt; + ++ DIAG_PUSH_NEEDS_COMMENT ++#if __GNUC_PREREQ (5, 0) ++ /* GCC 5.0 warns about array subscript being above array bounds, ++ but that's not possible since ctype_map_new prevents ++ map_collection_nr from being greater than MAX_NR_CHARMP which ++ is the size of mapnames. This is likely PR/59124 which is still ++ not fixed. */ ++ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") ++#endif + for (cnt = 2; cnt < ctype->map_collection_nr; ++cnt) + if (strcmp (now->val.str.startmb, ctype->mapnames[cnt]) == 0) + break; ++ DIAG_POP_NEEDS_COMMENT + + if (cnt < ctype->map_collection_nr) + free (now->val.str.startmb); +@@ -2807,9 +2818,19 @@ previous definition was here"))); + + /* This could mean one of several things. First test whether + it's a character class name. */ ++ DIAG_PUSH_NEEDS_COMMENT ++#if __GNUC_PREREQ (5, 0) ++ /* GCC 5.0 warns about array subscript being above array bounds, ++ but that's not possible since ctype_class_new prevents ++ nr_charclass from being greater than MAX_NR_CHARCLASS which ++ is the size of classnames. This is likely PR/59124 which is still ++ not fixed. */ ++ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") ++#endif + for (cnt = 0; cnt < ctype->nr_charclass; ++cnt) + if (strcmp (now->val.str.startmb, ctype->classnames[cnt]) == 0) + break; ++ DIAG_POP_NEEDS_COMMENT + if (cnt < ctype->nr_charclass) + { + class_bit = _ISwbit (cnt); +@@ -2817,9 +2838,19 @@ previous definition was here"))); + free (now->val.str.startmb); + goto read_charclass; + } ++ DIAG_PUSH_NEEDS_COMMENT ++#if __GNUC_PREREQ (5, 0) ++ /* GCC 5.0 warns about array subscript being above array bounds, ++ but that's not possible since ctype_map_new prevents ++ map_collection_nr from being greater than MAX_NR_CHARMP which ++ is the size of mapnames. This is likely PR/59124 which is still ++ not fixed. */ ++ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") ++#endif + for (cnt = 0; cnt < ctype->map_collection_nr; ++cnt) + if (strcmp (now->val.str.startmb, ctype->mapnames[cnt]) == 0) + break; ++ DIAG_POP_NEEDS_COMMENT + if (cnt < ctype->map_collection_nr) + { + mapidx = cnt; diff --git a/glibc-res-hconf-gcc5.patch b/glibc-res-hconf-gcc5.patch new file mode 100644 index 0000000..b3706f0 --- /dev/null +++ b/glibc-res-hconf-gcc5.patch @@ -0,0 +1,29 @@ +Index: glibc-2.22-193-g315267a/resolv/res_hconf.c +=================================================================== +--- glibc-2.22-193-g315267a.orig/resolv/res_hconf.c ++++ glibc-2.22-193-g315267a/resolv/res_hconf.c +@@ -45,6 +45,7 @@ + #include "ifreq.h" + #include "res_hconf.h" + #include ++#include + + #if IS_IN (libc) + # define fgets_unlocked __fgets_unlocked +@@ -523,7 +524,16 @@ _res_hconf_trim_domain (char *hostname) + + for (i = 0; i < _res_hconf.num_trimdomains; ++i) + { ++ DIAG_PUSH_NEEDS_COMMENT ++#if __GNUC_PREREQ (5, 0) ++ /* GCC 5.0 warns about array subscript being above array bounds, ++ but that's not entirely possible since i is limited to ++ num_trimdomains which is limited to <= TRIMDOMAINS_MAX. This ++ is likely PR/59124 which is still not fixed. */ ++ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") ++#endif + const char *trim = _res_hconf.trimdomain[i]; ++ DIAG_POP_NEEDS_COMMENT + + trim_len = strlen (trim); + if (hostname_len > trim_len diff --git a/glibc.spec b/glibc.spec index 0fe54f2..6904462 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1,6 +1,6 @@ %define glibcsrcdir glibc-2.22-193-g315267a %define glibcversion 2.22.90 -%define glibcrelease 5%{?dist} +%define glibcrelease 6%{?dist} # Pre-release tarballs are pulled in from git using a command that is # effectively: # @@ -218,6 +218,17 @@ Patch0052: glibc-disable-rwlock-elision.patch # symlink to it. Patch0053: glibc-cs-path.patch +# Fix -Warray-bounds warning for GCC5, likely PR/59124 or PR/66422. +# See Fedora bug #1263817. +Patch0054: glibc-res-hconf-gcc5.patch +Patch0055: glibc-ld-ctype-gcc5.patch +Patch0056: glibc-gethnamaddr-gcc5.patch +Patch0057: glibc-dns-host-gcc5.patch +Patch0058: glibc-bug-regex-gcc5.patch + +# Add C.UTF-8 locale into /usr/lib/locale/ +Patch0059: glibc-c-utf8-locale.patch + ############################################################################## # # Patches from upstream @@ -307,10 +318,18 @@ BuildRequires: libselinux-devel >= 1.33.4-3 BuildRequires: nss-devel %endif BuildRequires: audit-libs-devel >= 1.1.3, sed >= 3.95, libcap-devel, gettext -BuildRequires: /bin/ps, /bin/kill, /bin/awk +# We need procps-ng (/bin/ps), util-linux (/bin/kill), and gawk (/bin/awk), +# but it is more flexible to require the actual programs and let rpm infer +# the packages. However, until bug 1259054 is widely fixed we avoid the +# following: +# BuildRequires: /bin/ps, /bin/kill, /bin/awk +# And use instead (which should be reverted some time in the future): +BuildRequires: procps-ng, util-linux, gawk BuildRequires: systemtap-sdt-devel %if %{with valgrind} +# Require valgrind for smoke testing the dynamic loader to make sure we +# have not broken valgrind. BuildRequires: /usr/bin/valgrind %endif @@ -623,12 +642,17 @@ microbenchmark tests on the system. %patch0053 -p1 %patch3002 -p1 %patch2035 -p1 - %patch2101 -p1 %patch2102 -p1 %patch2103 -p1 %patch2104 -p1 %patch2105 -p1 +%patch0054 -p1 +%patch0055 -p1 +%patch0056 -p1 +%patch0057 -p1 +%patch0058 -p1 +%patch0059 -p1 ############################################################################## # %%prep - Additional prep required... @@ -1010,7 +1034,9 @@ $olddir/build-%{target}/elf/ld.so \ --library-path $olddir/build-%{target}/ \ $olddir/build-%{target}/locale/localedef \ --prefix ${RPM_BUILD_ROOT} --add-to-archive \ - *_* + C.utf8 *_* +# Removes all locales except C.utf8 which remains as fallback in +# the event the user cleans the locale-archive using localedef. rm -rf *_* mv locale-archive{,.tmpl} popd @@ -1767,6 +1793,8 @@ rm -f *.filelist* %files -f common.filelist common %defattr(-,root,root) %dir %{_prefix}/lib/locale +%dir %{_prefix}/lib/locale/C.utf8 +%{_prefix}/lib/locale/C.utf8/* %attr(0644,root,root) %verify(not md5 size mtime) %{_prefix}/lib/locale/locale-archive.tmpl %attr(0644,root,root) %verify(not md5 size mtime mode) %ghost %config(missingok,noreplace) %{_prefix}/lib/locale/locale-archive %dir %attr(755,root,root) /etc/default @@ -1823,6 +1851,13 @@ rm -f *.filelist* %endif %changelog +* Wed Sep 16 2015 Mike FABIAN - 2.22.90-7 +- Add the C.UTF-8 locale (#902094). + +* Wed Sep 16 2015 Carlos O'Donell - 2.22.90-6 +- Fix GCC 5 and -Werror related build failures. +- Fix --install-langs bug which causes SIGABRT (#1262040). + * Fri Aug 28 2015 Carlos O'Donell - 2.22.90-5 - Auto-sync with upstream master. diff --git a/glibc_post_upgrade.c b/glibc_post_upgrade.c index 85309bf..290489b 100644 --- a/glibc_post_upgrade.c +++ b/glibc_post_upgrade.c @@ -153,8 +153,8 @@ main (void) #ifndef ICONVCONFIG #define ICONVCONFIG "/usr/sbin/iconvconfig" #endif - const char *iconv_cache = GCONV_MODULES_DIR"/gconv-modules.cache"; - const char *iconv_dir = GCONV_MODULES_DIR; + char *iconv_cache = GCONV_MODULES_DIR"/gconv-modules.cache"; + char *iconv_dir = GCONV_MODULES_DIR; if (is_ia64 ()) { iconv_cache = "/emul/ia32-linux"GCONV_MODULES_DIR"/gconv-modules.cache"; diff --git a/quilt-patch.sh b/quilt-patch.sh index e565d19..983a75d 100755 --- a/quilt-patch.sh +++ b/quilt-patch.sh @@ -4,8 +4,17 @@ export QUILT_PATCHES=$PWD # Extract source file name from sources file, # and assume it's the same name as the directory. source=`cat sources | sed -e 's,^.* ,,g'` -tar zxvf $source srcdir=${source%.tar.gz} +if [ "$1" == "-f" ] && [ -d "$srcdir" ]; then + echo Cleaning up $srcdir + rm -rf $srcdir +fi +if [ -d "$srcdir" ]; then + # Don't overwrite existing source directory. + echo "ERROR: Source directory $srcdir already exists. Use -f to force cleanup step." + exit 1 +fi +tar zxvf $source echo "Entering $srcdir" pushd $srcdir # Apply all patches. diff --git a/series b/series index f4939a5..a6a9951 100644 --- a/series +++ b/series @@ -37,3 +37,9 @@ glibc-rh1238412-addition-and-fixes-for-translit_neutral.patch -p1 glibc-rh1238412-update-the-translit-files-to-unicode-7.0.0.patch -p1 glibc-rh1238412-add-translit-rules-for-da-nb-nn-sv-locales.patch -p1 glibc-rh1238412-unicode-8.0.0-update.patch -p1 +glibc-res-hconf-gcc5.patch -p1 +glibc-ld-ctype-gcc5.patch -p1 +glibc-gethnamaddr-gcc5.patch -p1 +glibc-dns-host-gcc5.patch -p1 +glibc-bug-regex-gcc5.patch -p1 +glibc-c-utf8-locale.patch -p1