* lib/Automake/XFile.pm: Don't assume -j is solo.
authorAkim Demaille <akim@epita.fr>
Thu, 23 Oct 2003 14:29:22 +0000 (14:29 +0000)
committerAkim Demaille <akim@epita.fr>
Thu, 23 Oct 2003 14:29:22 +0000 (14:29 +0000)
Issue a more-informative diagnostic.
Problems reported by Eric Sunshine.

ChangeLog
lib/Automake/XFile.pm

index 7959030..eab1278 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2003-10-23  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/Automake/XFile.pm: Don't assume -j is solo.
+       Issue a more-informative diagnostic.
+       Problems reported by Eric Sunshine.
+
 2003-10-21  Alexandre Duret-Lutz  <adl@gnu.org>
 
        * m4/lispdir.m4 (AM_PATH_LISPDIR): Always check for Emacs.
index 8c719e3..279317b 100644 (file)
@@ -223,12 +223,15 @@ sub lock
   # perl was not built with -Ud_flock.  Normally, this problem is harmless,
   # so ignore the ENOLCK errors that are reported in that situation,
   # However, if the invoker is using "make -j", the problem is not harmless,
-  # so report it in that case.  Admittedly this is a bit of a hack.
+  # so report it in that case, by inspecting MAKEFLAGS and looking for
+  # any arguments indicating that the invoker used -j.
+  # Admittedly this is a bit of a hack.
   if (!flock ($fh, $mode)
-      && (!$!{ENOLCK} || " $ENV{'MAKEFLAGS'}" =~ / (-j|--jobs)/))
+      && (!$!{ENOLCK}
+         || " -$ENV{'MAKEFLAGS'}" =~ / (-[BdeikrRsSw]*j|---?jobs)/))
     {
       my $file = $fh->name;
-      fatal "cannot lock $file with mode $mode: $!";
+      fatal "cannot lock $file with mode $mode (perhaps you are running make -j on a lame NFS client?): $!";
     }
 }