unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* provide elpa packages
@ 2016-11-19 17:44 David Bremner
  2016-11-19 17:44 ` [PATCH 1/2] build: Move variable definitions to Makefile.global David Bremner
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: David Bremner @ 2016-11-19 17:44 UTC (permalink / raw)
  To: notmuch

This is an answer to the discussion we were having on irc the other day about easily installing the emacs front-end for a single user.

For users of package.el supporting emacs (iirc, emacs 24.1+), you can

1) make elpa
2) From within emacs M-x package-install-file <return> the-tarball-produced-in-step-1 <return>

That's it, no modifications of paths etc... required.

[PATCH 1/2] build: Move variable definitions to Makefile.global

This looks big, but it's just code movement. Of course with makefiles
moving things around is not without peril, so test builds in various
corner cases (e.g. not current Debian) would be a good idea

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

* [PATCH 1/2] build: Move variable definitions to Makefile.global
  2016-11-19 17:44 provide elpa packages David Bremner
@ 2016-11-19 17:44 ` David Bremner
  2016-11-19 17:44 ` [PATCH 2/2] build/emacs: add target to create elpa package David Bremner
  2016-11-25 16:49 ` provide elpa packages Tomi Ollila
  2 siblings, 0 replies; 7+ messages in thread
From: David Bremner @ 2016-11-19 17:44 UTC (permalink / raw)
  To: notmuch

I noticed when trying to use VERSION (and derived variables) in a
subdirectory that the top level Makefile.local needed to be included
first. But according to c10085c77b407d9ea704f8b4f9e0a805f63e72cb it
actually needs to be last. To break this conflict, move the variables
definitions into a new Makefile.global.
---
 Makefile        |  2 ++
 Makefile.global | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 Makefile.local  | 62 --------------------------------------------------------
 3 files changed, 65 insertions(+), 62 deletions(-)
 create mode 100644 Makefile.global

diff --git a/Makefile b/Makefile
index 4c0e8c6..6d06903 100644
--- a/Makefile
+++ b/Makefile
@@ -33,6 +33,8 @@ ifeq ($(configure_options),)
 endif
 	$(srcdir)/configure $(configure_options)
 
+# runtime variable definitions available in all subdirs
+include Makefile.global
 # Finally, include all of the Makefile.local fragments where all the
 # real work is done.
 
diff --git a/Makefile.global b/Makefile.global
new file mode 100644
index 0000000..444e6bb
--- /dev/null
+++ b/Makefile.global
@@ -0,0 +1,63 @@
+# Here's the (hopefully simple) versioning scheme.
+#
+# Releases of notmuch have a two-digit version (0.1, 0.2, etc.). We
+# increment the second digit for each release and increment the first
+# digit when we reach particularly major milestones of usability.
+#
+# Between releases, (such as when compiling notmuch from the git
+# repository), we let git append identification of the actual commit.
+PACKAGE=notmuch
+
+IS_GIT:=$(if $(wildcard ${srcdir}/.git),yes,no)
+
+ifeq ($(IS_GIT),yes)
+DATE:=$(shell git --git-dir=${srcdir}/.git log --date=short -1 --pretty=format:%cd)
+else
+DATE:=$(shell date +%F)
+endif
+
+VERSION:=$(shell cat ${srcdir}/version)
+ELPA_VERSION:=$(subst ~,_,$(VERSION))
+ifeq ($(filter release release-message pre-release update-versions,$(MAKECMDGOALS)),)
+ifeq ($(IS_GIT),yes)
+VERSION:=$(shell git --git-dir=${srcdir}/.git describe --abbrev=7 --match '[0-9.]*'|sed -e s/_/~/ -e s/-/+/ -e s/-/~/)
+# drop the ~g$sha1 part
+ELPA_VERSION:=$(word 1,$(subst ~, ,$(VERSION)))
+
+# 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
+
+UPSTREAM_TAG=$(subst ~,_,$(VERSION))
+DEB_TAG=debian/$(UPSTREAM_TAG)-1
+
+RELEASE_HOST=notmuchmail.org
+RELEASE_DIR=/srv/notmuchmail.org/www/releases
+RELEASE_URL=https://notmuchmail.org/releases
+TAR_FILE=$(PACKAGE)-$(VERSION).tar.gz
+ELPA_FILE:=$(PACKAGE)-emacs-$(ELPA_VERSION).tar
+DEB_TAR_FILE=$(PACKAGE)_$(VERSION).orig.tar.gz
+SHA1_FILE=$(TAR_FILE).sha1
+GPG_FILE=$(SHA1_FILE).asc
+
+PV_FILE=bindings/python/notmuch/version.py
+
+# Smash together user's values with our extra values
+STD_CFLAGS := -std=gnu99
+FINAL_CFLAGS = -DNOTMUCH_VERSION=$(VERSION) $(CPPFLAGS) $(STD_CFLAGS) $(CFLAGS) $(WARN_CFLAGS) $(extra_cflags) $(CONFIGURE_CFLAGS)
+FINAL_CXXFLAGS = $(CPPFLAGS) $(CXXFLAGS) $(WARN_CXXFLAGS) $(extra_cflags) $(extra_cxxflags) $(CONFIGURE_CXXFLAGS)
+FINAL_NOTMUCH_LDFLAGS = $(LDFLAGS) -Lutil -lutil -Llib -lnotmuch
+ifeq ($(LIBDIR_IN_LDCONFIG),0)
+FINAL_NOTMUCH_LDFLAGS += $(RPATH_LDFLAGS)
+endif
+FINAL_NOTMUCH_LDFLAGS += $(AS_NEEDED_LDFLAGS) $(GMIME_LDFLAGS) $(TALLOC_LDFLAGS) $(ZLIB_LDFLAGS)
+FINAL_NOTMUCH_LINKER = CC
+ifneq ($(LINKER_RESOLVES_LIBRARY_DEPENDENCIES),1)
+FINAL_NOTMUCH_LDFLAGS += $(CONFIGURE_LDFLAGS)
+FINAL_NOTMUCH_LINKER = CXX
+endif
+FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(AS_NEEDED_LDFLAGS) $(CONFIGURE_LDFLAGS)
diff --git a/Makefile.local b/Makefile.local
index 0a122ab..2220823 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -1,67 +1,5 @@
 # -*- makefile -*-
 
