unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* can't compile on MacOS
@ 2024-10-25 14:31 Michal Sapka
  2024-11-08 11:52 ` Tomi Ollila
       [not found] ` <87h68iui5c.fsf@tethera.net>
  0 siblings, 2 replies; 10+ messages in thread
From: Michal Sapka @ 2024-10-25 14:31 UTC (permalink / raw)
  To: notmuch

Hey

I'm trying to compile notmuch on MacOS Sonoma, but the make can't find talloc.h

./defs.h:26:10: fatal error: 'talloc.h' file not found
#include <talloc.h>
         ^~~~~~~~~~

the thing is that I have in installed via brew in

/opt/homebrew/Cellar/talloc/2.4.2/include

the file talloc.h exist in that path.

The configure script has correctly found it and stored in Makefile.conf

# Flags needed to compile and link against talloc
TALLOC_CFLAGS = -I/opt/homebrew/Cellar/talloc/2.4.2/include
TALLOC_LDFLAGS = -L/opt/homebrew/Cellar/talloc/2.4.2/lib -ltalloc

I'm not too fluent in C so it is a problem :-)

—-
Michał 
https://michal.sapka.me\r

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

* Re: can't compile on MacOS
  2024-10-25 14:31 can't compile on MacOS Michal Sapka
@ 2024-11-08 11:52 ` Tomi Ollila
       [not found] ` <87h68iui5c.fsf@tethera.net>
  1 sibling, 0 replies; 10+ messages in thread
From: Tomi Ollila @ 2024-11-08 11:52 UTC (permalink / raw)
  To: Michal Sapka, notmuch

On Fri, Oct 25 2024, Michal Sapka wrote:

> Hey
>
> I'm trying to compile notmuch on MacOS Sonoma, but the make can't find talloc.h
>
> ./defs.h:26:10: fatal error: 'talloc.h' file not found
> #include <talloc.h>
>          ^~~~~~~~~~
>
> the thing is that I have in installed via brew in
>
> /opt/homebrew/Cellar/talloc/2.4.2/include
>
> the file talloc.h exist in that path.
>
> The configure script has correctly found it and stored in Makefile.conf
>
> # Flags needed to compile and link against talloc
> TALLOC_CFLAGS = -I/opt/homebrew/Cellar/talloc/2.4.2/include
> TALLOC_LDFLAGS = -L/opt/homebrew/Cellar/talloc/2.4.2/lib -ltalloc
>
> I'm not too fluent in C so it is a problem :-)

CFLAGS=-I/opt/homebrew/Cellar/talloc/2.4.2/include LDFLAGS='-L/opt/homebrew/Cellar/talloc/2.4.2/lib -ltalloc' ./configure 

may help ?

Tomi

>
> —-
> Michał 
> https://michal.sapka.me\r

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

* Re: can't compile on MacOS
       [not found]   ` <CAMP44s11Jhbc59iBqAN6sjm_cKph_BB4rHeaeEXVOXjjDvG=hA@mail.gmail.com>
@ 2024-11-08 22:42     ` Michal Sapka
  2024-11-08 23:54       ` Felipe Contreras
  0 siblings, 1 reply; 10+ messages in thread
From: Michal Sapka @ 2024-11-08 22:42 UTC (permalink / raw)
  To: notmuch

> Tomi and Felipe giving me snippets to configure & compile.


Hey

Ruby bindings is what I'm want to have, and I am not (at all) fluent in C but:

configure via

CFLAGS=-I/opt/homebrew/Cellar/talloc/2.4.2/include LDFLAGS='-L/opt/homebrew/Cellar/talloc/2.4.2/lib -ltalloc' ./config 

succeded.

Then I try 

make -C bindings/ruby CFLAGS='-g -O2 -pipe -fno-plt -fPIC
-I/opt/homebrew/Cellar/talloc/2.4.2/include' LIBPATH='-L. -L/usr/lib
-L/opt/homebrew/Cellar/talloc/2.4.2/lib'

and I get

sudo make -C bindings/ruby CFLAGS='-g -O2 -pipe -fno-plt -fPIC
-I/opt/homebrew/Cellar/talloc/2.4.2/include' LIBPATH='-L. -L/usr/lib
-L/opt/homebrew/Cellar/talloc/2.4.2/lib'
linking shared-object notmuch.bundle
Undefined symbols for architecture arm64:
  "__talloc_free", referenced from:
      _notmuch_rb_object_free in database.o
      _notmuch_rb_object_free in directory.o
      _notmuch_rb_object_free in init.o
      _notmuch_rb_object_free in message.o
      _notmuch_rb_object_free in messages.o
      _notmuch_rb_object_free in query.o
      _notmuch_rb_object_free in thread.o
      ...


—-
Michał 
https://crys.site\r

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

* Re: can't compile on MacOS
  2024-11-08 22:42     ` Michal Sapka
@ 2024-11-08 23:54       ` Felipe Contreras
  2024-11-10 21:10         ` Michal Sapka
  0 siblings, 1 reply; 10+ messages in thread
From: Felipe Contreras @ 2024-11-08 23:54 UTC (permalink / raw)
  To: Michal Sapka; +Cc: notmuch

