summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <edward@collabora.com>2013-09-22 15:46:15 +0200
committerEdward Hervey <edward@collabora.com>2013-09-22 15:46:54 +0200
commit3d6d06f70290c0c196984d8962548d18e7927a04 (patch)
tree8cbac585848971b53394157eebd74b45345d422e
parent8ceb0e06018b2d32e7b98456cb52acd67cc55fdf (diff)
More updates to build faster
-rwxr-xr-xci-build.sh273
1 files changed, 152 insertions, 121 deletions
diff --git a/ci-build.sh b/ci-build.sh
index 1c4004a..ac64255 100755
--- a/ci-build.sh
+++ b/ci-build.sh
@@ -30,19 +30,49 @@ EXTRA_MODULES="\
# modules for which we run make check
CHECK_MODULES="orc gstreamer gst-plugins-base gst-plugins-ugly gst-libav gst-rtsp-server"
+#CHECK_MODULES=""
VALGRIND_MODULES=""
+ERROR_RETURN=255
+
+echo
+echo "======================================================"
+echo
+
+if [ -z $WORKSPACE ];
+then
+ echo "Out-of-jenkins build"
+ if [ -d $PWD/gstreamer ];
+ then
+ echo "Using current directory as workspace"
+ else
+ echo "This script must be run from the directory containing the various modules to build"
+ exit
+ fi
+ WORKSPACE=$PWD
+ BUILD_TAG="try13"
+else
+ echo "Jenkins build"
+fi
+echo
+
# two separate directories, one for building, the other for installation
-INSTALLPREFIX=$WORKSPACE/prefix/$BUILD_TAG
-BUILDPREFIX=$WORKSPACE/build/$BUILD_TAG
+
+# mkdir -p $WORKSPACE/build/$BUILD_TAG
+# ln -s -f $WORKSPACE/build/$BUILD_TAG $WORKSPACE/build/target
+# BUILDPREFIX=$WORKSPACE/build/target
+
+mkdir -p $WORKSPACE/prefix/$BUILD_TAG
+ln -s -f $WORKSPACE/prefix/$BUILD_TAG $WORKSPACE/prefix/target
+INSTALLPREFIX=$WORKSPACE/prefix/target
# setup the various env variables
-export PATH="$INSTALLPREFIX/bin":$PATH
-export LD_LIBRARY_PATH="$INSTALLPREFIX/lib":$LD_LIBRARY_PATH
-export DYLD_LIBRARY_PATH="$INSTALLPREFIX/lib":$DYLD_LIBRARY_PATH
-export GI_TYPELIB_PATH="$INSTALLPREFIX/share/gir-1.0":$GI_TYPELIB_PATH
-export PKG_CONFIG_PATH="$INSTALLPREFIX/lib/pkgconfig/":$PKG_CONFIG_PATH
-export GST_REGISTRY="$INSTALLPREFIX/gstreamer-registry.dat"
+# export PATH="$INSTALLPREFIX/bin":$PATH
+# export LD_LIBRARY_PATH="$INSTALLPREFIX/lib":$LD_LIBRARY_PATH
+# export DYLD_LIBRARY_PATH="$INSTALLPREFIX/lib":$DYLD_LIBRARY_PATH
+# export GI_TYPELIB_PATH="$INSTALLPREFIX/share/gir-1.0":$GI_TYPELIB_PATH
+# export PKG_CONFIG_PATH="$INSTALLPREFIX/lib/pkgconfig/":$PKG_CONFIG_PATH
+# export GST_REGISTRY="$INSTALLPREFIX/gstreamer-registry.dat"
echo
echo
@@ -55,7 +85,6 @@ env
echo
echo
-
echo
echo
echo "======================================================"
@@ -71,147 +100,149 @@ echo " $VALGRIND_MODULES"
echo
echo
-
-tmp=${TMPDIR-/tmp}
-tmp=$tmp/git-update.$BUILD_TAG
-
-(umask 077 && mkdir "$tmp") || {
- echo "Could not create temporary directory! Exiting." 1>&2
- exit 1
-}
-
-ERROR_LOG="$tmp/failures.log"
-ERROR_RETURN=255
-
-mkdir -p $INSTALLPREFIX
-
build()
{
- echo "Building $1"
- # we rebuild everything all the time
- mkdir -p $BUILDPREFIX/$1
- cd $BUILDPREFIX/$1
-
- echo "$1 : autogen.sh"
-
- # FIXME : Configurable options !
- logname=$INSTALLPREFIX/$1-autogen.log
- $WORKSPACE/$1/autogen.sh --prefix=$INSTALLPREFIX --disable-gtk-doc --disable-docbook > $logname 2>&1
-
- if test $? -ne 0
- then
- echo "AUTOGEN FAILURE"
- cat $logname
- exit $ERROR_RETURN
- fi
-
- echo "$1 : make"
-
- logname=$INSTALLPREFIX/$1-make.log
- make > $logname 2>&1
- if test $? -ne 0
- then
- echo "MAKE FAILURE"
- cat $logname
- exit $ERROR_RETURN
- fi
-
- echo "$1 : make install"
-
- logname=$INSTALLPREFIX/$1-make-install.log
- make install > $logname 2>&1
- if test $? -ne 0
- then
- echo "MAKE INSTALL FAILURE"
- cat $logname
- exit $ERROR_RETURN
- fi
+ echo "Building $1"
+ # we rebuild everything all the time
+ #mkdir -p $BUILDPREFIX/$1
+ cd $WORKSPACE/$1
+
+ if test ! -e Makefile
+ then
+ if test -e autoregen.sh
+ then
+ echo "+ $1: autoregen.sh"
+ logname=$INSTALLPREFIX/$1-autoregen.log
+ ./autoregen.sh > $logname 2>&1
+ if test $? -ne 0
+ then
+ echo "AUTOREGEN FAILURE"
+ cat $logname
+ exit $ERROR_RETURN
+ fi
+ echo "+ $1: autoregen.sh done"
+ else
+ echo "+ $1: autogen.sh"
+ logname=$INSTALLPREFIX/$1-autogen.log
+ # Fast variant => no instrospection, no docs
+ # Full variant => introspection and docs
+ ./autogen.sh --cache-file=$INSTALLPREFIX/config.cache --disable-gtk-doc --disable-docbook --disable-introspection > $logname 2>&1
+ if test $? -ne 0
+ then
+ echo "AUTOGEN FAILURE"
+ cat $logname
+ exit $ERROR_RETURN
+ fi
+ echo "+ $1: autogen.sh done"
+ fi
+ fi
+
+ echo "+ $1 : make"
+
+ logname=$INSTALLPREFIX/$1-make.log
+ make > $logname 2>&1
+ if test $? -ne 0
+ then
+ echo "MAKE FAILURE"
+ cat $logname
+ exit $ERROR_RETURN
+ fi
+
+ echo "+ $1 : make clean-cruft"
+ make clean-cruft > /dev/null 2>&1
+ # echo "+ $1 : make install"
+
+ # logname=$INSTALLPREFIX/$1-make-install.log
+ # make install > $logname 2>&1
+ # if test $? -ne 0
+ # then
+ # echo "MAKE INSTALL FAILURE"
+ # cat $logname
+ # exit $ERROR_RETURN
+ # fi
}
beach()
{
-echo "======================================================"
-echo
-echo "Checking available elements"
-echo
+ echo "======================================================"
+ echo
+ echo "Checking available elements"
+ echo
-gst-inspect-1.0 | tail -n1
+ gst-inspect-1.0 | tail -n1
-echo
-echo "Checking blacklisted elements"
+ echo
+ echo "Checking blacklisted elements"
-gst-inspect-1.0 -b
+ gst-inspect-1.0 -b
-echo
-echo "======================================================"
-echo
-echo "Cleaning up build directories"
+ echo
+ echo "======================================================"
-rm -Rf $BUILDPREFIX
+ echo
+ echo "Cleaning up build directories"
-echo
-echo "Archiving installed prefix $INSTALLPREFIX"
-echo " => $WORKSPACE/prefix/$BUILD_TAG.tbz2"
+ # ccache will have cached all non-changed compilation, we can safely make clean
+ repo forall -c make clean > /dev/null 2>&1
-cd $WORKSPACE/prefix
-tar cvjf $BUILD_TAG.tbz2 $BUILD_TAG > /dev/null
+ echo
+ echo "Archiving installed prefix $INSTALLPREFIX"
+ echo " => $WORKSPACE/prefix/$BUILD_TAG.tbz2"
-ls -lah $WORKSPACE/prefix/$BUILD_TAG.tbz2
+ cd $WORKSPACE/prefix
+ tar cvjf $BUILD_TAG.tbz2 $BUILD_TAG > /dev/null
-echo "======================================================"
-echo
-echo "Removing install prefix"
-rm -Rf $INSTALLPREFIX
+ ls -lah $WORKSPACE/prefix/$BUILD_TAG.tbz2
-if test -e $ERROR_LOG; then
- echo "Failures:"
- echo
- cat $ERROR_LOG
-else
- echo "Update done"
-fi
-exit
+ echo "======================================================"
+ echo
+ echo "Removing install prefix"
+ rm $INSTALLPREFIX
+ rm -Rf $WORKSPACE/prefix/$BUILD_TAG
+
+ echo "Update done"
+ exit
}
# build core and base plugins sequentially
# exit if build fails (excluding checks)
for m in $CORE $MODULES; do
- build $m
- if [ $? -eq $ERROR_RETURN ]; then
- beach
- fi
+ build $m
+ if [ $? -eq $ERROR_RETURN ]; then
+ beach
+ fi
done
# make check (for those activated)
for m in $CHECK_MODULES; do
- cd $BUILDPREFIX/$m
-
- echo "$m : make check"
- logname=$INSTALLPREFIX/$1-make-check.log
- make check > $logname 2>&1
-
- if test $? -ne 0
- then
- echo "MAKE CHECK FAILURE"
- cat $logname
- exit $ERROR_RETURN
- fi
+ cd $WORKSPACE/$m
+
+ echo "+ $m : make check"
+ logname=$INSTALLPREFIX/$m-make-check.log
+ make check > $logname 2>&1
+
+ if test $? -ne 0
+ then
+ echo "MAKE CHECK FAILURE"
+ cat $logname
+ exit $ERROR_RETURN
+ fi
done
# make valgrind (for those activated)
for m in $VALGRIND_MODULES; do
- cd $BUILDPREFIX/$m
-
- echo "$m : make check-valgrind"
- logname=$INSTALLPREFIX/$1-make-check-valgrind.log
- make check-valgrind > $logname 2>&1
-
- if test $? -ne 0
- then
- echo "MAKE CHECK-valgrind FAILURE"
- cat $logname
- exit $ERROR_RETURN
- fi
+ cd $WORKSPACE/$m
+
+ echo "+ $m : make check-valgrind"
+ logname=$INSTALLPREFIX/$m-make-check-valgrind.log
+ make check-valgrind > $logname 2>&1
+
+ if test $? -ne 0
+ then
+ echo "MAKE CHECK-valgrind FAILURE"
+ cat $logname
+ exit $ERROR_RETURN
+ fi
done
beach