[Top][All Lists]

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

Re: findutils-4.2.27: build feedback

From: James Youngman
Subject: Re: findutils-4.2.27: build feedback
Date: Sat, 10 Dec 2005 20:31:46 +0000
User-agent: Mutt/1.5.9i

On Fri, Dec 09, 2005 at 08:16:32AM -0700, Nelson H. F. Beebe wrote:
> Yesterday, I did builds of findutils-4.2.27 on about 20 flavors of
> Unix, and almost all went flawlessly and passed their validation
> tests.

Many thanks.  This is very valuable feedback.  

> "file normalize "../../find/find""
>     invoked from within

This is a known bug, see 

In effect the test suite assumes a later version of Tcl than you
actually have installed.  The configure script should detect this and
do something sensible (disable the test suite, avoid the 'locate'
tests, etc.).

As explained in the bug report, I did make a patch for fixing this,
but it broke 'make distcheck' so I backed it out again.

> ------------------------------------------------------------------------
> Machinetype:            Intel Pentium III (600 MHz);    NetBSD 1.6 (GENERIC)
> Remote gcc version:     gcc (GCC) 3.4.3
> Remote g++ version:     g++ (GCC) 3.4.3
> Configure environment:  CC=gcc CXX=g++ LDFLAGS=-Wl,-rpath,/usr/local/lib
> if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../gnulib/lib -I../lib -I../gnulib/lib 
> -I../intl -DLOCALEDIR=\"/usr/local/share/locale\"  -I/usr/local/include  -g 
> -O2 -MT parser.o -MD -MP -MF ".deps/parser.Tpo" -c -o parser.o parser.c; \
> then mv -f ".deps/parser.Tpo" ".deps/parser.Po"; else rm -f 
> ".deps/parser.Tpo"; exit 1; fi
> parser.c:231: error: `parse_libintl_fprintf' undeclared here (not in a 
> function)

Chuckle.  The table of primaries in parser.c uses naked words like
fprintf, printf, exec, and so on.  The implementation is free to make
those macros (though the function form must exist to) which breaks the
compilation.  This is obviously a bug in findutils, and the following
patch should fix it:-

Index: find/parser.c
RCS file: /cvsroot/findutils/findutils/find/parser.c,v
retrieving revision
retrieving revision
diff -u -r1.79.2.2 -r1.79.2.3
--- find/parser.c       10 Dec 2005 19:47:30 -0000
+++ find/parser.c       10 Dec 2005 20:03:40 -0000
@@ -202,7 +202,7 @@

 static struct parser_table const parse_table[] =
-  PARSE_PUNCTUATION("!",                     negate),
+ PARSE_PUNCTUATION("!",                     negate),
   PARSE_PUNCTUATION("not",                   negate),       /* GNU */
   PARSE_PUNCTUATION("(",                     openparen),
   PARSE_PUNCTUATION(")",                     closeparen),
@@ -220,13 +220,13 @@
   PARSE_OPTION     ("d",                     d), /* Mac OS X, FreeBSD, NetBSD, 
OpenBSD, but deprecated  in favour of -depth */
   PARSE_OPTION     ("depth",                 depth),
   PARSE_TEST       ("empty",                 empty),        /* GNU */
-  PARSE_ACTION     ("exec",                  exec),
+  {ARG_ACTION,      "exec",    parse_exec, pred_exec}, /* POSIX */
   PARSE_ACTION     ("execdir",               execdir), /* *BSD, GNU */
   PARSE_ACTION     ("fls",                   fls),          /* GNU */
   PARSE_POSOPT     ("follow",                follow),  /* GNU, Unix */
   PARSE_ACTION     ("fprint",                fprint),       /* GNU */
   PARSE_ACTION     ("fprint0",               fprint0),      /* GNU */
-  PARSE_ACTION     ("fprintf",               fprintf),      /* GNU */
+  {ARG_ACTION,      "fprintf", parse_fprintf, pred_fprintf}, /* GNU */
   PARSE_TEST       ("fstype",                fstype),  /* GNU, Unix */
   PARSE_TEST       ("gid",                   gid),          /* GNU */
   PARSE_TEST       ("group",                 group),
@@ -263,7 +263,7 @@
   PARSE_TEST       ("perm",                  perm),
   PARSE_ACTION     ("print",                 print),
   PARSE_ACTION     ("print0",                print0),       /* GNU */
-  PARSE_ACTION_NP  ("printf",                printf),       /* GNU */
+  {ARG_ACTION,      "printf",   parse_printf, NULL},        /* GNU */
   PARSE_ACTION     ("prune",                 prune),
   PARSE_ACTION     ("quit",                  quit),         /* GNU */
   PARSE_TEST       ("regex",                 regex),        /* GNU */

> /usr/bin/cc -DHAVE_CONFIG_H -I. -I. -I.. -I../gnulib/lib -I../lib 
> -I../gnulib/lib -I../intl -DLOCALEDIR=\"/usr/local/share/locale\"  
> -I/usr/local/include  -g -O2 -c parser.c
> parser.c:231: `parse_libintl_fprintf' undeclared here (not in a function)

Same as above.

> ------------------------------------------------------------------------
> Machinetype:            Intel Pentium III (600 MHz);    OpenBSD 3.2 
> GENERIC#25 i386
> Remote gcc version:     gcc (GCC) 3.3.5
> Remote g++ version:     g++ (GCC) 3.3.5
> Configure environment:  CC=gcc CXX=g++ LDFLAGS=-Wl,-rpath,/usr/local/lib
> gcc -DHAVE_CONFIG_H -I. -I. -I../..   -I/usr/local/include  -g -O2 -c mbchar.c
> In file included from mbchar.c:24:
> mbchar.h:157:19: wchar.h: No such file or directory
> mbchar.h:159:20: wctype.h: No such file or directory

This is a bug in gnulib.  It assumes a version of the C standard later
than C90, by accident.  We're waiting on someone to produce a patch
for this problem, but it's plainly more complex than simply just
guarding inclsion of whar.h with #if HAVE_WCHAR_H.

> The last version of findutils that I installed successfully on these
> systems is:
>       GNU/Linux IA-64         4.2.26
>       NetBSD IA-32            4.2.23
>       OpenBSD IA-32           4.2.25

So by my reckoning, the only one left still unfixed is the last one,
and I'm not sure what the relevant fix for that one is.


reply via email to

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