Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 80AB1431FBC for ; Fri, 6 Mar 2015 13:59:20 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: 2.438 X-Spam-Level: ** X-Spam-Status: No, score=2.438 tagged_above=-999 required=5 tests=[DNS_FROM_AHBL_RHSBL=2.438] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bpSRaYYFulie for ; Fri, 6 Mar 2015 13:59:20 -0800 (PST) Received: from mx.xen14.node3324.gplhost.com (gitolite.debian.net [87.98.215.224]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by olra.theworths.org (Postfix) with ESMTPS id DFA9D431FAE for ; Fri, 6 Mar 2015 13:59:19 -0800 (PST) Received: from remotemail by mx.xen14.node3324.gplhost.com with local (Exim 4.80) (envelope-from ) id 1YU0GT-0000RN-0u; Fri, 06 Mar 2015 21:58:37 +0000 Received: (nullmailer pid 30535 invoked by uid 1000); Fri, 06 Mar 2015 21:57:57 -0000 From: David Bremner To: notmuch@notmuchmail.org Subject: [Patch v2 1/4] build: integrate building ruby bindings into notmuch build process Date: Fri, 6 Mar 2015 22:57:50 +0100 Message-Id: <1425679073-30439-2-git-send-email-david@tethera.net> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1425679073-30439-1-git-send-email-david@tethera.net> References: <1420114600-28396-6-git-send-email-david@tethera.net> <1425679073-30439-1-git-send-email-david@tethera.net> X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Mar 2015 21:59:20 -0000 Because ruby generates a Makefile, we have to use recursive make. Because mkmf.rb hardcodes the name Makefile, put our Makefile{.local} in the parent directory. --- Makefile.local | 2 +- bindings/Makefile | 7 +++++++ bindings/Makefile.local | 18 ++++++++++++++++++ bindings/ruby/README | 8 ++++++++ configure | 18 ++++++++++++++++++ debian/rules | 1 - 6 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 bindings/Makefile create mode 100644 bindings/Makefile.local create mode 100644 bindings/ruby/README diff --git a/Makefile.local b/Makefile.local index 81ee347..7204267 100644 --- a/Makefile.local +++ b/Makefile.local @@ -59,7 +59,7 @@ endif FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(AS_NEEDED_LDFLAGS) $(CONFIGURE_LDFLAGS) .PHONY: all -all: notmuch notmuch-shared build-man +all: notmuch notmuch-shared build-man ruby-bindings ifeq ($(MAKECMDGOALS),) ifeq ($(shell cat .first-build-message 2>/dev/null),) @NOTMUCH_FIRST_BUILD=1 $(MAKE) --no-print-directory all diff --git a/bindings/Makefile b/bindings/Makefile new file mode 100644 index 0000000..de492a7 --- /dev/null +++ b/bindings/Makefile @@ -0,0 +1,7 @@ +# See Makefile.local for the list of files to be compiled in this +# directory. +all: + $(MAKE) -C .. all + +.DEFAULT: + $(MAKE) -C .. $@ diff --git a/bindings/Makefile.local b/bindings/Makefile.local new file mode 100644 index 0000000..6ed1344 --- /dev/null +++ b/bindings/Makefile.local @@ -0,0 +1,18 @@ +# -*- makefile -*- + +dir := bindings + +# force the shared library to be build +ruby-bindings: lib/libnotmuch.so +ifeq ($(HAVE_RUBY_DEV),1) + cd $(dir)/ruby && ruby extconf.rb --vendor + $(MAKE) -C $(dir)/ruby +else + @echo Missing dependency, skipping ruby bindings +endif + +CLEAN += $(patsubst %,$(dir)/ruby/%, \ + Makefile database.o directory.o filenames.o\ + init.o message.o messages.o mkmf.log notmuch.so query.o \ + status.o tags.o thread.o threads.o) + diff --git a/bindings/ruby/README b/bindings/ruby/README new file mode 100644 index 0000000..fe4ff89 --- /dev/null +++ b/bindings/ruby/README @@ -0,0 +1,8 @@ +To build the the notmuch ruby extension, run the following commands +from the *top level* notmuch source directory: + +% ./configure +% make ruby-bindings + +The generic documentation about building notmuch also applies. + diff --git a/configure b/configure index 4af7ba9..3ca9bed 100755 --- a/configure +++ b/configure @@ -21,6 +21,7 @@ srcdir=$(dirname "$0") subdirs="util compat lib parse-time-string completion doc emacs" subdirs="${subdirs} performance-test test test/test-databases" +subdirs="${subdirs} bindings" # For a non-srcdir configure invocation (such as ../configure), create # the directory structure and copy Makefiles. @@ -443,6 +444,15 @@ else have_doxygen=0 fi +printf "Checking for ruby development files... " +if ruby -e "require 'mkmf'"> /dev/null 2>&1; then + printf "Yes.\n" + have_ruby_dev=1 +else + printf "No (skipping ruby bindings)\n" + have_ruby_dev=0 +fi + printf "Checking if sphinx is available and supports nroff output... " if command -v sphinx-build > /dev/null && ${python} -m sphinx.writers.manpage > /dev/null 2>&1 ; then printf "Yes.\n" @@ -858,6 +868,10 @@ HAVE_CANONICALIZE_FILE_NAME = ${have_canonicalize_file_name} # build its own version) HAVE_GETLINE = ${have_getline} +# Are the ruby development files (and ruby) available? If not skip +# building/testing ruby bindings. +HAVE_RUBY_DEV = ${have_ruby_dev} + # Whether the strcasestr function is available (if not, then notmuch will # build its own version) HAVE_STRCASESTR = ${have_strcasestr} @@ -970,6 +984,10 @@ NOTMUCH_HAVE_MAN=$((have_sphinx)) # Name of python interpreter NOTMUCH_PYTHON=${python} + +# Are the ruby development files (and ruby) available? If not skip +# building/testing ruby bindings. +NOTMUCH_HAVE_RUBY_DEV=${have_ruby_dev} EOF # Finally, after everything configured, inform the user how to continue. diff --git a/debian/rules b/debian/rules index 7a19445..ca85bc7 100755 --- a/debian/rules +++ b/debian/rules @@ -12,7 +12,6 @@ override_dh_auto_build: dh_auto_build -- V=1 dh_auto_build --sourcedirectory bindings/python cd bindings/python && $(python3_all) setup.py build - cd bindings/ruby && ruby extconf.rb --vendor && make $(MAKE) -C contrib/notmuch-mutt override_dh_auto_clean: -- 2.1.4