unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [PATCH 1/3] build: write version.stamp file containing $(VERSION) string
@ 2014-02-21 23:20 Tomi Ollila
  2014-02-21 23:20 ` [PATCH 2/3] emacs: defconst notmuch-emacs-version to a value during byte compilation Tomi Ollila
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Tomi Ollila @ 2014-02-21 23:20 UTC (permalink / raw)
  To: notmuch; +Cc: tomi.ollila

This version file will be as prerequisite to the target files
that use the version info for some purpose, like printing
it for the user to examine. The contents of the version.stamp
file is seldom read by the build system itself as the $(VERSION)
variable has the same information.

Thanks to Trevor, David and Mark for their contributions.
---

This is version 6 of

     id:1391956711-21231-1-git-send-email-tomi.ollila@iki.fi

  The only change is $(VERSTAMP) -> version.stamp -- $(VERSTAMP) does not
  get expanded for prerequisities if those are not already defined,
  and as emacs/Makefile.local is included before Makefile.local $(VERSTAMP)
  is useless in emacs/... (expands to nothing). And my original idea for
  $(VERSTAMP) was for typo-checking -- I just did not realize that make does
  not tell me that the variable is undefined so the typo-check I thought of
  just did't happen.


And the following 2 patches version 2 of

        id:1390135903-28167-1-git-send-email-tomi.ollila@iki.fi

  Now utilizes version.stamp to know when notmuch.el is to be
  re-bytecompiled.

 Makefile.local | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/Makefile.local b/Makefile.local
index 174506c..3a56c06 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -22,6 +22,11 @@ VERSION:=$(shell cat ${srcdir}/version)
 ifeq ($(filter release release-message pre-release update-versions,$(MAKECMDGOALS)),)
 ifeq ($(IS_GIT),yes)
 VERSION:=$(shell git describe --match '[0-9.]*'|sed -e s/_/~/ -e s/-/+/ -e s/-/~/)
+# Write the file 'version.stamp' in case its contents differ from $(VERSION)
+FILE_VERSION:=$(shell test -f version.stamp && read vs < version.stamp || vs=; echo $$vs)
+ifneq ($(FILE_VERSION),$(VERSION))
+       $(shell echo "$(VERSION)" > version.stamp)
+endif
 endif
 endif
 
@@ -69,6 +74,11 @@ ifeq ($(shell cat .first-build-message 2>/dev/null),)
 endif
 endif
 
+# Depend (also) on the file 'version'. In case of ifeq ($(IS_GIT),yes)
+# this file may already have been updated.
+version.stamp: version
+	echo $(VERSION) > $@
+
 $(TAR_FILE):
 	if git tag -v $(VERSION) >/dev/null 2>&1; then \
            ref=$(VERSION); \
@@ -280,6 +290,8 @@ notmuch_client_srcs =		\
 
 notmuch_client_modules = $(notmuch_client_srcs:.c=.o)
 
+notmuch.o: version.stamp
+
 notmuch: $(notmuch_client_modules) lib/libnotmuch.a util/libutil.a parse-time-string/libparse-time-string.a
 	$(call quiet,CXX $(CFLAGS)) $^ $(FINAL_LIBNOTMUCH_LDFLAGS) -o $@
 
@@ -318,7 +330,7 @@ install-desktop:
 	desktop-file-install --mode 0644 --dir "$(DESTDIR)$(desktop_dir)" notmuch.desktop
 
 SRCS  := $(SRCS) $(notmuch_client_srcs)
-CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules) notmuch.elc
+CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules) version.stamp
 
 DISTCLEAN := $(DISTCLEAN) .first-build-message Makefile.config
 
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/3] emacs: defconst notmuch-emacs-version to a value during byte compilation
  2014-02-21 23:20 [PATCH 1/3] build: write version.stamp file containing $(VERSION) string Tomi Ollila
@ 2014-02-21 23:20 ` Tomi Ollila
  2014-02-21 23:20 ` [PATCH 3/3] emacs: defun notmuch-hello-versions and bind 'v' in hello mode to it Tomi Ollila
  2014-02-22  8:49 ` [PATCH 1/3] build: write version.stamp file containing $(VERSION) string Mark Walters
  2 siblings, 0 replies; 4+ messages in thread
From: Tomi Ollila @ 2014-02-21 23:20 UTC (permalink / raw)
  To: notmuch; +Cc: tomi.ollila

The notmuch cli program and emacs lisp versions may differ. For now
we can help users with their emacs client problems better if we can
ask what version of emacs MUA they are running. In the future we can
put the emacs MUA version to User-Agent: string in outgoing mail.
---
 emacs/Makefile.local | 6 +++++-
 emacs/notmuch.el     | 7 +++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/emacs/Makefile.local b/emacs/Makefile.local