On Fri, Nov 8, 2024 at 4:42 PM Michal Sapka <michal@sapka.me> wrote:
> > Tomi and Felipe giving me snippets to configure & compile.

> configure via
>
> CFLAGS=-I/opt/homebrew/Cellar/talloc/2.4.2/include LDFLAGS='-L/opt/homebrew/Cellar/talloc/2.4.2/lib -ltalloc' ./config
>
> succeded.
>
> Then I try
>
> make -C bindings/ruby CFLAGS='-g -O2 -pipe -fno-plt -fPIC
> -I/opt/homebrew/Cellar/talloc/2.4.2/include' LIBPATH='-L. -L/usr/lib
> -L/opt/homebrew/Cellar/talloc/2.4.2/lib'

It's either in ./configure, or directly with make, not both.

> and I get
>
> sudo make -C bindings/ruby CFLAGS='-g -O2 -pipe -fno-plt -fPIC
> -I/opt/homebrew/Cellar/talloc/2.4.2/include' LIBPATH='-L. -L/usr/lib
> -L/opt/homebrew/Cellar/talloc/2.4.2/lib'
> linking shared-object notmuch.bundle
> Undefined symbols for architecture arm64:
>   "__talloc_free", referenced from:

You can also try adding V=1 to the make command to see what it's
actually doing, but if you have libtalloc.so in
/opt/homebrew/Cellar/talloc/2.4.2/lib, the command I suggested should
work.

Can you share the Makefile that is generated in bindings/ruby/Makefile ?

-- 
Felipe Contreras\r

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

