This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

I broke cygport


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.orig	2006-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 ]

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]