You people were right about $ mount|grep noexec And the tests really should check for that. I'll submit a bug.
That apparently was the problem on one of my machines. But for all the rest, this still fails: env - HOME=$HOME LOGNAME=$LOGNAME PATH=/usr/bin:/bin USER=$USER sh -uxe <<EOF svn checkout http://svn.apache.org/repos/asf/spamassassin/trunk $HOME/tmp/SA1xx cd $HOME/tmp/SA1xx echo|perl Makefile.PL PREFIX=$HOME/tmp/SA2xx make EOF Is there some race condition in the Makefiles? $ which perl|xargs file /usr/bin/perl: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=e4f6...., stripped All I know is if the file is really there, then the code at # Create version.h platform independently. print join(' ', $Config{'perlpath'}, "version.h.pl") . "\n"; { # Do the same thing as for the preprocessor below. package version_h; my $Z = $0; local $0 = "version.h.pl"; local @ARGV = (); # Got to check for defined because the script returns shell error level! unless (defined do $0) { $0 = $Z; die $@ ? $@ : "Can't exec `version.h.pl': $!"; } } is just not good enough. Can't it please use the "-f" perl operator to test if the file is there, instead of printing a possibly wrong error message. As far as the difference in the size of the makefile, maybe it is because different components were detected on my system or something. OK I sent it to you.