-# Here's the (hopefully simple) versioning scheme.
-#
-# Releases of notmuch have a two-digit version (0.1, 0.2, etc.). We
-# increment the second digit for each release and increment the first
-# digit when we reach particularly major milestones of usability.
-#
-# Between releases, (such as when compiling notmuch from the git
-# repository), we let git append identification of the actual commit.
-PACKAGE=notmuch
-
-IS_GIT:=$(if $(wildcard ${srcdir}/.git),yes,no)
-
-ifeq ($(IS_GIT),yes)
-DATE:=$(shell git --git-dir=${srcdir}/.git log --date=short -1 --pretty=format:%cd)
-else
-DATE:=$(shell date +%F)
-endif
-
-VERSION:=$(shell cat ${srcdir}/version)
-ELPA_VERSION:=$(subst ~,_,$(VERSION))
-ifeq ($(filter release release-message pre-release update-versions,$(MAKECMDGOALS)),)
-ifeq ($(IS_GIT),yes)
-VERSION:=$(shell git --git-dir=${srcdir}/.git describe --abbrev=7 --match '[0-9.]*'|sed -e s/_/~/ -e s/-/+/ -e s/-/~/)
-# drop the ~g$sha1 part
-ELPA_VERSION:=$(word 1,$(subst ~, ,$(VERSION)))
-# 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
-
-UPSTREAM_TAG=$(subst ~,_,$(VERSION))
-DEB_TAG=debian/$(UPSTREAM_TAG)-1
-
-RELEASE_HOST=notmuchmail.org
-RELEASE_DIR=/srv/notmuchmail.org/www/releases
-RELEASE_URL=https://notmuchmail.org/releases
-TAR_FILE=$(PACKAGE)-$(VERSION).tar.gz
-DEB_TAR_FILE=$(PACKAGE)_$(VERSION).orig.tar.gz
-SHA1_FILE=$(TAR_FILE).sha1
-GPG_FILE=$(SHA1_FILE).asc
-
-PV_FILE=bindings/python/notmuch/version.py
-
-# Smash together user's values with our extra values
-STD_CFLAGS := -std=gnu99
-FINAL_CFLAGS = -DNOTMUCH_VERSION=$(VERSION) $(CPPFLAGS) $(STD_CFLAGS) $(CFLAGS) $(WARN_CFLAGS) $(extra_cflags) $(CONFIGURE_CFLAGS)
-FINAL_CXXFLAGS = $(CPPFLAGS) $(CXXFLAGS) $(WARN_CXXFLAGS) $(extra_cflags) $(extra_cxxflags) $(CONFIGURE_CXXFLAGS)
-FINAL_NOTMUCH_LDFLAGS = $(LDFLAGS) -Lutil -lutil -Llib -lnotmuch
-ifeq ($(LIBDIR_IN_LDCONFIG),0)
-FINAL_NOTMUCH_LDFLAGS += $(RPATH_LDFLAGS)
-endif
-FINAL_NOTMUCH_LDFLAGS += $(AS_NEEDED_LDFLAGS) $(GMIME_LDFLAGS) $(TALLOC_LDFLAGS) $(ZLIB_LDFLAGS)
-FINAL_NOTMUCH_LINKER = CC
-ifneq ($(LINKER_RESOLVES_LIBRARY_DEPENDENCIES),1)
-FINAL_NOTMUCH_LDFLAGS += $(CONFIGURE_LDFLAGS)
-FINAL_NOTMUCH_LINKER = CXX
-endif
-FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(AS_NEEDED_LDFLAGS) $(CONFIGURE_LDFLAGS)
-
 .PHONY: all
 all: notmuch notmuch-shared build-man ruby-bindings
 ifeq ($(MAKECMDGOALS),)
