mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 17:50:36 +00:00
527423fcd9
By default when the script is about to exit (normally or due to an error), it checks whether $ERROR_LOG file exists. If the log file exists, the script prints a "Failures: " message prefix and dumps the log file to the output. Apparently the log file is always created and if the update/build is successful, the script finishes with a bit misleading "Failures: " message. An improvement provided with this change lets the log file to be created as needed, i.e. if there's an error message to be printed. If the file doesn't exists, the script prints a "Update done" message which clearly indicates success. https://bugzilla.gnome.org/show_bug.cgi?id=701177
149 lines
2.8 KiB
Bash
Executable file
149 lines
2.8 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# update all known gstreamer modules
|
|
# build them one by one
|
|
# report failures at the end
|
|
# run this from a directory that contains the checkouts for each of the
|
|
# modules
|
|
|
|
PIDS=
|
|
|
|
CORE="\
|
|
gstreamer gst-plugins-base"
|
|
MODULES="\
|
|
gst-plugins-good gst-plugins-ugly gst-plugins-bad \
|
|
gst-libav"
|
|
EXTRA_MODULES="\
|
|
gst-editing-services \
|
|
gst-rtsp-server \
|
|
gst-python \
|
|
gnonlin"
|
|
|
|
tmp=${TMPDIR-/tmp}
|
|
tmp=$tmp/git-update.$(date +%Y%m%d-%H%M-).$RANDOM.$RANDOM.$RANDOM.$$
|
|
|
|
(umask 077 && mkdir "$tmp") || {
|
|
echo "Could not create temporary directory! Exiting." 1>&2
|
|
exit 1
|
|
}
|
|
|
|
ERROR_LOG="$tmp/failures.log"
|
|
ERROR_RETURN=255
|
|
|
|
for m in $CORE $MODULES $EXTRA_MODULES; do
|
|
if test -d $m; then
|
|
echo "+ updating $m"
|
|
cd $m
|
|
|
|
git pull origin master
|
|
if test $? -ne 0
|
|
then
|
|
echo "$m: update (trying stash, pull, stash apply)" >> $ERROR_LOG
|
|
git stash
|
|
git pull origin master
|
|
if test $? -ne 0
|
|
then
|
|
echo "$m: update" >> $ERROR_LOG
|
|
cd ..
|
|
continue
|
|
fi
|
|
git stash apply
|
|
fi
|
|
|
|
git submodule update
|
|
if test $? -ne 0
|
|
then
|
|
echo "$m: update (submodule)" >> $ERROR_LOG
|
|
cd ..
|
|
continue
|
|
fi
|
|
cd ..
|
|
fi
|
|
done
|
|
|
|
build()
|
|
{
|
|
if test -d $1; then
|
|
cd $1
|
|
if test ! -e Makefile
|
|
then
|
|
if test -e autoregen.sh
|
|
then
|
|
echo "+ $1: autoregen.sh"
|
|
./autoregen.sh > "$tmp/$1-regen.log" 2>&1
|
|
if test $? -ne 0
|
|
then
|
|
echo "$1: autoregen.sh [$tmp/$1-regen.log]" >> $ERROR_LOG
|
|
cd ..
|
|
return $ERROR_RETURN
|
|
fi
|
|
echo "+ $1: autoregen.sh done"
|
|
else
|
|
echo "+ $1: autogen.sh"
|
|
./autogen.sh > "$tmp/$1-gen.log" 2>&1
|
|
if test $? -ne 0
|
|
then
|
|
echo "$1: autogen.sh [$tmp/$1-gen.log]" >> $ERROR_LOG
|
|
cd ..
|
|
return $ERROR_RETURN
|
|
fi
|
|
echo "+ $1: autogen.sh done"
|
|
fi
|
|
fi
|
|
|
|
echo "+ $1: make"
|
|
make > "$tmp/$1-make.log" 2>&1
|
|
if test $? -ne 0
|
|
then
|
|
echo "$1: make [$tmp/$1-make.log]" >> $ERROR_LOG
|
|
cd ..
|
|
return $ERROR_RETURN
|
|
fi
|
|
echo "+ $1: make done"
|
|
|
|
if test "x$CHECK" != "x"; then
|
|
echo "+ $1: make check"
|
|
make check > "$tmp/$1-check.log" 2>&1
|
|
if test $? -ne 0
|
|
then
|
|
echo "$1: check [$tmp/$1-check.log]" >> $ERROR_LOG
|
|
cd ..
|
|
return
|
|
fi
|
|
echo "+ $1: make check done"
|
|
fi
|
|
cd ..
|
|
fi
|
|
}
|
|
|
|
beach()
|
|
{
|
|
if test -e $ERROR_LOG; then
|
|
echo "Failures:"
|
|
echo
|
|
cat $ERROR_LOG
|
|
else
|
|
echo "Update done"
|
|
rm -rf "$tmp"
|
|
fi
|
|
exit
|
|
}
|
|
|
|
# build core and base plugins sequentially
|
|
# exit if build fails (excluding checks)
|
|
for m in $CORE; do
|
|
build $m
|
|
if [ $? -eq $ERROR_RETURN ]; then
|
|
beach
|
|
fi
|
|
done
|
|
|
|
# build other modules in parallel
|
|
for m in $MODULES; do
|
|
build $m &
|
|
PIDS="$PIDS $!"
|
|
done
|
|
wait $PIDS
|
|
|
|
beach
|
|
|