diff options
author | Edward Hervey <edward@collabora.com> | 2013-09-22 15:46:15 +0200 |
---|---|---|
committer | Edward Hervey <edward@collabora.com> | 2013-09-22 15:46:54 +0200 |
commit | 3d6d06f70290c0c196984d8962548d18e7927a04 (patch) | |
tree | 8cbac585848971b53394157eebd74b45345d422e | |
parent | 8ceb0e06018b2d32e7b98456cb52acd67cc55fdf (diff) |
More updates to build faster
-rwxr-xr-x | ci-build.sh | 273 |
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 |