On 04/13/2011 11:31 AM, Tim Wallace wrote: > This is a bug discovered when trying to build postgresql 9.0.3 on Redhat > Enterprise Linux 5. If env var U is set, it fails, as pointed out by > the Postgres maintainer. I guess it's autoconf 2.59, and I'm guessing > you're past that now, so possibly it has already been fixed. Baffling > bug, though.
It stems from the old days of ansi2knr, where automake would set $U when translating source files into knr versions; but is relatively unused these days. > for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue > # 1. Remove the extension, and $U if already installed. > ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' > ac_i=`$as_echo "$ac_i" | sed "$ac_script"` > # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR > # will be set to the directory where LIBOBJS objects are built. > ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" > ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' The issue still exists in autoconf 2.68 (and autoconf.git); but the rules are not using $U in the configure script (read those lines closely, and you'll note that what is really happening is that they are generating a literal '$U' for inclusion in the AC_SUBST of LIBOBJS and LTLIBOBJS). So the real problem may be that automake is not prepared for the case when $U is defined at make time, rather than on autoconf for passing literal $U into the makefile in the first place during AC_LIBOBJ. Or maybe we do need to consider patching lib/autoconf/general.m4 to make _AC_LIBOBJS_NORMALIZE only output $U into the makefile conditional on whether ansi2knr is in use, rather than its current usage of doing it for every package that used AC_LIBOBJ. -- Eric Blake ebl...@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature