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