I made some more headway.
AFAICT, lib-var-expand-crypt is missing dependencies from Makefile.am, which
should have been declared via LIBADD.
The following allows the build to progress *much* further; way past the link
issues with lib-var-expand-crypt:
$ cd src
$ git diff lib-var-expand-crypt/Makefile.am
diff --git a/src/lib-var-expand-crypt/Makefile.am
b/src/lib-var-expand-crypt/Makefile.am
index 8f829bcc02..ff5b83f22c 100644
--- a/src/lib-var-expand-crypt/Makefile.am
+++ b/src/lib-var-expand-crypt/Makefile.am
@@ -9,6 +9,8 @@ AM_CPPFLAGS = \
var_expand_crypt_la_SOURCES = \
var-expand-crypt.c
+# rmfuhrer 07/14/2025: Trying to satisfy link-time references to
binary_to_hex_append and friends...
+var_expand_crypt_la_LIBADD = ../lib/liblib.la ../lib-dcrypt/libdcrypt.la
../lib-var-expand/libvar_expand.la ../lib-json/libjson.la
var_expand_crypt_la_LDFLAGS = $(MODULE_LIBS) -avoid-version -module
pkginc_libdir=$(pkgincludedir)
$
Should I file a bug or pull request?
I'm somewhat confused as to how 2.4.0 built for anyone (on any platform)
without it...
It's now dying while trying to compile ldap-utils.c with an undefined symbol:
$ cd src
$ PATH="/opt/homebrew/opt/bison/bin:$PATH" make
...
ldap-utils.c:77:27: error: use of undeclared identifier 'LDAP_OPT_X_TLS_ECNAME'
77 | if (ldap_set_opt_str(ld, LDAP_OPT_X_TLS_ECNAME,
| ^
3 warnings and 1 error generated.
make[3]: *** [ldap-utils.lo] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
$
The ldap.h that gets pulled in is from the MacOS SDK
There are lots of deprecation warnings from the compiler about LDAP-related
stuff defined in the SDK like this:
ldap-utils.c:14:8: warning: 'ldap_set_option' is deprecated: first deprecated
in macOS 10.11 - use OpenDirectory Framework [-Wdeprecated-declarations]
14 | ret = ldap_set_option(ld, opt, value);
| ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ldap.h:984:1:
note: 'ldap_set_option' has been explicitly marked deprecated here
That said, sure enough, the SDK's ldap.h doesn't define LDAP_OPT_X_TLS_ECNAME,
on which ldap-utils.c depends.
The SDK ldap.h defines LDAP_API_VERSION as 3001, but the SDK's ldap_features.h
defines LDAP_VENDOR_VERSION as 2.4.28 (aka "20428").
More oddly, I have OpenLDAP v2.6.9 installed via Homebrew, in
/opt/homebrew/opt/openldap (where the compiler isn't looking), and yet it also
defines LDAP_API_VERSION to be 3001. OTOH, its LDAP_VENDOR_VERSION is 2.6.9
(aka "20609"), and it actually does define LDAP_OPT_X_TLS_ECNAME.
Why didn't configure "realize" that the SDK version of OpenLDAP was too old? I
guess configure has an insufficient test for the OpenLDAP version required?
Should I file a bug against dovecot (on GitHub) for this?
_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]