Improvement to admin/detect-autoconf.sh [PATCH]

Michael Pyne pynm0001 at comcast.net
Sun Jul 17 03:39:17 BST 2005


Hi all,

A FreeBSD user had reported an error against kdesvn-build, and gave me access 
to a FreeBSD box to investigate.  After my investigation I came to the 
conclusion that it would probably be a good idea to update 
detect-autoconf.sh.  The reasons?

 1. New versions of automake and autoconf have to be added to the script as 
they are released.  So if a user upgrades the autotools to a version that is 
(presumably) better, it won't be picked up until we update the autotools.

 2. Some operating systems (notably, the FreeBSD box I have access to), have 
the autotools installed but with a different versioning scheme.  e.g. even 
though detect-autoconf.sh will search for autoconf-2.53, it will never find 
FreeBSD's autoconf253 script.

So, I went and created a Perl script to do a rather exhaustive search for the 
autotools.  Since I was at it (and it wasn't hard) I added a few things.

 1. It searches for the best installed executable version of automake and 
autoconf, and uses the version number it reads from the script to search for 
aclocal, autom4te, and autoheader just like detect-autoconf.sh does.  If 
there is no versioned script in $PATH then it will use a non-versioned script 
if available (e.g. if "automake" is the only automake* in the PATH it will 
use that).  This is also the same as the current detect-autoconf.sh, which 
seems to prefer versioned over unversioned scripts.

 2. When doing this search, it doesn't rely on a list of suffixes distributed 
with the script.  So, it will find the "best" version of auto* even if the 
user updates the autotools after downloading KDE.

 3. The programs it looks for (which, auto*, unsermake) can be overridden by 
an environment variable of the same name uppercased.  UNSERMAKE=no is still 
checked for.  This way users don't have to setup symlinks to run make -f 
Makefile.cvs.

 4. The output is in an eval-able form for shell scripts.

 5. It works both on my Linux system and the FreeBSD box I have access to. :)

One potential problem is that the attached detect-autoconf.pl doesn't do 
blacklisting.  It's not hard for me to add, but do we need it?  Or if 
blacklisting is not required, should I add a minimum version to check for 
when looking for the tools?

Also, it's written in Perl, which I *think* is required for KDE building 
anyways.  I tried starting out in sh but it quickly drove me batty.  I can 
try to get help to convert it to sh if it's absolutely necessary however.

Note that I'm *not* saying that you can't build KDE on FreeBSD without this 
patch, or you would have heard whining from people besides me. ;-)  According 
to Adrian there is a gnu-autoconf and gnu-automake port for FreeBSD that 
provides the unversioned autotools that makes KDE from SVN work.  I just 
think that if there are autotools available it should be easier to have KDE 
use them (while we're still using the autotools. >:-)

Any and all comments are appreciated.

The following patch to cvs.sh is needed to use the script after it's placed in 
the /admin dir and made executable:

Index: cvs.sh
===================================================================
--- cvs.sh      (revision 435055)
+++ cvs.sh      (working copy)
@@ -628,8 +628,9 @@
   rm -f $makefile_wo
 fi

-# Suck in the AUTOCONF detection code
-. $admindir/detect-autoconf.sh
+# Call script to find autoconf and friends.  Uses eval since the script 
outputs
+# sh-compatible code.
+eval `$admindir/detect-autoconf.pl`

 ###
 ### Main

Regards,
 - Michael Pyne
-------------- next part --------------
A non-text attachment was scrubbed...
Name: detect.pl
Type: application/x-perl
Size: 3748 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20050716/4e8fff52/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20050716/4e8fff52/attachment.sig>


More information about the kde-core-devel mailing list