* Re: can't compile on MacOS
  2024-11-08 23:54       ` Felipe Contreras
@ 2024-11-10 21:10         ` Michal Sapka
  2024-11-11 12:43           ` Felipe Contreras
  0 siblings, 1 reply; 10+ messages in thread
From: Michal Sapka @ 2024-11-10 21:10 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: notmuch



On Sat, Nov 9, 2024, at 12:54 AM, Felipe Contreras wrote:
> On Fri, Nov 8, 2024 at 4:42 PM Michal Sapka <michal@sapka.me> wrote:
>> > Tomi and Felipe giving me snippets to configure & compile.
>
>> configure via
>>
>> CFLAGS=-I/opt/homebrew/Cellar/talloc/2.4.2/include LDFLAGS='-L/opt/homebrew/Cellar/talloc/2.4.2/lib -ltalloc' ./config
>>
>> succeded.
>>
>> Then I try
>>
>> make -C bindings/ruby CFLAGS='-g -O2 -pipe -fno-plt -fPIC
>> -I/opt/homebrew/Cellar/talloc/2.4.2/include' LIBPATH='-L. -L/usr/lib
>> -L/opt/homebrew/Cellar/talloc/2.4.2/lib'
>
> It's either in ./configure, or directly with make, not both.
>
>> and I get
>>
>> sudo make -C bindings/ruby CFLAGS='-g -O2 -pipe -fno-plt -fPIC
>> -I/opt/homebrew/Cellar/talloc/2.4.2/include' LIBPATH='-L. -L/usr/lib
>> -L/opt/homebrew/Cellar/talloc/2.4.2/lib'
>> linking shared-object notmuch.bundle
>> Undefined symbols for architecture arm64:
>>   "__talloc_free", referenced from:
>
> You can also try adding V=1 to the make command to see what it's
> actually doing, but if you have libtalloc.so in
> /opt/homebrew/Cellar/talloc/2.4.2/lib, the command I suggested should
> work.
>
> Can you share the Makefile that is generated in bindings/ruby/Makefile ?
>
> -- 
> Felipe Contreras

Hey, 

I tried to add cflags to only configure or make but still - talloc not found.

The Makefile:


SHELL = /bin/sh

# V=0 quiet, V=1 verbose.  other values don't work.
V = 0
V0 = $(V:0=)
Q1 = $(V:1=)
Q = $(Q1:0=@)
ECHO1 = $(V:1=@ :)
ECHO = $(ECHO1:0=@ echo)
NULLCMD = :

#### Start of system configuration section. ####

srcdir = .
topdir = /Users/msapka/.usr/local/rbenv/versions/3.2.2/include/ruby-3.2.0
hdrdir = $(topdir)
arch_hdrdir = /Users/msapka/.usr/local/rbenv/versions/3.2.2/include/ruby-3.2.0/arm64-darwin22
PATH_SEPARATOR = :
VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby
prefix = $(DESTDIR)/Users/msapka/.usr/local/rbenv/versions/3.2.2
rubysitearchprefix = $(rubylibprefix)/$(sitearch)
rubyarchprefix = $(rubylibprefix)/$(arch)
rubylibprefix = $(libdir)/$(RUBY_BASE_NAME)
exec_prefix = $(prefix)
vendorarchhdrdir = $(vendorhdrdir)/$(sitearch)
sitearchhdrdir = $(sitehdrdir)/$(sitearch)
rubyarchhdrdir = $(rubyhdrdir)/$(arch)
vendorhdrdir = $(rubyhdrdir)/vendor_ruby
sitehdrdir = $(rubyhdrdir)/site_ruby
rubyhdrdir = $(includedir)/$(RUBY_VERSION_NAME)
vendorarchdir = $(vendorlibdir)/$(sitearch)
vendorlibdir = $(vendordir)/$(ruby_version)
vendordir = $(rubylibprefix)/vendor_ruby
sitearchdir = $(sitelibdir)/$(sitearch)
sitelibdir = $(sitedir)/$(ruby_version)
sitedir = $(rubylibprefix)/site_ruby
rubyarchdir = $(rubylibdir)/$(arch)
rubylibdir = $(rubylibprefix)/$(ruby_version)
sitearchincludedir = $(includedir)/$(sitearch)
archincludedir = $(includedir)/$(arch)
sitearchlibdir = $(libdir)/$(sitearch)
archlibdir = $(libdir)/$(arch)
ridir = $(datarootdir)/$(RI_BASE_NAME)
mandir = $(datarootdir)/man
localedir = $(datarootdir)/locale
libdir = $(exec_prefix)/lib
psdir = $(docdir)
pdfdir = $(docdir)
dvidir = $(docdir)
htmldir = $(docdir)
infodir = $(datarootdir)/info
docdir = $(datarootdir)/doc/$(PACKAGE)
oldincludedir = $(DESTDIR)/usr/include
includedir = $(SDKROOT)$(prefix)/include
runstatedir = $(localstatedir)/run
localstatedir = $(prefix)/var
sharedstatedir = $(prefix)/com
sysconfdir = $(prefix)/etc
datadir = $(datarootdir)
datarootdir = $(prefix)/share
libexecdir = $(exec_prefix)/libexec
sbindir = $(exec_prefix)/sbin
bindir = $(exec_prefix)/bin
archdir = $(rubyarchdir)


CC_WRAPPER = 
CC = clang
CXX = clang++
LIBRUBY = $(LIBRUBY_SO)
LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static -framework CoreFoundation $(MAINLIBS)
empty =
OUTFLAG = -o $(empty)
COUTFLAG = -o $(empty)
CSRCFLAG = $(empty)

RUBY_EXTCONF_H = 
cflags   = -fdeclspec $(optflags) $(debugflags) $(warnflags)
cxxflags = 
optflags = -O3 -fno-fast-math
debugflags = -ggdb3
warnflags = -Wall -Wextra -Wextra-tokens -Wdeprecated-declarations -Wdivision-by-zero -Wdiv-by-zero -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wshorten-64-to-32 -Wwrite-strings -Wold-style-definition -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Wundef
cppflags = 
CCDLFLAGS = -fno-common
CFLAGS   = $(CCDLFLAGS) $(cflags)  -fno-common -pipe $(ARCH_FLAG)
INCFLAGS = -I. -I/Users/msapka/ghq/git.notmuchmail.org/git/notmuch/lib -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir)
DEFS     = 
CPPFLAGS =  -I/Users/msapka/.usr/local/rbenv/versions/3.2.2/include -I/opt/homebrew/opt/mysql@5.7/include -I/opt/homebrew/opt/gmp/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT $(DEFS) $(cppflags)
CXXFLAGS = $(CCDLFLAGS) -fdeclspec $(ARCH_FLAG)
ldflags  = -L. -L/Users/msapka/.usr/local/rbenv/versions/3.2.2/lib -L/opt/homebrew/opt/mysql@5.7/lib -fstack-protector-strong -L/opt/homebrew/opt/gmp/lib 
dldflags = -L/Users/msapka/.usr/local/rbenv/versions/3.2.2/lib -L/opt/homebrew/opt/mysql@5.7/lib -L/opt/homebrew/opt/gmp/lib -Wl,-multiply_defined,suppress -Wl,-undefined,dynamic_lookup $(LIBRUBYARG_SHARED)
ARCH_FLAG = 
DLDFLAGS = $(ldflags) $(dldflags) $(ARCH_FLAG)
LDSHARED = $(CC) -dynamic -bundle
LDSHAREDXX = $(CXX) -dynamic -bundle
AR = ar
EXEEXT = 

RUBY_INSTALL_NAME = $(RUBY_BASE_NAME)
RUBY_SO_NAME = ruby.3.2
RUBYW_INSTALL_NAME = 
RUBY_VERSION_NAME = $(RUBY_BASE_NAME)-$(ruby_version)
RUBYW_BASE_NAME = rubyw
RUBY_BASE_NAME = ruby

arch = arm64-darwin22
sitearch = $(arch)
ruby_version = 3.2.0
ruby = $(bindir)/$(RUBY_BASE_NAME)
RUBY = $(ruby)
BUILTRUBY = $(bindir)/$(RUBY_BASE_NAME)
ruby_headers = $(hdrdir)/ruby.h $(hdrdir)/ruby/backward.h $(hdrdir)/ruby/ruby.h $(hdrdir)/ruby/defines.h $(hdrdir)/ruby/missing.h $(hdrdir)/ruby/intern.h $(hdrdir)/ruby/st.h $(hdrdir)/ruby/subst.h $(arch_hdrdir)/ruby/config.h

RM = rm -f
RM_RF = rm -fr
RMDIRS = rmdir -p
MAKEDIRS = /opt/homebrew/bin/gmkdir -p
INSTALL = /opt/homebrew/bin/ginstall -c
INSTALL_PROG = $(INSTALL) -m 0755
INSTALL_DATA = $(INSTALL) -m 644
COPY = cp
TOUCH = exit >

#### End of system configuration section. ####

preload = 
libpath = . $(libdir)
LIBPATH =  -L. -L$(libdir)
DEFFILE = 

CLEANFILES = mkmf.log
DISTCLEANFILES = 
DISTCLEANDIRS = 

extout = 
extout_prefix = 
target_prefix = 
LOCAL_LIBS = ../../lib/libnotmuch.dylib
LIBS = $(LIBRUBYARG_SHARED)  -lpthread   -ltalloc
ORIG_SRCS = database.c directory.c filenames.c init.c message.c messages.c query.c status.c tags.c thread.c threads.c
SRCS = $(ORIG_SRCS) 
OBJS = database.o directory.o filenames.o init.o message.o messages.o query.o status.o tags.o thread.o threads.o
HDRS = $(srcdir)/defs.h
LOCAL_HDRS = 
TARGET = notmuch
TARGET_NAME = notmuch
TARGET_ENTRY = Init_$(TARGET_NAME)
DLLIB = $(TARGET).bundle
EXTSTATIC = 
STATIC_LIB = 

TIMESTAMP_DIR = .
BINDIR        = $(bindir)
RUBYCOMMONDIR = $(vendordir)$(target_prefix)
RUBYLIBDIR    = $(vendorlibdir)$(target_prefix)
RUBYARCHDIR   = $(vendorarchdir)$(target_prefix)
HDRDIR        = $(vendorhdrdir)$(target_prefix)
ARCHHDRDIR    = $(vendorarchhdrdir)$(target_prefix)
TARGET_SO_DIR =
TARGET_SO     = $(TARGET_SO_DIR)$(DLLIB)
CLEANLIBS     = $(TARGET_SO) $(TARGET_SO).dSYM
CLEANOBJS     = $(OBJS) *.bak
TARGET_SO_DIR_TIMESTAMP = $(TIMESTAMP_DIR)/.vendorarchdir.time

all:    $(DLLIB)
static: $(STATIC_LIB)
.PHONY: all install static install-so install-rb
.PHONY: clean clean-so clean-static clean-rb

clean-static::
clean-rb-default::
clean-rb::
clean-so::
clean: clean-so clean-static clean-rb-default clean-rb
		-$(Q)$(RM_RF) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES) .*.time

distclean-rb-default::
distclean-rb::
distclean-so::
distclean-static::
distclean: clean distclean-so distclean-static distclean-rb-default distclean-rb
		-$(Q)$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
		-$(Q)$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
		-$(Q)$(RMDIRS) $(DISTCLEANDIRS) 2> /dev/null || true

realclean: distclean
install: install-so install-rb

install-so: $(DLLIB) $(TARGET_SO_DIR_TIMESTAMP)
	$(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
clean-static::
	-$(Q)$(RM) $(STATIC_LIB)
install-rb: pre-install-rb do-install-rb install-rb-default
install-rb-default: pre-install-rb-default do-install-rb-default
pre-install-rb: Makefile
pre-install-rb-default: Makefile
do-install-rb:
do-install-rb-default:
pre-install-rb-default:
	@$(NULLCMD)
$(TARGET_SO_DIR_TIMESTAMP):
	$(Q) $(MAKEDIRS) $(@D) $(RUBYARCHDIR)
	$(Q) $(TOUCH) $@

site-install: site-install-so site-install-rb
site-install-so: install-so
site-install-rb: install-rb

.SUFFIXES: .c .m .cc .mm .cxx .cpp .o .S

.cc.o:
	$(ECHO) compiling $(<)
	$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<

.cc.S:
	$(ECHO) translating $(<)
	$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<

.mm.o:
	$(ECHO) compiling $(<)
	$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<

.mm.S:
	$(ECHO) translating $(<)
	$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<

.cxx.o:
	$(ECHO) compiling $(<)
	$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<

.cxx.S:
	$(ECHO) translating $(<)
	$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<

.cpp.o:
	$(ECHO) compiling $(<)
	$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<

.cpp.S:
	$(ECHO) translating $(<)
	$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<

.c.o:
	$(ECHO) compiling $(<)
	$(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<

.c.S:
	$(ECHO) translating $(<)
	$(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<

.m.o:
	$(ECHO) compiling $(<)
	$(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<

.m.S:
	$(ECHO) translating $(<)
	$(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<

$(TARGET_SO): $(OBJS) Makefile
	$(ECHO) linking shared-object $(DLLIB)
	-$(Q)$(RM) $(@)
	$(Q) $(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
	$(Q) $(POSTLINK)



$(OBJS): $(HDRS) $(ruby_headers)\r

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

* Re: can't compile on MacOS
  2024-11-10 21:10         ` Michal Sapka
