#!/bin/sh help() { echo "Usage: $0 [lastrelease]" echo echo " The revision which should be used for release." echo " 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