]> git.notmuchmail.org Git - notmuch/blobdiff - devel/release-checks.sh
devel/release-checks.sh: made python version check work with python 3
[notmuch] / devel / release-checks.sh
index 4eff1a7fd9a78f6a9a0e29d3e5773d80a8c99f1d..bf0d68a444b6ce940dc7e8f265f8efff56c7f4bf 100755 (executable)
@@ -13,6 +13,8 @@ fi
 set -o posix
 set -o pipefail # bash feature
 
+readonly DEFAULT_IFS="$IFS" # Note: In this particular case quotes are needed.
+
 # Avoid locale-specific differences in output of executed commands
 LANG=C LC_ALL=C; export LANG LC_ALL
 
@@ -20,8 +22,10 @@ readonly PV_FILE='bindings/python/notmuch/version.py'
 
 # Using array here turned out to be unnecessarily complicated
 emsgs=''
+emsg_count=0
 append_emsg ()
 {
+       emsg_count=$((emsg_count + 1))
        emsgs="${emsgs:+$emsgs\n}  $1"
 }
 
@@ -55,6 +59,17 @@ readonly VERSION
 
 # In the rest of this file, tests collect list of errors to be fixed
 
+echo -n "Checking that git working directory is clean... "
+git_status=`git status --porcelain`
+if [ "$git_status" = '' ]
+then
+       echo Yes.
+else
+       echo No.
+       append_emsg "Git working directory is not clean (git status --porcelain)."
+fi
+unset git_status
+
 verfail ()
 {
        echo No.
@@ -64,7 +79,7 @@ verfail ()
 
 echo -n "Checking that '$VERSION' is good with digits and periods... "
 case $VERSION in
-       *[^0-9.]*)
+       *[!0-9.]*)
                verfail "'$VERSION' contains other characters than digits and periods" ;;
        .*)     verfail "'$VERSION' begins with a period" ;;
        *.)     verfail "'$VERSION' ends with a period" ;;
@@ -73,6 +88,37 @@ case $VERSION in
        *)      verfail "'$VERSION' is a single number" ;;
 esac
 
+echo -n "Checking that LIBNOTMUCH version macros & variables match ... "
+# lib/notmuch.h
+LIBNOTMUCH_MAJOR_VERSION=broken
+LIBNOTMUCH_MINOR_VERSION=broken
+LIBNOTMUCH_MICRO_VERSION=broken
+# lib/Makefile.local
+LIBNOTMUCH_VERSION_MAJOR=borken
+LIBNOTMUCH_VERSION_MINOR=borken
+LIBNOTMUCH_VERSION_RELEASE=borken
+
+eval `awk 'NF == 3 && $1 == "#define" && $2 ~ /^LIBNOTMUCH_[A-Z]+_VERSION$/ \
+       && $3 ~ /^[0-9]+$/ { print $2 "=" $3 }' lib/notmuch.h`
+
+eval `awk 'NF == 3 && $1 ~ /^LIBNOTMUCH_VERSION_[A-Z]+$/ && $2 == "=" \
+       && $3 ~ /^[0-9]+$/ { print $1 "=" $3 }' lib/Makefile.local`
+
+
+check_version_component ()
+{
+       eval local v1=\$LIBNOTMUCH_$1_VERSION
+       eval local v2=\$LIBNOTMUCH_VERSION_$2
+       if [ $v1 != $v2 ]
+       then    append_emsg "LIBNOTMUCH_$1_VERSION ($v1) does not equal LIBNOTMUCH_VERSION_$2 ($v2)"
+       fi
+}
+
+old_emsg_count=$emsg_count
+check_version_component MAJOR MAJOR
+check_version_component MINOR MINOR
+check_version_component MICRO RELEASE
+[ $old_emsg_count = $emsg_count ] && echo Yes. || echo No.
 
 echo -n "Checking that this is Debian package for notmuch... "
 read deb_notmuch deb_version rest < debian/changelog
@@ -95,7 +141,7 @@ else
 fi
 
 echo -n "Checking that python bindings version is $VERSION... "
-py_version=`python -c "execfile('$PV_FILE'); print __VERSION__"`
+py_version=`python -c "with open('$PV_FILE') as vf: exec(vf.read()); print(__VERSION__)"`
 if [ "$py_version" = "$VERSION" ]
 then
        echo Yes.
@@ -161,46 +207,6 @@ case $news_date in
        append_emsg "Date '$news_date' in NEWS file is not in format (yyyy-mm-dd)"
 esac
 
-readonly DATE=${news_date//[()]/} # bash feature
-manthdata ()
-{
-       set x $*
-       if [ $# != 7 ]
-       then
-               append_emsg "'$mp' has too many '.TH' lines"
-               man_mismatch=1
-       fi
-       man_date=${5-} man_version=${7-}
-}
-
-echo -n "Checking that manual page dates and versions are $DATE and $VERSION... "
-manfiles=`find man -type f | sort`
-man_pages_ok=Yes
-for mp in $manfiles
-do
-       case $mp in
-               *.[0-9]) ;; # fall below this 'case ... esac'
-
-               */Makefile.local | */Makefile ) continue ;;
-               */.gitignore)   continue ;;
-               *.bak)          continue ;;
-
-               *)      append_emsg "'$mp': extra file"
-                       man_pages_ok=No
-                       continue
-       esac
-       manthdata `sed -n '/^[.]TH NOTMUCH/ { y/"/ /; p; }' "$mp"`
-       if [ "$man_version" != "$VERSION" ]
-       then    append_emsg "Version '$man_version' is not '$VERSION' in $mp"
-               mman_pages_ok=No
-       fi
-       if [ "$man_date" != "$DATE" ]
-       then    append_emsg "DATE '$man_date' is not '$DATE' in $mp"
-               man_pages_ok=No
-       fi
-done
-echo $man_pages_ok.
-
 if [ -n "$emsgs" ]
 then
        echo