bug-gnulib
[Top][All Lists]
Advanced

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

coreutils build on IRIX 6.5


From: Bruno Haible
Subject: coreutils build on IRIX 6.5
Date: Sat, 24 Feb 2007 01:30:53 +0100
User-agent: KMail/1.5.4

Hi Jim,

Building a coreutils snapshot (2007-02-21) from http//meyering.net/cu/
on IRIX 6.5 with the native cc shows one problem: After the c99 patch has been
applied, man/Makefile attempts to rebuild the 'rm.1' manual page. This fails
like this:

    Updating man page rm.1
    Perl 5.005 required--this is only version 5.00404, stopped at ./help2man 
line 24.

because the 'perl' in my path is version 5.004_04, but help2man wants version
5.005 at least.

Two things are wrong here:

  1) The perl.m4 test should not allow perl version 5.003 and 5.004 if they
     are not useful for all of coreutils.

  2) Blindly running $(PERL) will always lead to a failure in such a case.
     After fixing the version in perl.m4, autoconf sets the variable PERL to
        ${SHELL} /build/coreutils-6.7-irix/build-aux/missing --run  perl
     and when the Makefile attempts to create rm.1 the 'missing' script
     still runs "perl help2man ...", leading to the same failure:

        Updating man page rm.1
        Perl 5.005 required--this is only version 5.00404, stopped at 
./help2man line 24.

     Removing the --run flag doesn't help, it just leads to a different
     failure:

        Updating man page rm.1
        WARNING: `perl' is needed, and is missing on your system.
                 You might have modified some files without having the
                 proper tools for further handling them.  Check the `README' 
file,
                 it often tells you about the needed prerequisites for 
installing
                 this package.  You may also peek at any GNU archive site, in 
case
                 some other package would contain this missing `perl' program.
        *** Error code 1 (bu21)

     The 'missing' script is determined to report a failure when it cannot
     run the command. Other failures need to be reported as errors. But
     when 'perl' is missing or not the right version, it's better to install
     an (at most slightly out-of-date) manual page than no manual page at all.

Here is a proposed patch. You can add an
        echo "WARNING: cannot update man page $@ since perl is missing"
to the no-op case in man/Makefile.am if you prefer that to a completely
silent no-op case.


2007-02-23  Bruno Haible  <address@hidden>

        * m4/perl.m4 (gl_PERL): Require version 5.005, not 5.003. Needed for
        help2man.
        * man/Makefile.am (.x.1): If the autoconf test has determined that
        perl is missing or not a sufficient version, do nothing.

--- coreutils-6.7-solaris/m4/perl.m4    Sun Jan 23 09:50:06 2005
+++ coreutils-6.7-irix/m4/perl.m4       Sat Feb 24 00:47:21 2007
@@ -4,7 +4,7 @@
 dnl Find a new-enough version of Perl.
 dnl
 
-# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004 Free Software
+# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2007 Free Software
 # Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
@@ -13,9 +13,9 @@
 
 AC_DEFUN([gl_PERL],
 [
-  dnl FIXME: don't hard-code 5.003
+  dnl FIXME: don't hard-code 5.005
   dnl FIXME: should we cache the result?
-  AC_MSG_CHECKING([for perl5.003 or newer])
+  AC_MSG_CHECKING([for perl5.005 or newer])
   if test "${PERL+set}" = set; then
     # `PERL' is set in the user's environment.
     candidate_perl_names="$PERL"
@@ -31,7 +31,7 @@
   for perl in $candidate_perl_names; do
     # Run test in a subshell; some versions of sh will print an error if
     # an executable is not found, even if stderr is redirected.
-    if ( $perl -e 'require 5.003; use File::Compare' ) > /dev/null 2>&1; then
+    if ( $perl -e 'require 5.005; use File::Compare' ) > /dev/null 2>&1; then
       PERL=$perl
       found=yes
       break
@@ -40,7 +40,7 @@
 
   AC_MSG_RESULT($found)
   test $found = no && AC_MSG_WARN([
-WARNING: You don't seem to have perl5.003 or newer installed, or you lack
+WARNING: You don't seem to have perl5.005 or newer installed, or you lack
          a usable version of the Perl File::Compare module.  As a result,
          you may be unable to run a few tests or to regenerate certain
          files if you modify the sources from which they are derived.
--- coreutils-6.7-solaris/man/Makefile.am       Tue Jan 30 08:19:49 2007
+++ coreutils-6.7-irix/man/Makefile.am  Sat Feb 24 00:54:17 2007
@@ -1,6 +1,6 @@
 # Make coreutils man pages.                            -*-Makefile-*-
 
-# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
 # Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -154,18 +154,23 @@
 # That is necessary to avoid failures for programs that are also shell built-in
 # functions like echo, false, printf, pwd.
 .x.1:
-       @rm -f $@
-       @echo "Updating man page $@";           \
-       rm -rf $t;                              \
-       mkdir $t;                               \
-       (cd $t && $(LN_S) ../../src/$(mapped_name) $*); \
-       $(PERL) -- $(srcdir)/help2man           \
-           --source='$(PACKAGE_STRING)'        \
-           --include=$(srcdir)/$*.x            \
-           --output=$t/$@ $t/$*
-       @sed 's|$*\.td/||g' $t/$@ > $@
-       @chmod a-w $@
-       @rm -rf $t
+       @case $(PERL) in                                        \
+         *"/missing "*) ;;                                     \
+         *)                                                    \
+           rm -f $@                                            \
+           && { echo "Updating man page $@";                   \
+                rm -rf $t;                                     \
+                mkdir $t;                                      \
+                (cd $t && $(LN_S) ../../src/$(mapped_name) $*); \
+                   $(PERL) -- $(srcdir)/help2man               \
+                    --source='$(PACKAGE_STRING)'               \
+                    --include=$(srcdir)/$*.x                   \
+                    --output=$t/$@ $t/$*;                      \
+              }                                                \
+           && sed 's|$*\.td/||g' $t/$@ > $@                    \
+           && chmod a-w $@                                     \
+           && rm -rf $t ;;                                     \
+       esac
 
 check-local: check-x-vs-1 check-programs-vs-x
 





reply via email to

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