X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=devel%2Frelease-checks.sh;h=7ba948224bc732d807b80f7c3886ceb925af2426;hp=d2bbc6a06d077f7f57c6bab8713fc6f30e55bf02;hb=HEAD;hpb=1407901cba742b12931e54765eff819c02aa6764 diff --git a/devel/release-checks.sh b/devel/release-checks.sh index d2bbc6a0..c0accf78 100755 --- a/devel/release-checks.sh +++ b/devel/release-checks.sh @@ -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,12 +22,14 @@ 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" } -for f in ./version debian/changelog NEWS "$PV_FILE" +for f in ./version.txt debian/changelog NEWS "$PV_FILE" do if [ ! -f "$f" ]; then append_emsg "File '$f' is missing" elif [ ! -r "$f" ]; then append_emsg "File '$f' is unreadable" @@ -47,14 +51,25 @@ then exit 1 fi else - echo "Reading './version' file failed (suprisingly!)" + echo "Reading './version' file failed (surprisingly!)" exit 1 -fi < ./version +fi < ./version.txt readonly VERSION # In the rest of this file, tests collect list of errors to be fixed +printf %s "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. @@ -62,9 +77,9 @@ verfail () append_emsg " Please follow the instructions in RELEASING to choose a version" } -echo -n "Checking that '$VERSION' is good with digits and periods... " +printf %s "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,8 +88,7 @@ case $VERSION in *) verfail "'$VERSION' is a single number" ;; esac - -echo -n "Checking that this is Debian package for notmuch... " +printf %s "Checking that this is Debian package for notmuch... " read deb_notmuch deb_version rest < debian/changelog if [ "$deb_notmuch" = 'notmuch' ] then @@ -84,7 +98,7 @@ else append_emsg "Package name '$deb_notmuch' is not 'notmuch' in debian/changelog" fi -echo -n "Checking that Debian package version is $VERSION-1... " +printf %s "Checking that Debian package version is $VERSION-1... " if [ "$deb_version" = "($VERSION-1)" ] then @@ -94,8 +108,8 @@ else append_emsg "Version '$deb_version' is not '($VERSION-1)' in debian/changelog" fi -echo -n "Checking that python bindings version is $VERSION... " -py_version=`python -c "execfile('$PV_FILE'); print __VERSION__"` +printf %s "Checking that python bindings version is $VERSION... " +py_version=`python3 -c "with open('$PV_FILE') as vf: exec(vf.read()); print(__VERSION__)"` if [ "$py_version" = "$VERSION" ] then echo Yes. @@ -104,7 +118,21 @@ else append_emsg "Version '$py_version' is not '$VERSION' in $PV_FILE" fi -echo -n "Checking that this is Notmuch NEWS... " +printf %s "Checking that NEWS header is tidy... " +if [ "`exec sed 's/./=/g; 1q' NEWS`" = "`exec sed '1d; 2q' NEWS`" ] +then + echo Yes. +else + echo No. + if [ "`exec sed '1d; s/=//g; 2q' NEWS`" != '' ] + then + append_emsg "Line 2 in NEWS file is not all '=':s" + else + append_emsg "Line 2 in NEWS file does not have the same length as line 1" + fi +fi + +printf %s "Checking that this is Notmuch NEWS... " read news_notmuch news_version news_date < NEWS if [ "$news_notmuch" = "Notmuch" ] then @@ -114,7 +142,7 @@ else append_emsg "First word '$news_notmuch' is not 'Notmuch' in NEWS file" fi -echo -n "Checking that NEWS version is $VERSION... " +printf %s "Checking that NEWS version is $VERSION... " if [ "$news_version" = "$VERSION" ] then echo Yes. @@ -126,7 +154,7 @@ fi #eval `date '+year=%Y mon=%m day=%d'` today0utc=`date --date=0Z +%s` # gnu date feature -echo -n "Checking that NEWS date is right... " +printf %s "Checking that NEWS date is right... " case $news_date in '('[2-9][0-9][0-9][0-9]-[01][0-9]-[0123][0-9]')') newsdate0utc=`nd=${news_date#\\(}; date --date="${nd%)} 0Z" +%s` @@ -147,45 +175,17 @@ 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. +year=`exec date +%Y` +printf %s "Checking that copyright in documentation contains 2009-$year... " +# Read the value of variable `copyright' defined in 'doc/conf.py'. +copyrightline=$(grep ^copyright doc/conf.py) +case $copyrightline in + *2009-$year*) + echo Yes. ;; + *) + echo No. + append_emsg "The copyright in doc/conf.py line '$copyrightline' does not contain '2009-$year'" +esac if [ -n "$emsgs" ] then