index 42bfbd9..e78699e 100644
--- a/emacs/Makefile.local
+++ b/emacs/Makefile.local
@@ -24,6 +24,8 @@ emacs_images := \
 
 emacs_bytecode = $(emacs_sources:.el=.elc)
 
+$(dir)/notmuch.elc: version.stamp
+
 # Because of defmacro's and defsubst's, we have to account for load
 # dependencies between Elisp files when byte compiling.  Otherwise,
 # the byte compiler may load an old .elc file when processing a
@@ -40,7 +42,9 @@ CLEAN+=$(dir)/.eldeps $(dir)/.eldeps.tmp
 
 ifeq ($(HAVE_EMACS),1)
 %.elc: %.el $(global_deps)
-	$(call quiet,EMACS) --directory emacs -batch -f batch-byte-compile $<
+	$(call quiet,EMACS) --directory emacs \
+		--eval "(setq notmuch--version \"$(VERSION)\")" \
+		-batch -f batch-byte-compile $<
 endif
 
 ifeq ($(WITH_EMACS),1)
diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index 0471750..1b15054 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -81,6 +81,13 @@ To enter a line break in customize, press \\[quoted-insert] C-j."
   :type '(alist :key-type (string) :value-type (string))
   :group 'notmuch-search)
 
+;; defconst notmuch-version to a value during build-time byte compilation...
+(defconst notmuch-emacs-version
+  (eval-when-compile (if (boundp 'notmuch--version)
+			 notmuch--version
+		       "unknown"))
+  "Version string of this version of Notmuch Emacs MUA.")
+
 (defvar notmuch-query-history nil
   "Variable to store minibuffer history for notmuch queries")
 
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 3/3] emacs: defun notmuch-hello-versions and bind 'v' in hello mode to it
  2014-02-21 23:20 [PATCH 1/3] build: write version.stamp file containing $(VERSION) string Tomi Ollila
  2014-02-21 23:20 ` [PATCH 2/3] emacs: defconst notmuch-emacs-version to a value during byte compilation Tomi Ollila
@ 2014-02-21 23:20 ` Tomi Ollila
  2014-02-22  8:49 ` [PATCH 1/3] build: write version.stamp file containing $(VERSION) string Mark Walters
  2 siblings, 0 replies; 4+ messages in thread
From: Tomi Ollila @ 2014-02-21 23:20 UTC (permalink / raw)
  To: notmuch; +Cc: tomi.ollila

If notmuch cli & notmuch emacs MUA versions differ, print also the
emacs MUA version string (along with the cli version) to the
minibuffer.
---
 emacs/notmuch-hello.el | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index 7b3d76b..f5e7268 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -513,6 +513,18 @@ Such a list can be computed with `notmuch-hello-query-counts'."
       (remove-hook 'window-configuration-change-hook
 		   #'notmuch-hello-window-configuration-change))))
 
+;; the following variable is defined as being defconst in notmuch.el
+(defvar notmuch-emacs-version)
+
+(defun notmuch-hello-versions ()
+  "Display the notmuch version(s)"
+  (interactive)
+  (let ((notmuch-cli-version (notmuch-version)))
+    (message "notmuch version %s"
+	     (if (string= notmuch-emacs-version notmuch-cli-version)
+		 notmuch-cli-version
+	       (concat notmuch-cli-version
+		       " (emacs mua version " notmuch-emacs-version ")")))))
 
 (defvar notmuch-hello-mode-map
   (let ((map (if (fboundp 'make-composed-keymap)
@@ -523,8 +535,7 @@ Such a list can be computed with `notmuch-hello-query-counts'."
 	       ;; it's unlikely to change.
 	       (copy-keymap widget-keymap))))
     (set-keymap-parent map notmuch-common-keymap)
-    (define-key map "v" (lambda () "Display the notmuch version" (interactive)
-			  (message "notmuch version %s" (notmuch-version))))
+    (define-key map "v" 'notmuch-hello-versions)
     (define-key map (kbd "<C-tab>") 'widget-backward)
     map)
   "Keymap for \"notmuch hello\" buffers.")
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/3] build: write version.stamp file containing $(VERSION) string
  2014-02-21 23:20 [PATCH 1/3] build: write version.stamp file containing $(VERSION) string Tomi Ollila
  2014-02-21 23:20 ` [PATCH 2/3] emacs: defconst notmuch-emacs-version to a value during byte compilation Tomi Ollila
  2014-02-21 23:20 ` [PATCH 3/3] emacs: defun notmuch-hello-versions and bind 'v' in hello mode to it Tomi Ollila
@ 2014-02-22  8:49 ` Mark Walters
  2 siblings, 0 replies; 4+ messages in thread
From: Mark Walters @ 2014-02-22  8:49 UTC (permalink / raw)
  To: Tomi Ollila, notmuch; +Cc: tomi.ollila


Patches 2 and 3 look fine +1.

I don't know any Make and haven't really being following the discussion
between Austin and Tomi so can't comment on Patch 1. It all seems to
work well in my testing.

Best wishes

Mark



On Fri, 21 Feb 2014, Tomi Ollila <tomi.ollila@iki.fi> wrote:
> This version file will be as prerequisite to the target files
> that use the version info for some purpose, like printing
> it for the user to examine. The contents of the version.stamp
> file is seldom read by the build system itself as the $(VERSION)
> variable has the same information.
>
> Thanks to Trevor, David and Mark for their contributions.
> ---
>
> This is version 6 of
>
>      id:1391956711-21231-1-git-send-email-tomi.ollila@iki.fi
>
>   The only change is $(VERSTAMP) -> version.stamp -- $(VERSTAMP) does not
>   get expanded for prerequisities if those are not already defined,
>   and as emacs/Makefile.local is included before Makefile.local $(VERSTAMP)
>   is useless in emacs/... (expands to nothing). And my original idea for
>   $(VERSTAMP) was for typo-checking -- I just did not realize that make does
>   not tell me that the variable is undefined so the typo-check I thought of
>   just did't happen.
>
>
> And the following 2 patches version 2 of
>
>         id:1390135903-28167-1-git-send-email-tomi.ollila@iki.fi
>
>   Now utilizes version.stamp to know when notmuch.el is to be
>   re-bytecompiled.
>
>  Makefile.local | 14 +++++++++++++-
>  1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/Makefile.local b/Makefile.local
> index 174506c..3a56c06 100644
> --- a/Makefile.local
> +++ b/Makefile.local
> @@ -22,6 +22,11 @@ VERSION:=$(shell cat ${srcdir}/version)
>  ifeq ($(filter release release-message pre-release update-versions,$(MAKECMDGOALS)),)
>  ifeq ($(IS_GIT),yes)
>  VERSION:=$(shell git describe --match '[0-9.]*'|sed -e s/_/~/ -e s/-/+/ -e s/-/~/)
> +# Write the file 'version.stamp' in case its contents differ from $(VERSION)
> +FILE_VERSION:=$(shell test -f version.stamp && read vs < version.stamp || vs=; echo $$vs)
> +ifneq ($(FILE_VERSION),$(VERSION))
> +       $(shell echo "$(VERSION)" > version.stamp)
> +endif
>  endif
>  endif
>  
> @@ -69,6 +74,11 @@ ifeq ($(shell cat .first-build-message 2>/dev/null),)
>  endif
>  endif
>  
> +# Depend (also) on the file 'version'. In case of ifeq ($(IS_GIT),yes)
> +# this file may already have been updated.
> +version.stamp: version
> +	echo $(VERSION) > $@
> +
>  $(TAR_FILE):
>  	if git tag -v $(VERSION) >/dev/null 2>&1; then \
>             ref=$(VERSION); \
> @@ -280,6 +290,8 @@ notmuch_client_srcs =		\
>  
>  notmuch_client_modules = $(notmuch_client_srcs:.c=.o)
>  
> +notmuch.o: version.stamp
> +
>  notmuch: $(notmuch_client_modules) lib/libnotmuch.a util/libutil.a parse-time-string/libparse-time-string.a
>  	$(call quiet,CXX $(CFLAGS)) $^ $(FINAL_LIBNOTMUCH_LDFLAGS) -o $@
>  
> @@ -318,7 +330,7 @@ install-desktop:
>  	desktop-file-install --mode 0644 --dir "$(DESTDIR)$(desktop_dir)" notmuch.desktop
>  
>  SRCS  := $(SRCS) $(notmuch_client_srcs)
> -CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules) notmuch.elc
> +CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules) version.stamp
>  
>  DISTCLEAN := $(DISTCLEAN) .first-build-message Makefile.config
>  
> -- 
> 1.8.0
>
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-02-22  8:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-21 23:20 [PATCH 1/3] build: write version.stamp file containing $(VERSION) string Tomi Ollila
2014-02-21 23:20 ` [PATCH 2/3] emacs: defconst notmuch-emacs-version to a value during byte compilation Tomi Ollila
2014-02-21 23:20 ` [PATCH 3/3] emacs: defun notmuch-hello-versions and bind 'v' in hello mode to it Tomi Ollila
2014-02-22  8:49 ` [PATCH 1/3] build: write version.stamp file containing $(VERSION) string Mark Walters

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).