summary refs log tree commit diff
path: root/INSTALL
diff options
context:
space:
mode:
authorJuro Bystricky <juro.bystricky@intel.com>2017-11-30 21:21:15 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-11-30 21:21:15 +0000
commit1faaf7035cabda101e1d6653bff7a539f201db91 (patch)
tree8563d28593f48f5ac5229db74c2e79db2fe917b2 /INSTALL
parentbd6ea9edd1708c7b0166af685a676b91e5b5950d (diff)
downloadglibc-1faaf7035cabda101e1d6653bff7a539f201db91.tar.gz
glibc-1faaf7035cabda101e1d6653bff7a539f201db91.tar.xz
glibc-1faaf7035cabda101e1d6653bff7a539f201db91.zip
plural.c: improve reproducibility
There is a subtle non-determinism when building glibc.
This depends on whether the glibc is built using the distibuted
file intl/plural.c or built using the generated file intl/plural.c.
These two files (intl/plural.c generated vs. distributed) are slightly
different, hence we may end up with slightly different libraries.

Originally, having "bison" installed was optional. So if "bison" was
not present, we always built libraries with the distributed plural.c.
If bison was installed, we *** may have *** replaced the distributed
file plural.c with a new plural.c generated from plural.y. if the
timestamps triggered this rule:

plural.c plural.y
	$(BISON) $(BISONFLAGS) $@ $^

Given that timestamps are not preserved in GIT repositories, the above
rule is not reliable without explicitly touching plural.c or plural.y.
In other words, the rule may or may not have fired.

In summary: there are two distinct sources of non-determinism:

1. Having "bison" installed or not
2. Having "bison" installed but timestamps poorly defined.

This patch fixes this by requiring "bison" being installed
and by always generating intl/plural.c from intl/plural.y.
(This is achieved by simply removing checked-in intl/plural.c)

	[BZ #22432]
	* configure.ac (BISON): Require to be present.
	* configure: Regenerated.
	* intl/Makefile (generated): Add plural.c.
	[$(BISON) != no]: Make code unconditional.
	(plural.c): Change rule to $(objpfx)plural.c.
	($(objpfx)plural.o): Depend on $(objpfx)plural.c.
	* intl/plural.c: Remove.
	* manual/install.texi (Tools for Compilation): Document bison as
	required.
	* INSTALL: Regenerated.
Diffstat (limited to 'INSTALL')
-rw-r--r--INSTALL10
1 files changed, 5 insertions, 5 deletions
diff --git a/INSTALL b/INSTALL
index ac8db74a0f..d1a34c2a90 100644
--- a/INSTALL
+++ b/INSTALL
@@ -462,6 +462,11 @@ build the GNU C Library:
      version 4.1.3 is the newest verified to work to build the GNU C
      Library.
 
+   * GNU 'bison' 2.7 or later
+
+     'bison' is used to generate the 'yacc' parser code in the 'intl'
+     subdirectory.
+
    * Perl 5
 
      Perl is not required, but it is used if present to test the
@@ -481,11 +486,6 @@ and if you change any of the message translation files you will need
 
    * GNU 'gettext' 0.10.36 or later
 
-If you wish to regenerate the 'yacc' parser code in the 'intl'
-subdirectory you will need
-
-   * GNU 'bison' 2.7 or later
-
 You may also need these packages if you upgrade your source tree using
 patches, although we try to avoid this.