[glibc/f18] - Fix race in intl/* testsuite (#849203)

Jeffrey Law law at fedoraproject.org
Fri Aug 17 20:36:20 UTC 2012


commit d0ef83992ecaf363c8b1d5468c2b13e2789ca7be
Author: Jeff Law <law at redhat.com>
Date:   Fri Aug 17 14:36:06 2012 -0600

      - Fix race in intl/* testsuite (#849203)

 glibc-rh849203.patch |  211 ++++++++++++++++++++++++++++++++++++++++++++++++++
 glibc.spec           |    7 ++-
 2 files changed, 217 insertions(+), 1 deletions(-)
---
diff --git a/glibc-rh849203.patch b/glibc-rh849203.patch
new file mode 100644
index 0000000..a8b83b3
--- /dev/null
+++ b/glibc-rh849203.patch
@@ -0,0 +1,211 @@
+2012-08-17  Jeff Law <law at redhat.com>
+
+	* intl/Makefile (codeset_mo): New variable.
+	($(codeset_mo)): New target.
+	(tst-codeset.out): Depend on that.  Remove explicit rule.
+	(tst-gettext3.out, tst-gettext5.out): Likewise.
+	(LOCPATH-ENV, tst-codeset-ENV): New variables.
+	(tst-gettext3-ENV, tst-gettext5-ENV): Likewise.
+	* intl/tst-codeset.sh: Remove.
+	* intl/tst-gettext3.sh: Likewise.
+	* intl/tst-gettext5.sh: Likewise.
+
+diff --git a/intl/Makefile b/intl/Makefile
+index e95f519..d63ffe4 100644
+--- a/intl/Makefile
++++ b/intl/Makefile
+@@ -61,6 +61,16 @@ ifneq (no,$(PERL))
+ tests: $(objpfx)mtrace-tst-gettext
+ endif
+ endif
++
++# Multiple tests use this data.  Create it once to avoid racing and
++# spurious test failures.
++codeset_mo = $(objpfx)domaindir/de_DE/LC_MESSAGES/codeset.mo
++
++$(codeset_mo):
++	$(make-target-directory)
++	msgfmt -o $@T tstcodeset.po
++	mv -f $@T $@
++
+ $(objpfx)mtrace-tst-gettext: $(objpfx)tst-gettext.out
+ 	$(common-objpfx)malloc/mtrace $(objpfx)tst-gettext.mtrace > $@
+ $(objpfx)tst-gettext.out: tst-gettext.sh $(objpfx)tst-gettext
+@@ -70,16 +80,14 @@ $(objpfx)tst-translit.out: tst-translit.sh $(objpfx)tst-translit
+ 	$(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/
+ $(objpfx)tst-gettext2.out: tst-gettext2.sh $(objpfx)tst-gettext2
+ 	$(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/
+-$(objpfx)tst-codeset.out: tst-codeset.sh $(objpfx)tst-codeset
+-	$(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/
+-$(objpfx)tst-gettext3.out: tst-gettext3.sh $(objpfx)tst-gettext3
+-	$(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/
+ $(objpfx)tst-gettext4.out: tst-gettext4.sh $(objpfx)tst-gettext4
+ 	$(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/
+-$(objpfx)tst-gettext5.out: tst-gettext5.sh $(objpfx)tst-gettext5
+-	$(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/
+ $(objpfx)tst-gettext6.out: tst-gettext6.sh $(objpfx)tst-gettext6
+ 	$(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/
++
++$(objpfx)tst-codeset.out: $(codeset_mo)
++$(objpfx)tst-gettext3.out: $(codeset_mo)
++$(objpfx)tst-gettext5.out: $(codeset_mo)
+ endif
+ endif
+ 
+@@ -96,6 +104,11 @@ CFLAGS-tst-gettext4.c = -DOBJPFX=\"$(objpfx)\"
+ CFLAGS-tst-gettext5.c = -DOBJPFX=\"$(objpfx)\"
+ CFLAGS-tst-gettext6.c = -DOBJPFX=\"$(objpfx)\"
+ 
++LOCPATH-ENV = LOCPATH=$(common-objpfx)localedata
++tst-codeset-ENV = $(LOCPATH-ENV)
++tst-gettext3-ENV = $(LOCPATH-ENV)
++tst-gettext5-ENV = $(LOCPATH-ENV)
++
+ ifeq ($(have-thread-library),yes)
+ ifeq (yes,$(build-shared))
+ $(addprefix $(objpfx),$(multithread-test-srcs)): $(shared-thread-library)
+diff --git a/intl/tst-codeset.sh b/intl/tst-codeset.sh
+deleted file mode 100644
+index 1584490..0000000
+--- a/intl/tst-codeset.sh
++++ /dev/null
+@@ -1,42 +0,0 @@
+-#! /bin/sh
+-# Test of bind_textdomain_codeset.
+-# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+-# This file is part of the GNU C Library.
+-#
+-
+-# The GNU C Library is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU Lesser General Public
+-# License as published by the Free Software Foundation; either
+-# version 2.1 of the License, or (at your option) any later version.
+-
+-# The GNU C Library is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-# Lesser General Public License for more details.
+-
+-# You should have received a copy of the GNU Lesser General Public
+-# License along with the GNU C Library; if not, see
+-# <http://www.gnu.org/licenses/>.
+-
+-common_objpfx=$1
+-objpfx=$2
+-
+-LC_ALL=C
+-export LC_ALL
+-
+-# Generate the test data.
+-msgfmt -o ${objpfx}codeset.mo.$$ tstcodeset.po || exit
+-# Create the domain directories.
+-mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES
+-# Populate them.
+-mv -f ${objpfx}codeset.mo.$$ ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo
+-
+-GCONV_PATH=${common_objpfx}iconvdata
+-export GCONV_PATH
+-LOCPATH=${common_objpfx}localedata
+-export LOCPATH
+-
+-${common_objpfx}elf/ld.so --library-path $common_objpfx \
+-${objpfx}tst-codeset > ${objpfx}tst-codeset.out
+-
+-exit $?
+diff --git a/intl/tst-gettext3.sh b/intl/tst-gettext3.sh
+deleted file mode 100644
+index 032379c..0000000
+--- a/intl/tst-gettext3.sh
++++ /dev/null
+@@ -1,43 +0,0 @@
+-#! /bin/sh
+-# Test that the gettext() results come out in the correct encoding for
+-# locales that differ only in their encoding.
+-# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+-# This file is part of the GNU C Library.
+-#
+-
+-# The GNU C Library is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU Lesser General Public
+-# License as published by the Free Software Foundation; either
+-# version 2.1 of the License, or (at your option) any later version.
+-
+-# The GNU C Library is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-# Lesser General Public License for more details.
+-
+-# You should have received a copy of the GNU Lesser General Public
+-# License along with the GNU C Library; if not, see
+-# <http://www.gnu.org/licenses/>.
+-
+-common_objpfx=$1
+-objpfx=$2
+-
+-LC_ALL=C
+-export LC_ALL
+-
+-# Generate the test data.
+-msgfmt -o ${objpfx}codeset.mo.$$ tstcodeset.po || exit
+-# Create the domain directories.
+-mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES
+-# Populate them.
+-mv -f ${objpfx}codeset.mo.$$ ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo
+-
+-GCONV_PATH=${common_objpfx}iconvdata
+-export GCONV_PATH
+-LOCPATH=${common_objpfx}localedata
+-export LOCPATH
+-
+-${common_objpfx}elf/ld.so --library-path $common_objpfx \
+-${objpfx}tst-gettext3 > ${objpfx}tst-gettext3.out
+-
+-exit $?
+diff --git a/intl/tst-gettext5.sh b/intl/tst-gettext5.sh
+deleted file mode 100755
+index a563b43..0000000
+--- a/intl/tst-gettext5.sh
++++ /dev/null
+@@ -1,42 +0,0 @@
+-#! /bin/sh
+-# Test that gettext() in multithreaded applications works correctly if
+-# different threads operate in different locales referring to the same
+-# catalog file but with different encodings.
+-# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+-# This file is part of the GNU C Library.
+-#
+-
+-# The GNU C Library is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU Lesser General Public
+-# License as published by the Free Software Foundation; either
+-# version 2.1 of the License, or (at your option) any later version.
+-
+-# The GNU C Library is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-# Lesser General Public License for more details.
+-
+-# You should have received a copy of the GNU Lesser General Public
+-# License along with the GNU C Library; if not, see
+-# <http://www.gnu.org/licenses/>.
+-
+-common_objpfx=$1
+-run_program_prefix=$2
+-objpfx=$3
+-
+-LC_ALL=C
+-export LC_ALL
+-
+-# Create the domain directories.
+-mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES
+-# Populate them.
+-msgfmt -o ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo tstcodeset.po
+-
+-GCONV_PATH=${common_objpfx}iconvdata
+-export GCONV_PATH
+-LOCPATH=${common_objpfx}localedata
+-export LOCPATH
+-
+-${run_program_prefix} ${objpfx}tst-gettext5 > ${objpfx}tst-gettext5.out
+-
+-exit $?
diff --git a/glibc.spec b/glibc.spec
index 38bed6b..9f707fa 100644
--- a/glibc.spec
+++ b/glibc.spec
@@ -28,7 +28,7 @@
 Summary: The GNU libc libraries
 Name: glibc
 Version: %{glibcversion}
-Release: 8%{?dist}
+Release: 9%{?dist}
 # GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries.
 # Things that are linked directly into dynamically linked programs
 # and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional
@@ -110,6 +110,7 @@ Patch0034: %{name}-rh841318.patch
 # Patches from upstream
 #
 Patch1035: %{name}-rh845960.patch
+Patch1037: %{name}-rh849203.patch
 
 
 #
@@ -428,6 +429,7 @@ rm -rf %{glibcportsdir}
 %patch0034 -p1
 %patch1035 -p1
 %patch2036 -p1
+%patch1037 -p1
 
 # On powerpc32, hp timing is only available in power4/power6
 # libs, not in base, so pre-power4 dynamic linker is incompatible
@@ -1312,6 +1314,9 @@ rm -f *.filelist*
 %endif
 
 %changelog
+* Fri Aug 25 2012 Jeff Law <law at redhat.com> - 2.16-9
+  - Fix race in intl/* testsuite (#849203)
+
 * Wed Aug 25 2012 Jeff Law <law at redhat.com> - 2.16-8
   - Fix integer overflow leading to buffer overflow in strto* (#847718)
 


More information about the scm-commits mailing list