[PATCH v2 0/9] FreeBSD Support Patches

2012-09-01 Thread David Bremner
Mike Kelly  writes:

> Hi,
>
> Here's a second attempt at adding FreeBSD support. Hopefully most of the
> concerns raised about the initial patch set have been addressed.

I pushed (finally) patches 1,2,4,5,6 and 8. The others either no longer
apply, or there were some outstanding issues in the discussion on the
list.

d


[PATCH] test: make test_expect_equal_file() arguments flexible

2012-09-01 Thread David Bremner
Dmitry Kurochkin  writes:

> Before the change, test_expect_equal_file() function treated the first
> argument as "actual output file" and the second argument as "expected
> output file".  When the test fails, the files are copied for later
> inspection.  The first files was copied to "$testname.output" and the
> second file to "$testname.expected".  The argument order for
> test_expect_equal_file() is often wrong which results in confusing
> diff output and incorrectly named files.

pushed, 

d


[PATCH] emacs: correct `notmuch-search-mode's docstring wrt `notmuch-search-tag-all'

2012-09-01 Thread David Bremner
Pieter Praet  writes:

> * emacs/notmuch.el (notmuch-search-mode):
>   `notmuch-search-tag-all' currently uses the current query string
>   instead of `notmuch-search-find-thread-id-region-search', which
>   might cause a race condition.

pushed, finally.

d


[PATCH v2] cli: make the command line parser's errors more informative.

2012-09-01 Thread David Bremner
Mark Walters  writes:

> Previously, the cli parser was a little erratic in what errors it
> reported and would fail silently in many cases (for example, when no
> argument was passed to an integer option). This was particularly
> annoying as the user could not (easily) tell whether the command
> failed or just there were no search results.

pushed,

d


[PATCH 1/3] lib: fix NULL checks for filenames iterators

2012-09-01 Thread David Bremner
Sascha Silbe  writes:

> The API documentation (notmuch.h) states that the parameter may be NULL,
> but the implementation only checked the current element, potentially
> dereferencing a NULL pointer in the process.
>

Pushed this one patch.

d


[PATCH 2/5] emacs: make notmuch-show return its buffer

2012-09-01 Thread David Bremner
Mark Walters  writes:

> notmuch-pick uses the returned buffer to try and make sure it does not
> close the wrong buffer.

Pushed this one patch,

d


[PATCH] contrib/nmbug/nmbug-status: if realname empty, use part of mailaddr

2012-09-01 Thread David Bremner
Tomi Ollila  writes:

> When the From: field in patch email does not contain 'realname'
> field, the patch listing does not show anything as patch sender.
> In this case use the part before '@' in mail address as the sender
> identification in patch listing.

pushed, 

d


Bug (?) difference 24.1 and 23.3.1

2012-09-01 Thread Dmitrijs Ledkovs
On 31 August 2012 15:45, Daniel Bergey  wrote:
>
> Now I just have to get used to pictures in my email
>

I understand how disturbing that might be.

Welcome to 2012... at least it's not full html5 & css3 animations.
Maybe emacs will support that in couple of years.

I have customized that functions with an empty one, so I don't see any
pictures, but all of my email works.

Regards,

Dmitrijs.


Re: [PATCH v2 0/9] FreeBSD Support Patches

2012-09-01 Thread David Bremner
Mike Kelly  writes:

> Hi,
>
> Here's a second attempt at adding FreeBSD support. Hopefully most of the
> concerns raised about the initial patch set have been addressed.

I pushed (finally) patches 1,2,4,5,6 and 8. The others either no longer
apply, or there were some outstanding issues in the discussion on the
list.

d
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH] test: make test_expect_equal_file() arguments flexible

2012-09-01 Thread David Bremner
Dmitry Kurochkin  writes:

> Before the change, test_expect_equal_file() function treated the first
> argument as "actual output file" and the second argument as "expected
> output file".  When the test fails, the files are copied for later
> inspection.  The first files was copied to "$testname.output" and the
> second file to "$testname.expected".  The argument order for
> test_expect_equal_file() is often wrong which results in confusing
> diff output and incorrectly named files.

