See http://bugs.gentoo.org/show_bug.cgi?id=200662

Due to a very high time precision on certain filesystems the chance of a
failing compilation increases because make keeps on regenerating
doc.c key.c funs.h.

The attached patch reorders the must_fopen and fclose calls in
info/makedoc.c such that the times associated with these files match the
dependencies specified in the Makefile.*.

Please comment on the patch to verify its correctness.


-- 
Fabian Groffen
Gentoo on a different level
* http://bugs.gentoo.org/show_bug.cgi?id=200662

diff -ru texinfo-4.11.orig/info/makedoc.c texinfo-4.11/info/makedoc.c
--- texinfo-4.11.orig/info/makedoc.c    2007-07-01 23:20:30.000000000 +0200
+++ texinfo-4.11/info/makedoc.c 2007-12-03 17:40:18.241898334 +0100
@@ -144,9 +144,11 @@
       key_filename = NULL_DEVICE;
     }
 
+  /* the order of these files depends exactly on the order in the
+   * Makefile.{in,am}, see also the fclose calls below */
   funs_stream = must_fopen (funs_filename, "w");
-  doc_stream = must_fopen (doc_filename, "w");
   key_stream = must_fopen (key_filename, "w");
+  doc_stream = must_fopen (doc_filename, "w");
 
   fprintf (funs_stream,
       "/* %s -- Generated declarations for Info commands. */\n\n\
@@ -225,9 +227,11 @@
   fprintf (key_stream, "   { (char *)NULL, 0 }\n};\n");
   fprintf (funs_stream, "\n#define A_NCOMMANDS %u\n", next_func_key());
 
+  /* the order of these files depends exactly on the order in the
+   * Makefile.{in,am}, see also the must_fopen calls above */
   fclose (funs_stream);
-  fclose (doc_stream);
   fclose (key_stream);
+  fclose (doc_stream);
 
   if (tags_only)
     maybe_dump_tags (stdout);
diff -ru texinfo-4.11.orig/info/Makefile.am texinfo-4.11/info/Makefile.am
--- texinfo-4.11.orig/info/Makefile.am  2006-06-29 09:58:26.000000000 +0200
+++ texinfo-4.11/info/Makefile.am       2007-12-03 17:41:21.644483827 +0100
@@ -54,6 +54,8 @@
 
 # We need a linear ordering to prevent race condition in parallel make.
 # See the node ``(automake)Multiple Outputs'' for an explanation.
+# Make sure this matches with order in which makedoc.c creates these
+# files.
 doc.c: key.c
 key.c: funs.h
 

Reply via email to