-- 
2.10.2

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

* [PATCH 2/2] build/emacs: add target to create elpa package
  2016-11-19 17:44 provide elpa packages David Bremner
  2016-11-19 17:44 ` [PATCH 1/2] build: Move variable definitions to Makefile.global David Bremner
@ 2016-11-19 17:44 ` David Bremner
  2016-11-25 16:49 ` provide elpa packages Tomi Ollila
  2 siblings, 0 replies; 7+ messages in thread
From: David Bremner @ 2016-11-19 17:44 UTC (permalink / raw)
  To: notmuch

This package can be created without emacs, but will only be usable in
versions of emacs supporting package.el
---
 Makefile.global      |  2 ++
 emacs/Makefile.local | 10 ++++++++++
 2 files changed, 12 insertions(+)

diff --git a/Makefile.global b/Makefile.global
index 444e6bb..d8f335a 100644
--- a/Makefile.global
+++ b/Makefile.global
@@ -23,6 +23,8 @@ ifeq ($(IS_GIT),yes)
 VERSION:=$(shell git --git-dir=${srcdir}/.git describe --abbrev=7 --match '[0-9.]*'|sed -e s/_/~/ -e s/-/+/ -e s/-/~/)
 # drop the ~g$sha1 part
 ELPA_VERSION:=$(word 1,$(subst ~, ,$(VERSION)))
+# convert git version to package.el friendly form
+ELPA_VERSION:=$(subst +,snapshot,$(ELPA_VERSION))
 
 # 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)
diff --git a/emacs/Makefile.local b/emacs/Makefile.local
index 90a57cc..f163617 100644
--- a/emacs/Makefile.local
+++ b/emacs/Makefile.local
@@ -24,6 +24,8 @@ emacs_sources := \
 	$(dir)/notmuch-company.el \
 	$(dir)/notmuch-draft.el
 
+elpa_sources := ${emacs_sources} $(dir)/notmuch-pkg.el
+
 $(dir)/notmuch-version.el: $(dir)/Makefile.local version.stamp
 $(dir)/notmuch-version.el: $(srcdir)/$(dir)/notmuch-version.el.tmpl
 	@sed -e 's/%AG%/Generated file (from $(<F)) -- do not edit!/' \
@@ -73,6 +75,14 @@ ifeq ($(HAVE_EMACS),1)
 	$(call quiet,EMACS) --directory emacs -batch -f batch-byte-compile $<
 endif
 
+elpa: $(ELPA_FILE)
+
+notmuch-emacs-%.tar: ${elpa_sources}
+	mkdir -p .elpa-build/notmuch-${ELPA_VERSION}
+	cp ${elpa_sources} .elpa-build/notmuch-${ELPA_VERSION}
+	tar -C .elpa-build -cf $@ notmuch-${ELPA_VERSION}
+	rm -r .elpa-build
+
 ifeq ($(WITH_EMACS),1)
 ifeq ($(HAVE_EMACS),1)
 all: $(emacs_bytecode)
-- 
2.10.2

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

* Re: provide elpa packages
  2016-11-19 17:44 provide elpa packages David Bremner
  2016-11-19 17:44 ` [PATCH 1/2] build: Move variable definitions to Makefile.global David Bremner
  2016-11-19 17:44 ` [PATCH 2/2] build/emacs: add target to create elpa package David Bremner
@ 2016-11-25 16:49 ` Tomi Ollila
  2016-11-25 17:15   ` Tomi Ollila
  2 siblings, 1 reply; 7+ messages in thread
From: Tomi Ollila @ 2016-11-25 16:49 UTC (permalink / raw)
  To: David Bremner, notmuch

On Sat, Nov 19 2016, David Bremner <david@tethera.net> wrote:

> This is an answer to the discussion we were having on irc the other day about easily installing the emacs front-end for a single user.
>
> For users of package.el supporting emacs (iirc, emacs 24.1+), you can
>
> 1) make elpa
> 2) From within emacs M-x package-install-file <return> the-tarball-produced-in-step-1 <return>
>
> That's it, no modifications of paths etc... required.
>
> [PATCH 1/2] build: Move variable definitions to Makefile.global
>
> This looks big, but it's just code movement. Of course with makefiles
> moving things around is not without peril, so test builds in various
> corner cases (e.g. not current Debian) would be a good idea

Series LGTM (especially Makefile.global)

Worked without hiccups on SL6.2)

Tomi

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

* Re: provide elpa packages
  2016-11-25 16:49 ` provide elpa packages Tomi Ollila
