Jonathan Cox
2024-Jul-07 04:14 UTC
[Samba] Problems building Samba 4.20.2 on Solaris due to Heimdal issues
Hello, I've run into some issues building Samba 4.20.2 due to problems concerning Heimdal. First, I am unable to build with the embed Heimdal due to a variety of errors during compilation of the embedded heimdal. As result, I built a "system" heimdal using the current master branch of heimdal from GitHub. Then I tried to build Samba again using the --with-system-heimdalkrb5, but it immediately fails to build. Since I'm not familiar with the Waf build system, I'm at a loss as to how to resolve the problem. I am building on Solaris 10 1/13 using the GNU toolchain from OpenCSW.org, which is gcc-5.5 on a UltraSPARC IIIi workstation. If anybody can provide some suggestions, ideas or pointers, I would appreciate it. (1) Attempt with "System" Heimdal built from master at https://github.com/heimdal/heimdal I was able to successfully build heimdal on my own. My "system" heimdal is installed in /usr/heimdal, and I set the following environment variables prior to building Samba: export PATH=/usr/heimdal/bin:/usr/local/bin:/export/home/joncox/data/python3/bin:/opt/csw/bin:$PATH export PKG_CONFIG_PATH=/usr/heimdal/lib/pkgconfig:/usr/local/lib/pkgconfig:/opt/csw/lib/pkgconfig export CFLAGS="-O3 -mcpu=ultrasparc3 -I/usr/heimdal/include" export CXXFLAGS="-O3 -mcpu=ultrasparc3 -I/usr/heimdal/include" export CPPFLAGS="-I/usr/heimdal/include" export LDFLAGS="-L/usr/heimdal/lib" export KRB5_HOME=/usr/heimdal ./configure -v --with-system-heimdalkrb5 --disable-python --without-ad-dc --disable-cups --without-libunwind --without-json make During configure, it looks like krb5.h, krb5-config and the rest of the heimdal "system" components that I built are detected. However, when I compile with "make", I immediately get the following message. 'configure' finished successfully (4m53.184s) bash-3.2$ make -j2 PYTHONHASHSEED=1 WAF_MAKE=1 /export/home/joncox/data/python3/bin/python3 ./buildtools/bin/waf build Waf: Entering directory `/export/home/joncox/Downloads/samba-samba-4.20.2/bin/default' Selected system Heimdal build Checking project rules ... ERROR: target samdb.objlist: dependency target com_err not declared make: *** [Makefile:7: all] Error 1 This seems strange because com_err, gssapi and the other related heimdal components are present and reported by krb5-config. As a wild guess, it seems like --with-system-heimdalkrb5 is mistakenly disabling (or not enabling) the rest of the heimdal components or targets that are required. bash-3.2$ krb5-config usage: /usr/heimdal/bin/krb5-config [options] [libraries] options: [--help] show this message [--all] display version, vendor, etc. [--version] display version information [--prefix] display the prefix of Kerberos [--exec-prefix] display the exec_prefix of Kerberos [--cflags] display the CFLAGS required [--libs] display the libraries required to link [--deps] display the dependent libs required for static linking libraries: krb5 Kerberos 5 applications gssapi GSSAPI applications kadm-client libkadm5 client kadm-server libkadm5 server kafs kafs (2) Attempt with embedded heimdal On the other hand, if try to build with the embedded heimdal, it proceeds to build heimdal, but then errors during linking since ld can't resolve "libintl_dgettext". But this is strange since I confirmed that this symbol is present in my libintl.so. I tried setting LDFLAGS=-lintl as well, but this didn't help. Unfortunately, since I'm not familiar with Waf, I really don't know how to force it to link with -lintl, otherwise I presume I could get past this error. WAF doesn't seem to provide particularly helpful output, even if I configure with -v. How can I force Waf to link with a set of libraries in particular directories? export CFLAGS="-O3 -mcpu=ultrasparc3" export CXXFLAGS="-O3 -mcpu=ultrasparc3" export LDFLAGS="-L/opt/csw/lib -lintl" ./configure -v --disable-python --without-ad-dc --disable-cups --without-libunwind --without-json Note: the symbol is defined in this library, so WAF must not be linking with it: bash-3.2$ gnm /opt/csw/lib/libintl.so | grep libintl_dgettext 000020b8 T libintl_dgettext And the error that immediately results: bash-3.2$ make PYTHONHASHSEED=1 WAF_MAKE=1 /export/home/joncox/data/python3/bin/python3 ./buildtools/bin/waf build Waf: Entering directory `/export/home/joncox/Downloads/samba-samba-4.20.2/bin/default' Selected embedded Heimdal build [324/324] Linking bin/default/third_party/heimdal_build/asn1_compile Undefined first referenced symbol in file libintl_dgettext third_party/heimdal/lib/base/bsearch.c.80.o Build failed -> task in 'asn1_compile' failed with exit status 1 (run with -v to display more information) -Jonathan