diff mbox

PATCH: import move-if-change from gnulib (was: PATCH: PR binutils/12283: bfd/doc doesn't support parallel build)

Message ID 20110128201452.GM7234@gmx.de
State New
Headers show

Commit Message

Ralf Wildenhues Jan. 28, 2011, 8:14 p.m. UTC
[ adding gcc-patches ]

* Steve Ellcey wrote on Fri, Jan 28, 2011 at 12:57:25AM CET:
> I tried this patch and I think it works.  Before patching I got:
> 
> mv: cannot move `chew.13844' to `chew': Text file busy
> make[3]: *** [chew] Error 1
> make[2]: *** [bfdt.texi] Error 2
> make[2]: *** Waiting for unfinished jobs....
> make[2]: *** Waiting for unfinished jobs....
> make[1]: *** [info-recursive] Error 1
> make: *** [all-bfd] Error 2
> 
> After applying the patch and doing some builds, I still got the mv
> error message about 'cannot move' but the make did not fail.

Thank you for confirming this.

> Perhaps we should change move-if-needed to send the stderr of the mv
> -f to /dev/null like we do with cmpprog.

I don't think that it is generally useful to hide the error output:
in case of a full disk or a real write error, the message can provide
valuable help in diagnosing the cause.  It can otherwise be very tricky
to analyze parallel build failures.

I have meanwhile added an improved and fixed version of my proposed
patch to the (more complete) gnulib copy of move-if-change.  See here:
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/24860/focus=24865

I hereby propose to just import the gnulib copy into GCC and src,
http://git.savannah.gnu.org/cgit/gnulib.git/tree/build-aux/move-if-change
and document the change in status as below in patches to src/MAINTAINERS
and GCC www.  (The Autoconf copy of move-if-change has been updated from
the gnulib one anyway.)

Any reasons against doing so?

Thanks,
Ralf

ChangeLog:
2011-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* MAINTAINERS (mkinstalldirs): Comes from Automake.
	(move-if-change): Comes from gnulib.

Comments

Steve Ellcey Jan. 28, 2011, 9:12 p.m. UTC | #1
On Fri, 2011-01-28 at 21:14 +0100, Ralf Wildenhues wrote:

> 
> I have meanwhile added an improved and fixed version of my proposed
> patch to the (more complete) gnulib copy of move-if-change.  See here:
> http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/24860/focus=24865
> 
> I hereby propose to just import the gnulib copy into GCC and src,
> http://git.savannah.gnu.org/cgit/gnulib.git/tree/build-aux/move-if-change
> and document the change in status as below in patches to src/MAINTAINERS
> and GCC www.  (The Autoconf copy of move-if-change has been updated from
> the gnulib one anyway.)
> 
> Any reasons against doing so?
> 
> Thanks,
> Ralf

I have no objection to this change and I think it will fix things on
most platforms but I have found one platform where I still have a
problem.  On hppa*-*-hpux*, compiling the same program twice in a row
does not result in the exact same executable.  So even with this change
the cmp will fail and the build will still abort like it does now.
During a GCC bootstrap build we work around these issues by using:

cmp --ignore-initial=16

to compare stage2 and stage3 bits.  And we also have to do the GCC
compilation with -frandom-seed=fixed-seed to avoid other differences in
object files.

But for some reason doing both of these still didn't get this to work
for me on the hppa platform.  I was still getting failures in the cmp
check, even with the --ignore-initial flag and the use of -frandom-seed
when compiling chew.

I wonder if it would be reasonable to add a configure flag to bfd that
would enforce the chew dependency (--enable-parallel-doc or something
like that).  It would be off by default but if specified then we would
enforce the chew dependency and parallel builds would just work
normally.
diff mbox

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
index a471c90..046c5ea 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -38,7 +38,7 @@  config.guess; config.sub; readline/support/config.{sub,guess}
 		binutils@sourceware.org
 		gdb-patches@sourceware.org
 
-depcomp
+depcomp; mkinstalldirs
         Send bug reports and patches to bug-automake@gnu.org.
 
 gdb/; readline/; sim/; GDB's part of include/
@@ -69,12 +69,8 @@  ltconfig; ltmain.sh; ltcf-*.sh
 	sources or submitted to the master file maintainer and brought
 	in via a merge.
 
-mkinstalldirs; move-if-change
-	autoconf: http://gnu.org
-	Patches to autoconf-patches@gnu.org.
-	Changes need to be done in tandem with the official AUTOCONF
-	sources or submitted to the master file maintainer and brought
-	in via a merge.
+move-if-change
+	Send bug reports and patches to bug-gnulib@gnu.org.
 
 symlink-tree
 	gcc: http://gcc.gnu.org




Index: codingconventions.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/codingconventions.html,v
retrieving revision 1.62
diff -u -r1.62 codingconventions.html
--- codingconventions.html	8 Jan 2011 12:12:42 -0000	1.62
+++ codingconventions.html	28 Jan 2011 20:13:41 -0000
@@ -490,6 +490,11 @@ 
 symlink-tree and ylwrap:  These are copied from mainline automake, using
 <code>automake --add-missing --copy --force-missing</code>.</li>
 
+<li>move-if-change:  gnulib hosts this now.  The latest version can be
+retrieved from
+<a href="http://git.savannah.gnu.org/cgit/gnulib.git/plain/build-aux/move-if-change">http://git.savannah.gnu.org/cgit/gnulib.git/plain/build-aux/move-if-change</a>.
+</li>
+
 <li>Top-level config.rpath:  This comes originally from gettext, but
 gnulib can be considered upstream.  The latest version can be retrieved
 from