This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug build/22432] Non-deterministic build


https://sourceware.org/bugzilla/show_bug.cgi?id=22432

--- Comment #5 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  1faaf7035cabda101e1d6653bff7a539f201db91 (commit)
      from  bd6ea9edd1708c7b0166af685a676b91e5b5950d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1faaf7035cabda101e1d6653bff7a539f201db91

commit 1faaf7035cabda101e1d6653bff7a539f201db91
Author: Juro Bystricky <juro.bystricky@intel.com>
Date:   Thu Nov 30 21:21:15 2017 +0000

    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.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog           |   14 +
 INSTALL             |   10 +-
 NEWS                |    3 +-
 configure           |  128 ++--
 configure.ac        |    7 +-
 intl/Makefile       |    9 +-
 intl/plural.c       | 2011 ---------------------------------------------------
 manual/install.texi |   14 +-
 8 files changed, 98 insertions(+), 2098 deletions(-)
 delete mode 100644 intl/plural.c

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]