[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
autotools version check in autogen.sh (Re: [ft-devel] Mac install instru
From: |
mpsuzuki |
Subject: |
autotools version check in autogen.sh (Re: [ft-devel] Mac install instructions don't seem to exist) |
Date: |
Wed, 31 Jan 2007 16:14:05 +0900 |
Dear Sir,
I thank Turner for his quick fix of autogen.sh for Mac OS X's
"glibtool" issue, on 2007-01-11.
On Fri, 29 Dec 2006 00:57:12 +0900
address@hidden wrote:
>>> In my personal opinion, putting some hooks to check autotools
>>> versions into autogen.sh is not bad idea.
>>
>>I don't object, but it doesn't have a high priority for me.
>
>Of course, it's task of me who proposed. I will write version
>checking hooks for autogen.sh, after 2007-01-15. Please wait.
Following is my first manuscript patch to add the version checking
feature to autogen.sh. In addition to basic aclocal/libtoolize/autoconf,
it scans aclocal-1.9, glibtoolize, libtoolize-1.5, autoconf-2.59
for fallbacking.
This is too lengthy for other developers to maintain, possibly
I can reduce to 50% shorter. If more compression is essential,
please let me know.
Regards,
mpsuzuki
--
Index: autogen.sh
===================================================================
RCS file: /sources/freetype/freetype2/autogen.sh,v
retrieving revision 1.6
diff -u -r1.6 autogen.sh
--- autogen.sh 12 Jan 2007 09:28:44 -0000 1.6
+++ autogen.sh 31 Jan 2007 06:43:31 -0000
@@ -20,6 +20,123 @@
fi
}
+compare_version_number ()
+{
+ r=`( echo $1 ; echo $2 ) | tr ',' ' ' | \
+ awk 'BEGIN{getline;vn=split($0,v," ")}\
+ {\
+ for(i=1;i<=NF;i++)\
+ {\
+ if(v[i] > $i){print "no";exit}\
+ if($i > v[i]){print "yes";exit}\
+ }\
+ if ( length( v[NF + 1] ) > 0 ) { print "no" } \
+ else { print "yes" } \
+ }'`
+
+ if test x"${r}" = xyes ; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+
+check_program_version ()
+{
+ prog_name=$1
+ min_version=$2
+ vendor_keyword=$3
+
+ matched_prog=""
+
+ p=""
+ for d in `echo ${PATH} | tr ':' ' '`
+ do
+ if test -x ${d}/${prog_name} ; then
+ p=${d}/${prog_name}
+ break;
+ fi
+ done
+
+ if test x = x"${p}" ; then
+ return 1
+ fi
+
+ echo -n 'Checking version of '${p}' (>= '${min_version}')... '
+
+ v=`${p} --version 2>/dev/null | head -1`
+ if test x != x"${v}" ; then
+ v=`${p} --version 2>&1 | head -1`
+ fi
+ case `echo ${v} | wc -w` in
+ 0) # cannot extract program version
+ ;;
+
+ 1) # assumed format: "[version]"
+ echo -n ${v}", "
+ vn=`echo ${v} | sed 's/[^0-9 ][^0-9 ]*/ & /g;s/ */,/g;s/\.,//g' `
+ vm=`echo ${min_version} | sed 's/\./ /g;s/[^0-9 ]/ &/g;s/ */,/g' `
+ compare_version_number ${vm} ${vn}
+ if test 0 != $? ; then
+ echo "too old"
+ else
+ echo "ok"
+ matched_prog=${p}
+ fi
+ ;;
+
+ 3) # assumed format: "[progname] version [version]"
+ vn=`echo ${v} | sed 's/^.* //' `
+ echo -n ${vn}", "
+ vn=`echo ${vn} | sed 's/[^0-9 ][^0-9 ]*/ & /g;s/ */,/g;s/\.,//g' `
+ vm=`echo ${min_version} | sed 's/\./ /g;s/[^0-9 ]/ &/g;s/ */,/g' `
+ compare_version_number ${vm} ${vn}
+ if test 0 != $? ; then
+ echo "too old"
+ else
+ echo "ok"
+ matched_prog=${p}
+ fi
+ ;;
+
+ *) # assumed format: "[progname] ([vendor]) [version] [extra-comment]"
+ v=`echo ${v} | sed 's/ */ /g;s/ /_/g;s/_(/ (/g;s/)_/) /g;s/\.,//g'`
+ vn=`echo ${v} | cut -d" " -f3`
+ echo -n ${vn}", "
+ vn=`echo ${vn} | sed 's/[^0-9 ][^0-9 ]*/ & /g;s/ */,/g;;s/\.,//g' `
+ vm=`echo ${min_version} | sed 's/\./ /g;s/[^0-9 ]/ &/g;s/ */,/g' `
+ compare_version_number ${vm} ${vn}
+ if test 0 != $? ; then
+ echo "too old"
+ else
+ echo "ok"
+
+ vendor=`echo ${v} | cut -d" " -f2`
+ if test x != x"${vendor}" -a x != x"${vendor_keyword}"; then
+ echo -n 'Checking ${p}...'
+ case ${vendor} in
+ *${vendor_keyword}* )
+ echo ' '${vendor_keyword}' '${prog_name}
+ ;;
+ *)
+ echo ' not '${vendor_keyword}' '${prog_name}
+ exit 1
+ ;;
+ esac
+ fi
+ matched_prog=${p}
+ fi
+ ;;
+ esac
+
+ if test x != x"${matched_prog}" ; then
+ return 0
+ else
+ return 1
+ fi
+}
+
if test ! -f ./builds/unix/configure.raw; then
echo "You must be in the same directory as \`autogen.sh'."
echo "Bootstrapping doesn't work if srcdir != builddir."
@@ -40,16 +157,50 @@
sed -e "s;@VERSION@;$freetype_major$freetype_minor$freetype_patch;" \
< configure.raw > configure.ac
-# On MacOS X, the GNU libtool is named `glibtool'.
-HOSTOS=`uname`
-LIBTOOLIZE=libtoolize
-if test "$HOSTOS"x = Darwinx; then
- LIBTOOLIZE=glibtoolize
+
+# autotool version check
+for p in aclocal aclocal-1.9
+do
+ if test x = x"${ACLOCAL}" ; then
+ check_program_version $p 1.9.6
+ if test 0 = $? ; then
+ ACLOCAL=$p
+ fi
+ fi
+done
+if test x = x"${ACLOCAL}" ; then
+ exit 1
+fi
+
+for p in libtoolize libtoolize-1.5 glibtoolize
+do
+ if test x = x"${LIBTOOLIZE}" ; then
+ check_program_version $p 1.5.22
+ if test 0 = $? ; then
+ LIBTOOLIZE=$p
+ fi
+ fi
+done
+if test x = x"${LIBTOOLIZE}" ; then
+ exit 1
+fi
+
+for p in autoconf autoconf-2.59
+do
+ if test x = x"${AUTOCONF}" ; then
+ check_program_version $p 2.59c
+ if test 0 = $? ; then
+ AUTOCONF=$p
+ fi
+ fi
+done
+if test x = x"${AUTOCONF}" ; then
+ exit 1
fi
-run aclocal -I . --force
+run $ACLOCAL -I . --force
run $LIBTOOLIZE --force --copy
-run autoconf --force
+run $AUTOCONF --force
chmod +x mkinstalldirs
chmod +x install-sh
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- autotools version check in autogen.sh (Re: [ft-devel] Mac install instructions don't seem to exist),
mpsuzuki <=