Hi Rob, > since 2 days we are experiencing some errors in builds of some GNU packages > (like gzip, grep, rcs). These packages are built continuously with the > latest gnulib revision. > An example can be found here: http://hydra.nixos.org/build/1043400 (log > available at http://hydra.nixos.org/build/1043400/log) > > The logs show: > > ./bootstrap: aclocal --force -I m4 ... > missing file lib/stdio-write.cconfigure.ac:44: error: expected source > file, required through AC_LIBSOURCES, not found > m4/gnulib-comp.m4:180: gl_INIT is expanded from...configure.ac:44: the top > level
Thanks for the report. An even easier way to reproduce the error is $ ./gnulib-tool --test stdio You are right with the analysis which commit caused the regression. I've pushed this fix: 2011-04-15 Bruno Haible <br...@clisp.org> Don't require lib/stdio-write.c when only module 'stdio' is used. * m4/stdio_h.m4 (gl_STDIO_H): Move the AC_LIBOBJ back into the m4_ifdef invocation. Reported by Rob Vermaas <rob.verm...@gmail.com>. --- m4/stdio_h.m4.orig Fri Apr 15 10:42:16 2011 +++ m4/stdio_h.m4 Fri Apr 15 10:41:46 2011 @@ -1,4 +1,4 @@ -# stdio_h.m4 serial 35 +# stdio_h.m4 serial 36 dnl Copyright (C) 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -22,9 +22,11 @@ GNULIB_FGETS=1 GNULIB_GETS=1 GNULIB_FREAD=1 - dnl This ifdef is just an optimization, to avoid performing a configure - dnl check whose result is not used. It does not make the test of - dnl GNULIB_STDIO_H_NONBLOCKING or GNULIB_NONBLOCKING redundant. + dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c" + dnl "expected source file, required through AC_LIBSOURCES, not found". It is + dnl also an optimization, to avoid performing a configure check whose result + dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING + dnl or GNULIB_NONBLOCKING redundant. m4_ifdef([gl_NONBLOCKING_IO], [ gl_NONBLOCKING_IO if test $gl_cv_have_nonblocking != yes; then @@ -45,24 +47,30 @@ GNULIB_FPUTS=1 GNULIB_PUTS=1 GNULIB_FWRITE=1 - dnl This ifdef is just an optimization, to avoid performing a configure - dnl check whose result is not used. It does not make the test of - dnl GNULIB_STDIO_H_SIGPIPE or GNULIB_SIGPIPE redundant. + dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c" + dnl "expected source file, required through AC_LIBSOURCES, not found". It is + dnl also an optimization, to avoid performing a configure check whose result + dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or + dnl GNULIB_SIGPIPE redundant. m4_ifdef([gl_SIGNAL_SIGPIPE], [ gl_SIGNAL_SIGPIPE if test $gl_cv_header_signal_h_SIGPIPE != yes; then REPLACE_STDIO_WRITE_FUNCS=1 + AC_LIBOBJ([stdio-write]) fi ]) + dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c" + dnl "expected source file, required through AC_LIBSOURCES, not found". It is + dnl also an optimization, to avoid performing a configure check whose result + dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING + dnl or GNULIB_NONBLOCKING redundant. m4_ifdef([gl_NONBLOCKING_IO], [ gl_NONBLOCKING_IO if test $gl_cv_have_nonblocking != yes; then REPLACE_STDIO_WRITE_FUNCS=1 + AC_LIBOBJ([stdio-write]) fi ]) - if test $REPLACE_STDIO_WRITE_FUNCS = 1; then - AC_LIBOBJ([stdio-write]) - fi dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not -- In memoriam Abraham Lincoln <http://en.wikipedia.org/wiki/Abraham_Lincoln>