Building db3-3.3.11-1031 on 10.6 breaks with the error
configure: error: No ar utility found.
Building mysql-shlibs-3.23.58-1023 on 10.6 breaks with the error
configure: error: no acceptable C compiler found in $PATH
(see the corresponding threads on fink-devel and fink-beginners.)
Both failures have the same cause which I have now hunted down. It is
likely to show up for other packages whose configure scripts were
generated by autoconf version 2.53 or older. A workaround is given at
the end of this message, and I have fixed db3 correspondingly.
The story is the following:
These old autoconf versions have a test for deciding whether
PATH_SEPARATOR should be ; or :. (In reality they have even two
independent pieces of code that do this, which is one of the many
weirdnesses in this history.) The test looks whether the following line
of code
PATH=.;.; conftest.sh
executes without error, that is, finds the conftest.sh executable which
is in the current directory. If yes, PATH_SEPARATOR is set to ; which,
of course, wreaks havoc on MacOSX.
Now this line of code is in fact executed by /bin/ksh, because
configure, in its quest to find an acceptable variant of the echo
command, re-executes itself several times in different shells, and it is
/bin/ksh that it is trying out when the above test is being performed.
The two versions of /bin/ksh in MacOSX 10.5 and 10.6 behave differently
with respect to that line of code (both of them are buggy IMHO). You can
see this by executing the following line in /bin/ksh:
cd /usr/bin; PATH=.;.; type -a machine; machine
On 10.5 (similar on 10.4), you get the output
machine is a tracked alias for '/usr/bin/.;./machine'
/bin/ksh: machine: not found [No such file or directory]
On 10.6 you get
machine is a tracked alias for '/usr/bin/.;./machine'
i486
Thus on 10.5, it finds the command, but then when asked to execute it,
doesn't really find it. On 10.6, it actually finds it, although that
weirdo path does not exist.
In newer versions of autoconf (2.57-2.59, ca 2004), the test is changed:
It uses the line
PATH=/nonexistent;.; conf$$.sh
which correctly fails in /bin/ksh on 10.6, too. Even newer versions of
autoconf use some other variant of the test.
The workaround is to run configure with the environment variable
PATH_SEPARATOR=:
set, so that this whole crazy test is not performed at all.
--
Martin
--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-devel