pushed, 

d
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH] emacs: correct `notmuch-search-mode's docstring wrt `notmuch-search-tag-all'

2012-09-01 Thread David Bremner
Pieter Praet  writes:

> * emacs/notmuch.el (notmuch-search-mode):
>   `notmuch-search-tag-all' currently uses the current query string
>   instead of `notmuch-search-find-thread-id-region-search', which
>   might cause a race condition.

pushed, finally.

d
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH v2] cli: make the command line parser's errors more informative.

2012-09-01 Thread David Bremner
Mark Walters  writes:

> Previously, the cli parser was a little erratic in what errors it
> reported and would fail silently in many cases (for example, when no
> argument was passed to an integer option). This was particularly
> annoying as the user could not (easily) tell whether the command
> failed or just there were no search results.

pushed,

d
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH 1/3] lib: fix NULL checks for filenames iterators

2012-09-01 Thread David Bremner
Sascha Silbe  writes:

> The API documentation (notmuch.h) states that the parameter may be NULL,
> but the implementation only checked the current element, potentially
> dereferencing a NULL pointer in the process.
>

Pushed this one patch.

d
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH 2/5] emacs: make notmuch-show return its buffer

2012-09-01 Thread David Bremner
Mark Walters  writes:

> notmuch-pick uses the returned buffer to try and make sure it does not
> close the wrong buffer.

Pushed this one patch,

d
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH] contrib/nmbug/nmbug-status: if realname empty, use part of mailaddr

2012-09-01 Thread David Bremner
Tomi Ollila  writes:

> When the From: field in patch email does not contain 'realname'
> field, the patch listing does not show anything as patch sender.
> In this case use the part before '@' in mail address as the sender
> identification in patch listing.

pushed, 

d
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: Bug (?) difference 24.1 and 23.3.1

2012-09-01 Thread Dmitrijs Ledkovs
On 31 August 2012 15:45, Daniel Bergey  wrote:
>
> Now I just have to get used to pictures in my email
>

I understand how disturbing that might be.

Welcome to 2012... at least it's not full html5 & css3 animations.
Maybe emacs will support that in couple of years.

I have customized that functions with an empty one, so I don't see any
pictures, but all of my email works.

Regards,

Dmitrijs.
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH V2 2/2] {., man}/Makefile.local: edit/remove release-checks.sh related targets

2012-09-01 Thread Tomi Ollila
Use new target release-checks in place of verify-version-debian,
verify-version-python verify-version-manpage. This target executes
devel/release-checks.sh which does all the verifications the three
dropped targets did, and some more.
---
 Makefile.local | 28 
 man/Makefile.local |  9 +
 2 files changed, 5 insertions(+), 32 deletions(-)

diff --git a/Makefile.local b/Makefile.local
index de984ab..99f1e19 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -187,7 +187,7 @@ release-message:
 verify-source-tree-and-version: verify-no-dirty-code

 .PHONY: verify-no-dirty-code
-verify-no-dirty-code: verify-version-debian verify-version-python 
verify-version-manpage
+verify-no-dirty-code: release-checks
 ifeq ($(IS_GIT),yes)
@printf "Checking that source tree is clean..."
 ifneq ($(shell git ls-files -m),)
@@ -204,29 +204,9 @@ else
 endif
 endif

