Samba v4.3.8 Build Error Related to com_err.h

David Hauck davidh at netacquire.com
Tue Sep 27 18:37:52 UTC 2016


Hi,

I'm seeing the following build error during my cross-build of Samba v4.3.8. These builds have previously been working fine for me. However, I've recently updated several (seemingly) independent packages (including Python, from v2.7.3 to v2.7.11) and I'm wondering whether this has had some effect. 

Here's the build error with some verbose output:

	./buildtools/bin/waf -j 1 -v build
Waf: Entering directory `/home/dhauck/production/factory/build_i686-netacquire-linux-gnu/samba-4.3.8/samba-4.3.8/bin'
	Selected embedded Heimdal build
[ 771/4150] Compiling lib/addns/dnsrecord.c
09:26:23 runner i686-netacquire-linux-gnu-gcc -Os -g -march=i686 -mtune=generic -pipe -fPIC -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DCTDB_HELPER_BINDIR="/usr/bin" -DLOGDIR="/var/log" -DSOCKPATH="/var/run/ctdb/ctdbd.socket" -DCTDB_ETCDIR="/etc/ctdb" -DCTDB_VARDIR="/var/lib/ctdb" -DCTDB_RUNDIR="/var/run/ctdb" -fstack-protector -DSTATIC_addns_MODULES=NULL -DSTATIC_addns_MODULES_PROTO=extern void __addns_dummy_module_proto(void) -MD -Idefault/lib/addns -I../lib/addns -Idefault/include/public -I../include/public -Idefault/source4 -I../source4 -Idefault/lib -I../lib -Idefault/source4/lib -I../source4/lib -Idefault/source4/include -I../source4/include -Idefault/include -I../include -Idefault/lib/replace -I../lib/replace -Idefault/ctdb/include -I../ctdb/include -Idefault -I.. -Idefault/source4/heimdal/lib/krb5 -I../source4/heimdal/lib/krb5 -Idefault/source4/heimdal/lib/asn1 -I../source4/heimdal/lib/asn1 -Idefault/source4/heimdal/include -I../source4/heimdal/include -Idefault/source4/heimdal_build -I../source4/heimdal_build -Idefault/source4/heimdal/lib/gssapi -I../source4/heimdal/lib/gssapi -Idefault/lib/util/charset -I../lib/util/charset -Idefault/source4/heimdal/lib/roken -I../source4/heimdal/lib/roken -Idefault/source4/heimdal/lib/wind -I../source4/heimdal/lib/wind -Idefault/source4/heimdal/lib/hcrypto/libtommath -I../source4/heimdal/lib/hcrypto/libtommath -Idefault/source4/heimdal/lib/gssapi/gssapi -I../source4/heimdal/lib/gssapi/gssapi -Idefault/source4/heimdal/lib/gssapi/spnego -I../source4/heimdal/lib/gssapi/spnego -Idefault/source4/heimdal/lib/gssapi/krb5 -I../source4/heimdal/lib/gssapi/krb5 -Idefault/source4/heimdal/lib/gssapi/mech -I../source4/heimdal/lib/gssapi/mech -Idefault/libcli/util -I../libcli/util -Idefault/source4/heimdal/base -I../source4/heimdal/base -Idefault/source4/heimdal/lib/hx509 -I../source4/heimdal/lib/hx509 -Idefault/lib/talloc -I../lib/talloc -Idefault/source4/heimdal/lib/hcrypto -I../source4/heimdal/lib/hcrypto -Idefault/source4/heimdal/lib -I../source4/heimdal/lib -Idefault/lib/tevent -I../lib/tevent -Idefault/librpc -I../librpc -Idefault/lib/crypto -I../lib/crypto -Idefault/dynconfig -I../dynconfig -I/home/dhauck/production/factory/build_i686-netacquire-linux-gnu/rfs/usr/include -D_SAMBA_BUILD_=4 -DHAVE_CONFIG_H=1 -D_GNU_SOURCE=1 -D_XOPEN_SOURCE_EXTENDED=1 ../lib/addns/dnsrecord.c -c -o default/lib/addns/dnsrecord_1.o
In file included from ../lib/replace/system/kerberos.h:37:0,
                 from ../lib/addns/dns.h:30,
                 from ../lib/addns/dnsrecord.c:24:
/home/dhauck/production/factory/build_i686-netacquire-linux-gnu/rfs/usr/include/com_err.h:41:29: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'com_err'
 extern void KRB5_CALLCONV_C com_err
                             ^
Waf: Leaving directory `/home/dhauck/production/factory/build_i686-netacquire-linux-gnu/samba-4.3.8/samba-4.3.8/bin'
Build failed:  -> task failed (err #1): 
	{task: cc dnsrecord.c -> dnsrecord_1.o}

And here's the waf-generated .d file listing the dependencies:

default/lib/addns/dnsrecord_1.o: ../lib/addns/dnsrecord.c \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/stdc-predef.h \
 ../lib/addns/dns.h ../lib/addns/../replace/replace.h \
 default/include/config.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/stdio.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/features.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/sys/cdefs.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/wordsize.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/gnu/stubs.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/gnu/stubs-32.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/lib/gcc/i686-netacquire-linux-gnu/4.9.3/include/stddef.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/types.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/typesizes.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/libio.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/_G_config.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/wchar.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/lib/gcc/i686-netacquire-linux-gnu/4.9.3/include/stdarg.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/stdio_lim.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/sys_errlist.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/stdlib.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/waitflags.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/waitstatus.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/endian.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/endian.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/byteswap.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/byteswap-16.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/xlocale.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/sys/types.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/time.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/sys/select.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/select.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/sigset.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/time.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/sys/sysmacros.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/pthreadtypes.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/alloca.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/stdlib-float.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/errno.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/errno.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/linux/errno.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm/errno.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm-generic/errno.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm-generic/errno-base.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/inttypes.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/lib/gcc/i686-netacquire-linux-gnu/4.9.3/include/stdint.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/stdint.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/wchar.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/malloc.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/string.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/strings.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/linux/types.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm/types.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm-generic/types.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm-generic/int-ll64.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm/bitsperlong.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm-generic/bitsperlong.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/linux/posix_types.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/linux/stddef.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm/posix_types.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm/posix_types_32.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm-generic/posix_types.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/dlfcn.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/dlfcn.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/lib/gcc/i686-netacquire-linux-gnu/4.9.3/include-fixed/limits.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/lib/gcc/i686-netacquire-linux-gnu/4.9.3/include-fixed/syslimits.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/limits.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/posix1_lim.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/local_lim.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/linux/limits.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/posix2_lim.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/xopen_lim.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/sys/param.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/signal.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/signum.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/siginfo.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/sigaction.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/sigcontext.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/sigstack.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/sys/ucontext.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/sigthread.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/param.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/linux/param.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm/param.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm-generic/param.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/lib/gcc/i686-netacquire-linux-gnu/4.9.3/include/stdbool.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/crypt.h \
 ../lib/replace/system/network.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/unistd.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/posix_opt.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/environments.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/confname.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/getopt.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/sys/socket.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/sys/uio.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/uio.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/socket.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/socket_type.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/sockaddr.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm/socket.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm-generic/socket.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm/sockios.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm-generic/sockios.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/sys/un.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/netinet/in.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/in.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/arpa/inet.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/netdb.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/rpc/netdb.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/netdb.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/netinet/tcp.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/netinet/in_systm.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/netinet/ip.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/net/if.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/sys/ioctl.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/ioctls.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm/ioctls.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm-generic/ioctls.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/linux/ioctl.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm/ioctl.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/asm-generic/ioctl.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/ioctl-types.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/sys/ttydefaults.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/stropts.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/xtitypes.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/stropts.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/ifaddrs.h \
 ../lib/replace/system/kerberos.h ../source4/heimdal/lib/krb5/krb5.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/timex.h \
 ../source4/heimdal_build/krb5-types.h ../lib/replace/replace.h \
 default/source4/heimdal/lib/asn1/asn1_err.h \
 default/source4/heimdal/lib/krb5/krb5_err.h \
 default/source4/heimdal/lib/krb5/heim_err.h \
 default/source4/heimdal/lib/krb5/k524_err.h \
 default/source4/heimdal/lib/asn1/krb5_asn1.h \
 default/source4/heimdal/lib/krb5/krb5-protos.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/rfs/usr/include/com_err.h \
 ../lib/replace/system/gssapi.h \
 ../source4/heimdal/lib/gssapi/gssapi/gssapi.h \
 ../source4/heimdal/lib/gssapi/gssapi/gssapi_oid.h \
 ../source4/heimdal/lib/gssapi/gssapi/gssapi_krb5.h \
 ../source4/heimdal/lib/gssapi/gssapi/gssapi.h \
 ../source4/heimdal/lib/gssapi/gssapi/gssapi_spnego.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/fcntl.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/fcntl.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/fcntl-linux.h \
 /home/dhauck/production/factory/build_i686-netacquire-linux-gnu/toolchain/include/bits/stat.h \
 default/include/public/talloc.h ../lib/addns/dnserr.h \
 ../lib/util/genrand.h

Furthermore, I see that the version of com_err.h in .../rfs/user/include matches the version that's part of my Kerberos v1.4.1 installation. This file does not match the Heimdal version (present in the samba ./source4/heimdal/lib/com_err directory). Which version of this file should the build be using? I see that USING_SYSTEM_COM_ERR is set to '1' in bin/default/include/config.h so it seems like the .../rfs/usr/include/com_err.h reference/dependency is correct? 

Considering all of this I see that I can correct this build failure with a change to ./source4/heimdal/lib/krb5/krb5.h as follows:

diff -Naur orig/source4/heimdal/lib/krb5/krb5.h new/source4/heimdal/lib/krb5/krb5.h
--- orig/source4/heimdal/lib/krb5/krb5.h	2016-09-27 11:16:36.422543109 -0700
+++ new/source4/heimdal/lib/krb5/krb5.h	2016-09-27 11:16:53.838360479 -0700
@@ -55,8 +55,10 @@
 
 #ifdef _WIN32
 #define KRB5_CALLCONV __stdcall
+#define KRB5_CALLCONV_C __stdcall
 #else
 #define KRB5_CALLCONV
+#define KRB5_CALLCONV_C
 #endif
 
 /* simple constants */

I see that the tip of this file in the repo indicates this file hasn't changed for years (all v4 versions are identical). Does the above change make sense generally?

Cheers,
-David



More information about the samba-technical mailing list