[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Adjust channel definitions for new Automake `ordered' flag.

From: Ralf Wildenhues
Subject: Adjust channel definitions for new Automake `ordered' flag.
Date: Sun, 19 Apr 2009 00:45:44 +0200
User-agent: Mutt/1.5.18 (2008-05-17)

Running 'make autom4te-update' in git Autoconf currently exposes two
issues: move-if-change may not be found but needed (oh well), and
the changes in Automake break building of Autoconf.  Here's why:

Automake has added parallel execution (via perl threads) in upcoming
version 1.11, where separate worker threads generate different files.  To provide a good user experience, the output
message channels have got a new flag "ordered", defaulting to one, and
denoting that the output that comes across this channel from various
threads is to be serialized by the master thread.  That way, automake
can guarantee that the order and contents (esp. duplication of warnings)
for "normal" output is independent of the number of threads used and
their relative execution timing.

Now, this serialization is not possible or even desirable for all sorts
of messages: fatal messages, which abort execution (and thus may never
get through the serialization stage), or verbose messages, which may be
used to debug threaded execution itself, need to be output right away.
As a safety measure to avoid bugs, the code ensures that
these channels are not set to "ordered" mode.

All of the semantics are not really important for Autoconf, as it does
not use threads (and the threads package should not be necessary for
Autoconf either); it's only the safety measures above that should not be
triggered.  This is what the patch below does.

OK to push, and afterwards commit the result of "make autom4te-update"
to Autoconf?  Note that there is no relevant difference between the
Automake git branches "master" and "next" in this area.


    Adjust channel definitions for new Automake `ordered' flag.
    * lib/Autom4te/ (Autom4te::ChannelDefs): Set
    `ordered' flag to zero for channels `fatal', `automake', and
    `verb'.  This has currently no effect on actual semantics but
    avoids a consistency check needed for Automake's usage of the code.

diff --git a/lib/Autom4te/ b/lib/Autom4te/
index fda7264..86520e5 100644
--- a/lib/Autom4te/
+++ b/lib/Autom4te/
@@ -1,4 +1,4 @@
-# Copyright (C) 2002, 2003, 2006, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2006, 2008, 2009 Free Software Foundation, Inc.
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -135,7 +135,7 @@ Informative messages.
 # Do not forget to update &usage and the manual
 # if you add or change a warning channel.
-register_channel 'fatal', type => 'fatal';
+register_channel 'fatal', type => 'fatal', ordered => 0;
 register_channel 'error', type => 'error';
 register_channel 'error-gnu', type => 'error';
 register_channel 'error-gnu/warn', type => 'error';
@@ -144,7 +144,8 @@ register_channel 'automake', type => 'fatal', backtrace => 
   header => ("####################\n" .
             "## Internal Error ##\n" .
-  footer => "\nPlease contact <address@hidden>.";
+  footer => "\nPlease contact <address@hidden>.",
+  ordered => 0;
 register_channel 'cross', type => 'warning', silent => 1;
 register_channel 'gnu', type => 'warning';
@@ -154,7 +155,7 @@ register_channel 'portability', type => 'warning', silent 
=> 1;
 register_channel 'syntax', type => 'warning';
 register_channel 'unsupported', type => 'warning';
-register_channel 'verb', type => 'debug', silent => 1;
+register_channel 'verb', type => 'debug', silent => 1, ordered => 0;
 register_channel 'note', type => 'debug', silent => 0;

reply via email to

[Prev in Thread] Current Thread [Next in Thread]