@ 2024-11-11 12:43           ` Felipe Contreras
  2024-11-12 10:02             ` Michal Sapka
  0 siblings, 1 reply; 10+ messages in thread
From: Felipe Contreras @ 2024-11-11 12:43 UTC (permalink / raw)
  To: Michal Sapka; +Cc: notmuch

On Sun, Nov 10, 2024 at 3:11 PM Michal Sapka <michal@sapka.me> wrote:
>
>
>
> On Sat, Nov 9, 2024, at 12:54 AM, Felipe Contreras wrote:
> > On Fri, Nov 8, 2024 at 4:42 PM Michal Sapka <michal@sapka.me> wrote:
> >> > Tomi and Felipe giving me snippets to configure & compile.
> >
> >> configure via
> >>
> >> CFLAGS=-I/opt/homebrew/Cellar/talloc/2.4.2/include LDFLAGS='-L/opt/homebrew/Cellar/talloc/2.4.2/lib -ltalloc' ./config
> >>
> >> succeded.
> >>
> >> Then I try
> >>
> >> make -C bindings/ruby CFLAGS='-g -O2 -pipe -fno-plt -fPIC
> >> -I/opt/homebrew/Cellar/talloc/2.4.2/include' LIBPATH='-L. -L/usr/lib
> >> -L/opt/homebrew/Cellar/talloc/2.4.2/lib'
> >
> > It's either in ./configure, or directly with make, not both.
> >
> >> and I get
> >>
> >> sudo make -C bindings/ruby CFLAGS='-g -O2 -pipe -fno-plt -fPIC
> >> -I/opt/homebrew/Cellar/talloc/2.4.2/include' LIBPATH='-L. -L/usr/lib
> >> -L/opt/homebrew/Cellar/talloc/2.4.2/lib'
> >> linking shared-object notmuch.bundle
> >> Undefined symbols for architecture arm64:
> >>   "__talloc_free", referenced from:
> >
> > You can also try adding V=1 to the make command to see what it's
> > actually doing, but if you have libtalloc.so in
> > /opt/homebrew/Cellar/talloc/2.4.2/lib, the command I suggested should
> > work.
> >
> > Can you share the Makefile that is generated in bindings/ruby/Makefile ?
> >
> > --
> > Felipe Contreras
>
> Hey,
>
> I tried to add cflags to only configure or make but still - talloc not found.

