Freebsd 10 to 11 sendmail compile issues..

Ian Lepore ian at freebsd.org
Sat Oct 21 23:40:28 UTC 2017


On Sat, 2017-10-21 at 19:22 -0400, Howard Leadmon wrote:
>   Hopefully someone can help or give me a pointer to a solution to this 
> one.   Running FreeBSD 10.3 and figured I would do a source build and 
> jump to FreeBSD 11.1.  For the most part this seemed to be going well, 
> but when it goes to compile sendmail, it spits out the following error:
> 
> bmake[4]: "/usr/src/share/mk/src.libnames.mk" line 391: 
> /usr/src/libexec/mail.local: These libraries should be LIBADD+=foo 
> rather than DPADD/LDADD+=-lfoo:  ssl crypto
> 
> 
> I have the following flags in /etc/make.conf:
> 
> SENDMAIL_CFLAGS= -I/usr/local/include -DSASL=2 -DDNSMAP -DSTARTTLS
> SENDMAIL_LDFLAGS= -L/usr/local/lib
> SENDMAIL_LDADD= -lsasl2 -lssl -lcrypto
> 
> 
>   So I trhought OK, simple enough looking at the error and changed this 
> over to the following:
> 
> SENDMAIL_CFLAGS= -I/usr/local/include -DSASL=2 -DDNSMAP -DSTARTTLS
> SENDMAIL_LDFLAGS= -L/usr/local/lib
> SENDMAIL_LIBADD+= sasl2 ssl crypto
> 
>   After that the error received was that I didn't has sasl2:
> 
> --- ELF/Arch/AMDGPU.o ---
> c++   -O2 -pipe -march=nocona -I/usr/src/contrib/llvm/tools/lld/ELF 
> -I/usr/src/contrib/llvm/tools/lld/include 
> -I/usr/obj/usr/src/usr.bin/clang/lld 
> -I/usr/obj/usr/src/lib/clang/libllvm -I/usr/src/lib/clang/include 
> -I/usr/src/contrib/llvm/include -DLLVM_BUILD_GLOBAL_ISEL 
> -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DNDEBUG 
> -DLLVM_DEFAULT_TARGET_TRIPLE=\"x86_64-unknown-freebsd11.1\" 
> -DLLVM_HOST_TRIPLE=\"x86_64-unknown-freebsd11.1\" -DDEFAULT_SYSROOT=\"\" 
> -ffunction-sections -fdata-sections -g -MD -MF.depend.ELF_Arch_AMDGPU.o 
> -MTELF/Arch/AMDGPU.o -fstack-protector-strong -Wno-empty-body 
> -Wno-string-plus-int -Wno-unused-const-variable 
> -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality 
> -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef 
> -Wno-address-of-packed-member -Wno-switch -Wno-switch-enum 
> -Wno-knr-promoted-parameter -Wno-parentheses -Qunused-arguments 
> -std=c++11 -fno-exceptions -fno-rtti -stdlib=libc++ 
> -Wno-c++11-extensions  -c 
> /usr/src/contrib/llvm/tools/lld/ELF/Arch/AMDGPU.cpp -o ELF/Arch/AMDGPU.o
> --- all_subdir_usr.sbin ---
> deliver.o: In function `endmailer':
> /usr/src/contrib/sendmail/src/deliver.c:3874: undefined reference to 
> `sasl_dispose'
> deliver.o: In function `deliver':
> /usr/src/contrib/sendmail/src/deliver.c:3137: undefined reference to 
> `sasl_getprop'
> main.o: In function `main':
> /usr/src/contrib/sendmail/src/main.c:2303: undefined reference to 
> `sasl_server_init'
> /usr/src/contrib/sendmail/src/main.c:2305: undefined reference to 
> `sasl_errstring'
> sasl.o: In function `sm_sasl_init':
> /usr/src/contrib/sendmail/src/sasl.c:146: undefined reference to 
> `sasl_set_alloc'
> sfsasl.o: In function `sasl_read':
> /usr/src/contrib/sendmail/src/sfsasl.c:224: undefined reference to 
> `sasl_decode'
> sfsasl.o: In function `sasl_write':
> /usr/src/contrib/sendmail/src/sfsasl.c:311: undefined reference to 
> `sasl_getprop'
> /usr/src/contrib/sendmail/src/sfsasl.c:316: undefined reference to 
> `sasl_encode'
> srvrsmtp.o: In function `smtp':
> /usr/src/contrib/sendmail/src/srvrsmtp.c:951: undefined reference to 
> `sasl_server_new'
> /usr/src/contrib/sendmail/src/srvrsmtp.c:1004: undefined reference to 
> `sasl_setprop'
> /usr/src/contrib/sendmail/src/srvrsmtp.c:1018: undefined reference to 
> `sasl_setprop'
> /usr/src/contrib/sendmail/src/srvrsmtp.c:1069: undefined reference to 
> `sasl_setprop'
> /usr/src/contrib/sendmail/src/srvrsmtp.c:1081: undefined reference to 
> `sasl_setprop'
> /usr/src/contrib/sendmail/src/srvrsmtp.c:1083: undefined reference to 
> `sasl_setprop'
> srvrsmtp.o:/usr/src/contrib/sendmail/src/srvrsmtp.c:2254: more undefined 
> references to `sasl_setprop' follow
> 
> 
> 
>   So apparently that change seems to be including ssl and crypto but not 
> sasl2 for some reason.    I have googled looking for examples of how to 
> correct it, but everything I find shows the original way I had it to 
> start with, and clearly that is no longer working.  Any ideas on how I 
> need to define this would be most appreciated..
> 
> ---
> Howard Leadmon
> PBW Communications, LLC
> http://www.pbwcomm.com
> 

>From looking at the sendmail makefile, it looks like the ssl and crypto
libraries are now added automatically unless you use the
WITHOUT_OPENSSL build option, it contains this:

    .if ${MK_OPENSSL} != "no"
    # STARTTLS support
    CFLAGS+=    	    -DSTARTTLS -D_FFR_TLS_1
    LIBADD+=    	    ssl crypto
    .endif

I think that means you can now reduce the settings in your make.conf to

    SENDMAIL_CFLAGS= -I/usr/local/include -DSASL=2 -DDNSMAP
    SENDMAIL_LDFLAGS= -L/usr/local/lib
    SENDMAIL_LDADD= -lsasl2

and I think you won't get the LIBADD warning for -lsasl2 because it's
not a standard base library (but I'm not sure of that).

-- Ian


More information about the freebsd-stable mailing list