Simplify autogen.sh

Replace the whole autogen.sh magic by four simple lines that execute the
commands that are actually needed.

This enables verbose error output and allows advanced users to figure
out what went wrong in case of errors. We expect users building calcurse
from Git to be smart enough to fix "command not found" errors by
themselves.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2012-11-18 19:57:54 +01:00
parent 8375e9a51b
commit 7e7987575a

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# #
# Copyright (c) 2004-2011 calcurse Development Team <misc@calcurse.org> # Copyright (c) 2004-2012 calcurse Development Team <misc@calcurse.org>
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -28,153 +28,8 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# #
#
# autogen.sh - Generates all the necessary files to build calcurse from
# cvs tree.
#
PKG_NAME=calcurse aclocal -I m4
AC_VERSION="2 59" autoheader
AUTOCONF_VERSION=2.59 automake --foreign --copy --add-missing
AC_FLAGS= autoconf
AM_VERSION="1 9"
AUTOMAKE_VERSION=1.9
AM_FLAGS="--foreign --copy --add-missing"
GETTEXT_VERSION="0 14"
GETTEXT_FLAGS="--copy --no-changelog"
ACLOCAL_FLAGS="-I m4"
SRCDIR=`dirname $0`
test -z "$SRCDIR" && SRCDIR=.
export AUTOMAKE_VERSION AUTOCONF_VERSION
# Function to check if we are at the top level of calcurse package.
check_directory_level()
{
(test -f $SRCDIR/configure.ac) || {
printf "\n\n**Error**: Directory "\`$SRCDIR\'" does not appear to"
printf "\nbe the top-level $PKG_NAME directory.\n"
exit 1
}
}
# Clean previous files before running scripts
clean_old_files()
{
printf "Cleaning old files ... "
rm -rf configure config.log aclocal.m4 \
config.status config autom4te.cache \
po/Makefile.in.in ABOUT-NLS
printf "done\n"
}
# Clean useless backup files
clean_backup_files()
{
printf "Cleaning backup files ... "
rm -rf configure.ac\~ Makefile.am\~
printf "done\n"
}
# Function to check for a program availability
check_program()
{
PROGRAM=$1
printf "Checking for $PROGRAM ... "
($PROGRAM --version) < /dev/null > /dev/null 2>&1 || {
printf "\n\n**Error**: You must have $PROGRAM installed."
printf "\nDownload the appropriate package for your distribution,"
printf "\nor get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
printf "\n"
exit 1
}
FOUND=`which $PROGRAM`
printf "$FOUND\n"
}
# Function to check a program's version
# (there must be a better way, but I am not good at sed...)
check_program_version()
{
PROGRAM=$1; MAJOR=$2; MINOR=$3
printf "Checking that $PROGRAM version is at least $MAJOR.$MINOR ... "
VERSION=`$PROGRAM --version | head -n 1 | rev | cut -d' ' -f1 | rev`
MAJOR_FOUND=`echo $VERSION | cut -d. -f1`
MINOR_FOUND=`echo $VERSION | sed 's/[a-zA-Z-].*//' | cut -d. -f2`
[ -z "$MINOR_FOUND" ] && MINOR_FOUND=0
WRONG=
if [ "$MAJOR_FOUND" -lt "$MAJOR" ]; then
WRONG=1
elif [ "$MAJOR_FOUND" -eq "$MAJOR" ]; then
if [ "$MINOR_FOUND" -lt "$MINOR" ]; then
WRONG=1
fi
fi
if [ ! -z "$WRONG" ]; then
printf "\n\n**Error**: found version $MAJOR_FOUND.$MINOR_FOUND,"
printf "\nwhich is too old. You should upgrade $PROGRAM."
printf "\nDownload the appropriate package for your distribution,"
printf "\nor get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
printf "\n"
exit 1
else
printf "OK, found $MAJOR_FOUND.$MINOR_FOUND\n"
fi
}
# Dirty hack to run gettextize: problem is that it demands to
# press Return no matter what... This gets rid of that demand.
run_gettext()
{
PROGRAM=gettextize
printf "Running $PROGRAM $GETTEXT_FLAGS ... "
sed 's:read .*< /dev/tty::' `which $PROGRAM` > my-gettextize
chmod +x my-gettextize
(printf "\n" | ./my-gettextize $GETTEXT_FLAGS > /dev/null 2>&1) || {
printf "\n\n**Error**: $PROGRAM failed.\n"
exit 1
}
# now restore the files modified by gettextize
(test -f configure.ac~) && mv -f configure.ac~ configure.ac
(test -f Makefile.am~) && mv -f Makefile.am~ Makefile.am
mv -f po/Makevars.template po/Makevars
rm my-gettextize
printf "OK\n"
}
# Function to run a program
run_program()
{
PROGRAM=$1
shift
PROGRAM_FLAGS=$@
printf "Running $PROGRAM $PROGRAM_FLAGS ... "
$PROGRAM $PROGRAM_FLAGS > /dev/null 2>&1 || {
printf "\n\n**Error**: $PROGRAM failed.\n"
exit 1
}
printf "OK\n"
}
# Main
echo " --- $PKG_NAME autogen script ---\n"
check_directory_level
clean_old_files
check_program gettext
check_program gettextize
check_program_version gettext $GETTEXT_VERSION
check_program aclocal
check_program autoheader
check_program automake
check_program_version automake $AM_VERSION
check_program autoconf
check_program_version autoconf $AC_VERSION
run_gettext
run_program aclocal $ACLOCAL_FLAGS
run_program autoheader
run_program automake $AM_FLAGS
run_program autoconf $AC_FLAGS
clean_backup_files
printf "\nYou can now run the configure script to obtain $PKG_NAME Makefile.\n"