It's not just CFLAGS, you need to set LIBPATH too. According to the
Makefile that should work. Did you try adding V=1 too? What's the
final link command?

make -C bindings/ruby V=1 CFLAGS='-g -O2 -pipe -fno-plt -fPIC
-I/opt/homebrew/Cellar/talloc/2.4.2/include' LIBPATH='-L. -L/usr/lib
-L/opt/homebrew/Cellar/talloc/2.4.2/lib'

-- 
Felipe Contreras\r

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

* Re: can't compile on MacOS
  2024-11-11 12:43           ` Felipe Contreras
@ 2024-11-12 10:02             ` Michal Sapka
  2024-11-12 20:21               ` David Bremner
  2024-11-13 14:19               ` Felipe Contreras
  0 siblings, 2 replies; 10+ messages in thread
From: Michal Sapka @ 2024-11-12 10:02 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: notmuch



On Mon, Nov 11, 2024, at 1:43 PM, Felipe Contreras wrote:
> It's not just CFLAGS, you need to set LIBPATH too. According to the
> Makefile that should work. Did you try adding V=1 too? What's the
> final link command?
>
> make -C bindings/ruby V=1 CFLAGS='-g -O2 -pipe -fno-plt -fPIC
> -I/opt/homebrew/Cellar/talloc/2.4.2/include' LIBPATH='-L. -L/usr/lib
> -L/opt/homebrew/Cellar/talloc/2.4.2/lib'
>
> -- 
> Felipe Contreras

I cleaned the entire local repo dir

./configure:

Welcome to Notmuch, a system for indexing, searching and tagging your email.

We hope that the process of building and installing notmuch is quick
and smooth so that you can soon be reading and processing your email
more efficiently than ever.

If anything goes wrong in the configure process, you can override any
decisions it makes by manually editing the Makefile.config file that
it creates. Also please do as much as you can to figure out what could
be different on your machine compared to those of the notmuch
developers. Then, please email those details to the Notmuch list
(notmuch@notmuchmail.org) so that we can hopefully make future
versions of notmuch easier for you to use.

We'll now investigate your system to verify that all required
dependencies are available:

