groff
[Top][All Lists]
Advanced

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

Re: [Groff] new automake system


From: Ingo Schwarze
Subject: Re: [Groff] new automake system
Date: Mon, 22 Sep 2014 22:38:40 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Hi Bertrand,

Bertrand Garrigues wrote on Sun, Sep 21, 2014 at 09:14:27PM +0200:

> With commit a88127a4fecb307f26f2e217213d4a90e300d220 the automake2
> branch is now ready for more testing from other members of the list.

Here are some experiences and suggestions:

   $ ./bootstrap 2>&1
  ./bootstrap: Error: 'autoconf' not found
  ./bootstrap: Error: 'automake' not found

  ./bootstrap: Please install the prerequisite programs
   $ which autoconf
  /usr/local/bin/autoconf
   $ which automake 
  /usr/local/bin/automake
   $ autoconf --version
  Provide an AUTOCONF_VERSION environment variable, please
   $ echo $?
  127
   $ (cd /usr/local/bin/; ls auto*)
  autoconf         autoheader-2.67  automake-1.9     autoscan-2.65
  autoconf-2.13    autoheader-2.68  autopoint        autoscan-2.67
  autoconf-2.59    autoheader-2.69  autoreconf       autoscan-2.68
  autoconf-2.61    autoinst         autoreconf-2.13  autoscan-2.69
  autoconf-2.62    autom4te         autoreconf-2.59  autoupdate
  autoconf-2.63    autom4te-2.59    autoreconf-2.61  autoupdate-2.13
  autoconf-2.65    autom4te-2.61    autoreconf-2.62  autoupdate-2.59
  autoconf-2.67    autom4te-2.62    autoreconf-2.63  autoupdate-2.61
  autoconf-2.68    autom4te-2.63    autoreconf-2.65  autoupdate-2.62
  autoconf-2.69    autom4te-2.65    autoreconf-2.67  autoupdate-2.63
  autoheader       autom4te-2.67    autoreconf-2.68  autoupdate-2.65
  autoheader-2.13  autom4te-2.68    autoreconf-2.69  autoupdate-2.67
  autoheader-2.59  autom4te-2.69    autoscan-2.13    autoupdate-2.68
  autoheader-2.61  automake         autoscan-2.59    autoupdate-2.69
  autoheader-2.62  automake-1.11    autoscan-2.61
  autoheader-2.63  automake-1.12    autoscan-2.62
  autoheader-2.65  automake-1.14    autoscan-2.63

So this code in ./bootstrap is suboptimal:

  check_exists() {
    ($1 --version </dev/null) >/dev/null 2>&1

That deliberately hides the error message from the user
and displays a bogus message instead, so you might wish to refrain
from hiding stderr.

You might also wish to add a sentence like the following to
INSTALL.REPO, right after "1. Initial build", before "First invoke
the bootstrap script:"

  On operating systems supporting concurrent installation of multiple
  versions of the autotools, set the following environment variables:

  export AUTOMAKE_VERSION=1.12
  export AUTOCONF_VERSION=2.65

The following line in the output of ./bootstrap looks suspicious:

  You may need to add #include directives for the following .h files.
    #include <wchar.h>

I tried to read the source code of gnulib/gnulib-tool to find out
what is going on here, but even though it has multiple lines of
comments, it seems completely incomprehensible to me and i don't
have the least idea what it's trying to do and complaining about.
Most certainly i do have wchar.h installed, in any case:

   $ ls /usr/include/wchar.h                                     
  /usr/include/wchar.h

Regarding the configure script, here is a list of things it gets
wrong:

 - it prefers /usr/local/bin/ggrep over /usr/bin/grep in both
   of the following tests:
   checking for grep that handles long lines and -e...
   checking for egrep...

 - it prefers /usr/local/bin/gmkdir over /bin/mkdir in the test
   checking for a thread-safe mkdir -p

 - checking for style of include used by make... GNU
   that makes no sense at all, it's a POSIX-compatible BSD make

 - it prefers /usr/local/bin/gsed over /usr/bin/sed

 - it prefers /usr/local/bin/bison over /usr/bin/yacc

Prefering the GNU versions over the native POSIX versions is bad
because it causes needless build dependencies.

And then finally, "make" dies here:

  FILEMODE=`echo contrib/groffer/roff2dvi.man | \
    sed 's|contrib/groffer/roff2\([a-z]\+\)\.man|\1|g'` && \
    sed -e 's/address@hidden@]/'"$FILEMODE"'/g' \
    ../contrib/groffer/roff2.man > contrib/groffer/roff2dvi.man;
  sed: 1: "s/address@hidden@]/contr ...: bad flag in substitute command: 'r'
  *** Error 1 in . (Makefile:8589 'contrib/groffer/roff2dvi.man')
  *** Error 1 in /co/groff/build (Makefile:3713 'all')

The problem here is that basic regular expressions don't have a "+"
bound.  So the subexpression needs to be written as

  \([a-z][a-z]*\)

or alternatively, one could switch to extended regular expressions.

With that issue fixed, the build finishes.  I can't say yet
whether it's correct and works.

I didn't come round to testing "make dist" yet, but wanted to report
what i found so far, anyway.

Yours,
  Ingo



reply via email to

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