Commit 4dd0c0af authored by Tim-Philipp Müller's avatar Tim-Philipp Müller 🐠
Browse files

autogen.sh.in: simplify checks for autoconf and pkg-config

No need to check the versions there. pkg-config 0.8 was
released in 2003. autoconf version checks will be made
by autoreconf based on our requirement in configure.ac,
and it will error out for us in that case.

So just check for presence of these tools and get rid
of a whole lot of code.
parent 92e7a485
......@@ -4,7 +4,6 @@ test -n "$srcdir" || srcdir=.
olddir=`pwd`
cd "$srcdir"
DIE=0
package=@PACKAGE@
srcfile=@SRCFILE@
......@@ -47,13 +46,25 @@ fi
autogen_options $@
printf "+ check for build tools"
if test ! -z "$NOCHECK"; then echo ": skipped version checks"; else echo; fi
version_check "autoreconf" "autoreconf " \
"ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 68 || DIE=1
version_check "pkg-config" "" \
"http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1
die_check $DIE
if test -z "$NOCHECK"; then
echo
printf " checking for autoreconf ... "
echo
which "autoreconf" 2>/dev/null || {
echo "not found! Please install the autoconf package."
exit 1
}
printf " checking for pkg-config ... "
echo
which "pkg-config" 2>/dev/null || {
echo "not found! Please install pkg-config."
exit 1
}
else
echo ": skipped version checks"
fi
# if no arguments specified then this will be printed
if test -z "$*" && test -z "$NOCONFIGURE"; then
......
......@@ -20,168 +20,6 @@ debug ()
fi
}
version_get ()
# based on the command's version output, set variables
# _MAJOR, _MINOR, _MICRO, _VERSION, using the given prefix as variable prefix
#
# arg 1: command binary name
# arg 2: (uppercased) variable name prefix
{
COMMAND=$1
VARPREFIX=`echo $2 | tr .,- _`
local ${VARPREFIX}_VERSION
# strip everything that's not a digit, then use cut to get the first field
pkg_version=`$COMMAND --version|head -n 1|sed 's/^.*)[^0-9]*//'|cut -d' ' -f1`
debug "pkg_version $pkg_version"
# remove any non-digit characters from the version numbers to permit numeric
# comparison
pkg_major=`echo $pkg_version | cut -d. -f1 | sed s/[a-zA-Z\-].*//g`
pkg_minor=`echo $pkg_version | cut -d. -f2 | sed s/[a-zA-Z\-].*//g`
pkg_micro=`echo $pkg_version | cut -d. -f3 | sed s/[a-zA-Z\-].*//g`
test -z "$pkg_major" && pkg_major=0
test -z "$pkg_minor" && pkg_minor=0
test -z "$pkg_micro" && pkg_micro=0
debug "found major $pkg_major minor $pkg_minor micro $pkg_micro"
eval ${VARPREFIX}_MAJOR=$pkg_major
eval ${VARPREFIX}_MINOR=$pkg_minor
eval ${VARPREFIX}_MICRO=$pkg_micro
eval ${VARPREFIX}_VERSION=$pkg_version
}
version_compare ()
# Checks whether the version of VARPREFIX is equal to or
# newer than the requested version
# arg1: VARPREFIX
# arg2: MAJOR
# arg3: MINOR
# arg4: MICRO
{
VARPREFIX=`echo $1 | tr .,- _`
MAJOR=$2
MINOR=$3
MICRO=$4
eval pkg_major=\$${VARPREFIX}_MAJOR;
eval pkg_minor=\$${VARPREFIX}_MINOR;
eval pkg_micro=\$${VARPREFIX}_MICRO;
#start checking the version
debug "version_compare: $VARPREFIX against $MAJOR.$MINOR.$MICRO"
# reset check
WRONG=
if [ ! "$pkg_major" -gt "$MAJOR" ]; then
debug "major: $pkg_major <= $MAJOR"
if [ "$pkg_major" -lt "$MAJOR" ]; then
debug "major: $pkg_major < $MAJOR"
WRONG=1
elif [ ! "$pkg_minor" -gt "$MINOR" ]; then
debug "minor: $pkg_minor <= $MINOR"
if [ "$pkg_minor" -lt "$MINOR" ]; then
debug "minor: $pkg_minor < $MINOR"
WRONG=1
elif [ "$pkg_micro" -lt "$MICRO" ]; then
debug "micro: $pkg_micro < $MICRO"
WRONG=1
fi
fi
fi
if test ! -z "$WRONG"; then
debug "version_compare: $VARPREFIX older than $MAJOR.$MINOR.$MICRO"
return 1
fi
debug "version_compare: $VARPREFIX equal to/newer than $MAJOR.$MINOR.$MICRO"
return 0
}
version_check ()
# check the version of a package
# first argument : package name (executable)
# second argument : optional path where to look for it instead
# third argument : source download url
# rest of arguments : major, minor, micro version
# all consecutive ones : suggestions for binaries to use
# (if not specified in second argument)
{
PACKAGE=$1
PKG_PATH=$2
URL=$3
MAJOR=$4
MINOR=$5
MICRO=$6
# for backwards compatibility, we let PKG_PATH=PACKAGE when PKG_PATH null
if test -z "$PKG_PATH"; then PKG_PATH=$PACKAGE; fi
debug "major $MAJOR minor $MINOR micro $MICRO"
VERSION=$MAJOR
if test ! -z "$MINOR"; then VERSION=$VERSION.$MINOR; else MINOR=0; fi
if test ! -z "$MICRO"; then VERSION=$VERSION.$MICRO; else MICRO=0; fi
debug "major $MAJOR minor $MINOR micro $MICRO"
for SUGGESTION in $PKG_PATH; do
COMMAND="$SUGGESTION"
# don't check if asked not to
test -z "$NOCHECK" && {
printf " checking for $COMMAND >= $VERSION ... "
} || {
# we set a var with the same name as the package, but stripped of
# unwanted chars
VAR=`echo $PACKAGE | sed 's/-//g'`
debug "setting $VAR"
eval $VAR="$COMMAND"
return 0
}
which $COMMAND > /dev/null 2>&1
if test $? -eq 1;
then
debug "$COMMAND not found"
continue
fi
VARPREFIX=`echo $COMMAND | sed 's/-//g' | tr [:lower:] [:upper:]`
version_get $COMMAND $VARPREFIX
version_compare $VARPREFIX $MAJOR $MINOR $MICRO
if test $? -ne 0; then
echo "found $pkg_version, not ok !"
continue
else
echo "found $pkg_version, ok."
# we set a var with the same name as the package, but stripped of
# unwanted chars
VAR=`echo $PACKAGE | sed 's/-//g'`
debug "setting $VAR"
eval $VAR="$COMMAND"
return 0
fi
done
echo "$PACKAGE not found !"
echo "You must have $PACKAGE installed to compile $package."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at $URL"
return 1;
}
die_check ()
{
# call with $DIE
# if set to 1, we need to print something helpful then die
DIE=$1
if test "x$DIE" = "x1";
then
echo
echo "- Please get the right tools before proceeding."
echo "- Alternatively, if you're sure we're wrong, run with --nocheck."
exit 1
fi
}
autogen_options ()
{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment