--- /dev/null
+#!/bin/bash
+set -euo pipefail
+
+# Makes sure that is_release_build is only set to yes in a release commit. A
+# release commit must be titled: "Release $MAJOR.$MINOR". Also checks that the
+# release version in the build system matches the commit msg.
+
+# if running under PAPR, use the branch/PR HEAD actually
+# being tested rather than the merge sha
+HEAD=${PAPR_COMMIT:-HEAD}
+
+git log --format=%B -n 1 $HEAD > log.txt
+
+if grep -q ^is_release_build=yes configure.ac; then
+ echo "*** is_release_build is set to yes ***"
+
+ V=$(grep -Po '^#define PACKAGE_VERSION "\K[0-9]+\.[0-9]+(?=")' config.h)
+ if [ -z "$V" ]; then
+ echo "ERROR: couldn't read PACKAGE_VERSION"
+ exit 1
+ fi
+ echo "OK: release version is $V"
+
+ # check if the commit title indicates a release and has the correct version
+ if ! grep -q "^Release $V" log.txt; then
+ echo "ERROR: release commit doesn't match version"
+ echo "Commit message:"
+ cat log.txt
+ echo "Build version: $V"
+ exit 1
+ fi
+ echo "OK: release commit matches version"
+
+ if grep -q "^LIBOSTREE_$V" src/libostree/libostree-devel.sym; then
+ echo "ERROR: devel syms still references release version"
+ exit 1
+ fi
+ echo "OK: devel syms no longer reference release version"
+
+else
+ echo "*** is_release_build is set to no ***"
+
+ if grep -qE "^Release [0-9]+\.[0-9]+" log.txt; then
+ echo "ERROR: release commit does not have is_release_build=yes"
+ exit 1
+ fi
+ echo "OK: commit is not a release"
+fi