Sanity checking C compilation environment... OK.
Sanity checking C++ compilation environment... OK.
C compiler supports address sanitizer... Yes.
C compiler supports thread sanitizer... minimal(22043,0x2057f8f40) malloc: nano zone abandoned due to inability to reserve vm space.
Yes.
Reading libnotmuch version from source... OK.
Checking for Xapian development files (>= 1.4.0)... Yes (1.4.26).
Checking for GMime development files (>= 3.0.3)... Yes.
Checking for GMime session key extraction support... OK.
Checking for GMime X.509 certificate validity... Yes.
Checking whether GMime emits email addresses with angle brackets... No.
Checking signature verification when decrypting using session keys... Yes.
Checking for Glib development files (>= 2.22)... Yes.
Checking for zlib (>= 1.2.5.2)... Yes.
Checking for talloc development files... Yes.
Checking for bash... Yes (/bin/bash).
Checking for perl... Yes (/usr/bin/perl).
Checking for python... Yes (python3).
Checking for python3 (>= 3.5)...Yes.
Checking for python3 version ...(3.13)
Checking for python 3.13 development files...Yes.
Checking for python3 cffi and setuptools... Yes.
Checking for python3 pytest (>= 3.0)... No (will not test CFFI-based python bindings).
Checking for valgrind development files... No (but that's fine).
Checking for bash-completion (>= 1.90)... No (will not install bash completion).
Checking for sfsexp... No (will not enable s-expression queries).
Checking if emacs (>= 25) is available... Yes.
Checking if doxygen is available... No (so will not install api docs)
Checking for ruby development files... Yes.
Checking if sphinx is available and supports nroff output... No (so will not install man pages).
Checking if makeinfo is available... Yes.
Checking if install-info is available... Yes.
Checking if desktop-file-install is available... No (so will not install .desktop file).
Checking for cppcheck... No.
Checking which platform we are on... Mac OS X.
Checking for canonicalize_file_name... No (will use our own instead).
Checking for getline... Yes.
Checking for strcasestr... Yes.
Checking for strsep... Yes.
Checking for timegm... Yes.
Checking for 64 bit time_t... Yes.
Checking for dirent.d_type... Yes.
Checking for standard version of getpwuid_r... Yes.
Checking for standard version of asctime_r... Yes.
Checking for rpath support... No (nothing to worry about).
Checking for -Wl,--as-needed... No (nothing to worry about).
Checking for -Wl,--no-undefined... No (nothing to worry about).
Checking for available C++ compiler warning flags... 
	-Wall -Wextra -Wwrite-strings
Checking for available C compiler warning flags... 
	-Wall -Wextra -Wwrite-strings -Wmissing-declarations

All required packages were found. You may now run the following
commands to compile and install notmuch:

	make

--------------

sudo make -C bindings/ruby V=1 CFLAGS='-g -O2 -pipe -fno-plt -fPIC -I/opt/homebrew/Cellar/talloc/2.4.2/include' LIBPATH='-L. -L/usr/lib -L/opt/homebrew/Cellar/talloc/2.4.2/lib':

make: Nothing to be done for `all'.

------------
but the above without specyfing the -C bindings/ruby finished 

(...)

Loading /Users/msapka/ghq/git.notmuchmail.org/git/notmuch/emacs/notmuch-tag.el (source)...
emacs --quick -batch -L emacs -l rstdoc -f rstdoc-batch-extract emacs/coolj.el emacs/coolj.rsti
Loading /Users/msapka/ghq/git.notmuchmail.org/git/notmuch/emacs/coolj.el (source)...
emacs --quick -batch -L emacs -l rstdoc -f rstdoc-batch-extract emacs/notmuch-print.el emacs/notmuch-print.rsti
Loading /Users/msapka/ghq/git.notmuchmail.org/git/notmuch/emacs/notmuch-print.el (source)...
emacs --quick -batch -L emacs -l rstdoc -f rstdoc-batch-extract emacs/notmuch-version.el emacs/notmuch-version.rsti
Loading /Users/msapka/ghq/git.notmuchmail.org/git/notmuch/emacs/notmuch-version.el (source)...
emacs --quick -batch -L emacs -l rstdoc -f rstdoc-batch-extract emacs/notmuch-jump.el emacs/notmuch-jump.rsti
Loading /Users/msapka/ghq/git.notmuchmail.org/git/notmuch/emacs/notmuch-jump.el (source)...
emacs --quick -batch -L emacs -l rstdoc -f rstdoc-batch-extract emacs/notmuch-company.el emacs/notmuch-company.rsti
Loading /Users/msapka/ghq/git.notmuchmail.org/git/notmuch/emacs/notmuch-company.el (source)...
emacs --quick -batch -L emacs -l rstdoc -f rstdoc-batch-extract emacs/notmuch-draft.el emacs/notmuch-draft.rsti
Loading /Users/msapka/ghq/git.notmuchmail.org/git/notmuch/emacs/notmuch-draft.el (source)...
Missing sphinx or makeinfo, not building info pages

Compilation of notmuch is now complete. You can install notmuch with:

	make install


---------

then I can install

sudo make install
Missing sphinx or makeinfo, not building info pages
No sphinx, will not install man pages.
Missing prerequisites, not installing info pages
mkdir -p "/usr/local/lib/"
install -m0644 "lib/libnotmuch.5.6.0.dylib" "/usr/local/lib/"
ln -sf libnotmuch.5.6.0.dylib "/usr/local/lib/libnotmuch.5.dylib"
ln -sf libnotmuch.5.6.0.dylib "/usr/local/lib/libnotmuch.dylib"
mkdir -p "/usr/local/include"
install -m0644 "./lib/notmuch.h" "/usr/local/include/"
install-completion
mkdir -p "/usr/local/share/zsh/site-functions"
install -m0644 ./completion/zsh/_notmuch ./completion/zsh/_email-notmuch "/usr/local/share/zsh/site-functions"
mkdir -p "/usr/local/share/emacs/site-lisp"
install -m0644 emacs/notmuch-lib.el emacs/notmuch-compat.el emacs/notmuch-parser.el emacs/notmuch.el emacs/notmuch-query.el emacs/notmuch-show.el emacs/notmuch-tree.el emacs/notmuch-wash.el emacs/notmuch-hello.el emacs/notmuch-mua.el emacs/notmuch-address.el emacs/notmuch-maildir-fcc.el emacs/notmuch-message.el emacs/notmuch-crypto.el emacs/notmuch-tag.el emacs/coolj.el emacs/notmuch-print.el emacs/notmuch-version.el emacs/notmuch-jump.el emacs/notmuch-company.el emacs/notmuch-draft.el "/usr/local/share/emacs/site-lisp"
install -m0644 emacs/notmuch-lib.elc emacs/notmuch-compat.elc emacs/notmuch-parser.elc emacs/notmuch.elc emacs/notmuch-query.elc emacs/notmuch-show.elc emacs/notmuch-tree.elc emacs/notmuch-wash.elc emacs/notmuch-hello.elc emacs/notmuch-mua.elc emacs/notmuch-address.elc emacs/notmuch-maildir-fcc.elc emacs/notmuch-message.elc emacs/notmuch-crypto.elc emacs/notmuch-tag.elc emacs/coolj.elc emacs/notmuch-print.elc emacs/notmuch-version.elc emacs/notmuch-jump.elc emacs/notmuch-company.elc emacs/notmuch-draft.elc "/usr/local/share/emacs/site-lisp"
mkdir -p "/usr/local/share/emacs/site-lisp"
install -m0644 ./emacs/notmuch-logo.svg "/usr/local/share/emacs/site-lisp"
mkdir -p "/usr/local/bin/"
sed "1s|^#!.*|#! /bin/bash|" < emacs/notmuch-emacs-mua > /usr/local/bin/notmuch-emacs-mua
chmod 755 /usr/local/bin/notmuch-emacs-mua
mkdir -p "/usr/local/bin/"
install notmuch-shared "/usr/local/bin/notmuch"

Notmuch is now installed to /usr/local

New users should simply run "notmuch" to be guided
through the process of configuring notmuch and creating
a database of existing email messages. The "notmuch"
command will also offer some sample search commands.

Beyond the command-line interface, notmuch also offers
a full-featured interface for reading and writing mail
within emacs. To use this, each user should add the
following line to the ~/.emacs file:

	(require 'notmuch)

And then run emacs as "emacs -f notmuch" or invoke
the command "M-x notmuch" from within emacs.

--------

I can now use 'notmuch' from IRB, so everything is woring!

--------

guess the problem was that I didn't notice that "make clean" left some files cached:

_check_email.dSYM/ 
_check_session_keys.dSYM/    
_check_x509_validity.dSYM/    
_libversion.dSYM/   
_verify_sig_with_session_key.dSYM/    
minimal.dSYM/  

--------

Thanks You!
Michal

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

* Re: can't compile on MacOS
  2024-11-12 10:02             ` Michal Sapka
@ 2024-11-12 20:21               ` David Bremner
  2024-11-13 14:23                 ` Felipe Contreras
  2024-11-13 14:19               ` Felipe Contreras
  1 sibling, 1 reply; 10+ messages in thread
From: David Bremner @ 2024-11-12 20:21 UTC (permalink / raw)
  To: Michal Sapka, Felipe Contreras; +Cc: notmuch

"Michal Sapka" <michal@sapka.me> writes:
>
> guess the problem was that I didn't notice that "make clean" left some files cached:
>
> _check_email.dSYM/ 
> _check_session_keys.dSYM/    
> _check_x509_validity.dSYM/    
> _libversion.dSYM/   
> _verify_sig_with_session_key.dSYM/    
> minimal.dSYM/  

Anyone what is making those .dSYM files? My guess is that they are macOS
specific byproducts of running configure, as those names look like
binaries build by the configure script.

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

* Re: can't compile on MacOS
  2024-11-12 10:02             ` Michal Sapka
  2024-11-12 20:21               ` David Bremner
@ 2024-11-13 14:19               ` Felipe Contreras
  1 sibling, 0 replies; 10+ messages in thread
From: Felipe Contreras @ 2024-11-13 14:19 UTC (permalink / raw)
  To: Michal Sapka; +Cc: notmuch

[-- Attachment #1: Type: text/plain, Size: 1596 bytes --]

On Tue, Nov 12, 2024 at 4:03 AM Michal Sapka <michal@sapka.me> wrote:
> On Mon, Nov 11, 2024, at 1:43 PM, Felipe Contreras wrote:
> > It's not just CFLAGS, you need to set LIBPATH too. According to the
> > Makefile that should work. Did you try adding V=1 too? What's the
> > final link command?
> >
> > make -C bindings/ruby V=1 CFLAGS='-g -O2 -pipe -fno-plt -fPIC
> > -I/opt/homebrew/Cellar/talloc/2.4.2/include' LIBPATH='-L. -L/usr/lib
> > -L/opt/homebrew/Cellar/talloc/2.4.2/lib'
>
> I cleaned the entire local repo dir

All right, but just to check:

> All required packages were found. You may now run the following
> commands to compile and install notmuch:
>
>         make
>
> --------------

Instead of this, try running `make V=1`, that should output all the
details so we can see how the Ruby bindings were actually compiled.

From what I can tell the build should not have worked unless the
location is added to the global variables CPATH and LIBRARY_PATH.

I see some people recommending:

    export CPATH=$(brew --prefix)/include LIBRARY_PATH=$(brew --prefix)/lib

Maybe you have something like that in your environment.

I also in your commands some mixtures of `make` and `sudo make`. The
only time you need sudo is on `make install`.

Anyway, I tried to install talloc on a non-standard location on my
Linux machine, and the build fails, so this can be improved. Attached
is a test patch, if you want to give it a try.

I'll clean up the ruby build stuff and send a proposed patch series later on.

Cheers.

-- 
Felipe Contreras

[-- Attachment #2: ruby-build.patch --]
[-- Type: text/x-patch, Size: 972 bytes --]

diff --git a/bindings/Makefile.local b/bindings/Makefile.local
index 9875123a..ef422da7 100644
--- a/bindings/Makefile.local
+++ b/bindings/Makefile.local
@@ -8,7 +8,8 @@ ruby-bindings: $(dir)/ruby.stamp
 $(dir)/ruby.stamp: lib/$(LINKER_NAME)
 ifeq ($(HAVE_RUBY_DEV),1)
 	cd $(dir)/ruby && \
-		EXTRA_LDFLAGS="$(NO_UNDEFINED_LDFLAGS)" \
+		EXTRA_LDFLAGS="$(TALLOC_LDFLAGS) $(NO_UNDEFINED_LDFLAGS)" \
+		EXTRA_INCFLAGS="$(TALLOC_CFLAGS)" \
 		LIBNOTMUCH="../../lib/$(LINKER_NAME)" \
 		NOTMUCH_SRCDIR='$(NOTMUCH_SRCDIR)' \
 		$(RUBY) extconf.rb --vendor
diff --git a/bindings/ruby/extconf.rb b/bindings/ruby/extconf.rb
index d914537c..ba825e8a 100644
--- a/bindings/ruby/extconf.rb
+++ b/bindings/ruby/extconf.rb
@@ -8,7 +8,7 @@ require 'mkmf'
 dir = File.join(ENV['NOTMUCH_SRCDIR'], 'lib')
 
 # includes
-$INCFLAGS = "-I#{dir} #{$INCFLAGS}"
+$INCFLAGS = "-I#{dir} #{ENV['EXTRA_INCFLAGS']} #{$INCFLAGS}"
 
 if ENV['EXTRA_LDFLAGS']
   $LDFLAGS += " " + ENV['EXTRA_LDFLAGS']

[-- Attachment #3: Type: text/plain, Size: 0 bytes --]



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

* Re: can't compile on MacOS
  2024-11-12 20:21               ` David Bremner
@ 2024-11-13 14:23                 ` Felipe Contreras
  0 siblings, 0 replies; 10+ messages in thread
From: Felipe Contreras @ 2024-11-13 14:23 UTC (permalink / raw)
  To: David Bremner; +Cc: Michal Sapka, notmuch

On Tue, Nov 12, 2024 at 2:21 PM David Bremner <david@tethera.net> wrote:
>
> "Michal Sapka" <michal@sapka.me> writes:
> >
> > guess the problem was that I didn't notice that "make clean" left some files cached:
> >
> > _check_email.dSYM/
> > _check_session_keys.dSYM/
> > _check_x509_validity.dSYM/
> > _libversion.dSYM/
> > _verify_sig_with_session_key.dSYM/
> > minimal.dSYM/
>
> Anyone what is making those .dSYM files? My guess is that they are macOS
> specific byproducts of running configure, as those names look like
> binaries build by the configure script.

A quick search suggests these are generated by `gcc -g` on macOS's Xcode.

-- 
Felipe Contreras\r

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

end of thread, other threads:[~2024-11-13 14:34 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-25 14:31 can't compile on MacOS Michal Sapka
2024-11-08 11:52 ` Tomi Ollila
     [not found] ` <87h68iui5c.fsf@tethera.net>
     [not found]   ` <CAMP44s11Jhbc59iBqAN6sjm_cKph_BB4rHeaeEXVOXjjDvG=hA@mail.gmail.com>
2024-11-08 22:42     ` Michal Sapka
2024-11-08 23:54       ` Felipe Contreras
2024-11-10 21:10         ` Michal Sapka
2024-11-11 12:43           ` Felipe Contreras
2024-11-12 10:02             ` Michal Sapka
2024-11-12 20:21               ` David Bremner
2024-11-13 14:23                 ` Felipe Contreras
2024-11-13 14:19               ` Felipe Contreras

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