047a201498
Also adds running unit tests to the release/go script so we can be sure that all tests pass before we make a release.
169 lines
5 KiB
Bash
Executable file
169 lines
5 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
help() {
|
|
echo "Usage: $0 <revision> <version> [lastrelease]"
|
|
echo
|
|
echo " <revision> The revision which should be used for release."
|
|
echo " <version> The version of the release."
|
|
echo " [lastrelease] The revision of the most recent release made."
|
|
echo " By default it uses the most recent release-tag."
|
|
exit 1
|
|
}
|
|
|
|
build_and_test() {
|
|
style=$1
|
|
make >/dev/null 2>/dev/null || error "make failed ($style)"
|
|
./obt/obt_unittests > /dev/null || error "unittest failed ($style)"
|
|
make distclean >/dev/null || error "make distclean failed"
|
|
}
|
|
|
|
REV="$1"
|
|
test -z "$REV" && help
|
|
VERSION="$2"
|
|
test -z "$VERSION" && help
|
|
LAST="$3"
|
|
|
|
. release/common
|
|
|
|
#### CONFIRM SHORTLOG #####
|
|
|
|
echo Shortlog from previous release:
|
|
echo "$SHORTLOG"
|
|
echo
|
|
echo Shortlog from $LAST contains $(echo "$SHORTLOG"|wc -l) lines
|
|
echo -n "ok? (y/n) "
|
|
read a
|
|
test "$a" = "y" || error "aborted"
|
|
|
|
#### TEST english po VERSIONS ####
|
|
|
|
BAD_PO="$(grep Project-Id-Version po/en*.po|grep -v "openbox $VERSION\\\\n")"
|
|
test -z "$BAD_PO" || error "wrong version in po files" "$BAD_PO"
|
|
|
|
#### RESET THE REPO TO A CLEAN STATE ####
|
|
|
|
git clean -f -x -d -q
|
|
|
|
#### TEST ALL OPTIONAL COMPILATION FLAGS ####
|
|
|
|
# check that it builds
|
|
echo Bootstrapping
|
|
./bootstrap >/dev/null 2>/dev/null || "bootstrap failed"
|
|
|
|
echo Check compile with debug and all options enabled
|
|
CFLAGS="-Werror -isystem /usr/lib/glib-2.0" \
|
|
./configure -C --enable-debug >/dev/null || \
|
|
error "configure (with debug) failed"
|
|
build_and_test "with debug and Werror"
|
|
|
|
# check that it builds with each optional featureset
|
|
echo Check compile with all options enabled
|
|
./configure -C >/dev/null || \
|
|
error "configure failed"
|
|
grep "XKB 1" config.log >/dev/null || error "missing xkb extension"
|
|
grep "XRANDR 1" config.log >/dev/null || error "missing xrandr extension"
|
|
grep "XINERAMA 1" config.log >/dev/null || error "missing xinerama extension"
|
|
grep "SYNC 1" config.log >/dev/null || error "missing sync extension"
|
|
grep "USE_XCURSOR 1" config.log >/dev/null || error "missing xcursor extension"
|
|
grep "USE_IMLIB2 1" config.log >/dev/null || error "missing imlib2 library"
|
|
grep "USE_LIBRSVG 1" config.log >/dev/null || error "missing librsvg library"
|
|
grep "USE_SM 1" config.log >/dev/null || error "missing session management extension"
|
|
build_and_test
|
|
|
|
echo Check compile with startup notification disabled
|
|
./configure -C --disable-startup-notification >/dev/null || \
|
|
error "configure failed"
|
|
build_and_test "with --disable-startup-notification"
|
|
|
|
echo Check compile with xcursor disabled
|
|
./configure -C --disable-xcursor >/dev/null || \
|
|
error "configure failed"
|
|
build_and_test "with --disable-xcursor"
|
|
|
|
echo Check compile with imlib2 disabled
|
|
./configure -C --disable-imlib2 >/dev/null || \
|
|
error "configure failed"
|
|
build_and_test "with --disable-imlib2"
|
|
|
|
echo Check compile with librsvg disabled
|
|
./configure -C --disable-librsvg >/dev/null || \
|
|
error "configure failed"
|
|
build_and_test "with --disable-librsvg"
|
|
|
|
echo Check compile with session management disabled
|
|
./configure -C --disable-session-management >/dev/null || \
|
|
error "configure failed"
|
|
build_and_test "with --disable-session-management"
|
|
|
|
echo Check compile with xkb disabled
|
|
./configure -C --disable-xkb >/dev/null || error "configure failed"
|
|
build_and_test "with --disable-xkb"
|
|
|
|
echo Check compile with xrandr disabled
|
|
./configure -C --disable-xrandr >/dev/null || error "configure failed"
|
|
build_and_test "with --disable-xrandr"
|
|
|
|
echo Check compile with xinerama disabled
|
|
./configure -C --disable-xinerama >/dev/null || error "configure failed"
|
|
build_and_test("with --disable-xinerama")
|
|
|
|
echo Check compile with xsync disabled
|
|
./configure -C --disable-xsync >/dev/null || error "configure failed"
|
|
build_and_test("with --disable-xsync")
|
|
|
|
# check that it installs sanely
|
|
echo Check installation correctness
|
|
./configure -C >/dev/null || \
|
|
error "configure failed"
|
|
make distcheck >/dev/null || \
|
|
error "make distcheck failed"
|
|
|
|
# VERIFY TARBALL
|
|
|
|
TAR="openbox-$VERSION.tar.gz"
|
|
ASC="openbox-$VERSION.tar.gz.asc"
|
|
|
|
echo Found Openbox release tarball:
|
|
ls -d openbox-*.tar.gz
|
|
test -e "$TAR" || \
|
|
error "Specified version does not match configure.ac"
|
|
|
|
# SIGN THE TARBALL
|
|
|
|
echo Signing the release tarball:
|
|
gpg --sign --detach-sign --armor "$TAR"
|
|
test $? = 0 || \
|
|
error "Failed to sign release tarball"
|
|
|
|
echo Tagging the release:
|
|
git tag -s -m "tagging the $VERSION release" "release-$VERSION" $REV || \
|
|
error "Failed to tag the release"
|
|
|
|
mv "$TAR" "$ASC" "$SRCDIR"
|
|
|
|
echo "=$VERSION="
|
|
echo "$CLNOWRAP"
|
|
echo
|
|
echo
|
|
echo Edit download page:
|
|
echo " http://openbox.org/oldwiki/index.php?title=Openbox:Download&action=edit§ion=1"
|
|
echo
|
|
echo Edit changelog:
|
|
echo " http://openbox.org/oldwiki/index.php?title=Openbox:Changelog&action=edit§ion=1"
|
|
echo
|
|
echo Add the version to the bug tracker:
|
|
echo " https://bugzilla.icculus.org/editversions.cgi?action=add&product=Openbox"
|
|
echo
|
|
echo Push the tag:
|
|
echo " git push origin tag release-$VERSION"
|
|
echo
|
|
echo Email:
|
|
echo " ./release/email $*"
|
|
echo
|
|
echo Update IRC topic and have a beer/juice!
|
|
echo
|
|
cd "$SRCDIR"
|
|
ls -l "$TAR" "$ASC"
|
|
|
|
clean
|
|
exit 0
|