Commit 35495dd4 authored by Tim-Philipp Müller's avatar Tim-Philipp Müller

update-autogen: new tool to generate module autogen.sh files from a common template

Maybe one day an autogen.sh consisting of just 'autoreconf' will
be enough. Until then, let's try to at least use consistent autogen.sh
in the different modules. This tool will hopefully help with that.

The autogen.sh.in template is currently based on the autogen.sh
from core. There are changes in other modules which should probably
be merged into that.

One bug has already been fixed: touch gstreamer-1.0.pot not -0.10.pot
parent aed87ae3
test -n "$srcdir" || srcdir=`dirname "$0"`
test -n "$srcdir" || srcdir=.
olddir=`pwd`
cd "$srcdir"
DIE=0
package=@PACKAGE@
srcfile=@SRCFILE@
# Make sure we have common
if test ! -f common/gst-autogen.sh;
then
echo "+ Setting up common submodule"
git submodule init
fi
git submodule update
# source helper functions
if test ! -f common/gst-autogen.sh;
then
echo There is something wrong with your source tree.
echo You are missing common/gst-autogen.sh
exit 1
fi
. common/gst-autogen.sh
# install pre-commit hook for doing clean commits
if test ! \( -x .git/hooks/pre-commit -a -L .git/hooks/pre-commit \);
then
rm -f .git/hooks/pre-commit
ln -s ../../common/hooks/pre-commit.hook .git/hooks/pre-commit
fi
# GNU gettext automake support doesn't get along with git.
# https://bugzilla.gnome.org/show_bug.cgi?id=661128
touch -t 200001010000 po/@PACKAGE@-@API_VERSION@.pot
CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-failing-tests --enable-poisoning --enable-gtk-doc --enable-docbook'
autogen_options $@
printf "+ check for build tools"
if test ! -z "$NOCHECK"; then echo ": skipped version checks"; else echo; fi
version_check "autoconf" "$AUTOCONF autoconf autoconf270 autoconf269 autoconf268 autoconf267 autoconf266 autoconf265 autoconf264 autoconf263 autoconf262" \
"ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 62 || DIE=1
version_check "automake" "$AUTOMAKE automake automake-1.11" \
"ftp://ftp.gnu.org/pub/gnu/automake/" 1 11 || DIE=1
version_check "autopoint" "autopoint" \
"ftp://ftp.gnu.org/pub/gnu/gettext/" 0 17 || DIE=1
version_check "libtoolize" "libtoolize glibtoolize" \
"ftp://ftp.gnu.org/pub/gnu/libtool/" 2 2 6 || DIE=1
version_check "pkg-config" "" \
"http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1
die_check $DIE
aclocal_check || DIE=1
autoheader_check || DIE=1
die_check $DIE
# if no arguments specified then this will be printed
if test -z "$*" && test -z "$NOCONFIGURE"; then
echo "+ checking for autogen.sh options"
echo " This autogen script will automatically run ./configure as:"
echo " ./configure $CONFIGURE_DEF_OPT"
echo " To pass any additional options, please specify them on the $0"
echo " command line."
fi
toplevel_check $srcfile
# autopoint
# older autopoint (< 0.12) has a tendency to complain about mkinstalldirs
if test -x mkinstalldirs; then rm mkinstalldirs; fi
# first remove patch if necessary, then run autopoint, then reapply
if test -f po/Makefile.in.in;
then
patch -p0 -R --forward < common/gettext.patch
fi
tool_run "$autopoint" "--force" "patch -p0 < common/gettext.patch"
patch -p0 < common/gettext.patch
# aclocal
if test -f acinclude.m4; then rm acinclude.m4; fi
tool_run "$libtoolize" "--copy --force"
tool_run "$aclocal" "-I m4 -I common/m4 $ACLOCAL_FLAGS"
tool_run "$autoheader"
# touch the stamp-h.in build stamp so we don't re-run autoheader in maintainer mode
echo timestamp > stamp-h.in 2> /dev/null
tool_run "$autoconf"
debug "automake: $automake"
tool_run "$automake" "--add-missing --copy"
test -n "$NOCONFIGURE" && {
echo "skipping configure stage for package $package, as requested."
echo "autogen.sh done."
exit 0
}
cd "$olddir"
echo "+ running configure ... "
test ! -z "$CONFIGURE_DEF_OPT" && echo " ./configure default flags: $CONFIGURE_DEF_OPT"
test ! -z "$CONFIGURE_EXT_OPT" && echo " ./configure external flags: $CONFIGURE_EXT_OPT"
echo
echo "$srcdir/configure" $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT
"$srcdir/configure" $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT || {
echo " configure failed"
exit 1
}
echo "Now type 'make' to compile $package."
#!/bin/bash
if [ ! -f "common/update-autogen" ]; then
echo "Run ./common/update-autogen from the top-level source directory of a GStreamer module";
exit 1;
fi
if ! ls -1 *.doap 2>/dev/null >/dev/null; then
echo "Could not find *.doap file";
exit 1;
fi
PACKAGE=`ls -1 *.doap | head -n1 | sed -e 's/.doap$//'`
#echo "Package: $PACKAGE"
DIR=`mktemp -d`
if [[ $? != 0 ]]; then
echo "Could not create temp dir";
exit 1;
fi
TEMP_AUTOGEN_SH="$DIR/autogen.sh"
echo "\
#!/bin/sh
#
# $PACKAGE autogen.sh
#
# Run this to generate all the initial makefiles, etc.
#
# This file has been generated from common/autogen.sh.in via common/update-autogen
" > $TEMP_AUTOGEN_SH
sed \
-e "s/@API_VERSION@/1.0/g" \
-e "s/@PACKAGE@/$PACKAGE/g" \
-e "s/@SRCFILE@/$PACKAGE.doap/g" < common/autogen.sh.in >> $TEMP_AUTOGEN_SH
chmod +x $TEMP_AUTOGEN_SH
mv $TEMP_AUTOGEN_SH autogen.sh || {
echo "Failed to update autogen.sh"
exit 1;
}
rmdir $DIR
echo "Updated $PACKAGE autogen.sh"
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