#!/usr/bin/env bash
die () {
echo "$@" >&2
exit 1
}
[ -n "$SAGE_LOCAL" ] || die 'Error: $SAGE_LOCAL not set. Source sage-env or run this script from `sage -sh`.'
if [ "$SAGE64" = yes ]; then
echo "Building with extra 64-bit flags"
if [ -z "$CFLAG64" ]; then
CFLAG64=-m64
fi
export CFLAGS="$CFLAGS $CFLAG64"
export CPPFLAGS="$CPPFLAGS $CFLAG64"
export LDFLAGS="$LDFLAGS $CFLAG64"
fi
# Path to "install" command
for cmd in /usr/ucb/install ginstall install; do
[ -z "$INSTALL" ] || break
INSTALL=`command -v $cmd 2>/dev/null`
done
[ -n "$INSTALL" ] || die 'No install program found'
echo "Using install program $INSTALL"
# Gettext is a soft build dependency (i18n)
command -v msgfmt >/dev/null 2>&1
if [ $? -ne 0 ]; then
gettext='NO_GETTEXT=YesPlease'
else
gettext=''
fi
cd src
# Apply patches.
for patch in ../patches/*.patch; do
[ -r "$patch" ] || continue # Skip non-existing or non-readable patches
patch -p1 <"$patch"
if [ $? -ne 0 ]; then
echo >&2 "Error applying '$patch'"
exit 1
fi
done
export NO_FINK=1
export NO_DARWIN_PORTS=1
# First make GIT-VERSION-FILE (we patched Makefile such that configure
# no longer depends on this, so it's safer to explicitly build this).
$MAKE GIT-VERSION-FILE
# Configure without Tcl/Tk (otherwise git *requires* Tcl/Tk).
# We keep SANE_TOOL_PATH empty, otherwise git messes with the PATH on
# some systems, leading for example to a different "make" being used.
echo "Configuring git..."
./configure --prefix="$SAGE_LOCAL" \
--with-python="$SAGE_LOCAL"/bin/python \
--without-tcltk \
--with-sane-tool-path=
if [ $? -ne 0 ]; then
echo >&2 "Error configuring git."
exit 1
fi
echo "Building git..."
$MAKE $gettext
if [ $? -ne 0 ]; then
echo >&2 "Error building git."
exit 1
fi
echo "Installing git..."
$MAKE -j1 INSTALL="$INSTALL" install $gettext
if [ $? -ne 0 ]; then
echo >&2 'Error installing git.'
exit 1
fi