-.PHONY: verify-version-debian
-verify-version-debian: verify-version-components
-   @echo -n "Checking that Debian package version is $(VERSION)-1..."
-   @[ "$(VERSION)-1" = $$(sed '1{ s/).*//; s/.*(//; q; }' 
debian/changelog) ] || \
-   (echo "No." && \
-echo "Please edit version and debian/changelog to have 
consistent versions." && false)
-   @echo "Good."
-
-.PHONY: verify-version-python
-verify-version-python: verify-version-components
-   @echo -n "Checking that python bindings version is $(VERSION)..."
-   @[ "$(VERSION)" = $$(python -c "execfile('$(PV_FILE)'); print 
__VERSION__") ] || \
-   (echo "No." && \
-echo "Please edit version and $(PV_FILE) to have consistent 
versions." && false)
-   @echo "Good."
-
-.PHONY: verify-version-components
-verify-version-components:
-   @echo -n "Checking that $(VERSION) consists only of digits and 
periods..."
-   @echo $(VERSION) | grep -q -x '^[0-9.]*$$' || \
-   (echo "No." && \
-echo "Please follow the instructions in RELEASING to choose a 
version" && false)
-   @echo "Good."
+.PHONY: release-checks
+release-checks:
+   exec devel/release-checks.sh

 .PHONY: verify-newer
 verify-newer:
diff --git a/man/Makefile.local b/man/Makefile.local
index d43a949..72e2a18 100644
--- a/man/Makefile.local
+++ b/man/Makefile.local
@@ -32,7 +32,7 @@ COMPRESSED_MAN := $(MAN1_GZ) $(MAN5_GZ) $(MAN7_GZ)
 %.gz: %
gzip --stdout $^ > $@

-.PHONY: install-man update-man-versions verify-version-manpage
+.PHONY: install-man update-man-versions

 install-man: $(COMPRESSED_MAN)
mkdir -p "$(DESTDIR)$(mandir)/man1"
@@ -43,13 +43,6 @@ install-man: $(COMPRESSED_MAN)
install -m0644 $(MAN7_GZ) $(DESTDIR)/$(mandir)/man7
cd $(DESTDIR)/$(mandir)/man1 && ln -sf notmuch.1.gz notmuch-setup.1.gz

-verify-version-manpage: verify-version-components
-   @echo -n "Checking that manual page version is $(VERSION)..."
-   @[ "$(VERSION)" = $$(sed -n '/^[.]TH NOTMUCH 1/{s/.*"Notmuch 
//;s/".*//p;}' $(MAIN_PAGE)) ] || \
-   (echo "No." && \
-echo "Please edit version and notmuch.1 to have consistent 
versions." && false)
-   @echo "Good."
-
 update-man-versions: $(MAN_SOURCE)
for file in $(MAN_SOURCE); do \
cp $$file $$file.bak ; \
-- 
1.7.11.4



[PATCH V2 1/2] devel: add release-checks.sh

2012-09-01 Thread Tomi Ollila
Currently Makefile.local contains some machine executable release
checking functionality. This is unnecessarily complex way to do it:

Multiline script functionality is hard to embed -- from Makefile point
of view there is just one line split using backslashes and every line
ends with ';'. It is hard to maintain such "script" when it gets longer.

The embedded script does not fail as robust as separate script; set -eu
could be added to get same level of robustness -- but the provided
Bourne Again Shell (bash) script exceeds this with 'set -o pipefail',
making the script to fail when any of the commands in pipeline fails
(and not just the last one).

Checking for release is done very seldom compared to all other use;
The whole Makefile.local gets simpler and easier to grasp when most
release checking targets are removed.

When release checking is done, the steps are executed sequentially;
nothing is allowed to be skipped due to some satisfied dependency.
---

This patch obsoletes (now moreinfo) patch in

id:"1344456107-19308-1-git-send-email-tomi.ollila at iki.fi"

 devel/release-checks.sh | 211 
 1 file changed, 211 insertions(+)
 create mode 100755 devel/release-checks.sh

diff --git a/devel/release-checks.sh b/devel/release-checks.sh
new file mode 100755
index 000..7dadefa
--- /dev/null
+++ b/devel/release-checks.sh
@@ -0,0 +1,211 @@
+#!/usr/bin/env bash
+
+set -eu
+#set -x # or enter bash -x ... on command line
+
+if [ x"${BASH_VERSION-}" = x ]
+then   echo
+   echo "Please execute this script using 'bash' interpreter"
+   echo
+   exit 1
+fi
+
+set -o pipefail # bash feature
+
+# Avoid locale-specific differences in output of executed commands
+LANG=C LC_ALL=C; export LANG LC_ALL
+
+readonly DEFAULT_IFS="$IFS"
+
+readonly PV_FILE='bindings/python/notmuch/version.py'
+
+# Using array here turned out to be unnecessarily complicated
+emsgs=''
+append_emsg ()
+{
+   emsgs="${emsgs:+$emsgs\n}  $1"
+}
+
+for f in ./version debian/changelog NEWS "$PV_FILE"
+do
+   test -f $f || { append_emsg "File '$f' is missing"; continue; }
+   test -r $f || { append_emsg "File '$f' is unreadable"; continue; }
+   test -s $f ||   append_emsg "File '$f' is empty"
+done
+
+if [ -n "$emsgs" ]
+then
+   echo 'Release files problems; fix these and try again:'
+   echo -e "$emsgs"
+   exit 1
+fi
+
+if read VERSION
+then
+   if read rest
+   thenecho "'version' file contains more than one line"
+   exit 1
+   fi
+else
+   echo "Reading './version' file failed (suprisingly!)"
+   exit 1
+fi < ./version
+
+readonly VERSION
+
+verfail ()
+{
+   echo No.
+   echo "$@"
+   echo "Please follow the instructions in RELEASING to choose a version"
+   exit 1
+}
+
+echo -n "Checking that '$VERSION' is good with digits and periods... "
+if [ -z "${VERSION//[0123456789.]/}" ] # bash feature
+then
+   case $VERSION in
+   .*) verfail "'$VERSION' begins with a period" ;;
+   *.) verfail "'$VERSION' ends with a period" ;;
+   *..*)   verfail "'$VERSION' contains two consecutive periods" ;;
+   *.*)echo Yes. ;;
+   *)  verfail "'$VERSION' is a single number" ;;
+   esac
+else
+   verfail "'$VERSION' contains other characters than digits and periods"
+fi
+
+
+# In the rest of this file, tests collect list of errors to be fixed
+
+echo -n "Checking that this is Debian package for notmuch... "
+read deb_notmuch deb_version rest < debian/changelog
+if [ "$deb_notmuch" = 'notmuch' ]
+then
+   echo Yes.
+else
+   echo No.
+   append_emsg "Package name '$deb_notmuch' is not 'notmuch' in 
debian/changelog"
+fi
+
+echo -n "Checking that Debian package version is $VERSION-1... "
+
+if [ "$deb_version" = "($VERSION-1)" ]
+then
+   echo Yes.
+else
+   echo No.
+   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__"`
+if [ "$py_version" = "$VERSION" ]
+then
+   echo Yes.
+else
+   echo No.
+   append_emsg "Version '$py_version' is not '$VERSION' in $PV_FILE"
+fi
+
+echo -n "Checking that this is Notmuch NEWS... "
+read news_notmuch news_version news_date < NEWS
+if [ "$news_notmuch" = "Notmuch" ]
+then
+   echo Yes.
+else
+   echo No.
+   append_emsg "First word '$news_notmuch' is not 'Notmuch' in NEWS file"
+fi
+
+echo -n "Checking that NEWS version is $VERSION... "
+if [ "$news_version" = "$VERSION" ]
+then
+   echo Yes.
+else
+   echo No.
+   append_emsg "Version '$news_version' in NEWS file is not '$VERSION'"
+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... "
+case $news_date in
+ '('[2-9][0-9][0-9][0-9]-[01][0-9]-

[PATCH V2 2/2] {., man}/Makefile.local: edit/remove release-checks.sh related targets

2012-09-01 Thread Tomi Ollila
Use new target release-checks in place of verify-version-debian,
verify-version-python verify-version-manpage. This target executes
devel/release-checks.sh which does all the verifications the three
dropped targets did, and some more.
---
 Makefile.local | 28 
 man/Makefile.local |  9 +
 2 files changed, 5 insertions(+), 32 deletions(-)

diff --git a/Makefile.local b/Makefile.local
index de984ab..99f1e19 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -187,7 +187,7 @@ release-message:
 verify-source-tree-and-version: verify-no-dirty-code
 
 .PHONY: verify-no-dirty-code
-verify-no-dirty-code: verify-version-debian verify-version-python 
verify-version-manpage
+verify-no-dirty-code: release-checks
 ifeq ($(IS_GIT),yes)
@printf "Checking that source tree is clean..."
 ifneq ($(shell git ls-files -m),)
@@ -204,29 +204,9 @@ else
 endif
 endif
 
-.PHONY: verify-version-debian
-verify-version-debian: verify-version-components
-   @echo -n "Checking that Debian package version is $(VERSION)-1..."
-   @[ "$(VERSION)-1" = $$(sed '1{ s/).*//; s/.*(//; q; }' 
debian/changelog) ] || \
-   (echo "No." && \
-echo "Please edit version and debian/changelog to have 
consistent versions." && false)
-   @echo "Good."
-
-.PHONY: verify-version-python
-verify-version-python: verify-version-components
-   @echo -n "Checking that python bindings version is $(VERSION)..."
-   @[ "$(VERSION)" = $$(python -c "execfile('$(PV_FILE)'); print 
__VERSION__") ] || \
-   (echo "No." && \
-echo "Please edit version and $(PV_FILE) to have consistent 
versions." && false)
-   @echo "Good."
-
-.PHONY: verify-version-components
-verify-version-components:
-   @echo -n "Checking that $(VERSION) consists only of digits and 
periods..."
-   @echo $(VERSION) | grep -q -x '^[0-9.]*$$' || \
-   (echo "No." && \
-echo "Please follow the instructions in RELEASING to choose a 
version" && false)
-   @echo "Good."
+.PHONY: release-checks
+release-checks:
+   exec devel/release-checks.sh
 
 .PHONY: verify-newer
 verify-newer:
diff --git a/man/Makefile.local b/man/Makefile.local
index d43a949..72e2a18 100644
--- a/man/Makefile.local
+++ b/man/Makefile.local
@@ -32,7 +32,7 @@ COMPRESSED_MAN := $(MAN1_GZ) $(MAN5_GZ) $(MAN7_GZ)
 %.gz: %
gzip --stdout $^ > $@
 
-.PHONY: install-man update-man-versions verify-version-manpage
+.PHONY: install-man update-man-versions
 
 install-man: $(COMPRESSED_MAN)
mkdir -p "$(DESTDIR)$(mandir)/man1"
@@ -43,13 +43,6 @@ install-man: $(COMPRESSED_MAN)
install -m0644 $(MAN7_GZ) $(DESTDIR)/$(mandir)/man7
cd $(DESTDIR)/$(mandir)/man1 && ln -sf notmuch.1.gz notmuch-setup.1.gz
 
-verify-version-manpage: verify-version-components
-   @echo -n "Checking that manual page version is $(VERSION)..."
-   @[ "$(VERSION)" = $$(sed -n '/^[.]TH NOTMUCH 1/{s/.*"Notmuch 
//;s/".*//p;}' $(MAIN_PAGE)) ] || \
-   (echo "No." && \
-echo "Please edit version and notmuch.1 to have consistent 
versions." && false)
-   @echo "Good."
-
 update-man-versions: $(MAN_SOURCE)
for file in $(MAN_SOURCE); do \
cp $$file $$file.bak ; \
-- 
1.7.11.4

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH V2 1/2] devel: add release-checks.sh

2012-09-01 Thread Tomi Ollila
Currently Makefile.local contains some machine executable release
checking functionality. This is unnecessarily complex way to do it:

Multiline script functionality is hard to embed -- from Makefile point
of view there is just one line split using backslashes and every line
ends with ';'. It is hard to maintain such "script" when it gets longer.

The embedded script does not fail as robust as separate script; set -eu
could be added to get same level of robustness -- but the provided
Bourne Again Shell (bash) script exceeds this with 'set -o pipefail',
making the script to fail when any of the commands in pipeline fails
(and not just the last one).

Checking for release is done very seldom compared to all other use;
The whole Makefile.local gets simpler and easier to grasp when most
release checking targets are removed.

When release checking is done, the steps are executed sequentially;
nothing is allowed to be skipped due to some satisfied dependency.
---

This patch obsoletes (now moreinfo) patch in

id:"1344456107-19308-1-git-send-email-tomi.oll...@iki.fi"

 devel/release-checks.sh | 211 
 1 file changed, 211 insertions(+)
 create mode 100755 devel/release-checks.sh

diff --git a/devel/release-checks.sh b/devel/release-checks.sh
new file mode 100755
index 000..7dadefa
--- /dev/null
+++ b/devel/release-checks.sh
@@ -0,0 +1,211 @@
+#!/usr/bin/env bash
+
+set -eu
+#set -x # or enter bash -x ... on command line
+
+if [ x"${BASH_VERSION-}" = x ]
+then   echo
+   echo "Please execute this script using 'bash' interpreter"
+   echo
+   exit 1
+fi
+
+set -o pipefail # bash feature
+
+# Avoid locale-specific differences in output of executed commands
+LANG=C LC_ALL=C; export LANG LC_ALL
+
+readonly DEFAULT_IFS="$IFS"
+
+readonly PV_FILE='bindings/python/notmuch/version.py'
+
+# Using array here turned out to be unnecessarily complicated
+emsgs=''
+append_emsg ()
+{
+   emsgs="${emsgs:+$emsgs\n}  $1"
+}
+
+for f in ./version debian/changelog NEWS "$PV_FILE"
+do
+   test -f $f || { append_emsg "File '$f' is missing"; continue; }
+   test -r $f || { append_emsg "File '$f' is unreadable"; continue; }
+   test -s $f ||   append_emsg "File '$f' is empty"
+done
+
+if [ -n "$emsgs" ]
+then
+   echo 'Release files problems; fix these and try again:'
+   echo -e "$emsgs"
+   exit 1
+fi
+
+if read VERSION
+then
+   if read rest
+   thenecho "'version' file contains more than one line"
+   exit 1
+   fi
+else
+   echo "Reading './version' file failed (suprisingly!)"
+   exit 1
+fi < ./version
+
+readonly VERSION
+
+verfail ()
+{
+   echo No.
+   echo "$@"
+   echo "Please follow the instructions in RELEASING to choose a version"
+   exit 1
+}
+
+echo -n "Checking that '$VERSION' is good with digits and periods... "
+if [ -z "${VERSION//[0123456789.]/}" ] # bash feature
+then
+   case $VERSION in
+   .*) verfail "'$VERSION' begins with a period" ;;
+   *.) verfail "'$VERSION' ends with a period" ;;
+   *..*)   verfail "'$VERSION' contains two consecutive periods" ;;
+   *.*)echo Yes. ;;
+   *)  verfail "'$VERSION' is a single number" ;;
+   esac
+else
+   verfail "'$VERSION' contains other characters than digits and periods"
+fi
+
+
+# In the rest of this file, tests collect list of errors to be fixed
+
+echo -n "Checking that this is Debian package for notmuch... "
+read deb_notmuch deb_version rest < debian/changelog
+if [ "$deb_notmuch" = 'notmuch' ]
+then
+   echo Yes.
+else
+   echo No.
+   append_emsg "Package name '$deb_notmuch' is not 'notmuch' in 
debian/changelog"
+fi
+
+echo -n "Checking that Debian package version is $VERSION-1... "
+
+if [ "$deb_version" = "($VERSION-1)" ]
+then
+   echo Yes.
+else
+   echo No.
+   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__"`
+if [ "$py_version" = "$VERSION" ]
+then
+   echo Yes.
+else
+   echo No.
+   append_emsg "Version '$py_version' is not '$VERSION' in $PV_FILE"
+fi
+
+echo -n "Checking that this is Notmuch NEWS... "
+read news_notmuch news_version news_date < NEWS
+if [ "$news_notmuch" = "Notmuch" ]
+then
+   echo Yes.
+else
+   echo No.
+   append_emsg "First word '$news_notmuch' is not 'Notmuch' in NEWS file"
+fi
+
+echo -n "Checking that NEWS version is $VERSION... "
+if [ "$news_version" = "$VERSION" ]
+then
+   echo Yes.
+else
+   echo No.
+   append_emsg "Version '$news_version' in NEWS file is not '$VERSION'"
+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... "
+case $news_date in
+ '('[2-9][0-9][0-9][0-9]-[01][0-9]-[01