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

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

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

The template is currently based on the
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=.
cd "$srcdir"
# Make sure we have common
if test ! -f common/;
echo "+ Setting up common submodule"
git submodule init
git submodule update
# source helper functions
if test ! -f common/;
echo There is something wrong with your source tree.
echo You are missing common/
exit 1
. common/
# install pre-commit hook for doing clean commits
if test ! \( -x .git/hooks/pre-commit -a -L .git/hooks/pre-commit \);
rm -f .git/hooks/pre-commit
ln -s ../../common/hooks/pre-commit.hook .git/hooks/pre-commit
# GNU gettext automake support doesn't get along with git.
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" \
"" 2 62 || DIE=1
version_check "automake" "$AUTOMAKE automake automake-1.11" \
"" 1 11 || DIE=1
version_check "autopoint" "autopoint" \
"" 0 17 || DIE=1
version_check "libtoolize" "libtoolize glibtoolize" \
"" 2 2 6 || DIE=1
version_check "pkg-config" "" \
"" 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 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."
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/;
patch -p0 -R --forward < common/gettext.patch
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 build stamp so we don't re-run autoheader in maintainer mode
echo timestamp > 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 " 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 "$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."
if [ ! -f "common/update-autogen" ]; then
echo "Run ./common/update-autogen from the top-level source directory of a GStreamer module";
exit 1;
if ! ls -1 *.doap 2>/dev/null >/dev/null; then
echo "Could not find *.doap file";
exit 1;
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;
echo "\
# Run this to generate all the initial makefiles, etc.
# This file has been generated from common/ via common/update-autogen
sed \
-e "s/@API_VERSION@/1.0/g" \
-e "s/@PACKAGE@/$PACKAGE/g" \
-e "s/@SRCFILE@/$PACKAGE.doap/g" < common/ >> $TEMP_AUTOGEN_SH
echo "Failed to update"
exit 1;
rmdir $DIR
echo "Updated $PACKAGE"
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