On 8 Nov 2018, at 4:20, Robert Chalmers wrote:

It’s almost through the build but failing on this.

Undefined symbols for architecture x86_64:
  "_db_create", referenced from:
      import-atom in libpostfix-util.dylib
  "_db_env_create", referenced from:
      import-atom in libpostfix-util.dylib
  "_db_version", referenced from:
      import-atom in libpostfix-util.dylib
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [master] Error 1
make: *** [update] Error 1
make: *** [update] Error 2

Those symbols are from Berkeley DB. This implies that somewhere you have included headers for BDB but can't find the BDB libraries at link time.

My Make script is this:

make -f Makefile.init dynamicmaps=yes CCARGS='-DHAS_MYSQL -I/usr/local/include/mysql -DUSE_TLS -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/opt/local/include/sasl -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sasl -DDEF_SERVER_SASL_TYPE=\"dovecot\" -DHAS_PCRE -I/opt/local/include

Hmmm.... Looks like you are building against both stuff installed under /usr/local (used by Homebrew and many OSS projects by default) and under /opt/local (typically MacPorts) and if you have a version of BDB installed in either tree, Postfix may find its headers and so expect to be able to find implementations of its symbols at link time.

Complicating matters, in any event the configure stage will find /usr/include/db.h, the header for the original simpler Berkeley DB implementation built into macOS.

-DEF_COMMAND_DIR=\"/usr/local/sbin\" -DEF_CONGIG_DIR=\"/usr/local/etc/postfix\" -DEF_DAEMON_DIR=\"/usr/local/libexec/postfix\" -DEF_DATA_DIR=\"/var/lib/postfix\" -DEF_MAILQ_PATH=\"/usr/local/bin/mailq\" -DEF_HTML_DIR=\"/usr/share/doc/postfix/html\" -DEF_MANPAGE_DIR=\"/usr/local/man\" -DEF_NEWALIAS_PATH=\"/usr/local/bin/newaliases\" -DEF_QUEUE_DIR=\"/private/var/spool/postfix\" -DEF_README_DIR=\"/usr/share/doc/postfix\" -DEF_SENDMAIL_PATH=\"/usr/local/sbin/sendmail\"' 'AUXLIBS=-L/usr/lib -lsasl2 -L/usr/local/opt/openssl/lib -lssl -lcrypto -L/usr/local/lib' 'AUXLIBS_IUUC=-L/usr/local/Cellar/icu4c/62.1/lib -licuuc'

So that's Homebrew...

'AUXLIBS_MYSQL=-L/usr/local/lib -lmysqlclient -lz -lm' 'AUXLIBS_PCRE=-L/usr/local/lib -lpcre’

Unless you've done an unusual installation of BDB, nothing here will find a BDB implementation. You would need a '-L' option pointing to the installation directory and '-ldb' telling the linker to load the db library.

Also note: You MAY have libraries in that jumble linked against one or more existing BDB installations and that becomes a mess pretty fast.

any ideas where to turn?

Find where you've got a Berkeley DB implementation installed and see the Postfix DB_README for details. Alternatively, you could just use the MacPorts port of Postfix and have it handle all the details for you, rather than grabbing random components from the base, Homebrew, manual installations, and MacPorts. Build consistency across Postfix and its dependencies is critical and using MacPorts would assure that for you.

Reply via email to