I broke cygport

2006-10-16 Thread Charles Wilson
I'm currently working on a bunch of release announcements for update 
packages...but first things first:


One of those updates is
   autoconf2.5-2.59 -- autoconf2.5-2.60
(yes, it's weird.  But the received wisdom is that autoconf-2.60 is 
considered a continuation of the 2.5x line of development.)


Anyway, the old autoconf2.5 package contained files like:

/usr/bin/autoconf-2.5x
/usr/bin/autoheader-2.5x
etc

However, that's not the way the linuxii do it. AND, since (in another 
change) I switched the autoconf wrapper from the Red Hat perl script to 
the gentoo bash script -- I felt it better to move closer to the linux 
way.  Therefore, the new autoconf2.5 package contains


/usr/bin/autoconf-2.60
/usr/bin/autoheader-2.60
etc

For most purposes, this is transparent.  You run autoconf which is the 
wrapper, and you get the right version.  However, cygport explicitly 
tests for the presence of autoconf-2.5x in $PATH.


This patch makes cygport's search a little smarter -- and it or 
something like it is *required* if you want cygport to work after the 
new autoconf is installed.


--
Chuck
--- cygport.orig2006-10-16 22:16:59.953125000 -0400
+++ cygport 2006-10-16 22:13:52.078125000 -0400
@@ -216,13 +216,46 @@
 }
 
 # check for mandatory program, else error
+# Two forms:
+#   (1) check_prog_req progran_name package
+#   search for program_name in path. error if not found
+#
+#   (2) check_prog_req progran_name package [alt_prog1 [alt_prog2 [ ...]]]
+#   search in order for progran_name, alt_prog1, alt_prog2, ...
+#   in path. If none found, error. Otherwise, echo name of
+#   program found.  Only call this variant inside shell escape
+#   (backticks or $())
 check_prog_req() {
local prog=${1};
-   local pkg=${2:-${1}};
+   shift
+   local pkg=${1:-${prog}};
+   shift
 
if ! check_prog ${prog}
then
-   error ${pkg} is required to build this package;
+   local found;
+   found=no
+   while [ $(( $#  0 )) ]
+   do
+   prog=${1}
+   if check_prog ${prog}
+   then
+   found=yes
+   break
+   fi
+   shift
+   done
+   if [ x${found} != xyes ]
+   then
+   error ${pkg} is required to build this package;
+   else
+   echo ${prog}
+   fi
+   else
+   if [ $(( $#  0 )) ]
+   then
+   echo ${prog}
+   fi
fi
 
return 0;
@@ -604,7 +637,10 @@
export WANT_AUTOMAKE;
/usr/bin/autoreconf-2.13 --force -i --verbose || error 
autoreconf-2.13 failed
else
-   check_prog_req autoconf-2.5x autoconf2.5
+   local found_autoconf_prog;
+   local found_autoconf_ver;
+   found_autoconf_prog=$( check_prog_req autoconf-2.5x autoconf2.5 
autoconf-2.60 )
+   found_autoconf_ver=${found_autoconf_prog##autoconf-}
 
export WANT_AUTOCONF=2.5;
export WANT_AUTOMAKE;
@@ -618,7 +654,8 @@
fi
done
 
-   /usr/bin/autoreconf-2.5x --install --force --verbose || error 
autoreconf-2.5x failed
+   /usr/bin/autoreconf-${found_autoconf_ver} --install --force 
--verbose || \
+   error autoreconf-${found_autoconf_ver} failed
fi  
 
if [ -f config.h.in ]


Re: I broke cygport

2006-10-16 Thread Yaakov S (Cygwin Ports)
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Charles Wilson wrote:
 For most purposes, this is transparent.  You run autoconf which is the
 wrapper, and you get the right version.  However, cygport explicitly
 tests for the presence of autoconf-2.5x in $PATH.
 
 This patch makes cygport's search a little smarter -- and it or
 something like it is *required* if you want cygport to work after the
 new autoconf is installed.

I just checked in autoconf-2.60 support to cygport CVS.  Please test.


Yaakov
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.2.1 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFNG2dpiWmPGlmQSMRAuknAKC2zz7YDX9Rk4wVvDwWq4wckVDq9ACdHSce
ykZGSQxm8l4Xl0RRjYV7+oQ=
=X0N+
-END PGP SIGNATURE-