1 # a silly hack that generates autoregen.sh but it's handy
2 # Remove the old autoregen.sh first to create a new file,
3 # as the current one may be being read by the shell executing
5 if [ -f "autoregen.sh" ]; then
8 echo "#!/bin/sh" > autoregen.sh
9 echo "./autogen.sh $@ \$@" >> autoregen.sh
12 # helper functions for autogen.sh
15 # print out a debug message if DEBUG is a defined variable
24 # based on the command's version output, set variables
25 # _MAJOR, _MINOR, _MICRO, _VERSION, using the given prefix as variable prefix
27 # arg 1: command binary name
28 # arg 2: (uppercased) variable name prefix
33 # strip everything that's not a digit, then use cut to get the first field
34 pkg_version=`$COMMAND --version|head -n 1|sed 's/^.*)[^0-9]*//'|cut -d' ' -f1`
35 debug "pkg_version $pkg_version"
36 # remove any non-digit characters from the version numbers to permit numeric
38 pkg_major=`echo $pkg_version | cut -d. -f1 | sed s/[a-zA-Z\-].*//g`
39 pkg_minor=`echo $pkg_version | cut -d. -f2 | sed s/[a-zA-Z\-].*//g`
40 pkg_micro=`echo $pkg_version | cut -d. -f3 | sed s/[a-zA-Z\-].*//g`
41 test -z "$pkg_major" && pkg_major=0
42 test -z "$pkg_minor" && pkg_minor=0
43 test -z "$pkg_micro" && pkg_micro=0
44 debug "found major $pkg_major minor $pkg_minor micro $pkg_micro"
45 eval `echo ${VARPREFIX}`_MAJOR=$pkg_major
46 eval `echo ${VARPREFIX}`_MINOR=$pkg_minor
47 eval `echo ${VARPREFIX}`_MICRO=$pkg_micro
48 eval `echo ${VARPREFIX}`_VERSION=$pkg_version
62 pkg_major=$(eval echo $`echo ${VARPREFIX}`_MAJOR);
63 pkg_minor=$(eval echo $`echo ${VARPREFIX}`_MINOR);
64 pkg_micro=$(eval echo $`echo ${VARPREFIX}`_MICRO);
66 #start checking the version
72 if [ ! "$pkg_major" -gt "$MAJOR" ]; then
73 debug "major: $pkg_major <= $MAJOR"
74 if [ "$pkg_major" -lt "$MAJOR" ]; then
75 debug "major: $pkg_major < $MAJOR"
77 elif [ ! "$pkg_minor" -gt "$MINOR" ]; then
78 debug "minor: $pkg_minor <= $MINOR"
79 if [ "$pkg_minor" -lt "$MINOR" ]; then
80 debug "minor: $pkg_minor < $MINOR"
82 elif [ "$pkg_micro" -lt "$MICRO" ]; then
83 debug "micro: $pkg_micro < $MICRO"
88 if test ! -z "$WRONG"; then
96 # check the version of a package
97 # first argument : package name (executable)
98 # second argument : optional path where to look for it instead
99 # third argument : source download url
100 # rest of arguments : major, minor, micro version
101 # all consecutive ones : suggestions for binaries to use
102 # (if not specified in second argument)
111 # for backwards compatibility, we let PKG_PATH=PACKAGE when PKG_PATH null
112 if test -z "$PKG_PATH"; then PKG_PATH=$PACKAGE; fi
113 debug "major $MAJOR minor $MINOR micro $MICRO"
115 if test ! -z "$MINOR"; then VERSION=$VERSION.$MINOR; else MINOR=0; fi
116 if test ! -z "$MICRO"; then VERSION=$VERSION.$MICRO; else MICRO=0; fi
118 debug "major $MAJOR minor $MINOR micro $MICRO"
120 for SUGGESTION in $PKG_PATH; do
121 COMMAND="$SUGGESTION"
123 # don't check if asked not to
124 test -z "$NOCHECK" && {
125 echo -n " checking for $COMMAND >= $VERSION ... "
127 # we set a var with the same name as the package, but stripped of
129 VAR=`echo $PACKAGE | sed 's/-//g'`
135 which $COMMAND > /dev/null 2>&1
138 debug "$COMMAND not found"
142 VARPREFIX=`echo $COMMAND | sed 's/-//g' | tr [:lower:] [:upper:]`
143 version_get $COMMAND $VARPREFIX
145 version_compare $VARPREFIX $MAJOR $MINOR $MICRO
146 if test $? -ne 0; then
147 echo "found $pkg_version, not ok !"
150 echo "found $pkg_version, ok."
151 # we set a var with the same name as the package, but stripped of
153 VAR=`echo $PACKAGE | sed 's/-//g'`
160 echo "$PACKAGE not found !"
161 echo "You must have $PACKAGE installed to compile $package."
162 echo "Download the appropriate package for your distribution,"
163 echo "or get the source tarball at $URL"
169 # normally aclocal is part of automake
170 # so we expect it to be in the same place as automake
171 # so if a different automake is supplied, we need to adapt as well
172 # so how's about replacing automake with aclocal in the set var,
173 # and saving that in $aclocal ?
174 # note, this will fail if the actual automake isn't called automake*
175 # or if part of the path before it contains it
176 if [ -z "$automake" ]; then
177 echo "Error: no automake variable set !"
180 aclocal=`echo $automake | sed s/automake/aclocal/`
181 debug "aclocal: $aclocal"
182 if [ "$aclocal" != "aclocal" ];
184 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-aclocal=$aclocal"
186 if [ ! -x `which $aclocal` ]; then
187 echo "Error: cannot execute $aclocal !"
195 # same here - autoheader is part of autoconf
196 # use the same voodoo
197 if [ -z "$autoconf" ]; then
198 echo "Error: no autoconf variable set !"
201 autoheader=`echo $autoconf | sed s/autoconf/autoheader/`
202 debug "autoheader: $autoheader"
203 if [ "$autoheader" != "autoheader" ];
205 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoheader=$autoheader"
207 if [ ! -x `which $autoheader` ]; then
208 echo "Error: cannot execute $autoheader !"
215 autoconf_2_52d_check ()
217 # autoconf 2.52d has a weird issue involving a yes:no error
218 # so don't allow it's use
219 test -z "$NOCHECK" && {
220 ac_version=`$autoconf --version|head -n 1|sed 's/^[a-zA-Z\.\ ()]*//;s/ .*$//'`
221 if test "$ac_version" = "2.52d"; then
222 echo "autoconf 2.52d has an issue with our current build."
223 echo "We don't know who's to blame however. So until we do, get a"
224 echo "regular version. RPM's of a working version are on the gstreamer site."
230 libtool_2_2_gettext_check ()
232 # libtool 2.2 needs autopoint 0.17 or higher
233 if test $LIBTOOLIZE_MAJOR -ge 2 && test $LIBTOOLIZE_MINOR -ge 2
235 if test $AUTOPOINT_MAJOR -eq 0 && test $AUTOPOINT_MINOR -le 17
237 echo "libtool 2.2 requires autopoint 0.17 or higher"
248 # if set to 1, we need to print something helpful then die
250 if test "x$DIE" = "x1";
253 echo "- Please get the right tools before proceeding."
254 echo "- Alternatively, if you're sure we're wrong, run with --nocheck."
261 if test "x$1" = "x"; then
265 while test "x$1" != "x" ; do
266 optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
270 AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure"
271 echo "+ configure run disabled"
275 AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --nocheck"
277 echo "+ autotools version check disabled"
282 AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --debug"
283 echo "+ debug output enabled"
287 echo "autogen.sh (autogen options) -- (configure options)"
288 echo "autogen.sh help options: "
289 echo " --noconfigure don't run the configure script"
290 echo " --nocheck don't do version checks"
291 echo " --debug debug the autogen process"
293 echo " --with-autoconf PATH use autoconf in PATH"
294 echo " --with-automake PATH use automake in PATH"
296 echo "Any argument either not in the above list or after a '--' will be "
297 echo "passed to ./configure."
302 echo "+ using alternate automake in $optarg"
303 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-automake=$AUTOMAKE"
308 echo "+ using alternate autoconf in $optarg"
309 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoconf=$AUTOCONF"
314 echo "+ passing argument $1 to configure"
315 CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $1"
321 for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done
322 if test ! -z "$CONFIGURE_EXT_OPT"
324 echo "+ options passed to configure: $CONFIGURE_EXT_OPT"
331 test -f $srcfile || {
332 echo "You must run this script in the top-level $package directory"
342 echo "+ running $tool $options..."
353 if test -d .git; then
354 # install pre-commit hook for doing clean commits
355 for hook in pre-commit; do
356 if test ! \( -x .git/hooks/$hook -a -L .git/hooks/$hook \); then
357 echo "+ Installing git $hook hook"
358 rm -f .git/hooks/$hook
359 ln -s ../../common/hooks/$hook.hook .git/hooks/$hook || {
360 # if we couldn't create a symbolic link, try doing a plain cp
361 if cp common/hooks/pre-commit.hook .git/hooks/pre-commit; then
362 chmod +x .git/hooks/pre-commit;
364 echo "********** Couldn't install git $hook hook **********";