* Build and test ruby bindings @ 2015-01-01 12:16 David Bremner 2015-01-01 12:16 ` [PATCH 1/5] build: integrate building ruby bindings into notmuch build process David Bremner ` (4 more replies) 0 siblings, 5 replies; 42+ messages in thread From: David Bremner @ 2015-01-01 12:16 UTC (permalink / raw) To: notmuch This series collects some patches that were originally part of the "count API change" series, and adds a few fixups that are designed to help with building in MacOS and other non-Gnu places (although they haven't been tested there yet). [PATCH 1/5] build: integrate building ruby bindings into notmuch - obsoletes id:1419971380-10307-2-git-send-email-david@tethera.net [PATCH 2/5] build/ruby: make use of -Wl,--no-undefined configurable [PATCH 4/5] build/ruby: use notmuch configure script values for - These two obsolete (I think) id:1416170906-23415-1-git-send-email-ll-notmuchmail@lange.nom.fr [PATCH 5/5] test: add initial ruby tests This obsoletes id:1419971380-10307-4-git-send-email-david@tethera.net ^ permalink raw reply [flat|nested] 42+ messages in thread
* [PATCH 1/5] build: integrate building ruby bindings into notmuch build process 2015-01-01 12:16 Build and test ruby bindings David Bremner @ 2015-01-01 12:16 ` David Bremner 2015-01-01 12:16 ` [PATCH 2/5] build/ruby: make use of -Wl,--no-undefined configurable David Bremner ` (3 subsequent siblings) 4 siblings, 0 replies; 42+ messages in thread From: David Bremner @ 2015-01-01 12:16 UTC (permalink / raw) To: notmuch 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..6bb8cb2 --- /dev/null +++ b/bindings/ruby/README @@ -0,0 +1,8 @@ +To build the the notmuch ruby extensions, 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 d14e7d1..7df3b29 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. @@ -426,6 +427,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 hash sphinx-build > /dev/null 2>&1 && python -m sphinx.writers.manpage > /dev/null 2>&1 ; then printf "Yes.\n" @@ -848,6 +858,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} @@ -958,6 +972,10 @@ NOTMUCH_HAVE_XAPIAN_COMPACT=${have_xapian_compact} # Whether there's either sphinx or rst2man available for building # documentation NOTMUCH_HAVE_MAN=$((have_sphinx || have_rst2man)) + +# 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.3 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* [PATCH 2/5] build/ruby: make use of -Wl,--no-undefined configurable 2015-01-01 12:16 Build and test ruby bindings David Bremner 2015-01-01 12:16 ` [PATCH 1/5] build: integrate building ruby bindings into notmuch build process David Bremner @ 2015-01-01 12:16 ` David Bremner 2015-01-01 12:16 ` [PATCH 3/5] bindings/ruby: gitignore *.o David Bremner ` (2 subsequent siblings) 4 siblings, 0 replies; 42+ messages in thread From: David Bremner @ 2015-01-01 12:16 UTC (permalink / raw) To: notmuch In particular this is supposed to help build on systems (presumably using a non-gnu ld) where this flag is not available. --- bindings/Makefile.local | 4 +++- bindings/ruby/extconf.rb | 5 +++-- configure | 13 +++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/bindings/Makefile.local b/bindings/Makefile.local index 6ed1344..210055f 100644 --- a/bindings/Makefile.local +++ b/bindings/Makefile.local @@ -5,7 +5,9 @@ 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 + cd $(dir)/ruby && \ + EXTRA_LDFLAGS="$(NO_UNDEFINED_LDFLAGS)" \ + ruby extconf.rb --vendor $(MAKE) -C $(dir)/ruby else @echo Missing dependency, skipping ruby bindings diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb index 6160db2..6d5607e 100644 --- a/bindings/ruby/extconf.rb +++ b/bindings/ruby/extconf.rb @@ -10,8 +10,9 @@ dir = File.join('..', '..', 'lib') # includes $INCFLAGS = "-I#{dir} #{$INCFLAGS}" -# make sure there are no undefined symbols -$LDFLAGS += ' -Wl,--no-undefined' +if ENV['EXTRA_LDFLAGS'] + $LDFLAGS += " " + ENV['EXTRA_LDFLAGS'] +end def have_local_library(lib, path, func, headers = nil) checking_for checking_message(func, lib) do diff --git a/configure b/configure index 7df3b29..1a4c956 100755 --- a/configure +++ b/configure @@ -712,6 +712,16 @@ else as_needed_ldflags="" fi +printf "Checking for -Wl,--no-undefined... " +if ${CC} -Wl,--no-undefined -o minimal minimal.c >/dev/null 2>&1 +then + printf "Yes.\n" + no_undefined_ldflags="-Wl,--no-undefined" +else + printf "No (nothing to worry about).\n" + no_undefined_ldflags="" +fi + WARN_CXXFLAGS="" printf "Checking for available C++ compiler warning flags... " for flag in -Wall -Wextra -Wwrite-strings; do @@ -916,6 +926,9 @@ RPATH_LDFLAGS = ${rpath_ldflags} # Flags needed to have linker link only to necessary libraries AS_NEEDED_LDFLAGS = ${as_needed_ldflags} +# Flags to have the linker flag undefined symbols in object files +NO_UNDEFINED_LDFLAGS = ${no_undefined_ldflags} + # Whether valgrind header files are available HAVE_VALGRIND = ${have_valgrind} -- 2.1.3 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* [PATCH 3/5] bindings/ruby: gitignore *.o 2015-01-01 12:16 Build and test ruby bindings David Bremner 2015-01-01 12:16 ` [PATCH 1/5] build: integrate building ruby bindings into notmuch build process David Bremner 2015-01-01 12:16 ` [PATCH 2/5] build/ruby: make use of -Wl,--no-undefined configurable David Bremner @ 2015-01-01 12:16 ` David Bremner 2015-01-01 15:53 ` David Bremner 2015-01-01 12:16 ` [PATCH 4/5] build/ruby: use notmuch configure script values for shared lib David Bremner 2015-01-01 12:16 ` [PATCH 5/5] test: add initial ruby tests David Bremner 4 siblings, 1 reply; 42+ messages in thread From: David Bremner @ 2015-01-01 12:16 UTC (permalink / raw) To: notmuch --- bindings/ruby/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/bindings/ruby/.gitignore b/bindings/ruby/.gitignore index fa25752..d682798 100644 --- a/bindings/ruby/.gitignore +++ b/bindings/ruby/.gitignore @@ -4,3 +4,4 @@ Makefile mkmf.log notmuch.so +*.o -- 2.1.3 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* Re: [PATCH 3/5] bindings/ruby: gitignore *.o 2015-01-01 12:16 ` [PATCH 3/5] bindings/ruby: gitignore *.o David Bremner @ 2015-01-01 15:53 ` David Bremner 0 siblings, 0 replies; 42+ messages in thread From: David Bremner @ 2015-01-01 15:53 UTC (permalink / raw) To: notmuch David Bremner <david@tethera.net> writes: > --- > bindings/ruby/.gitignore | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/bindings/ruby/.gitignore b/bindings/ruby/.gitignore > index fa25752..d682798 100644 > --- a/bindings/ruby/.gitignore > +++ b/bindings/ruby/.gitignore > @@ -4,3 +4,4 @@ > Makefile > mkmf.log > notmuch.so > +*.o > -- > 2.1.3 Pushed this one trivial patch. d ^ permalink raw reply [flat|nested] 42+ messages in thread
* [PATCH 4/5] build/ruby: use notmuch configure script values for shared lib 2015-01-01 12:16 Build and test ruby bindings David Bremner ` (2 preceding siblings ...) 2015-01-01 12:16 ` [PATCH 3/5] bindings/ruby: gitignore *.o David Bremner @ 2015-01-01 12:16 ` David Bremner 2015-01-01 12:16 ` [PATCH 5/5] test: add initial ruby tests David Bremner 4 siblings, 0 replies; 42+ messages in thread From: David Bremner @ 2015-01-01 12:16 UTC (permalink / raw) To: notmuch This is supposed to help build on systems like MacOS with different conventions for naming shared libraries. We have already computed the relevant names, so doing it again in ruby seems like a bad idea. --- bindings/Makefile.local | 1 + bindings/ruby/extconf.rb | 13 +++---------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/bindings/Makefile.local b/bindings/Makefile.local index 210055f..4d86e59 100644 --- a/bindings/Makefile.local +++ b/bindings/Makefile.local @@ -7,6 +7,7 @@ ruby-bindings: lib/libnotmuch.so ifeq ($(HAVE_RUBY_DEV),1) cd $(dir)/ruby && \ EXTRA_LDFLAGS="$(NO_UNDEFINED_LDFLAGS)" \ + LIBNOTMUCH="../../lib/$(LINKER_NAME)" \ ruby extconf.rb --vendor $(MAKE) -C $(dir)/ruby else diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb index 6d5607e..ddaa684 100644 --- a/bindings/ruby/extconf.rb +++ b/bindings/ruby/extconf.rb @@ -14,19 +14,12 @@ if ENV['EXTRA_LDFLAGS'] $LDFLAGS += " " + ENV['EXTRA_LDFLAGS'] end -def have_local_library(lib, path, func, headers = nil) - checking_for checking_message(func, lib) do - lib = File.join(path, lib) - if try_func(func, lib, headers) - $LOCAL_LIBS += lib - end - end -end - -if not have_local_library('libnotmuch.so', dir, 'notmuch_database_create', 'notmuch.h') +if not ENV['LIBNOTMUCH'] exit 1 end +$LOCAL_LIBS += ENV['LIBNOTMUCH'] + # Create Makefile dir_config('notmuch') create_makefile('notmuch') -- 2.1.3 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* [PATCH 5/5] test: add initial ruby tests 2015-01-01 12:16 Build and test ruby bindings David Bremner ` (3 preceding siblings ...) 2015-01-01 12:16 ` [PATCH 4/5] build/ruby: use notmuch configure script values for shared lib David Bremner @ 2015-01-01 12:16 ` David Bremner 2015-03-06 21:57 ` integrate ruby into build and test v2 David Bremner 4 siblings, 1 reply; 42+ messages in thread From: David Bremner @ 2015-01-01 12:16 UTC (permalink / raw) To: notmuch This is pretty much a line by line translation of the existing python tests, with two new tests for the count API. --- test/T395-ruby.sh | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ test/test-lib.sh | 5 ++++ 2 files changed, 91 insertions(+) create mode 100755 test/T395-ruby.sh diff --git a/test/T395-ruby.sh b/test/T395-ruby.sh new file mode 100755 index 0000000..6b89a5d --- /dev/null +++ b/test/T395-ruby.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +test_description="ruby bindings" +. ./test-lib.sh + +if [ "${NOTMUCH_HAVE_RUBY_DEV}" = "0" ]; then + test_subtest_missing_external_prereq_["ruby development files"]=t +fi + +add_email_corpus + +test_begin_subtest "compare thread ids" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +@q = @db.query('tag:inbox') +@q.sort = Notmuch::SORT_OLDEST_FIRST +for t in @q.search_threads do + print t.thread_id, "\n" +end +EOF +notmuch search --sort=oldest-first --output=threads tag:inbox | sed s/^thread:// > EXPECTED +test_expect_equal_file OUTPUT EXPECTED + +test_begin_subtest "compare message ids" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +@q = @db.query('tag:inbox') +@q.sort = Notmuch::SORT_OLDEST_FIRST +for m in @q.search_messages do + print m.message_id, "\n" +end +EOF +notmuch search --sort=oldest-first --output=messages tag:inbox | sed s/^id:// > EXPECTED +test_expect_equal_file OUTPUT EXPECTED + +test_begin_subtest "get non-existent file" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +result = @db.find_message_by_filename('i-dont-exist') +print (result == nil) +EOF +test_expect_equal "$(cat OUTPUT)" "true" + +test_begin_subtest "count messages" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +@q = @db.query('tag:inbox') +print @q.count_messages(),"\n" +EOF +notmuch count --output=messages tag:inbox > EXPECTED +test_expect_equal_file OUTPUT EXPECTED + +test_begin_subtest "count messages" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +@q = @db.query('tag:inbox') +print @q.count_threads(),"\n" +EOF +notmuch count --output=threads tag:inbox > EXPECTED +test_expect_equal_file OUTPUT EXPECTED + +test_done diff --git a/test/test-lib.sh b/test/test-lib.sh index 53db9ca..3bbdc03 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -1156,6 +1156,11 @@ test_python() { | $cmd - } +test_ruby() { + export LD_LIBRARY_PATH=$TEST_DIRECTORY/../lib + MAIL_DIR=$MAIL_DIR ruby -I $TEST_DIRECTORY/../bindings/ruby> OUTPUT +} + # Creates a script that counts how much time it is executed and calls # notmuch. $notmuch_counter_command is set to the path to the # generated script. Use notmuch_counter_value() function to get the -- 2.1.3 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* integrate ruby into build and test v2 2015-01-01 12:16 ` [PATCH 5/5] test: add initial ruby tests David Bremner @ 2015-03-06 21:57 ` David Bremner 2015-03-06 21:57 ` [Patch v2 1/4] build: integrate building ruby bindings into notmuch build process David Bremner ` (3 more replies) 0 siblings, 4 replies; 42+ messages in thread From: David Bremner @ 2015-03-06 21:57 UTC (permalink / raw) To: notmuch This is just a rebase against current master, with one typo fix in bindings/ruby/README ^ permalink raw reply [flat|nested] 42+ messages in thread
* [Patch v2 1/4] build: integrate building ruby bindings into notmuch build process 2015-03-06 21:57 ` integrate ruby into build and test v2 David Bremner @ 2015-03-06 21:57 ` David Bremner 2015-03-06 21:57 ` [Patch v2 2/4] build/ruby: make use of -Wl,--no-undefined configurable David Bremner ` (2 subsequent siblings) 3 siblings, 0 replies; 42+ messages in thread From: David Bremner @ 2015-03-06 21:57 UTC (permalink / raw) To: notmuch 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 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Patch v2 2/4] build/ruby: make use of -Wl,--no-undefined configurable 2015-03-06 21:57 ` integrate ruby into build and test v2 David Bremner 2015-03-06 21:57 ` [Patch v2 1/4] build: integrate building ruby bindings into notmuch build process David Bremner @ 2015-03-06 21:57 ` David Bremner 2015-03-06 21:57 ` [Patch v2 3/4] build/ruby: use notmuch configure script values for shared lib David Bremner 2015-03-06 21:57 ` [Patch v2 4/4] test: add initial ruby tests David Bremner 3 siblings, 0 replies; 42+ messages in thread From: David Bremner @ 2015-03-06 21:57 UTC (permalink / raw) To: notmuch In particular this is supposed to help build on systems (presumably using a non-gnu ld) where this flag is not available. --- bindings/Makefile.local | 4 +++- bindings/ruby/extconf.rb | 5 +++-- configure | 13 +++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/bindings/Makefile.local b/bindings/Makefile.local index 6ed1344..210055f 100644 --- a/bindings/Makefile.local +++ b/bindings/Makefile.local @@ -5,7 +5,9 @@ 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 + cd $(dir)/ruby && \ + EXTRA_LDFLAGS="$(NO_UNDEFINED_LDFLAGS)" \ + ruby extconf.rb --vendor $(MAKE) -C $(dir)/ruby else @echo Missing dependency, skipping ruby bindings diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb index 6160db2..6d5607e 100644 --- a/bindings/ruby/extconf.rb +++ b/bindings/ruby/extconf.rb @@ -10,8 +10,9 @@ dir = File.join('..', '..', 'lib') # includes $INCFLAGS = "-I#{dir} #{$INCFLAGS}" -# make sure there are no undefined symbols -$LDFLAGS += ' -Wl,--no-undefined' +if ENV['EXTRA_LDFLAGS'] + $LDFLAGS += " " + ENV['EXTRA_LDFLAGS'] +end def have_local_library(lib, path, func, headers = nil) checking_for checking_message(func, lib) do diff --git a/configure b/configure index 3ca9bed..409bb60 100755 --- a/configure +++ b/configure @@ -722,6 +722,16 @@ else as_needed_ldflags="" fi +printf "Checking for -Wl,--no-undefined... " +if ${CC} -Wl,--no-undefined -o minimal minimal.c >/dev/null 2>&1 +then + printf "Yes.\n" + no_undefined_ldflags="-Wl,--no-undefined" +else + printf "No (nothing to worry about).\n" + no_undefined_ldflags="" +fi + WARN_CXXFLAGS="" printf "Checking for available C++ compiler warning flags... " for flag in -Wall -Wextra -Wwrite-strings; do @@ -926,6 +936,9 @@ RPATH_LDFLAGS = ${rpath_ldflags} # Flags needed to have linker link only to necessary libraries AS_NEEDED_LDFLAGS = ${as_needed_ldflags} +# Flags to have the linker flag undefined symbols in object files +NO_UNDEFINED_LDFLAGS = ${no_undefined_ldflags} + # Whether valgrind header files are available HAVE_VALGRIND = ${have_valgrind} -- 2.1.4 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Patch v2 3/4] build/ruby: use notmuch configure script values for shared lib 2015-03-06 21:57 ` integrate ruby into build and test v2 David Bremner 2015-03-06 21:57 ` [Patch v2 1/4] build: integrate building ruby bindings into notmuch build process David Bremner 2015-03-06 21:57 ` [Patch v2 2/4] build/ruby: make use of -Wl,--no-undefined configurable David Bremner @ 2015-03-06 21:57 ` David Bremner 2015-03-06 21:57 ` [Patch v2 4/4] test: add initial ruby tests David Bremner 3 siblings, 0 replies; 42+ messages in thread From: David Bremner @ 2015-03-06 21:57 UTC (permalink / raw) To: notmuch This is supposed to help build on systems like MacOS with different conventions for naming shared libraries. We have already computed the relevant names, so doing it again in ruby seems like a bad idea. --- bindings/Makefile.local | 1 + bindings/ruby/extconf.rb | 13 +++---------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/bindings/Makefile.local b/bindings/Makefile.local index 210055f..4d86e59 100644 --- a/bindings/Makefile.local +++ b/bindings/Makefile.local @@ -7,6 +7,7 @@ ruby-bindings: lib/libnotmuch.so ifeq ($(HAVE_RUBY_DEV),1) cd $(dir)/ruby && \ EXTRA_LDFLAGS="$(NO_UNDEFINED_LDFLAGS)" \ + LIBNOTMUCH="../../lib/$(LINKER_NAME)" \ ruby extconf.rb --vendor $(MAKE) -C $(dir)/ruby else diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb index 6d5607e..ddaa684 100644 --- a/bindings/ruby/extconf.rb +++ b/bindings/ruby/extconf.rb @@ -14,19 +14,12 @@ if ENV['EXTRA_LDFLAGS'] $LDFLAGS += " " + ENV['EXTRA_LDFLAGS'] end -def have_local_library(lib, path, func, headers = nil) - checking_for checking_message(func, lib) do - lib = File.join(path, lib) - if try_func(func, lib, headers) - $LOCAL_LIBS += lib - end - end -end - -if not have_local_library('libnotmuch.so', dir, 'notmuch_database_create', 'notmuch.h') +if not ENV['LIBNOTMUCH'] exit 1 end +$LOCAL_LIBS += ENV['LIBNOTMUCH'] + # Create Makefile dir_config('notmuch') create_makefile('notmuch') -- 2.1.4 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Patch v2 4/4] test: add initial ruby tests 2015-03-06 21:57 ` integrate ruby into build and test v2 David Bremner ` (2 preceding siblings ...) 2015-03-06 21:57 ` [Patch v2 3/4] build/ruby: use notmuch configure script values for shared lib David Bremner @ 2015-03-06 21:57 ` David Bremner 2015-06-01 7:08 ` Build ruby bindings: round 3 David Bremner 3 siblings, 1 reply; 42+ messages in thread From: David Bremner @ 2015-03-06 21:57 UTC (permalink / raw) To: notmuch This is pretty much a line by line translation of the existing python tests, with two new tests for the count API. --- test/T395-ruby.sh | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ test/test-lib.sh | 5 ++++ 2 files changed, 91 insertions(+) create mode 100755 test/T395-ruby.sh diff --git a/test/T395-ruby.sh b/test/T395-ruby.sh new file mode 100755 index 0000000..6b89a5d --- /dev/null +++ b/test/T395-ruby.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +test_description="ruby bindings" +. ./test-lib.sh + +if [ "${NOTMUCH_HAVE_RUBY_DEV}" = "0" ]; then + test_subtest_missing_external_prereq_["ruby development files"]=t +fi + +add_email_corpus + +test_begin_subtest "compare thread ids" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +@q = @db.query('tag:inbox') +@q.sort = Notmuch::SORT_OLDEST_FIRST +for t in @q.search_threads do + print t.thread_id, "\n" +end +EOF +notmuch search --sort=oldest-first --output=threads tag:inbox | sed s/^thread:// > EXPECTED +test_expect_equal_file OUTPUT EXPECTED + +test_begin_subtest "compare message ids" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +@q = @db.query('tag:inbox') +@q.sort = Notmuch::SORT_OLDEST_FIRST +for m in @q.search_messages do + print m.message_id, "\n" +end +EOF +notmuch search --sort=oldest-first --output=messages tag:inbox | sed s/^id:// > EXPECTED +test_expect_equal_file OUTPUT EXPECTED + +test_begin_subtest "get non-existent file" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +result = @db.find_message_by_filename('i-dont-exist') +print (result == nil) +EOF +test_expect_equal "$(cat OUTPUT)" "true" + +test_begin_subtest "count messages" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +@q = @db.query('tag:inbox') +print @q.count_messages(),"\n" +EOF +notmuch count --output=messages tag:inbox > EXPECTED +test_expect_equal_file OUTPUT EXPECTED + +test_begin_subtest "count messages" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +@q = @db.query('tag:inbox') +print @q.count_threads(),"\n" +EOF +notmuch count --output=threads tag:inbox > EXPECTED +test_expect_equal_file OUTPUT EXPECTED + +test_done diff --git a/test/test-lib.sh b/test/test-lib.sh index 133fbe4..92c6d28 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -1161,6 +1161,11 @@ test_python() { | $cmd - } +test_ruby() { + export LD_LIBRARY_PATH=$TEST_DIRECTORY/../lib + MAIL_DIR=$MAIL_DIR ruby -I $TEST_DIRECTORY/../bindings/ruby> OUTPUT +} + # Creates a script that counts how much time it is executed and calls # notmuch. $notmuch_counter_command is set to the path to the # generated script. Use notmuch_counter_value() function to get the -- 2.1.4 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* Build ruby bindings: round 3 2015-03-06 21:57 ` [Patch v2 4/4] test: add initial ruby tests David Bremner @ 2015-06-01 7:08 ` David Bremner 2015-06-01 7:08 ` [patch v3 1/4] build: integrate building ruby bindings into notmuch build process David Bremner ` (3 more replies) 0 siblings, 4 replies; 42+ messages in thread From: David Bremner @ 2015-06-01 7:08 UTC (permalink / raw) To: David Bremner, notmuch I cleaned up a few typos, and rebased against master. The main functional change was adding .RUBYARCHDIR.time to the list of files to clean; leaving this timestamp in place broke the debian-snapshot target, among other things. ^ permalink raw reply [flat|nested] 42+ messages in thread
* [patch v3 1/4] build: integrate building ruby bindings into notmuch build process 2015-06-01 7:08 ` Build ruby bindings: round 3 David Bremner @ 2015-06-01 7:08 ` David Bremner 2015-06-13 6:37 ` David Bremner 2015-06-01 7:09 ` [patch v3 2/4] build/ruby: make use of -Wl,--no-undefined configurable David Bremner ` (2 subsequent siblings) 3 siblings, 1 reply; 42+ messages in thread From: David Bremner @ 2015-06-01 7:08 UTC (permalink / raw) To: David Bremner, notmuch 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 | 19 +++++++++++++++++++ bindings/ruby/README | 8 ++++++++ configure | 18 ++++++++++++++++++ debian/rules | 1 - 6 files changed, 53 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 6d54742..61a9c4c 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..e0b0bf0 --- /dev/null +++ b/bindings/Makefile.local @@ -0,0 +1,19 @@ +# -*- makefile -*- + +dir := bindings + +# force the shared library to be built +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/%, \ + .RUBYARCHDIR.time \ + 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 2065fcd..5a862b1 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. @@ -473,6 +474,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" @@ -886,6 +896,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} @@ -998,6 +1012,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 56378ec..04f0062 100755 --- a/debian/rules +++ b/debian/rules @@ -19,7 +19,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 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* Re: [patch v3 1/4] build: integrate building ruby bindings into notmuch build process 2015-06-01 7:08 ` [patch v3 1/4] build: integrate building ruby bindings into notmuch build process David Bremner @ 2015-06-13 6:37 ` David Bremner 2015-06-13 19:59 ` Jinwoo Lee 2015-06-15 6:35 ` David Bremner 0 siblings, 2 replies; 42+ messages in thread From: David Bremner @ 2015-06-13 6:37 UTC (permalink / raw) To: notmuch David Bremner <david@tethera.net> writes: > 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. Pushed the first patch in the series. Let's see if anything breaks. d ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [patch v3 1/4] build: integrate building ruby bindings into notmuch build process 2015-06-13 6:37 ` David Bremner @ 2015-06-13 19:59 ` Jinwoo Lee 2015-06-13 20:46 ` Jinwoo Lee 2015-06-15 6:35 ` David Bremner 1 sibling, 1 reply; 42+ messages in thread From: Jinwoo Lee @ 2015-06-13 19:59 UTC (permalink / raw) To: David Bremner, notmuch This breaks Mac OS X. ruby-bindings depends on lib/libnotmuch.so but it should be lib/libnotmuch.dylib on OS X. That makes `make' and `make install' fail. On Fri, Jun 12, 2015 at 11:37 PM, David Bremner <david@tethera.net> wrote: > David Bremner <david@tethera.net> writes: > >> 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. > > Pushed the first patch in the series. Let's see if anything breaks. > > d > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [patch v3 1/4] build: integrate building ruby bindings into notmuch build process 2015-06-13 19:59 ` Jinwoo Lee @ 2015-06-13 20:46 ` Jinwoo Lee 2015-06-13 20:51 ` Jinwoo Lee 0 siblings, 1 reply; 42+ messages in thread From: Jinwoo Lee @ 2015-06-13 20:46 UTC (permalink / raw) To: David Bremner, notmuch On Sat, Jun 13, 2015 at 12:59 PM, Jinwoo Lee <jinwoo68@gmail.com> wrote: > This breaks Mac OS X. ruby-bindings depends on lib/libnotmuch.so but it > should be lib/libnotmuch.dylib on OS X. > > That makes `make' and `make install' fail. Even after I update the dependency to lib/libnotmuch.dylib, building ruby-bindings fails because I don't have the ruby development tools installed on my machine. I with configure has an option to skip the ruby-bindings build. > > On Fri, Jun 12, 2015 at 11:37 PM, David Bremner <david@tethera.net> wrote: >> David Bremner <david@tethera.net> writes: >> >>> 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. >> >> Pushed the first patch in the series. Let's see if anything breaks. >> >> d >> _______________________________________________ >> notmuch mailing list >> notmuch@notmuchmail.org >> http://notmuchmail.org/mailman/listinfo/notmuch ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [patch v3 1/4] build: integrate building ruby bindings into notmuch build process 2015-06-13 20:46 ` Jinwoo Lee @ 2015-06-13 20:51 ` Jinwoo Lee 2015-06-13 21:11 ` David Bremner 0 siblings, 1 reply; 42+ messages in thread From: Jinwoo Lee @ 2015-06-13 20:51 UTC (permalink / raw) To: David Bremner, notmuch On Sat, Jun 13, 2015 at 01:46 PM, Jinwoo Lee <jinwoo68@gmail.com> wrote: > On Sat, Jun 13, 2015 at 12:59 PM, Jinwoo Lee <jinwoo68@gmail.com> wrote: >> This breaks Mac OS X. ruby-bindings depends on lib/libnotmuch.so but it >> should be lib/libnotmuch.dylib on OS X. >> >> That makes `make' and `make install' fail. > > Even after I update the dependency to lib/libnotmuch.dylib, building > ruby-bindings fails because I don't have the ruby development tools > installed on my machine. > > I with configure has an option to skip the ruby-bindings build. `configure' seems to try to detect whether the ruby development tools are installed. It thinks I have them but I don't actually, and that's why my build fails. When I manually set 'HAVE_RUBY_DEV = 0' in Makefile.config, everything's fine. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [patch v3 1/4] build: integrate building ruby bindings into notmuch build process 2015-06-13 20:51 ` Jinwoo Lee @ 2015-06-13 21:11 ` David Bremner 2015-06-13 21:22 ` Jinwoo Lee 0 siblings, 1 reply; 42+ messages in thread From: David Bremner @ 2015-06-13 21:11 UTC (permalink / raw) To: Jinwoo Lee, notmuch Jinwoo Lee <jinwoo68@gmail.com> writes: >> I with configure has an option to skip the ruby-bindings build. > > `configure' seems to try to detect whether the ruby development tools > are installed. It thinks I have them but I don't actually, and that's > why my build fails. When I manually set 'HAVE_RUBY_DEV = 0' in > Makefile.config, everything's fine. Thanks for narrowing this down. Can you tell us the output of % ruby -e "require 'mkmf'" ; echo $? ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [patch v3 1/4] build: integrate building ruby bindings into notmuch build process 2015-06-13 21:11 ` David Bremner @ 2015-06-13 21:22 ` Jinwoo Lee 2015-06-13 21:24 ` Jinwoo Lee 0 siblings, 1 reply; 42+ messages in thread From: Jinwoo Lee @ 2015-06-13 21:22 UTC (permalink / raw) To: David Bremner, notmuch On Sat, Jun 13, 2015 at 02:11 PM, David Bremner <david@tethera.net> wrote: > Jinwoo Lee <jinwoo68@gmail.com> writes: > >>> I with configure has an option to skip the ruby-bindings build. >> >> `configure' seems to try to detect whether the ruby development tools >> are installed. It thinks I have them but I don't actually, and that's >> why my build fails. When I manually set 'HAVE_RUBY_DEV = 0' in >> Makefile.config, everything's fine. > > Thanks for narrowing this down. Can you tell us the output of > > % ruby -e "require 'mkmf'" ; echo $? This command succeeds and returns 0. When I change the dependency of ruby-bindings from libnotmuch.so to libnotmuch.dylib and run `make', I get errors like below. Looks like mkmf.rb (I have no idea what this is) is provided by OS X by default, but actually running it fails. ... [snip] ... checking for notmuch_database_create in libnotmuch.so... *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:434:in `try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:513:in `block in try_link0' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tmpdir.rb:88:in `mktmpdir' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:510:in `try_link0' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:534:in `try_link' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:720:in `try_func' from extconf.rb:19:in `block in have_local_library' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:895:in `block in checking_for' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:340:in `block (2 levels) in postpone' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:310:in `open' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:340:in `block in postpone' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:310:in `open' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:336:in `postpone' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:894:in `checking_for' from extconf.rb:17:in `have_local_library' from extconf.rb:25:in `<main>' make: *** [ruby-bindings] Error 1 ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [patch v3 1/4] build: integrate building ruby bindings into notmuch build process 2015-06-13 21:22 ` Jinwoo Lee @ 2015-06-13 21:24 ` Jinwoo Lee 2015-06-13 21:34 ` Jinwoo Lee 0 siblings, 1 reply; 42+ messages in thread From: Jinwoo Lee @ 2015-06-13 21:24 UTC (permalink / raw) To: David Bremner, notmuch That error is from 'cd bindings/ruby && ruby extconf.rb --vendor' BTW. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [patch v3 1/4] build: integrate building ruby bindings into notmuch build process 2015-06-13 21:24 ` Jinwoo Lee @ 2015-06-13 21:34 ` Jinwoo Lee 2015-06-14 5:49 ` David Bremner 0 siblings, 1 reply; 42+ messages in thread From: Jinwoo Lee @ 2015-06-13 21:34 UTC (permalink / raw) To: David Bremner, notmuch On Sat, Jun 13, 2015 at 02:24 PM, Jinwoo Lee <jinwoo68@gmail.com> wrote: > That error is from 'cd bindings/ruby && ruby extconf.rb --vendor' BTW. The contents of mkmf.log are below. It shows a warning about -L/usr/local/lib and I don't have the directory /usr/local/lib on my machine. I'm not sure if that's the cause of the error though. I don't write Ruby and know nothing about it. "xcrun clang -o conftest -I../../lib -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/universal-darwin14 -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/backward -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -g -Os -pipe -DHAVE_GCC_SYNC_BUILTINS conftest.c -L. -L/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib -L. -L/usr/local/lib -Wl,--no-undefined -arch x86_64 -arch i386 -lruby.2.0.0 -lpthread -ldl -lobjc " ld: warning: directory not found for option '-L/usr/local/lib' ld: unknown option: --no-undefined clang: error: linker command failed with exit code 1 (use -v to see invocation) checked program was: /* begin */ 1: #include "ruby.h" 2: 3: int main(int argc, char **argv) 4: { 5: return 0; 6: } /* end */ ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [patch v3 1/4] build: integrate building ruby bindings into notmuch build process 2015-06-13 21:34 ` Jinwoo Lee @ 2015-06-14 5:49 ` David Bremner 0 siblings, 0 replies; 42+ messages in thread From: David Bremner @ 2015-06-14 5:49 UTC (permalink / raw) To: Jinwoo Lee, notmuch Jinwoo Lee <jinwoo68@gmail.com> writes: > ld: unknown option: --no-undefined > clang: error: linker command failed with exit code 1 (use -v to see invocation) I wonder if this the actual relevant error. Can you try with the next two patches in the series? id:1433142542-2307-3-git-send-email-david@tethera.net id:1433142542-2307-4-git-send-email-david@tethera.net This first alone may fix it, but it would be good to know if the next one breaks anything on Mac OS. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [patch v3 1/4] build: integrate building ruby bindings into notmuch build process 2015-06-13 6:37 ` David Bremner 2015-06-13 19:59 ` Jinwoo Lee @ 2015-06-15 6:35 ` David Bremner 1 sibling, 0 replies; 42+ messages in thread From: David Bremner @ 2015-06-15 6:35 UTC (permalink / raw) To: notmuch David Bremner <david@tethera.net> writes: > David Bremner <david@tethera.net> writes: > >> 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. > > Pushed the first patch in the series. Let's see if anything breaks. > It turned out the answer was "Mac", so I pushed the next two patches as well. I threw in the actual tests, since that was the point of this effort. d ^ permalink raw reply [flat|nested] 42+ messages in thread
* [patch v3 2/4] build/ruby: make use of -Wl,--no-undefined configurable 2015-06-01 7:08 ` Build ruby bindings: round 3 David Bremner 2015-06-01 7:08 ` [patch v3 1/4] build: integrate building ruby bindings into notmuch build process David Bremner @ 2015-06-01 7:09 ` David Bremner 2015-06-14 5:58 ` [PATCH] lib, ruby: " David Bremner 2015-06-01 7:09 ` [patch v3 3/4] build/ruby: use notmuch configure script values for shared lib David Bremner 2015-06-01 7:09 ` [patch v3 4/4] test: add initial ruby tests David Bremner 3 siblings, 1 reply; 42+ messages in thread From: David Bremner @ 2015-06-01 7:09 UTC (permalink / raw) To: David Bremner, notmuch In particular this is supposed to help build on systems (presumably using a non-gnu ld) where this flag is not available. --- bindings/Makefile.local | 4 +++- bindings/ruby/extconf.rb | 5 +++-- configure | 13 +++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/bindings/Makefile.local b/bindings/Makefile.local index e0b0bf0..2ad0b86 100644 --- a/bindings/Makefile.local +++ b/bindings/Makefile.local @@ -5,7 +5,9 @@ dir := bindings # force the shared library to be built ruby-bindings: lib/libnotmuch.so ifeq ($(HAVE_RUBY_DEV),1) - cd $(dir)/ruby && ruby extconf.rb --vendor + cd $(dir)/ruby && \ + EXTRA_LDFLAGS="$(NO_UNDEFINED_LDFLAGS)" \ + ruby extconf.rb --vendor $(MAKE) -C $(dir)/ruby else @echo Missing dependency, skipping ruby bindings diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb index 6160db2..6d5607e 100644 --- a/bindings/ruby/extconf.rb +++ b/bindings/ruby/extconf.rb @@ -10,8 +10,9 @@ dir = File.join('..', '..', 'lib') # includes $INCFLAGS = "-I#{dir} #{$INCFLAGS}" -# make sure there are no undefined symbols -$LDFLAGS += ' -Wl,--no-undefined' +if ENV['EXTRA_LDFLAGS'] + $LDFLAGS += " " + ENV['EXTRA_LDFLAGS'] +end def have_local_library(lib, path, func, headers = nil) checking_for checking_message(func, lib) do diff --git a/configure b/configure index 5a862b1..e3b4902 100755 --- a/configure +++ b/configure @@ -750,6 +750,16 @@ else as_needed_ldflags="" fi +printf "Checking for -Wl,--no-undefined... " +if ${CC} -Wl,--no-undefined -o minimal minimal.c >/dev/null 2>&1 +then + printf "Yes.\n" + no_undefined_ldflags="-Wl,--no-undefined" +else + printf "No (nothing to worry about).\n" + no_undefined_ldflags="" +fi + WARN_CXXFLAGS="" printf "Checking for available C++ compiler warning flags... " for flag in -Wall -Wextra -Wwrite-strings; do @@ -954,6 +964,9 @@ RPATH_LDFLAGS = ${rpath_ldflags} # Flags needed to have linker link only to necessary libraries AS_NEEDED_LDFLAGS = ${as_needed_ldflags} +# Flags to have the linker flag undefined symbols in object files +NO_UNDEFINED_LDFLAGS = ${no_undefined_ldflags} + # Whether valgrind header files are available HAVE_VALGRIND = ${have_valgrind} -- 2.1.4 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-01 7:09 ` [patch v3 2/4] build/ruby: make use of -Wl,--no-undefined configurable David Bremner @ 2015-06-14 5:58 ` David Bremner 2015-06-14 6:20 ` Jinwoo Lee 0 siblings, 1 reply; 42+ messages in thread From: David Bremner @ 2015-06-14 5:58 UTC (permalink / raw) To: David Bremner, notmuch In particular this is supposed to help build on systems (presumably using a non-gnu ld) where this flag is not available. --- bindings/Makefile.local | 4 +++- bindings/ruby/extconf.rb | 5 +++-- configure | 13 +++++++++++++ lib/Makefile.local | 2 +- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/bindings/Makefile.local b/bindings/Makefile.local index 16817f5..d236f01 100644 --- a/bindings/Makefile.local +++ b/bindings/Makefile.local @@ -5,7 +5,9 @@ dir := bindings # force the shared library to be built ruby-bindings: lib/libnotmuch.so ifeq ($(HAVE_RUBY_DEV),1) - cd $(dir)/ruby && ruby extconf.rb --vendor + cd $(dir)/ruby && \ + EXTRA_LDFLAGS="$(NO_UNDEFINED_LDFLAGS)" \ + ruby extconf.rb --vendor $(MAKE) -C $(dir)/ruby else @echo Missing dependency, skipping ruby bindings diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb index 6160db2..6d5607e 100644 --- a/bindings/ruby/extconf.rb +++ b/bindings/ruby/extconf.rb @@ -10,8 +10,9 @@ dir = File.join('..', '..', 'lib') # includes $INCFLAGS = "-I#{dir} #{$INCFLAGS}" -# make sure there are no undefined symbols -$LDFLAGS += ' -Wl,--no-undefined' +if ENV['EXTRA_LDFLAGS'] + $LDFLAGS += " " + ENV['EXTRA_LDFLAGS'] +end def have_local_library(lib, path, func, headers = nil) checking_for checking_message(func, lib) do diff --git a/configure b/configure index 13a8dca..b967a4e 100755 --- a/configure +++ b/configure @@ -751,6 +751,16 @@ else as_needed_ldflags="" fi +printf "Checking for -Wl,--no-undefined... " +if ${CC} -Wl,--no-undefined -o minimal minimal.c >/dev/null 2>&1 +then + printf "Yes.\n" + no_undefined_ldflags="-Wl,--no-undefined" +else + printf "No (nothing to worry about).\n" + no_undefined_ldflags="" +fi + WARN_CXXFLAGS="" printf "Checking for available C++ compiler warning flags... " for flag in -Wall -Wextra -Wwrite-strings; do @@ -955,6 +965,9 @@ RPATH_LDFLAGS = ${rpath_ldflags} # Flags needed to have linker link only to necessary libraries AS_NEEDED_LDFLAGS = ${as_needed_ldflags} +# Flags to have the linker flag undefined symbols in object files +NO_UNDEFINED_LDFLAGS = ${no_undefined_ldflags} + # Whether valgrind header files are available HAVE_VALGRIND = ${have_valgrind} diff --git a/lib/Makefile.local b/lib/Makefile.local index f9ecd50..b58b4e8 100644 --- a/lib/Makefile.local +++ b/lib/Makefile.local @@ -33,7 +33,7 @@ LIBRARY_SUFFIX = so LINKER_NAME = libnotmuch.$(LIBRARY_SUFFIX) SONAME = $(LINKER_NAME).$(LIBNOTMUCH_VERSION_MAJOR) LIBNAME = $(SONAME).$(LIBNOTMUCH_VERSION_MINOR).$(LIBNOTMUCH_VERSION_RELEASE) -LIBRARY_LINK_FLAG = -shared -Wl,--version-script=notmuch.sym,-soname=$(SONAME) -Wl,--no-undefined +LIBRARY_LINK_FLAG = -shared -Wl,--version-script=notmuch.sym,-soname=$(SONAME) $(NO_UNDEFINED_LDFLAGS) ifeq ($(PLATFORM),OPENBSD) LIBRARY_LINK_FLAG += -lc endif -- 2.1.4 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-14 5:58 ` [PATCH] lib, ruby: " David Bremner @ 2015-06-14 6:20 ` Jinwoo Lee 2015-06-14 6:53 ` David Bremner 0 siblings, 1 reply; 42+ messages in thread From: Jinwoo Lee @ 2015-06-14 6:20 UTC (permalink / raw) To: David Bremner, David Bremner, notmuch [-- Attachment #1: Type: text/plain, Size: 1224 bytes --] There are 2 problems. 1. The file, bindings/Makefile.local still has lib/libnotmuch.so as the dependency of ruby-bindings. > make: *** No rule to make target `lib/libnotmuch.so', needed by > `ruby-bindings'. Stop. 2. After manually changing it to lib/libnotmuch.dylib, I still get an error like below: > cd bindings/ruby && \ > EXTRA_LDFLAGS="" \ > ruby extconf.rb --vendor > checking for notmuch_database_create in libnotmuch.so... no > *** extconf.rb failed *** > Could not create Makefile due to some reason, probably lack of > necessary libraries and/or headers. Check the mkmf.log file for more > details. You may need configuration options. > Provided configuration options: > --with-opt-dir > --without-opt-dir > --with-opt-include > --without-opt-include=${opt-dir}/include > --with-opt-lib > --without-opt-lib=${opt-dir}/lib > --with-make-prog > --without-make-prog > --srcdir=. > --curdir > --ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby > make: *** [ruby-bindings] Error 1 I tried updating extconf.rb to change libnotmuch.so to libnotmuch.dylib but that still emit a similar error. And the attached is the log file, mkmf.log generated in bindings/ruby. [-- Attachment #2: mkmf.log --] [-- Type: text/plain, Size: 3733 bytes --] have_local_library: checking for notmuch_database_create in libnotmuch.dylib... -------------------- no "xcrun clang -o conftest -I../../lib -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/universal-darwin14 -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/backward -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -g -Os -pipe -DHAVE_GCC_SYNC_BUILTINS conftest.c -L. -L/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib -L. -L/usr/local/lib -arch x86_64 -arch i386 -lruby.2.0.0 -lpthread -ldl -lobjc " ld: warning: directory not found for option '-L/usr/local/lib' ld: warning: directory not found for option '-L/usr/local/lib' checked program was: /* begin */ 1: #include "ruby.h" 2: 3: int main(int argc, char **argv) 4: { 5: return 0; 6: } /* end */ "xcrun clang -o conftest -I../../lib -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/universal-darwin14 -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/backward -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -g -Os -pipe -DHAVE_GCC_SYNC_BUILTINS conftest.c -L. -L/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib -L. -L/usr/local/lib -arch x86_64 -arch i386 -lruby.2.0.0 ../../lib/libnotmuch.dylib -lpthread -ldl -lobjc " ld: warning: directory not found for option '-L/usr/local/lib' ld: warning: directory not found for option '-L/usr/local/lib' ld: warning: ignoring file ../../lib/libnotmuch.dylib, file was built for x86_64 which is not the architecture being linked (i386): ../../lib/libnotmuch.dylib Undefined symbols for architecture i386: "_notmuch_database_create", referenced from: _t in conftest-2cad94.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) checked program was: /* begin */ 1: #include "ruby.h" 2: 3: #include <notmuch.h> 4: 5: /*top*/ 6: extern int t(void); 7: int t(void) { void ((*volatile p)()); p = (void ((*)()))notmuch_database_create; return 0; } 8: int main(int argc, char **argv) 9: { 10: if (argc > 1000000) { 11: printf("%p", &t); 12: } 13: 14: return 0; 15: } /* end */ "xcrun clang -o conftest -I../../lib -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/universal-darwin14 -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/backward -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -g -Os -pipe -DHAVE_GCC_SYNC_BUILTINS conftest.c -L. -L/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib -L. -L/usr/local/lib -arch x86_64 -arch i386 -lruby.2.0.0 ../../lib/libnotmuch.dylib -lpthread -ldl -lobjc " conftest.c:7:39: error: too few arguments to function call, expected 2, have 0 int t(void) { notmuch_database_create(); return 0; } ~~~~~~~~~~~~~~~~~~~~~~~ ^ ../../lib/notmuch.h:234:1: note: 'notmuch_database_create' declared here notmuch_status_t ^ 1 error generated. checked program was: /* begin */ 1: #include "ruby.h" 2: 3: #include <notmuch.h> 4: 5: /*top*/ 6: extern int t(void); 7: int t(void) { notmuch_database_create(); return 0; } 8: int main(int argc, char **argv) 9: { 10: if (argc > 1000000) { 11: printf("%p", &t); 12: } 13: 14: return 0; 15: } /* end */ -------------------- [-- Attachment #3: Type: text/plain, Size: 3291 bytes --] On Sat, Jun 13, 2015 at 10:58 PM, David Bremner <david@tethera.net> wrote: > In particular this is supposed to help build on systems (presumably > using a non-gnu ld) where this flag is not available. > --- > bindings/Makefile.local | 4 +++- > bindings/ruby/extconf.rb | 5 +++-- > configure | 13 +++++++++++++ > lib/Makefile.local | 2 +- > 4 files changed, 20 insertions(+), 4 deletions(-) > > diff --git a/bindings/Makefile.local b/bindings/Makefile.local > index 16817f5..d236f01 100644 > --- a/bindings/Makefile.local > +++ b/bindings/Makefile.local > @@ -5,7 +5,9 @@ dir := bindings > # force the shared library to be built > ruby-bindings: lib/libnotmuch.so > ifeq ($(HAVE_RUBY_DEV),1) > - cd $(dir)/ruby && ruby extconf.rb --vendor > + cd $(dir)/ruby && \ > + EXTRA_LDFLAGS="$(NO_UNDEFINED_LDFLAGS)" \ > + ruby extconf.rb --vendor > $(MAKE) -C $(dir)/ruby > else > @echo Missing dependency, skipping ruby bindings > diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb > index 6160db2..6d5607e 100644 > --- a/bindings/ruby/extconf.rb > +++ b/bindings/ruby/extconf.rb > @@ -10,8 +10,9 @@ dir = File.join('..', '..', 'lib') > # includes > $INCFLAGS = "-I#{dir} #{$INCFLAGS}" > > -# make sure there are no undefined symbols > -$LDFLAGS += ' -Wl,--no-undefined' > +if ENV['EXTRA_LDFLAGS'] > + $LDFLAGS += " " + ENV['EXTRA_LDFLAGS'] > +end > > def have_local_library(lib, path, func, headers = nil) > checking_for checking_message(func, lib) do > diff --git a/configure b/configure > index 13a8dca..b967a4e 100755 > --- a/configure > +++ b/configure > @@ -751,6 +751,16 @@ else > as_needed_ldflags="" > fi > > +printf "Checking for -Wl,--no-undefined... " > +if ${CC} -Wl,--no-undefined -o minimal minimal.c >/dev/null 2>&1 > +then > + printf "Yes.\n" > + no_undefined_ldflags="-Wl,--no-undefined" > +else > + printf "No (nothing to worry about).\n" > + no_undefined_ldflags="" > +fi > + > WARN_CXXFLAGS="" > printf "Checking for available C++ compiler warning flags... " > for flag in -Wall -Wextra -Wwrite-strings; do > @@ -955,6 +965,9 @@ RPATH_LDFLAGS = ${rpath_ldflags} > # Flags needed to have linker link only to necessary libraries > AS_NEEDED_LDFLAGS = ${as_needed_ldflags} > > +# Flags to have the linker flag undefined symbols in object files > +NO_UNDEFINED_LDFLAGS = ${no_undefined_ldflags} > + > # Whether valgrind header files are available > HAVE_VALGRIND = ${have_valgrind} > > diff --git a/lib/Makefile.local b/lib/Makefile.local > index f9ecd50..b58b4e8 100644 > --- a/lib/Makefile.local > +++ b/lib/Makefile.local > @@ -33,7 +33,7 @@ LIBRARY_SUFFIX = so > LINKER_NAME = libnotmuch.$(LIBRARY_SUFFIX) > SONAME = $(LINKER_NAME).$(LIBNOTMUCH_VERSION_MAJOR) > LIBNAME = $(SONAME).$(LIBNOTMUCH_VERSION_MINOR).$(LIBNOTMUCH_VERSION_RELEASE) > -LIBRARY_LINK_FLAG = -shared -Wl,--version-script=notmuch.sym,-soname=$(SONAME) -Wl,--no-undefined > +LIBRARY_LINK_FLAG = -shared -Wl,--version-script=notmuch.sym,-soname=$(SONAME) $(NO_UNDEFINED_LDFLAGS) > ifeq ($(PLATFORM),OPENBSD) > LIBRARY_LINK_FLAG += -lc > endif > -- > 2.1.4 > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-14 6:20 ` Jinwoo Lee @ 2015-06-14 6:53 ` David Bremner 2015-06-14 15:16 ` Jinwoo Lee 0 siblings, 1 reply; 42+ messages in thread From: David Bremner @ 2015-06-14 6:53 UTC (permalink / raw) To: Jinwoo Lee, notmuch Jinwoo Lee <jinwoo68@gmail.com> writes: > There are 2 problems. > > 1. The file, bindings/Makefile.local still has lib/libnotmuch.so as the > dependency of ruby-bindings. this is fixed in id:1434263191-14171-1-git-send-email-david@tethera.net an updated patch sent a few minutes ago. > >> cd bindings/ruby && \ >> EXTRA_LDFLAGS="" \ >> ruby extconf.rb --vendor >> checking for notmuch_database_create in libnotmuch.so... no >> *** extconf.rb failed *** This should also be fixed by the same patch, since that test is eliminated. > ld: warning: ignoring file ../../lib/libnotmuch.dylib, file was built for x86_64 which is not the architecture being linked (i386): ../../lib/libnotmuch.dylib On the other hand, this suggests there is still something broken with building the ruby extensions on mac. I think if noone has a better idea, and the updated versions of the two patches I sent to the list this morning don't help, I'll just add a "--without-ruby" option to the config script. In the long run, we probably want such an option anyway. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-14 6:53 ` David Bremner @ 2015-06-14 15:16 ` Jinwoo Lee 2015-06-14 18:34 ` David Bremner 0 siblings, 1 reply; 42+ messages in thread From: Jinwoo Lee @ 2015-06-14 15:16 UTC (permalink / raw) To: David Bremner, notmuch On Sat, Jun 13, 2015 at 11:53 PM, David Bremner <david@tethera.net> wrote: > Jinwoo Lee <jinwoo68@gmail.com> writes: > >> There are 2 problems. >> >> 1. The file, bindings/Makefile.local still has lib/libnotmuch.so as the >> dependency of ruby-bindings. > > this is fixed in > > id:1434263191-14171-1-git-send-email-david@tethera.net > > an updated patch sent a few minutes ago. > >> >>> cd bindings/ruby && \ >>> EXTRA_LDFLAGS="" \ >>> ruby extconf.rb --vendor >>> checking for notmuch_database_create in libnotmuch.so... no >>> *** extconf.rb failed *** > > This should also be fixed by the same patch, since that test is > eliminated. > >> ld: warning: ignoring file ../../lib/libnotmuch.dylib, file was built for x86_64 which is not the architecture being linked (i386): ../../lib/libnotmuch.dylib > > On the other hand, this suggests there is still something broken with > building the ruby extensions on mac. I think if noone has a better idea, > and the updated versions of the two patches I sent to the list this > morning don't help, I'll just add a "--without-ruby" option to the > config script. In the long run, we probably want such an option anyway. When I apply those 2 patches from you, things seem to work. I still get warnings like below, but they don't seem severe. I'm not sure if the ruby binding actually works though. ld: warning: directory not found for option '-L/usr/local/lib' ld: warning: directory not found for option '-L/usr/local/lib' ld: warning: ignoring file ../../lib/libnotmuch.dylib, file was built for x86_64 which is not the architecture being linked (i386): ../../lib/libnotmuch.dylib Thanks, David, for the quick fix! -jinwoo ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-14 15:16 ` Jinwoo Lee @ 2015-06-14 18:34 ` David Bremner 2015-06-15 3:56 ` Jinwoo Lee 0 siblings, 1 reply; 42+ messages in thread From: David Bremner @ 2015-06-14 18:34 UTC (permalink / raw) To: Jinwoo Lee, notmuch Jinwoo Lee <jinwoo68@gmail.com> writes: > When I apply those 2 patches from you, things seem to work. I still get > warnings like below, but they don't seem severe. I'm not sure if the > ruby binding actually works though. > > ld: warning: ignoring file ../../lib/libnotmuch.dylib, file was built for x86_64 which is not the architecture being linked (i386): ../../lib/libnotmuch.dylib > That one is a bit worrying, but I don't know enough about OS X to know for sure. If you have time/interest, can you try running the tests in id:1433142542-2307-5-git-send-email-david@tethera.net Just apply the patch and make tests. That should indicate if the bindings are basically working. d ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-14 18:34 ` David Bremner @ 2015-06-15 3:56 ` Jinwoo Lee 2015-06-15 9:20 ` Tomi Ollila 0 siblings, 1 reply; 42+ messages in thread From: Jinwoo Lee @ 2015-06-15 3:56 UTC (permalink / raw) To: David Bremner, notmuch On Sun, Jun 14, 2015 at 11:34 AM, David Bremner <david@tethera.net> wrote: > Jinwoo Lee <jinwoo68@gmail.com> writes: > >> When I apply those 2 patches from you, things seem to work. I still get >> warnings like below, but they don't seem severe. I'm not sure if the >> ruby binding actually works though. >> >> ld: warning: ignoring file ../../lib/libnotmuch.dylib, file was built for x86_64 which is not the architecture being linked (i386): ../../lib/libnotmuch.dylib >> > > That one is a bit worrying, but I don't know enough about OS X to know > for sure. If you have time/interest, can you try running the tests in > > id:1433142542-2307-5-git-send-email-david@tethera.net > > Just apply the patch and make tests. That should indicate if the > bindings are basically working. Do you mean `make test', not `make tests'? `make test' errors saying that the bash version must be >= 4.0. Bash on my mac is 3.2.57, which is the default bash installed on Yosemite. Error: The notmuch test suite requires a bash version >= 4.0 due to use of associative arrays within the test suite. Please try again with a newer bash (or help us fix the test suite to be more portable). Thanks. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-15 3:56 ` Jinwoo Lee @ 2015-06-15 9:20 ` Tomi Ollila 2015-06-15 21:49 ` Jinwoo Lee 0 siblings, 1 reply; 42+ messages in thread From: Tomi Ollila @ 2015-06-15 9:20 UTC (permalink / raw) To: Jinwoo Lee, David Bremner, notmuch On Mon, Jun 15 2015, Jinwoo Lee <jinwoo68@gmail.com> wrote: > On Sun, Jun 14, 2015 at 11:34 AM, David Bremner <david@tethera.net> wrote: >> Jinwoo Lee <jinwoo68@gmail.com> writes: >> >>> When I apply those 2 patches from you, things seem to work. I still get >>> warnings like below, but they don't seem severe. I'm not sure if the >>> ruby binding actually works though. >>> >>> ld: warning: ignoring file ../../lib/libnotmuch.dylib, file was built for x86_64 which is not the architecture being linked (i386): ../../lib/libnotmuch.dylib >>> >> >> That one is a bit worrying, but I don't know enough about OS X to know >> for sure. If you have time/interest, can you try running the tests in >> >> id:1433142542-2307-5-git-send-email-david@tethera.net >> >> Just apply the patch and make tests. That should indicate if the >> bindings are basically working. > > Do you mean `make test', not `make tests'? > > `make test' errors saying that the bash version must be >= 4.0. Bash on > my mac is 3.2.57, which is the default bash installed on Yosemite. That probably will not change; IIRC bash 3.2.57 is released under GPLv2 and bash >= 4 GPLv3. You just need to install separate bash (brew, ports, wherever) in order to run these tests in OS X. > > Error: The notmuch test suite requires a bash version >= 4.0 > due to use of associative arrays within the test suite. > Please try again with a newer bash (or help us fix the > test suite to be more portable). Thanks. > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-15 9:20 ` Tomi Ollila @ 2015-06-15 21:49 ` Jinwoo Lee 2015-06-16 18:20 ` Tomi Ollila 0 siblings, 1 reply; 42+ messages in thread From: Jinwoo Lee @ 2015-06-15 21:49 UTC (permalink / raw) To: Tomi Ollila, David Bremner, notmuch > That probably will not change; IIRC bash 3.2.57 is released under GPLv2 > and bash >= 4 GPLv3. You just need to install separate bash (brew, ports, > wherever) in order to run these tests in OS X. I installed bash from MacPorts and ran `make test' again, but the result is not so good. The error message is just "make: *** [test] Error 9", and I can't tell what exactly has failed. Here's the log: $ make test cd bindings/ruby && \ EXTRA_LDFLAGS="" \ LIBNOTMUCH="../../lib/libnotmuch.dylib" \ ruby extconf.rb --vendor creating Makefile /Applications/Xcode.app/Contents/Developer/usr/bin/make -C bindings/ruby linking shared-object notmuch.bundle ld: warning: directory not found for option '-L/usr/local/lib' ld: warning: directory not found for option '-L/usr/local/lib' ld: warning: ignoring file ../../lib/libnotmuch.dylib, file was built for x86_64 which is not the architecture being linked (i386): ../../lib/libnotmuch.dylib Use "/Applications/Xcode.app/Contents/Developer/usr/bin/make V=1" to see the verbose compile lines. CC -g -O2 test/arg-test.o CC test/arg-test CC -g -O2 test/hex-xcode.o CC test/hex-xcode CC -g -O2 test/random-corpus.o CC -g -O2 test/database-test.o CXX test/random-corpus CC -g -O2 test/parse-time.o CC test/parse-time CC -g -O2 test/smtp-dummy.o CC test/smtp-dummy CXX -g -O2 test/symbol-test.o test/symbol-test.cc:7:14: warning: unused parameter 'argc' [-Wunused-parameter] int main(int argc, char** argv) { ^ 1 warning generated. CXX test/symbol-test CXX -g -O2 test/make-db-version.o CXX test/make-db-version INFO: using 2 minute timeout for tests T000-basic: Testing the test framework itself. make: *** [test] Error 9 ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-15 21:49 ` Jinwoo Lee @ 2015-06-16 18:20 ` Tomi Ollila 2015-06-16 23:43 ` Jinwoo Lee 0 siblings, 1 reply; 42+ messages in thread From: Tomi Ollila @ 2015-06-16 18:20 UTC (permalink / raw) To: Jinwoo Lee, notmuch On Tue, Jun 16 2015, Jinwoo Lee <jinwoo68@gmail.com> wrote: >> That probably will not change; IIRC bash 3.2.57 is released under GPLv2 >> and bash >= 4 GPLv3. You just need to install separate bash (brew, ports, >> wherever) in order to run these tests in OS X. > > I installed bash from MacPorts and ran `make test' again, but the result > is not so good. The error message is just "make: *** [test] Error 9", > and I can't tell what exactly has failed. edit file test/T000-basic.sh and add line set -x after the initial comments, and just before line test_description='the test framework itself.' then rerun the test; I'd suggest script -c 'make test' but that may not work on OS X -- anyway we're interested the last lines so that is not necessary here. > > Here's the log: > // stuff deleted > > T000-basic: Testing the test framework itself. > make: *** [test] Error 9 At least we know it reached line 212 in test/test-lib.sh... Tomi ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-16 18:20 ` Tomi Ollila @ 2015-06-16 23:43 ` Jinwoo Lee 2015-06-17 0:15 ` Jinwoo Lee 2015-06-17 6:23 ` David Bremner 0 siblings, 2 replies; 42+ messages in thread From: Jinwoo Lee @ 2015-06-16 23:43 UTC (permalink / raw) To: Tomi Ollila, notmuch Turns out my previous error was because I was running tests within Emacs eshell, and run_emacs failed. I tried again in a terminal and it still failed but for a different reason. I don't have readelf on my Mac. $ make test /Applications/Xcode.app/Contents/Developer/usr/bin/make -C .. test cd bindings/ruby && \ EXTRA_LDFLAGS="" \ LIBNOTMUCH="../../lib/libnotmuch.dylib" \ ruby extconf.rb --vendor creating Makefile /Applications/Xcode.app/Contents/Developer/usr/bin/make -C bindings/ruby linking shared-object notmuch.bundle ld: warning: directory not found for option '-L/usr/local/lib' ld: warning: directory not found for option '-L/usr/local/lib' ld: warning: ignoring file ../../lib/libnotmuch.dylib, file was built for x86_64 which is not the architecture being linked (i386): ../../lib/libnotmuch.dylib INFO: using 2 minute timeout for tests T000-basic: Testing the test framework itself. ./test-lib-common.sh: line 43: /Users/jinwoo/Box: No such file or directory PASS success is reported like this PASS test runs if prerequisite is satisfied PASS tests clean up after themselves PASS tests clean up even after a failure PASS failure to clean up causes the test to fail PASS Ensure that test output is suppressed unless the test fails PASS Ensure that -v does not suppress test output PASS test that mail store was created PASS mail store should be empty PASS NOTMUCH_CONFIG is set and points to an existing file FAIL PATH is set to build directory --- T000-basic.11.expected 2015-06-16 23:40:30.000000000 +0000 +++ T000-basic.11.output 2015-06-16 23:40:30.000000000 +0000 @@ -1 +1 @@ -/Users/jinwoo/Box Sync/personal/project/notmuch + usage: dirname path FAIL notmuch is compiled with debugging symbols --- T000-basic.12.expected 2015-06-16 23:40:30.000000000 +0000 +++ T000-basic.12.output 2015-06-16 23:40:30.000000000 +0000 @@ -1 +1 @@ -1 +0 ./T000-basic.sh: line 95: readelf: command not found ./test-lib.sh: line 1062: $test_results_path: ambiguous redirect ./test-lib.sh: line 1063: $test_results_path: ambiguous redirect ./test-lib.sh: line 1064: $test_results_path: ambiguous redirect ./test-lib.sh: line 1065: $test_results_path: ambiguous redirect ./test-lib.sh: line 1066: $test_results_path: ambiguous redirect ./test-lib.sh: line 1067: $test_results_path: ambiguous redirect make[1]: *** [test] Error 1 make: *** [test] Error 2 ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-16 23:43 ` Jinwoo Lee @ 2015-06-17 0:15 ` Jinwoo Lee 2015-06-17 6:23 ` David Bremner 1 sibling, 0 replies; 42+ messages in thread From: Jinwoo Lee @ 2015-06-17 0:15 UTC (permalink / raw) To: Tomi Ollila, notmuch On Tue, Jun 16, 2015 at 04:43 PM, Jinwoo Lee <jinwoo68@gmail.com> wrote: > Turns out my previous error was because I was running tests within Emacs > eshell, and run_emacs failed. > > I tried again in a terminal and it still failed but for a different > reason. I don't have readelf on my Mac. Looks like otool should be used on Mac. But I have no idea how readelf is used here and how it should be translated to otool. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-16 23:43 ` Jinwoo Lee 2015-06-17 0:15 ` Jinwoo Lee @ 2015-06-17 6:23 ` David Bremner 2015-06-17 6:39 ` Jinwoo Lee 2015-06-17 11:16 ` Tomi Ollila 1 sibling, 2 replies; 42+ messages in thread From: David Bremner @ 2015-06-17 6:23 UTC (permalink / raw) To: Jinwoo Lee, Tomi Ollila, notmuch Jinwoo Lee <jinwoo68@gmail.com> writes: > FAIL PATH is set to build directory > --- T000-basic.11.expected 2015-06-16 23:40:30.000000000 +0000 > +++ T000-basic.11.output 2015-06-16 23:40:30.000000000 +0000 > @@ -1 +1 @@ > -/Users/jinwoo/Box Sync/personal/project/notmuch > + > usage: dirname path This failure is because of spaces in your pathname. It might be simpler to run in a different directory rather than fix all the problems this causes in the test suite. > FAIL notmuch is compiled with debugging symbols > --- T000-basic.12.expected 2015-06-16 23:40:30.000000000 +0000 > +++ T000-basic.12.output 2015-06-16 23:40:30.000000000 +0000 > @@ -1 +1 @@ > -1 > +0 > ./T000-basic.sh: line 95: readelf: command not found This test, as it says, is testing if notmuch was compiled with debugging symbols. Rather than yet another special case for mac, I'd be curious if there is a portable test for this (perhaps using nm?). In any case, this one test failing should not be fatal. > ./test-lib.sh: line 1062: $test_results_path: ambiguous redirect > ./test-lib.sh: line 1063: $test_results_path: ambiguous redirect > ./test-lib.sh: line 1064: $test_results_path: ambiguous redirect > ./test-lib.sh: line 1065: $test_results_path: ambiguous redirect > ./test-lib.sh: line 1066: $test_results_path: ambiguous redirect > ./test-lib.sh: line 1067: $test_results_path: ambiguous redirect At a guess, this again has to do with spaces in the pathname. Maybe this is fixable with more quoting, but it's really independent of mac vs gnu/linux. In this instance it looks like quoting "test_results_path" would help. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-17 6:23 ` David Bremner @ 2015-06-17 6:39 ` Jinwoo Lee 2015-06-17 11:16 ` Tomi Ollila 1 sibling, 0 replies; 42+ messages in thread From: Jinwoo Lee @ 2015-06-17 6:39 UTC (permalink / raw) To: David Bremner, Tomi Ollila, notmuch [-- Attachment #1: Type: text/plain, Size: 494 bytes --] On Tue, Jun 16, 2015 at 11:23 PM, David Bremner <david@tethera.net> wrote: > At a guess, this again has to do with spaces in the pathname. Maybe this > is fixable with more quoting, but it's really independent of mac vs > gnu/linux. In this instance it looks like quoting "test_results_path" > would help. Ah, I thought the readelf error was a fatal one. I re-ran `make test' from a new directory that doesn't have spaces in its name. It gave different errors and I'm attaching the output. [-- Attachment #2: Notmuch test log --] [-- Type: text/plain, Size: 16761 bytes --] /Applications/Xcode.app/Contents/Developer/usr/bin/make -C .. test cd bindings/ruby && \ EXTRA_LDFLAGS="" \ LIBNOTMUCH="../../lib/libnotmuch.dylib" \ ruby extconf.rb --vendor creating Makefile /Applications/Xcode.app/Contents/Developer/usr/bin/make -C bindings/ruby linking shared-object notmuch.bundle ld: warning: directory not found for option '-L/usr/local/lib' ld: warning: directory not found for option '-L/usr/local/lib' ld: warning: ignoring file ../../lib/libnotmuch.dylib, file was built for x86_64 which is not the architecture being linked (i386): ../../lib/libnotmuch.dylib Use "/Applications/Xcode.app/Contents/Developer/usr/bin/make V=1" to see the verbose compile lines. CC -g -O2 test/arg-test.o CC test/arg-test CC -g -O2 test/hex-xcode.o CC test/hex-xcode CC -g -O2 test/random-corpus.o CC -g -O2 test/database-test.o CXX test/random-corpus CC -g -O2 test/parse-time.o CC test/parse-time CC -g -O2 test/smtp-dummy.o CC test/smtp-dummy CXX -g -O2 test/symbol-test.o test/symbol-test.cc:7:14: warning: unused parameter 'argc' [-Wunused-parameter] int main(int argc, char** argv) { ^ 1 warning generated. CXX test/symbol-test CXX -g -O2 test/make-db-version.o CXX test/make-db-version INFO: using 2 minute timeout for tests T000-basic: Testing the test framework itself. PASS success is reported like this PASS test runs if prerequisite is satisfied PASS tests clean up after themselves PASS tests clean up even after a failure PASS failure to clean up causes the test to fail PASS Ensure that test output is suppressed unless the test fails PASS Ensure that -v does not suppress test output PASS test that mail store was created PASS mail store should be empty PASS NOTMUCH_CONFIG is set and points to an existing file PASS PATH is set to build directory FAIL notmuch is compiled with debugging symbols --- T000-basic.12.expected 2015-06-17 06:35:04.000000000 +0000 +++ T000-basic.12.output 2015-06-17 06:35:04.000000000 +0000 @@ -1 +1 @@ -1 +0 ./T000-basic.sh: line 95: readelf: command not found T010-help-test: Testing online help PASS notmuch --help PASS notmuch help PASS notmuch --version FAIL notmuch --help tag (man pages not available) test_must_fail notmuch --help tag >/dev/null PASS notmuch help tag (man pages not available) T020-compact: Testing "notmuch compact" PASS Running compact PASS Compact preserves database PASS Restoring Backup PASS Checking restored backup T030-config: Testing "notmuch config" PASS Get string value PASS Get list value PASS Set string value PASS Set string value again PASS Set list value PASS Set list value again PASS Remove key PASS Remove non-existent key PASS List all items PASS Top level --config=FILE option PASS Top level --config=FILE option changed the right file PASS Read config file through a symlink PASS Write config file through a symlink PASS Writing config file through symlink follows symlink T040-setup: Testing "notmuch setup" PASS Notmuch new without a config suggests notmuch setup PASS Create a new config interactively T050-new: Testing "notmuch new" in several variations PASS No new messages PASS Single new message PASS Multiple new messages PASS No new messages (non-empty DB) PASS New directories PASS Alternate inode order PASS Message moved in PASS Renamed message PASS Deleted message PASS Renamed directory PASS Deleted directory PASS New directory (at end of list) PASS Deleted directory (end of list) PASS New symlink to directory PASS New symlink to a file PASS Broken symlink aborts PASS New two-level directory PASS Deleted two-level directory PASS Support single-message mbox (deprecated) PASS Skip and report non-mail files PASS Ignore files and directories specified in new.ignore PASS Ignore files and directories specified in new.ignore (multiple occurrences) PASS Don't stop for ignored broken symlinks PASS Quiet: No new mail. PASS Quiet: new, removed and renamed messages. PASS Empty tags in new.tags are forbidden PASS Tags starting with '-' in new.tags are forbidden PASS Invalid tags set exit code PASS Xapian exception: read only files T060-count: Testing "notmuch count" for messages and threads PASS message count is the default for notmuch count PASS message count with --output=messages PASS thread count with --output=threads PASS thread count is the default for notmuch search PASS files count PASS files count for a duplicate message-id PASS count with no matching messages PASS count with no matching threads PASS message count is the default for batch count PASS batch message count PASS batch thread count PASS batch message count with input file T070-insert: Testing "notmuch insert" missing prerequisites: gdb(1) SKIP all tests in T070-insert T080-search: Testing "notmuch search" in several variations PASS Search body PASS Search by from: PASS Search by to: PASS Search by subject: PASS Search by subject (utf-8): PASS Search by id: PASS Search by tag: PASS Search by thread: PASS Search body (phrase) PASS Search by from: (address) PASS Search by from: (name) PASS Search by from: (name and address) PASS Search by from: without prefix (name and address) PASS Search by to: (address) PASS Search by to: (name) PASS Search by to: (name and adress) PASS Search by to: without prefix (name and adress) PASS Search by subject: (phrase) PASS Search for all messages ("*") PASS Search body (utf-8): PASS headers do not have adjacent term positions PASS parts have non-overlapping term positions PASS parts do not have adjacent term positions T090-search-output: Testing various settings for "notmuch search --output=" PASS --output=threads PASS --output=threads --format=json PASS --output=messages PASS --output=messages --duplicate=1 PASS --output=messages --duplicate=2 PASS --output=messages --duplicate=3 PASS --output=messages --format=json PASS --output=messages --format=json --duplicate=1 PASS --output=messages --format=json --duplicate=2 PASS --output=messages --format=json --duplicate=3 PASS --output=files PASS --output=files --duplicate=1 PASS --output=files --format=json PASS --output=files --format=json --duplicate=2 PASS --output=tags PASS --output=tags --format=json PASS sanitize output for quoted-printable line-breaks in author and subject PASS search for non-existent message prints nothing PASS search --format=json for non-existent message prints proper empty json T095-address: Testing "notmuch address" in several variants PASS --output=sender PASS without --output PASS --output=sender --format=json PASS --output=recipients PASS --output=sender --output=recipients PASS --output=sender --output=count PASS --output=count --format=json T100-search-by-folder: Testing "notmuch search" by folder: and path: (with variations) PASS Single-world folder: specification (multiple results) PASS Top level folder PASS Two-word path to narrow results to one PASS Folder search with --output=files PASS After removing duplicate instance of matching path PASS Folder search with --output=files part #2 PASS After removing duplicate instance of matching path part #2 PASS After rename, old path returns nothing PASS After rename, new path returns result PASS folder: search PASS top level folder: search PASS path: search PASS top level path: search PASS recursive path: search T110-search-position-overlap-bug: Testing that notmuch does not overlap term positions PASS Search for a@b.c matches PASS Search for x@y.z matches PASS Search for a@y.c must not match T120-search-insufficient-from-quoting: Testing messages with unquoted . in name PASS Search by first name PASS Search by last name: PASS Search by address: PASS Search for all messages: T130-search-limiting: Testing "notmuch search" --offset and --limit parameters PASS messages: limit does the right thing PASS messages: concatenation of limited searches PASS messages: limit larger than result set PASS messages: limit = 0 PASS messages: offset does the right thing PASS messages: offset = 0 PASS messages: negative offset PASS messages: negative offset PASS messages: negative offset combined with limit PASS messages: negative offset combined with equal limit PASS messages: negative offset combined with large limit PASS messages: negative offset larger then results PASS threads: limit does the right thing PASS threads: concatenation of limited searches PASS threads: limit larger than result set PASS threads: limit = 0 PASS threads: offset does the right thing PASS threads: offset = 0 PASS threads: negative offset PASS threads: negative offset PASS threads: negative offset combined with limit PASS threads: negative offset combined with equal limit PASS threads: negative offset combined with large limit PASS threads: negative offset larger then results T140-excludes: Testing "notmuch search, count and show" with excludes in several variations PASS Search, exclude "deleted" messages from search PASS Search, exclude "deleted" messages from message search PASS Search, exclude "deleted" messages from message search --exclude=false PASS Search, exclude "deleted" messages from message search (non-existent exclude-tag) PASS Search, exclude "deleted" messages from search, overridden PASS Search, exclude "deleted" messages from threads PASS Search, don't exclude "deleted" messages when --exclude=flag specified PASS Search, don't exclude "deleted" messages from search if not configured PASS Search, default exclusion (thread summary) PASS Search, default exclusion (messages) PASS Search, exclude=true (thread summary) PASS Search, exclude=true (messages) PASS Search, exclude=false (thread summary) PASS Search, exclude=false (messages) PASS Search, exclude=flag (thread summary) PASS Search, exclude=flag (messages) PASS Search, exclude=all (thread summary) PASS Search, exclude=all (messages) PASS Search, default exclusion: tag in query (thread summary) PASS Search, default exclusion: tag in query (messages) PASS Search, exclude=true: tag in query (thread summary) PASS Search, exclude=true: tag in query (messages) PASS Search, exclude=false: tag in query (thread summary) PASS Search, exclude=false: tag in query (messages) PASS Search, exclude=flag: tag in query (thread summary) PASS Search, exclude=flag: tag in query (messages) PASS Search, exclude=all: tag in query (thread summary) PASS Search, exclude=all: tag in query (messages) PASS Count, default exclusion (messages) PASS Count, default exclusion (threads) PASS Count, exclude=true (messages) PASS Count, exclude=true (threads) PASS Count, exclude=false (messages) PASS Count, exclude=false (threads) PASS Count, default exclusion: tag in query (messages) PASS Count, default exclusion: tag in query (threads) PASS Count, exclude=true: tag in query (messages) PASS Count, exclude=true: tag in query (threads) PASS Count, exclude=false: tag in query (messages) PASS Count, exclude=false: tag in query (threads) PASS Show, default exclusion PASS Show, default exclusion (entire-thread) PASS Show, exclude=true PASS Show, exclude=true (entire-thread) PASS Show, exclude=false PASS Show, exclude=false (entire-thread) T150-tagging: Testing "notmuch tag" PASS Adding tags PASS Removing tags PASS No tag operations PASS No query PASS Redundant tagging PASS Remove all PASS Remove all with a no-op PASS Special characters in tags PASS Tagging order PASS --batch PASS --input PASS --batch --input PASS --batch, blank lines and comments PASS --batch: checking error messages PASS --batch: tags with quotes PASS --batch: tags with punctuation and space PASS --batch: unicode tags PASS --batch: only space and % needs to be encoded. PASS --batch: unicode message-ids PASS Empty tag names PASS Tag name beginning with - PASS Xapian exception: read only files T160-json: Testing --format=json output PASS Show message: json PASS Show message: json --body=true PASS Show message: json --body=false PASS Search message: json PASS Show message: json, utf-8 missing prerequisites: dtach(1) SKIP Show message: json, inline attachment filename PASS Search message: json, utf-8 PASS Format version: too low PASS Format version: too high T170-sexp: Testing --format=sexp output PASS Show message: sexp PASS Show message: sexp --body=true PASS Show message: sexp --body=false PASS Search message: sexp PASS Show message: sexp, utf-8 missing prerequisites: dtach(1) SKIP Show message: sexp, inline attachment filename FAIL Search message: sexp, utf-8 --- T170-sexp.7.expected 2015-06-17 06:35:18.000000000 +0000 +++ T170-sexp.7.output 2015-06-17 06:35:18.000000000 +0000 @@ -1 +1 @@ -((:thread "0000000000000005" :timestamp 946728000 :date_relative "2000-01-01" :matched 1 :total 1 :authors "Notmuch Test Suite" :subject "sexp-search-utf8-body-sübjéct" :query ("id:msg-004@notmuch-test-suite" nil) :tags ("inbox" "unread"))) +((:thread "0000000000000004" :timestamp 946728000 :date_relative "2000-01-01" :matched 1 :total 1 :authors "Notmuch Test Suite" :subject "sexp-search-utf8-body-sübjéct" :query ("id:msg-004@notmuch-test-suite" nil) :tags ("inbox" "unread"))) T180-text: Testing --format=text output PASS Show message: text PASS Search message: text PASS Show message: text, utf-8 PASS Search message: text, utf-8 PASS Search message tags: text0 PASS Compare text vs. text0 for threads PASS Compare text vs. text0 for messages PASS Compare text vs. text0 for files PASS Compare text vs. text0 for tags T190-multipart: Testing output of multipart message PASS --format=text --part=0, full message PASS --format=text --part=1, message body PASS --format=text --part=2, multipart/mixed PASS --format=text --part=3, rfc822 part PASS --format=text --part=4, rfc822's multipart PASS --format=text --part=5, rfc822's html part PASS --format=text --part=6, rfc822's text part PASS --format=text --part=7, inline attachement PASS --format=text --part=8, plain text part PASS --format=text --part=9, pgp signature (unverified) PASS --format=text --part=8, no part, expect error PASS --format=json --part=0, full message PASS --format=json --part=1, message body PASS --format=json --part=2, multipart/mixed PASS --format=json --part=3, rfc822 part PASS --format=json --part=4, rfc822's multipart/alternative PASS --format=json --part=5, rfc822's html part PASS --format=json --part=6, rfc822's text part PASS --format=json --part=7, inline attachment PASS --format=json --part=8, plain text part PASS --format=json --part=9, pgp signature (unverified) PASS --format=json --part=10, no part, expect error PASS --format=raw PASS --format=raw --part=0, full message PASS --format=raw --part=1, message body PASS --format=raw --part=2, multipart/mixed PASS --format=raw --part=3, rfc822 part PASS --format=raw --part=4, rfc822's multipart PASS --format=raw --part=5, rfc822's html part PASS --format=raw --part=6, rfc822's text part PASS --format=raw --part=7, inline attachment PASS --format=raw --part=8, plain text part PASS --format=raw --part=9, pgp signature (unverified) PASS --format=raw --part=10, no part, expect error PASS --format=mbox PASS --format=mbox --part=1, incompatible, expect error PASS 'notmuch reply' to a multipart message PASS 'notmuch reply' to a multipart message with json format PASS 'notmuch show --part' does not corrupt a part with CRLF pair PASS html parts excluded by default Timeout: aborting command ``./T190-multipart.sh'' with signal 9 test/notmuch-test: line 36: 32948 Killed: 9 $TEST_TIMEOUT_CMD ./$test "$@" make[1]: *** [test] Error 137 make: *** [test] Error 2 ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [PATCH] lib, ruby: make use of -Wl,--no-undefined configurable 2015-06-17 6:23 ` David Bremner 2015-06-17 6:39 ` Jinwoo Lee @ 2015-06-17 11:16 ` Tomi Ollila 1 sibling, 0 replies; 42+ messages in thread From: Tomi Ollila @ 2015-06-17 11:16 UTC (permalink / raw) To: Jinwoo Lee, notmuch On Wed, Jun 17 2015, David Bremner <david@tethera.net> wrote: > Jinwoo Lee <jinwoo68@gmail.com> writes: >> FAIL PATH is set to build directory >> --- T000-basic.11.expected 2015-06-16 23:40:30.000000000 +0000 >> +++ T000-basic.11.output 2015-06-16 23:40:30.000000000 +0000 >> @@ -1 +1 @@ >> -/Users/jinwoo/Box Sync/personal/project/notmuch >> + >> usage: dirname path > > This failure is because of spaces in your pathname. It might be simpler > to run in a different directory rather than fix all the problems this > causes in the test suite. Yes.. space in pathname also causes that 'ambiquous redirect'. Please use a directory which absolute path does not contain spaces (nor tabs nor newline ;/) -- it would be quite a big project to make test suite work with whitespace in filename and still something might broke so it is not worth an effort. Probably not all tests will succeed anyway, but if you get relevant tests to work then that should be good enough... Tomi > >> FAIL notmuch is compiled with debugging symbols >> --- T000-basic.12.expected 2015-06-16 23:40:30.000000000 +0000 >> +++ T000-basic.12.output 2015-06-16 23:40:30.000000000 +0000 >> @@ -1 +1 @@ >> -1 >> +0 >> ./T000-basic.sh: line 95: readelf: command not found > > This test, as it says, is testing if notmuch was compiled with debugging > symbols. Rather than yet another special case for mac, I'd be curious > if there is a portable test for this (perhaps using nm?). In any case, > this one test failing should not be fatal. yes, there is just one (1) test in the whole suite (last one in T000-basic) that uses readelf. > >> ./test-lib.sh: line 1062: $test_results_path: ambiguous redirect >> ./test-lib.sh: line 1063: $test_results_path: ambiguous redirect >> ./test-lib.sh: line 1064: $test_results_path: ambiguous redirect >> ./test-lib.sh: line 1065: $test_results_path: ambiguous redirect >> ./test-lib.sh: line 1066: $test_results_path: ambiguous redirect >> ./test-lib.sh: line 1067: $test_results_path: ambiguous redirect > > At a guess, this again has to do with spaces in the pathname. Maybe this > is fixable with more quoting, but it's really independent of mac vs > gnu/linux. In this instance it looks like quoting "test_results_path" > would help. ^ permalink raw reply [flat|nested] 42+ messages in thread
* [patch v3 3/4] build/ruby: use notmuch configure script values for shared lib 2015-06-01 7:08 ` Build ruby bindings: round 3 David Bremner 2015-06-01 7:08 ` [patch v3 1/4] build: integrate building ruby bindings into notmuch build process David Bremner 2015-06-01 7:09 ` [patch v3 2/4] build/ruby: make use of -Wl,--no-undefined configurable David Bremner @ 2015-06-01 7:09 ` David Bremner 2015-06-14 6:26 ` [PATCH] " David Bremner 2015-06-01 7:09 ` [patch v3 4/4] test: add initial ruby tests David Bremner 3 siblings, 1 reply; 42+ messages in thread From: David Bremner @ 2015-06-01 7:09 UTC (permalink / raw) To: David Bremner, notmuch This is supposed to help build on systems like MacOS with different conventions for naming shared libraries. We have already computed the relevant names, so doing it again in ruby seems like a bad idea. --- bindings/Makefile.local | 1 + bindings/ruby/extconf.rb | 13 +++---------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/bindings/Makefile.local b/bindings/Makefile.local index 2ad0b86..8b1ff83 100644 --- a/bindings/Makefile.local +++ b/bindings/Makefile.local @@ -7,6 +7,7 @@ ruby-bindings: lib/libnotmuch.so ifeq ($(HAVE_RUBY_DEV),1) cd $(dir)/ruby && \ EXTRA_LDFLAGS="$(NO_UNDEFINED_LDFLAGS)" \ + LIBNOTMUCH="../../lib/$(LINKER_NAME)" \ ruby extconf.rb --vendor $(MAKE) -C $(dir)/ruby else diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb index 6d5607e..ddaa684 100644 --- a/bindings/ruby/extconf.rb +++ b/bindings/ruby/extconf.rb @@ -14,19 +14,12 @@ if ENV['EXTRA_LDFLAGS'] $LDFLAGS += " " + ENV['EXTRA_LDFLAGS'] end -def have_local_library(lib, path, func, headers = nil) - checking_for checking_message(func, lib) do - lib = File.join(path, lib) - if try_func(func, lib, headers) - $LOCAL_LIBS += lib - end - end -end - -if not have_local_library('libnotmuch.so', dir, 'notmuch_database_create', 'notmuch.h') +if not ENV['LIBNOTMUCH'] exit 1 end +$LOCAL_LIBS += ENV['LIBNOTMUCH'] + # Create Makefile dir_config('notmuch') create_makefile('notmuch') -- 2.1.4 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* [PATCH] build/ruby: use notmuch configure script values for shared lib 2015-06-01 7:09 ` [patch v3 3/4] build/ruby: use notmuch configure script values for shared lib David Bremner @ 2015-06-14 6:26 ` David Bremner 0 siblings, 0 replies; 42+ messages in thread From: David Bremner @ 2015-06-14 6:26 UTC (permalink / raw) To: David Bremner, notmuch This is supposed to help build on systems like MacOS with different conventions for naming shared libraries. We have already computed the relevant names, so doing it again in ruby seems like a bad idea. --- bindings/Makefile.local | 3 ++- bindings/ruby/extconf.rb | 13 +++---------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/bindings/Makefile.local b/bindings/Makefile.local index d236f01..4ecf839 100644 --- a/bindings/Makefile.local +++ b/bindings/Makefile.local @@ -3,10 +3,11 @@ dir := bindings # force the shared library to be built -ruby-bindings: lib/libnotmuch.so +ruby-bindings: lib/$(LINKER_NAME) ifeq ($(HAVE_RUBY_DEV),1) cd $(dir)/ruby && \ EXTRA_LDFLAGS="$(NO_UNDEFINED_LDFLAGS)" \ + LIBNOTMUCH="../../lib/$(LINKER_NAME)" \ ruby extconf.rb --vendor $(MAKE) -C $(dir)/ruby else diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb index 6d5607e..ddaa684 100644 --- a/bindings/ruby/extconf.rb +++ b/bindings/ruby/extconf.rb @@ -14,19 +14,12 @@ if ENV['EXTRA_LDFLAGS'] $LDFLAGS += " " + ENV['EXTRA_LDFLAGS'] end -def have_local_library(lib, path, func, headers = nil) - checking_for checking_message(func, lib) do - lib = File.join(path, lib) - if try_func(func, lib, headers) - $LOCAL_LIBS += lib - end - end -end - -if not have_local_library('libnotmuch.so', dir, 'notmuch_database_create', 'notmuch.h') +if not ENV['LIBNOTMUCH'] exit 1 end +$LOCAL_LIBS += ENV['LIBNOTMUCH'] + # Create Makefile dir_config('notmuch') create_makefile('notmuch') -- 2.1.4 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* [patch v3 4/4] test: add initial ruby tests 2015-06-01 7:08 ` Build ruby bindings: round 3 David Bremner ` (2 preceding siblings ...) 2015-06-01 7:09 ` [patch v3 3/4] build/ruby: use notmuch configure script values for shared lib David Bremner @ 2015-06-01 7:09 ` David Bremner 3 siblings, 0 replies; 42+ messages in thread From: David Bremner @ 2015-06-01 7:09 UTC (permalink / raw) To: David Bremner, notmuch This is pretty much a line by line translation of the existing python tests, with two new tests for the count API. --- test/T395-ruby.sh | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ test/test-lib.sh | 5 ++++ 2 files changed, 91 insertions(+) create mode 100755 test/T395-ruby.sh diff --git a/test/T395-ruby.sh b/test/T395-ruby.sh new file mode 100755 index 0000000..8b8e6d2 --- /dev/null +++ b/test/T395-ruby.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +test_description="ruby bindings" +. ./test-lib.sh + +if [ "${NOTMUCH_HAVE_RUBY_DEV}" = "0" ]; then + test_subtest_missing_external_prereq_["ruby development files"]=t +fi + +add_email_corpus + +test_begin_subtest "compare thread ids" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +@q = @db.query('tag:inbox') +@q.sort = Notmuch::SORT_OLDEST_FIRST +for t in @q.search_threads do + print t.thread_id, "\n" +end +EOF +notmuch search --sort=oldest-first --output=threads tag:inbox | sed s/^thread:// > EXPECTED +test_expect_equal_file OUTPUT EXPECTED + +test_begin_subtest "compare message ids" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +@q = @db.query('tag:inbox') +@q.sort = Notmuch::SORT_OLDEST_FIRST +for m in @q.search_messages do + print m.message_id, "\n" +end +EOF +notmuch search --sort=oldest-first --output=messages tag:inbox | sed s/^id:// > EXPECTED +test_expect_equal_file OUTPUT EXPECTED + +test_begin_subtest "get non-existent file" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +result = @db.find_message_by_filename('i-dont-exist') +print (result == nil) +EOF +test_expect_equal "$(cat OUTPUT)" "true" + +test_begin_subtest "count messages" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +@q = @db.query('tag:inbox') +print @q.count_messages(),"\n" +EOF +notmuch count --output=messages tag:inbox > EXPECTED +test_expect_equal_file OUTPUT EXPECTED + +test_begin_subtest "count threads" +test_ruby <<"EOF" +require 'notmuch' +$maildir = ENV['MAIL_DIR'] +if not $maildir then + abort('environment variable MAIL_DIR must be set') +end +@db = Notmuch::Database.new($maildir) +@q = @db.query('tag:inbox') +print @q.count_threads(),"\n" +EOF +notmuch count --output=threads tag:inbox > EXPECTED +test_expect_equal_file OUTPUT EXPECTED + +test_done diff --git a/test/test-lib.sh b/test/test-lib.sh index 23085e7..3466e9c 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -1163,6 +1163,11 @@ test_python() { | $cmd - } +test_ruby() { + export LD_LIBRARY_PATH=$TEST_DIRECTORY/../lib + MAIL_DIR=$MAIL_DIR ruby -I $TEST_DIRECTORY/../bindings/ruby> OUTPUT +} + test_C () { exec_file="test${test_count}" test_file="${exec_file}.c" -- 2.1.4 ^ permalink raw reply related [flat|nested] 42+ messages in thread
end of thread, other threads:[~2015-06-17 11:16 UTC | newest] Thread overview: 42+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-01-01 12:16 Build and test ruby bindings David Bremner 2015-01-01 12:16 ` [PATCH 1/5] build: integrate building ruby bindings into notmuch build process David Bremner 2015-01-01 12:16 ` [PATCH 2/5] build/ruby: make use of -Wl,--no-undefined configurable David Bremner 2015-01-01 12:16 ` [PATCH 3/5] bindings/ruby: gitignore *.o David Bremner 2015-01-01 15:53 ` David Bremner 2015-01-01 12:16 ` [PATCH 4/5] build/ruby: use notmuch configure script values for shared lib David Bremner 2015-01-01 12:16 ` [PATCH 5/5] test: add initial ruby tests David Bremner 2015-03-06 21:57 ` integrate ruby into build and test v2 David Bremner 2015-03-06 21:57 ` [Patch v2 1/4] build: integrate building ruby bindings into notmuch build process David Bremner 2015-03-06 21:57 ` [Patch v2 2/4] build/ruby: make use of -Wl,--no-undefined configurable David Bremner 2015-03-06 21:57 ` [Patch v2 3/4] build/ruby: use notmuch configure script values for shared lib David Bremner 2015-03-06 21:57 ` [Patch v2 4/4] test: add initial ruby tests David Bremner 2015-06-01 7:08 ` Build ruby bindings: round 3 David Bremner 2015-06-01 7:08 ` [patch v3 1/4] build: integrate building ruby bindings into notmuch build process David Bremner 2015-06-13 6:37 ` David Bremner 2015-06-13 19:59 ` Jinwoo Lee 2015-06-13 20:46 ` Jinwoo Lee 2015-06-13 20:51 ` Jinwoo Lee 2015-06-13 21:11 ` David Bremner 2015-06-13 21:22 ` Jinwoo Lee 2015-06-13 21:24 ` Jinwoo Lee 2015-06-13 21:34 ` Jinwoo Lee 2015-06-14 5:49 ` David Bremner 2015-06-15 6:35 ` David Bremner 2015-06-01 7:09 ` [patch v3 2/4] build/ruby: make use of -Wl,--no-undefined configurable David Bremner 2015-06-14 5:58 ` [PATCH] lib, ruby: " David Bremner 2015-06-14 6:20 ` Jinwoo Lee 2015-06-14 6:53 ` David Bremner 2015-06-14 15:16 ` Jinwoo Lee 2015-06-14 18:34 ` David Bremner 2015-06-15 3:56 ` Jinwoo Lee 2015-06-15 9:20 ` Tomi Ollila 2015-06-15 21:49 ` Jinwoo Lee 2015-06-16 18:20 ` Tomi Ollila 2015-06-16 23:43 ` Jinwoo Lee 2015-06-17 0:15 ` Jinwoo Lee 2015-06-17 6:23 ` David Bremner 2015-06-17 6:39 ` Jinwoo Lee 2015-06-17 11:16 ` Tomi Ollila 2015-06-01 7:09 ` [patch v3 3/4] build/ruby: use notmuch configure script values for shared lib David Bremner 2015-06-14 6:26 ` [PATCH] " David Bremner 2015-06-01 7:09 ` [patch v3 4/4] test: add initial ruby tests David Bremner
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).