From 04f3d2917a270bcdd4da8e040a40af06b921337e Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Nov 20 2008 14:33:52 +0000 Subject: - Rebase to 2.4 - Resolves: #471183 --- diff --git a/.cvsignore b/.cvsignore index 4980d5b..45e50f0 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -bison-2.3.tar.bz2 +bison-2.4.tar.bz2 diff --git a/bison-2.4-reap_subpipe.patch b/bison-2.4-reap_subpipe.patch new file mode 100644 index 0000000..3f72c3e --- /dev/null +++ b/bison-2.4-reap_subpipe.patch @@ -0,0 +1,87 @@ +diff -urp bison-2.4-pm/lib/subpipe.c bison-2.4/lib/subpipe.c +--- bison-2.4-pm/lib/subpipe.c 2008-07-14 10:56:12.000000000 +0200 ++++ bison-2.4/lib/subpipe.c 2008-11-20 14:37:42.000000000 +0100 +@@ -143,7 +143,9 @@ create_subpipe (char const * const *argv + } + + +-/* Wait for the subprocess to exit. */ ++/* Wait for the subprocess to exit. PROGRAM==NULL means errors ++ shouldn't be emitted, typically becuase we are reaping the subpipe ++ in response to some other error. */ + + void + reap_subpipe (pid_t pid, char const *program) +@@ -151,11 +153,14 @@ reap_subpipe (pid_t pid, char const *pro + #if HAVE_WAITPID || defined waitpid + int wstatus; + if (waitpid (pid, &wstatus, 0) < 0) +- error (EXIT_FAILURE, errno, "waitpid"); ++ { ++ if (program) ++ error (EXIT_FAILURE, errno, "waitpid"); ++ } + else + { + int status = WIFEXITED (wstatus) ? WEXITSTATUS (wstatus) : -1; +- if (status) ++ if (status && program) + error (EXIT_FAILURE, 0, + _(status == 126 + ? "subsidiary program `%s' could not be invoked" +diff -urp bison-2.4-pm/src/output.c bison-2.4/src/output.c +--- bison-2.4-pm/src/output.c 2008-11-02 19:09:10.000000000 +0100 ++++ bison-2.4/src/output.c 2008-11-20 14:39:08.000000000 +0100 +@@ -467,6 +467,21 @@ prepare_actions (void) + | Call the skeleton parser. | + `---------------------------*/ + ++static pid_t pid = 0; ++ ++/* Clean up opened pipe. */ ++static void ++die (void) ++{ ++ static int dying = 0; ++ if (pid && !dying) ++ { ++ dying = 1; ++ reap_subpipe (pid, NULL); ++ pid = 0; ++ } ++} ++ + static void + output_skeleton (void) + { +@@ -474,7 +489,6 @@ output_skeleton (void) + FILE *out; + int filter_fd[2]; + char const *argv[9]; +- pid_t pid; + + /* Compute the names of the package data dir and skeleton files. */ + char const m4sugar[] = "m4sugar/m4sugar.m4"; +@@ -586,6 +600,7 @@ output_skeleton (void) + scan_skel (in); + xfclose (in); + reap_subpipe (pid, m4); ++ pid = 0; + timevar_pop (TV_M4); + } + +@@ -653,6 +669,14 @@ prepare (void) + void + output (void) + { ++ /* Register shutdown handler. */ ++ static int registered = 0; ++ if (!registered) ++ { ++ registered = 1; ++ atexit (die); ++ } ++ + obstack_init (&format_obstack); + + prepare_symbols (); diff --git a/bison.spec b/bison.spec index a94392a..5af8a48 100644 --- a/bison.spec +++ b/bison.spec @@ -1,13 +1,14 @@ Summary: A GNU general-purpose parser generator Name: bison -Version: 2.3 -Release: 6%{?dist} +Version: 2.4 +Release: 1%{?dist} License: GPLv2+ Group: Development/Tools Source: ftp://ftp.gnu.org/pub/gnu/bison/bison-%{version}.tar.bz2 +Patch1: bison-2.4-reap_subpipe.patch URL: http://www.gnu.org/software/bison/ BuildRoot: %{_tmppath}/%{name}-root -BuildRequires: m4 >= 1.4 +BuildRequires: m4 >= 1.4 java-1.6.0-openjdk-devel Requires: m4 >= 1.4 Requires(post): /sbin/install-info Requires(preun): /sbin/install-info @@ -61,6 +62,7 @@ Bison manual section for more information. %prep %setup -q +%patch1 -p1 %build %configure @@ -77,6 +79,7 @@ rm -rf $RPM_BUILD_ROOT # Remove unpackaged files. rm -f $RPM_BUILD_ROOT/%{_bindir}/yacc rm -f $RPM_BUILD_ROOT/%{_infodir}/dir +rm -f $RPM_BUILD_ROOT/%{_mandir}/man1/yacc* %find_lang %{name} %find_lang %{name}-runtime @@ -112,6 +115,10 @@ fi rm -rf $RPM_BUILD_ROOT %changelog +* Wed Nov 12 2008 Petr Machata - 2.4-1 +- Rebase to 2.4 +- Resolves: #471183 + * Mon Sep 15 2008 Petr Machata - 2.3-6 - Merge review: - Drop terminating dot from Summary diff --git a/sources b/sources index fbbd0f9..8d8cebd 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -c18640c6ec31a169d351e3117ecce3ec bison-2.3.tar.bz2 +f95cc7d7f5290157a23216391dec610d bison-2.4.tar.bz2