* bootstrap.conf (bootstrap_sync): True again.
It was disabled while waiting for changes to be integrated
in gnulib's bootstrap, which was done long ago.
* bootstrap, gnulib: Update.
Exit status 63 is documented for version-mismatch.
* bootstrap.conf (gnulib_modules): Remove sysexits.
* src/system.h (EX_MISMATCH): Define.
* src/parse-gram.y (version_check): Use it instead of EX_CONFIG.
Missing includes.
* tests/calc.at, tests/named-refs.at: Include assert.h.
(cherry picked from commit 459a57a90f)
Exit status 63 is documented for version-mismatch.
* bootstrap.conf (gnulib_modules): Remove sysexits.
* src/system.h (EX_MISMATCH): Define.
* src/parse-gram.y (version_check): Use it instead of EX_CONFIG.
Missing includes.
* tests/calc.at, tests/named-refs.at: Include assert.h.
* bootstrap.conf (gnulib_modules): Require progname.
* src/complain.c, src/getargs.c, src/getargs.h, src/main.c: Use it.
* cfg.mk (exclude): New.
Use it.
Skip lib/main.c for bindtextdomain and set_program_name.
(cherry picked from commit 4d699f44e6)
Conflicts:
cfg.mk
* bootstrap.conf (gnulib_modules): Require progname.
* src/complain.c, src/getargs.c, src/getargs.h, src/main.c: Use it.
* cfg.mk (exclude): New.
Use it.
Skip lib/main.c for bindtextdomain and set_program_name.
* cfg.mk (local-checks-to-skip): No longer skip it.
* bootstrap.conf (gnulib_modules): Add sysexits.
* doc/bison.texinfo, etc/bench.pl.in, src/parse-gram.y,
* src/system.h, tests/calc.at, tests/named-refs.at: Use assert
where appropriate instead of "if (...) exit".
Use symbolic exit status elsewhere.
Standard output was never explicitly closed, so we could not
detect failure. Thus, bison would ignore the errors of writing
to a full file system and getting an I/O error on write, but only
for standard output, e.g., for --print-localedir, --print-datadir,
--help and some verbose output.
Now, "bison --print-datadir > /dev/full" reports the write failure:
bison: write error: No space left on device
Before, it would exit 0 with no diagnostic, implying success.
This is not an issue for "--output=-" or the other FILE-accepting
command-line options, because unlike most other GNU programs,
an output file argument of "-" is treated as the literal "./-",
rather than standard output.
* bootstrap.conf (gnulib_modules): Add closeout.
* src/main.c: Include "closeout.h".
Use atexit to ensure we close stdout.
* .gitignore: Ignore new files pulled in via gnulib-tool.
(cherry picked from commit acb5895680)
Conflicts:
m4/.gitignore
Standard output was never explicitly closed, so we could not
detect failure. Thus, bison would ignore the errors of writing
to a full file system and getting an I/O error on write, but only
for standard output, e.g., for --print-localedir, --print-datadir,
--help and some verbose output.
Now, "bison --print-datadir > /dev/full" reports the write failure:
bison: write error: No space left on device
Before, it would exit 0 with no diagnostic, implying success.
This is not an issue for "--output=-" or the other FILE-accepting
command-line options, because unlike most other GNU programs,
an output file argument of "-" is treated as the literal "./-",
rather than standard output.
* bootstrap.conf (gnulib_modules): Add closeout.
* src/main.c: Include "closeout.h".
Use atexit to ensure we close stdout.
* .gitignore: Ignore new files pulled in via gnulib-tool.
Updating to the latest bootstrap from gnulib involves more of a
change than usual, and updating to the latest gnulib would involve
its own set of challenges with the upcoming quoting changes, so
we update bootstrap manually and separately.
* bootstrap: Update from gnulib.
* lib/Makefile.am: Initialize more variables to empty, so that gnulib.mk
can append to them with "+=".
* bootstrap.conf (gnulib_mk_hook): Remove. No longer honored.
(gnulib_tool_option_extras): Generate gnulib.mk.
(cherry picked from commit 85ad742d4e)
Conflicts:
Makefile.am
bootstrap.conf
etc/prefix-gnulib-mk
This script hard-coded "libbison" and lib/gnulib.mk.
Adjust the script to require a --lib-name=$gnulib_name option
and a FILE argument like lib/$gnulib_mk.
Also add support for --help and --version.
* etc/prefix-gnulib-mk: Generalize.
* bootstrap.conf (bootstrap_post_import_hook): Update its invocation.
* bootstrap.conf (gnulib_modules): Add gpl-3.0.
* doc/gpl-3.0.texi: Remove from version control, now that
we get it via gnulib.
* doc/.gitignore: Ignore it.
(cherry picked from commit b87414a05e)
Updating to the latest bootstrap from gnulib involves more of a
change than usual, and updating to the latest gnulib would involve
its own set of challenges with the upcoming quoting changes, so
we update bootstrap manually and separately.
* bootstrap: Update from gnulib.
* Makefile.am: Initialize more variables to empty, so that gnulib.mk
can append to them with "+=".
* bootstrap.conf (gnulib_mk_hook): Remove. No longer honored.
(bootstrap_post_import_hook): Instead, run the same command,
etc/prefix-gnulib-mk lib/$gnulib_mk, via slightly different API.
Temporarily disable "bootstrap_sync=true".
* etc/prefix-gnulib-mk: Don't prepend "lib/" to tokens like -I$(...
or "\".
* bootstrap.conf (gnulib_modules): Add gpl-3.0.
* doc/gpl-3.0.texi: Remove from version control, now that
we get it via gnulib.
* doc/.gitignore: Ignore it.
* bootstrap.conf (gnulib_modules): Add all modules suggested by
-DGNULIB_POSIXCHECK.
* src/files.c (file_name_split)
* src/getargs.c (getargs)
* src/location.c (boundary_set_from_string)
* src/output.c (output_skeleton)
* src/parse-gram.y (prologue_declaration)
* src/scan-gram.l (handle_syncline)
* src/symtab.c (symbol_new): Use mbschr and mbsrchr instead of
strchr and strrchr. In the cases of command-line options, file
names, and thus locations, functionality may be improved. In the
case of symbol names, there should be no functional difference as
all characters are ASCII, so the intended benefit is just warning
suppression.
(cherry picked from commit d143e9c33f)
Conflicts:
src/output.c
src/parse-gram.c
src/parse-gram.h
* bootstrap.conf (gnulib_modules): Add all modules suggested by
-DGNULIB_POSIXCHECK.
* src/files.c (file_name_split)
* src/getargs.c (getargs)
* src/location.c (boundary_set_from_string)
* src/output.c (token_definitions_output, output_skeleton)
* src/parse-gram.y (prologue_declaration)
* src/scan-gram.l (handle_syncline)
* src/symtab.c (symbol_new): Use mbschr and mbsrchr instead of
strchr and strrchr. In the cases of command-line options, file
names, and thus locations, functionality may be improved. In the
case of symbol names, there should be no functional difference as
all characters are ASCII, so the intended benefit is just warning
suppression.
* README-hacking (Updating a submodule): Give advice on how to
determine the versions of gnulib and autoconf to which we should
update.
(Release Procedure): Note that submodules should be updated.
* bootstrap.conf (gnulib_modules): Rename pipe to spawn-pipe as
suggested in updated gnulib NEWS.
* gnulib: Choose a stable snapshot according to advice in Bison's
README-hacking.
* po/POTFILES.in (lib/pipe.c): Rename to...
(lib/spawn-pipe.c): ... this.
* src/output.c: Update to include spawn-pipe.h.
* submodules/autoconf: Update to latest for improvement in m4.m4
that excludes M4 with buggy strstr. The only other changes to
files that we use are copyright updates.
(cherry picked from commit a898435b25)
Conflicts:
build-aux/.gitignore
* README-hacking (Updating a submodule): Give advice on how to
determine the versions of gnulib and autoconf to which we should
update.
(Release Procedure): Note that submodules should be updated.
* bootstrap.conf (gnulib_modules): Rename pipe to spawn-pipe as
suggested in updated gnulib NEWS.
* gnulib: Choose a stable snapshot according to advice in Bison's
README-hacking.
* po/POTFILES.in (lib/pipe.c): Rename to...
(lib/spawn-pipe.c): ... this.
* src/output.c: Update to include spawn-pipe.h.
* submodules/autoconf: Update to latest for improvement in m4.m4
that excludes M4 with buggy strstr. The only other changes to
files that we use are copyright updates.
* .x-update-copyright: Add entry for bootstrap.
* bootstrap: Remove 2011 from copyright years. The bootstrap
version we're currently using comes from an older version of
gnulib.
* bootstrap.conf (bootstrap_sync): Add comments explaining this
issue.
(cherry picked from commit 355bdbdc72)
* .x-update-copyright: Add entry for bootstrap.
* bootstrap: Remove 2011 from copyright years. The bootstrap
version we're currently using comes from an older version of
gnulib.
* bootstrap.conf (bootstrap_sync): Add comments explaining this
issue.
Now, whenever we update bison's copy of gnulib, bootstrap will
update itself the next time it's run.
* bootstrap: Copy from latest gnulib for bootstrap_sync support.
* bootstrap.conf (bootstrap_sync): Set to true.
* gnulib: Update to latest so bootstrap is in sync now.
(cherry picked from commit 10bae98af2)
Now, whenever we update bison's copy of gnulib, bootstrap will
update itself the next time it's run.
* bootstrap: Copy from latest gnulib for bootstrap_sync support.
* bootstrap.conf (bootstrap_sync): Set to true.
* gnulib: Update to latest so bootstrap is in sync now.
* .cvsignore, build-aux/.cvsignore, doc/.cvsignore, etc/.cvsignore:
* examples/calc++/.cvsignore, lib/.cvsignore, m4/.cvsignore:
* po/.cvsignore, runtime-po/.cvsignore, src/.cvsignore:
* tests/.cvsignore: Remove; I don't use CVS to maintain Bison
anymore and don't know of anybody else who does. If someone needs
these files, they can resurrect them.
* .gitignore, build-aux/.gitignore, doc/.gitignore, lib/.gitignore:
* m4/.gitignore, po/.gitignore, runtime-po/.gitignore:
Omit leading '/', since bootstrap omits it.
Adjust file names to match current contents better.
* bootstrap: Sync from gnulib: this contains the new gnulib_mk_hook
installed just for us.
* bootstrap.conf (excluded_files): Don't exclude codeset.m4,
glibc21.m4, inttypes_h.m4, size_max.m4, xsize.m4, as they are now
needed somehow. Don't have time to look into why.
(gnulib_modules): Change malloc to malloc-gnu. Do we really assume
the GNU malloc behavior, where malloc (0) != NULL unless we're
out of storage? If not, we can omit malloc-gnu; but for now I left
it in to be safe.
(vc_ignore): Remove.
* README-hacking: Renamed from HACKING, since gnulib bootstrap now
uses that convention.
(cherry picked from commit 95aed8db15)
Conflicts:
bootstrap
build-aux/.cvsignore
build-aux/.gitignore
doc/.cvsignore
doc/.gitignore
etc/.cvsignore
m4/.cvsignore
m4/.gitignore
src/.cvsignore
src/.gitignore
tests/.cvsignore
* .cvsignore, build-aux/.cvsignore, doc/.cvsignore, etc/.cvsignore:
* examples/calc++/.cvsignore, lib/.cvsignore, m4/.cvsignore:
* po/.cvsignore, runtime-po/.cvsignore, src/.cvsignore:
* tests/.cvsignore: Remove; I don't use CVS to maintain Bison
anymore and don't know of anybody else who does. If someone needs
these files, they can resurrect them.
* .gitignore, build-aux/.gitignore, doc/.gitignore, lib/.gitignore:
* m4/.gitignore, po/.gitignore, runtime-po/.gitignore:
Omit leading '/', since bootstrap omits it.
Adjust file names to match current contents better.
* bootstrap: Sync from gnulib: this contains the new gnulib_mk_hook
installed just for us.
* bootstrap.conf (excluded_files): Don't exclude codeset.m4,
glibc21.m4, inttypes_h.m4, size_max.m4, xsize.m4, as they are now
needed somehow. Don't have time to look into why.
(gnulib_modules): Change malloc to malloc-gnu. Do we really assume
the GNU malloc behavior, where malloc (0) != NULL unless we're
out of storage? If not, we can omit malloc-gnu; but for now I left
it in to be safe.
(vc_ignore): Remove.
(gnulib_mk_hook): New function.
* README-hacking: Renamed from HACKING, since gnulib bootstrap now
uses that convention.
M4's output pipe was not being drained upon fatal errors during
scan_skel. As a result, broken-pipe messages from M4 were seen
on at least AIX, HP-UX, Solaris, and RHEL4, and this caused a
failure in the test suite. The problem was that, on platforms
where the default disposition for SIGPIPE is ignore instead of
terminate, M4 sometimes saw fwrite fail with errno=EPIPE and
then reported it. However, there's some sort of race condition,
because the new test group occasionally succeeded.
Reported by Albert Chin at
<http://lists.gnu.org/archive/html/bug-bison/2010-02/msg00004.html>.
There were also problems with the test suite livelocking on
Tru64 5.1b. Reported by Didier Godefroy at
<http://lists.gnu.org/archive/html/bug-bison/2009-05/msg00005.html>.
Switching to create_pipe_bidi suggested by Akim Demaille.
To attempt to solve both of these problems, switch to gnulib's
create_pipe_bidi and register M4 process as a slave. Along the
way, clean up file name conflict handling, which was affected by
the broken-pipe problem before the switch.
* NEWS (2.4.2): Document.
* THANKS (Didier Godefroy): Add.
* bootstrap.conf (gnulib_modules): Add pipe.
* gnulib: Update to latest to make sure we have all the latest
fixes.
* lib/local.mk (lib_libbison_a_SOURCES): Remove subpipe.h and
subpipe.c.
* po/POTFILES.in (lib/subpipe.c): Remove.
* src/files.c (compute_output_file_names): Update invocations
of output_file_name_check.
(output_file_name_check): In the case that the grammar file
would be overwritten, use complain instead of fatal, but replace
the output file name with /dev/null. Use the /dev/null solution
for the case of two conflicting output files as well because it
seems safer in case Bison one day tries to open both files at
the same time.
* src/files.h (output_file_name_check): Update prototype.
* src/output.c (output_skeleton): Use create_pipe_bidi and
wait_subprocess. Assert that scan_skel completely drains the
pipe.
* src/scan-skel.l (at_directive_perform): Update
output_file_name_check invocation.
* tests/output.at (AT_CHECK_CONFLICTING_OUTPUT): Check that the
grammar file actually isn't overwritten.
(Conflicting output files: -o foo.y): Update expected output.
* tests/skeletons.at (Fatal errors but M4 continues producing
output): New test group.
(cherry picked from commit 22cc8d813e)
Conflicts:
NEWS
bootstrap.conf
lib/.cvsignore
lib/.gitignore
lib/Makefile.am
m4/.cvsignore
m4/.gitignore
src/output.c
M4's output pipe was not being drained upon fatal errors during
scan_skel. As a result, broken-pipe messages from M4 were seen
on at least AIX, HP-UX, Solaris, and RHEL4, and this caused a
failure in the test suite. The problem was that, on platforms
where the default disposition for SIGPIPE is ignore instead of
terminate, M4 sometimes saw fwrite fail with errno=EPIPE and
then reported it. However, there's some sort of race condition,
because the new test group occasionally succeeded.
Reported by Albert Chin at
<http://lists.gnu.org/archive/html/bug-bison/2010-02/msg00004.html>.
There were also problems with the test suite livelocking on
Tru64 5.1b. Reported by Didier Godefroy at
<http://lists.gnu.org/archive/html/bug-bison/2009-05/msg00005.html>.
Switching to create_pipe_bidi suggested by Akim Demaille.
To attempt to solve both of these problems, switch to gnulib's
create_pipe_bidi and register M4 process as a slave. Along the
way, clean up file name conflict handling, which was affected by
the broken-pipe problem before the switch.
* NEWS (2.4.2): Document.
* THANKS (Didier Godefroy): Add.
* bootstrap.conf (gnulib_modules): Add pipe.
* gnulib: Update to latest to make sure we have all the latest
fixes.
* lib/Makefile.am (libbison_a_SOURCES): Remove subpipe.h and
subpipe.c.
* po/POTFILES.in (lib/subpipe.c): Remove.
* src/files.c (compute_output_file_names): Update invocations
of output_file_name_check.
(output_file_name_check): In the case that the grammar file
would be overwritten, use complain instead of fatal, but replace
the output file name with /dev/null. Use the /dev/null solution
for the case of two conflicting output files as well because it
seems safer in case Bison one day tries to open both files at
the same time.
* src/files.h (output_file_name_check): Update prototype.
* src/output.c (output_skeleton): Use create_pipe_bidi and
wait_subprocess. Assert that scan_skel completely drains the
pipe.
* src/scan-skel.l (at_directive_perform): Update
output_file_name_check invocation.
* tests/output.at (AT_CHECK_CONFLICTING_OUTPUT): Check that the
grammar file actually isn't overwritten.
(Conflicting output files: -o foo.y): Update expected output.
* tests/skeletons.at (Fatal errors but M4 continues producing
output): New test group.
(cherry picked from commit 22cc8d813e)
Conflicts:
NEWS
bootstrap.conf
lib/.cvsignore
lib/.gitignore
m4/.cvsignore
m4/.gitignore
src/output.c
Reported by Eric Blake. See discussions at
<http://lists.gnu.org/archive/html/bug-bison/2009-09/msg00008.html>
and
<http://lists.gnu.org/archive/html/bug-gnulib/2009-10/msg00108.html>.
* HACKING (Release checks): Suggest -DGNULIB_POSIXCHECK.
* bootstrap.conf (gnulib_modules): Add all the printf modules
suggested by -DGNULIB_POSIXCHECK. Add realloc-posix as
suggested by -DGNULIB_POSIXCHECK for gnulib's own vasnprintf.c.
(excluded_files): Remove m4/printf-posix.m4.
* tests/atlocal.in (LIBS): As for LDADD in src/Makefile.am, add
lib/libbison.a so gnulib libraries can be linked.
(cherry picked from commit 5c99151aeb)
Conflicts:
lib/.cvsignore
lib/.gitignore
m4/.cvsignore
m4/.gitignore
Reported by Eric Blake. See discussions at
<http://lists.gnu.org/archive/html/bug-bison/2009-09/msg00008.html>
and
<http://lists.gnu.org/archive/html/bug-gnulib/2009-10/msg00108.html>.
* HACKING (Release checks): Suggest -DGNULIB_POSIXCHECK.
* bootstrap.conf (gnulib_modules): Add all the printf modules
suggested by -DGNULIB_POSIXCHECK. Add realloc-posix as
suggested by -DGNULIB_POSIXCHECK for gnulib's own vasnprintf.c.
(excluded_files): Remove m4/printf-posix.m4.
* tests/atlocal.in (LIBS): As for LDADD in src/local.mk, add
lib/libbison.a so gnulib libraries can be linked.
* bootstrap.conf (gnulib_modules): Add assert module.
* src/system.h (aver): Define as assert, and summarize the
discussion on this issue.
(cherry picked from commit ca01f454f0)