@ 2016-11-25 17:15   ` Tomi Ollila
  2016-11-26 12:52     ` David Bremner
  0 siblings, 1 reply; 7+ messages in thread
From: Tomi Ollila @ 2016-11-25 17:15 UTC (permalink / raw)
  To: David Bremner, notmuch

On Fri, Nov 25 2016, Tomi Ollila <tomi.ollila@iki.fi> wrote:

> On Sat, Nov 19 2016, David Bremner <david@tethera.net> wrote:
>
>> This is an answer to the discussion we were having on irc the other day about easily installing the emacs front-end for a single user.
>>
>> For users of package.el supporting emacs (iirc, emacs 24.1+), you can
>>
>> 1) make elpa
>> 2) From within emacs M-x package-install-file <return> the-tarball-produced-in-step-1 <return>
>>
>> That's it, no modifications of paths etc... required.
>>
>> [PATCH 1/2] build: Move variable definitions to Makefile.global
>>
>> This looks big, but it's just code movement. Of course with makefiles
>> moving things around is not without peril, so test builds in various
>> corner cases (e.g. not current Debian) would be a good idea
>
> Series LGTM (especially Makefile.global)

(you could amend copying Makefile.global for out of tree builds -- or use
include $(srcdir)/Makefile.global)

>
> Worked without hiccups on SL6.2)
>
> Tomi

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

* Re: provide elpa packages
  2016-11-25 17:15   ` Tomi Ollila
@ 2016-11-26 12:52     ` David Bremner
  2016-11-26 17:06       ` Tomi Ollila
  0 siblings, 1 reply; 7+ messages in thread
From: David Bremner @ 2016-11-26 12:52 UTC (permalink / raw)
  To: Tomi Ollila, notmuch

Tomi Ollila <tomi.ollila@iki.fi> writes:

>
> (you could amend copying Makefile.global for out of tree builds -- or use
> include $(srcdir)/Makefile.global)
>

OK, I did that, and pushed to master and release. BTW, the next line
still looks problematic for oot builds? Did not test...

d

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

* Re: provide elpa packages
  2016-11-26 12:52     ` David Bremner
@ 2016-11-26 17:06       ` Tomi Ollila
  0 siblings, 0 replies; 7+ messages in thread
From: Tomi Ollila @ 2016-11-26 17:06 UTC (permalink / raw)
  To: David Bremner, notmuch

On Sat, Nov 26 2016, David Bremner <david@tethera.net> wrote:

> Tomi Ollila <tomi.ollila@iki.fi> writes:
>
>>
>> (you could amend copying Makefile.global for out of tree builds -- or use
>> include $(srcdir)/Makefile.global)
>>
>
> OK, I did that, and pushed to master and release. BTW, the next line
> still looks problematic for oot builds? Did not test...

oot builds (and tests) works fine with that and my patches applied.

Tomi

>
> d

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

end of thread, other threads:[~2016-11-26 17:05 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-19 17:44 provide elpa packages David Bremner
2016-11-19 17:44 ` [PATCH 1/2] build: Move variable definitions to Makefile.global David Bremner
2016-11-19 17:44 ` [PATCH 2/2] build/emacs: add target to create elpa package David Bremner
2016-11-25 16:49 ` provide elpa packages Tomi Ollila
2016-11-25 17:15   ` Tomi Ollila
2016-11-26 12:52     ` David Bremner
2016-11-26 17:06       ` Tomi Ollila

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).