Subject: samba/fixed (samba 4.15.3) fails to build

From: Maxime Devos <[email-masked]>
Date: Fri, 26 Aug 2022 22:32:50 +0200

On core-updates (and x86_64, though I expect it not to matter), 
samba/fixed (samba 4.15.3) fails to build. It appears to have something 
to do with Kerberos:

> [2858/3542] Compiling source3/libnet/libnet_dssync.c
> ../../source4/kdc/mit-kdb/kdb_samba.c:169:3: error: ‘kdb_vftabl’ {aka 
> ‘struct _kdb_vftabl’} has no member named ‘sign_authdata’
>   169 |  .sign_authdata             = kdb_samba_db_sign_auth_data,
>       |   ^~~~~~~~~~~~~
> ../../source4/kdc/mit-kdb/kdb_samba.c:169:31: warning: initialization 
> of ‘krb5_error_code (*)(struct _krb5_context *, const krb5_data *, 
> const krb5_data *, const krb5_data *)’ {aka ‘int (*)(struct 
> _krb5_context *, const struct _krb5_data *, const struct _krb5_data *, 
> const struct _krb5_data *)’} from incompatible pointer type 
> ‘krb5_error_code (*)(struct _krb5_context *, unsigned int,  const 
> krb5_principal_data *, const krb5_principal_data *, krb5_db_entry *, 
> krb5_db_entry *, krb5_db_entry *, krb5_db_entry *, krb5_keyblock *, 
> krb5_keyblock *, krb5_keyblock *, krb5_keyblock *, krb5_keyblock *, 
> krb5_timestamp,  krb5_authdata **, void *, krb5_data ***, 
> krb5_authdata ***)’ {aka ‘int (*)(struct _krb5_context *, unsigned 
> int,  const krb5_principal_data *, const krb5_principal_data *, struct 
> _krb5_db_entry_new *, struct _krb5_db_entry_new *, struct 
> _krb5_db_entry_new *, struct _krb5_db_entry_new *, struct 
> _krb5_keyblock *, struct _krb5_keyblock *, struct _krb5_keyblock *, 
> struct _krb5_keyblock *, struct _krb5_keyblock *, int,  struct 
> _krb5_authdata **, void *, struct _krb5_data ***, struct 
> _krb5_authdata ***)’} [-Wincompatible-pointer-types]
>   169 |  .sign_authdata             = kdb_samba_db_sign_auth_data,
>       | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../../source4/kdc/mit-kdb/kdb_samba.c:169:31: note: (near 
> initialization for ‘kdb_function_table.check_transited_realms’)
>
> gcc -O2 -DSMALL_MATRIX_OPT -DUTEST_CHECK -DSANITY_CHECK 
> -DREFNAME=test_kernel_regressf_ -DMAX_STACK_ALLOC=2048 -Wall -m64 
> -DF_INTERFACE_GFORT -fPIC -DDYNAMIC_ARCH -DDYNAMIC_OLDER -DSMP_SERVER 
> -DNO_WARMUP -DMAX_CPU_NUMBER=128 -DMAX_PARALLEL_NUMBER=1 
> -DBUILD_SINGLE=1 -DBUILD_DOUBLE=1 -DBUILD_COMPLEX=1 
> -DBUILD_COMPLEX16=1 -DVERSION=\"0.3.20\" -UASMNAME -UASMFNAME -UNAME 
> -UCNAME -UCHAR_NAME -UCHAR_CNAME -DASMNAME=test_kernel_regress 
> -DASMFNAME=test_kernel_regress_ -DNAME=test_kernel_regress_ 
> -DCNAME=test_kernel_regress -DCHAR_NAME=\"test_kernel_regress_\" 
> -DCHAR_CNAME=\"test_kernel_regress\" -DNO_AFFINITY -I..   -c -o 
> test_kernel_regress.o test_kernel_regress.c
> ../../source4/kdc/mit-kdb/kdb_samba_policies.c: In function 
> ‘kdb_samba_db_sign_auth_data’:
> ../../source4/kdc/mit-kdb/kdb_samba_policies.c:333:24: error: 
> ‘KRB5_KDB_FLAG_CLIENT_REFERRALS_ONLY’ undeclared (first use in this 
> function); did you mean ‘KRB5_KDB_FLAG_REFERRAL_OK’?
>   333 |  is_as_req = ((flags & KRB5_KDB_FLAG_CLIENT_REFERRALS_ONLY) != 0);
>       | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       |                        KRB5_KDB_FLAG_REFERRAL_OK
> ../../source4/kdc/mit-kdb/kdb_samba_policies.c:333:24: note: each 
> undeclared identifier is reported only once for each function it 
> appears in
> ../../source4/kdc/mit-kdb/kdb_samba_policies.c:410:28: error: 
> ‘KRB5_KDB_FLAG_INCLUDE_PAC’ undeclared (first use in this function); 
> did you mean ‘KRB5_KDB_FLAG_CLIENT’?
>   410 |  if (is_as_req && (flags & KRB5_KDB_FLAG_INCLUDE_PAC) != 0) {
>       |                            ^~~~~~~~~~~~~~~~~~~~~~~~~
>       |                            KRB5_KDB_FLAG_CLIENT
>
> test_kernel_regress.c: In function ‘__ctest_kernel_regress_skx_avx_run’:
> test_kernel_regress.c:27:15: warning: variable ‘info’ set but not used 
> [-Wunused-but-set-variable]
>    27 |     int i, j, info;
>       |               ^~~~
> gcc -O2 -DSMALL_MATRIX_OPT -DUTEST_CHECK -DSANITY_CHECK 
> -DREFNAME=test_forkf_ -DMAX_STACK_ALLOC=2048 -Wall -m64 
> -DF_INTERFACE_GFORT -fPIC -DDYNAMIC_ARCH -DDYNAMIC_OLDER -DSMP_SERVER 
> -DNO_WARMUP -DMAX_CPU_NUMBER=128 -DMAX_PARALLEL_NUMBER=1 
> -DBUILD_SINGLE=1 -DBUILD_DOUBLE=1 -DBUILD_COMPLEX=1 
> -DBUILD_COMPLEX16=1 -DVERSION=\"0.3.20\" -UASMNAME -UASMFNAME -UNAME 
> -UCNAME -UCHAR_NAME -UCHAR_CNAME -DASMNAME=test_fork 
> -DASMFNAME=test_fork_ -DNAME=test_fork_ -DCNAME=test_fork 
> -DCHAR_NAME=\"test_fork_\" -DCHAR_CNAME=\"test_fork\" -DNO_AFFINITY 
> -I..   -c -o test_fork.o test_fork.c
> [ 74%] Building CXX object 
> storage/innobase/CMakeFiles/innobase.dir/fts/fts0tlex.cc.o
> cd /tmp/guix-build-mariadb-10.5.12.drv-0/build/storage/innobase && 
> /gnu/store/m0rqc26blilychvlkyvlddwynjag73c7-gcc-10.4.0/bin/c++ 
> -DBTR_CUR_ADAPT -DBTR_CUR_HASH_ADAPT -DCOMPILER_HINTS -DDBUG_TRACE 
> -DHAVE_BZIP2=1 -DHAVE_C99_INITIALIZERS -DHAVE_CONFIG_H 
> -DHAVE_FALLOC_PUNCH_HOLE_AND_KEEP_SIZE=1 -DHAVE_LZMA=1 
> -DHAVE_NANOSLEEP=1 -DHAVE_OPENSSL -DHAVE_SCHED_GETCPU=1 
> -DLINUX_NATIVE_AIO=1 -DMUTEX_EVENT -DWITH_INNODB_DISALLOW_WRITES 
> -D_FILE_OFFSET_BITS=64 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/wsrep-lib/include 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/wsrep-lib/wsrep-API/v26 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/build/include 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/storage/innobase/include 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/storage/innobase/handler 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/libbinlogevents/include 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/tpool 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/include 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/sql -pie -fPIC 
> -fstack-protector --param=ssp-buffer-size=4 -Wconversion 
> -Wno-sign-conversion -O3 -g -static-libgcc -fno-omit-frame-pointer 
> -fno-strict-aliasing -Wno-uninitialized -fno-omit-frame-pointer 
> -D_FORTIFY_SOURCE=2 -DDBUG_OFF -Wall -Wextra -Wno-format-truncation 
> -Wno-init-self -Wno-nonnull-compare -Wno-unused-parameter 
> -Woverloaded-virtual -Wnon-virtual-dtor -Wvla -Wwrite-strings   
> -DUNIV_LINUX -D_GNU_SOURCE=1  -fvisibility=hidden -std=gnu++11 -MD -MT 
> storage/innobase/CMakeFiles/innobase.dir/fts/fts0tlex.cc.o -MF 
> CMakeFiles/innobase.dir/fts/fts0tlex.cc.o.d -o 
> CMakeFiles/innobase.dir/fts/fts0tlex.cc.o -c 
> /tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/storage/innobase/fts/fts0tlex.cc
> gcc -O2 -DSMALL_MATRIX_OPT -DUTEST_CHECK -DSANITY_CHECK 
> -DREFNAME=test_post_forkf_ -DMAX_STACK_ALLOC=2048 -Wall -m64 
> -DF_INTERFACE_GFORT -fPIC -DDYNAMIC_ARCH -DDYNAMIC_OLDER -DSMP_SERVER 
> -DNO_WARMUP -DMAX_CPU_NUMBER=128 -DMAX_PARALLEL_NUMBER=1 
> -DBUILD_SINGLE=1 -DBUILD_DOUBLE=1 -DBUILD_COMPLEX=1 
> -DBUILD_COMPLEX16=1 -DVERSION=\"0.3.20\" -UASMNAME -UASMFNAME -UNAME 
> -UCNAME -UCHAR_NAME -UCHAR_CNAME -DASMNAME=test_post_fork 
> -DASMFNAME=test_post_fork_ -DNAME=test_post_fork_ 
> -DCNAME=test_post_fork -DCHAR_NAME=\"test_post_fork_\" 
> -DCHAR_CNAME=\"test_post_fork\" -DNO_AFFINITY -I..   -c -o 
> test_post_fork.o test_post_fork.c
> ../../source4/kdc/mit_samba.c: In function ‘mit_samba_context_init’:
> ../../source4/kdc/mit_samba.c:93:2: warning: 
> ‘tevent_loop_allow_nesting’ is deprecated [-Wdeprecated-declarations]
>    93 |  tevent_loop_allow_nesting(base_ctx.ev_ctx);
>       |  ^~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from 
> /gnu/store/l4cmpiwi2lk28jxh2sianaj079ss7z8q-ldb-2.4.1/include/ldb.h:51,
>                  from ../../source4/dsdb/samdb/samdb.h:35,
>                  from ../../source4/kdc/mit_samba.c:26:
> /gnu/store/31j63jmdzy8yhsxh7plcx6l9g3mf7zk4-tevent-0.11.0/include/tevent.h:2304:6: 
> note: declared here
>  2304 | void tevent_loop_allow_nesting(struct tevent_context *ev) 
> _DEPRECATED_;
>       |      ^~~~~~~~~~~~~~~~~~~~~~~~~
> ../../source4/kdc/mit_samba.c: In function ‘mit_samba_get_principal’:
> ../../source4/kdc/mit_samba.c:224:15: error: 
> ‘KRB5_KDB_FLAG_CANONICALIZE’ undeclared (first use in this function); 
> did you mean ‘KRB5_GC_CANONICALIZE’?
>   224 |  if (kflags & KRB5_KDB_FLAG_CANONICALIZE) {
>       |               ^~~~~~~~~~~~~~~~~~~~~~~~~~
>       |               KRB5_GC_CANONICALIZE
> ../../source4/kdc/mit_samba.c:224:15: note: each undeclared identifier 
> is reported only once for each function it appears in
> ../../source4/kdc/mit_samba.c:227:16: error: 
> ‘KRB5_KDB_FLAG_CLIENT_REFERRALS_ONLY’ undeclared (first use in this 
> function); did you mean ‘KRB5_KDB_FLAG_REFERRAL_OK’?
>   227 |  if (kflags & (KRB5_KDB_FLAG_CLIENT_REFERRALS_ONLY |
>       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       |                KRB5_KDB_FLAG_REFERRAL_OK
> ../../source4/kdc/mit_samba.c:228:9: error: 
> ‘KRB5_KDB_FLAG_INCLUDE_PAC’ undeclared (first use in this function); 
> did you mean ‘KRB5_KDB_FLAG_CLIENT’?
>   228 |         KRB5_KDB_FLAG_INCLUDE_PAC)) {
>       |         ^~~~~~~~~~~~~~~~~~~~~~~~~
>       |         KRB5_KDB_FLAG_CLIENT
>
> test_post_fork.c: In function 
> ‘__ctest_fork_safety_after_fork_in_parent_run’:
> test_post_fork.c:74:12: warning: unused variable ‘nthreads_omp’ 
> [-Wunused-variable]
>    74 |     int i, nthreads_omp;
>       |            ^~~~~~~~~~~~
> In file included from Unified_cpp_js_src_wasm0.cpp:2:
> /tmp/guix-build-mozjs-78.15.0.drv-0/firefox-78.15.0/js/src/wasm/AsmJS.cpp: 
> In function ‘bool 
> CheckArguments.constprop({anonymous}::FunctionValidatorShared&, 
> js::frontend::ParseNode**, js::wasm::ValTypeVector*)’:
> /tmp/guix-build-mozjs-78.15.0.drv-0/firefox-78.15.0/js/src/wasm/AsmJS.cpp:907:58: 
> warning: ‘type’ may be used uninitialized in this function 
> [-Wmaybe-uninitialized]
>   907 |   bool isInt() const { return isSigned() || isUnsigned() || 
> which_ == Int; }
>       | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
> /tmp/guix-build-mozjs-78.15.0.drv-0/firefox-78.15.0/js/src/wasm/AsmJS.cpp:3194:10: 
> note: ‘type’ was declared here
>  3194 |     Type type;
>       |          ^~~~
> In file included from 
> /tmp/guix-build-mozjs-78.15.0.drv-0/firefox-78.15.0/js/src/wasm/AsmJS.cpp:37,
>                  from Unified_cpp_js_src_wasm0.cpp:2:
> /tmp/guix-build-mozjs-78.15.0.drv-0/firefox-78.15.0/js/src/frontend/ParseNode.h:692:12: 
> warning: ‘coercedExpr’ may be used uninitialized in this function 
> [-Wmaybe-uninitialized]
>   692 |     return pn_type;
>       |            ^~~~~~~
> In file included from Unified_cpp_js_src_wasm0.cpp:2:
> /tmp/guix-build-mozjs-78.15.0.drv-0/firefox-78.15.0/js/src/wasm/AsmJS.cpp:3152:14: 
> note: ‘coercedExpr’ was declared here
>  3152 |   ParseNode* coercedExpr;
>       |              ^~~~~~~~~~~
> gcc -O2 -DSMALL_MATRIX_OPT -DUTEST_CHECK -DSANITY_CHECK -DREFNAME=f_ 
> -DMAX_STACK_ALLOC=2048 -Wall -m64 -DF_INTERFACE_GFORT -fPIC 
> -DDYNAMIC_ARCH -DDYNAMIC_OLDER -DSMP_SERVER -DNO_WARMUP 
> -DMAX_CPU_NUMBER=128 -DMAX_PARALLEL_NUMBER=1 -DBUILD_SINGLE=1 
> -DBUILD_DOUBLE=1 -DBUILD_COMPLEX=1 -DBUILD_COMPLEX16=1 
> -DVERSION=\"0.3.20\" -UASMNAME -UASMFNAME -UNAME -UCNAME -UCHAR_NAME 
> -UCHAR_CNAME -DASMNAME= -DASMFNAME=_ -DNAME=_ -DCNAME= 
> -DCHAR_NAME=\"_\" -DCHAR_CNAME=\"\" -DNO_AFFINITY -I..  -o 
> openblas_utest utest_main.o test_min.o test_amax.o test_ismin.o 
> test_rotmg.o test_axpy.o test_dotu.o test_dsdot.o test_swap.o 
> test_rot.o test_potrs.o test_kernel_regress.o test_fork.o 
> test_post_fork.o ../libopenblasp-r0.3.20.a -lm -lpthread -lgfortran 
> -lm -lpthread -lgfortran 
> -L/gnu/store/pc0vb2mj0lic0yarixcznnydnsv1kbqg-gfortran-10.4.0-lib/lib
> [ 74%] Building C object storage/maria/CMakeFiles/aria.dir/ma_rsame.c.o
> cd /tmp/guix-build-mariadb-10.5.12.drv-0/build/storage/maria && 
> /gnu/store/m0rqc26blilychvlkyvlddwynjag73c7-gcc-10.4.0/bin/gcc 
> -DDBUG_TRACE -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/wsrep-lib/include 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/wsrep-lib/wsrep-API/v26 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/build/include 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/include 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/sql -pie -fPIC 
> -fstack-protector --param=ssp-buffer-size=4 -O3 -g -static-libgcc 
> -fno-omit-frame-pointer -fno-strict-aliasing -Wno-uninitialized 
> -fno-omit-frame-pointer -D_FORTIFY_SOURCE=2 -DDBUG_OFF -Wall 
> -Wdeclaration-after-statement -Wextra -Wno-format-truncation 
> -Wno-init-self -Wno-nonnull-compare -Wno-unused-parameter -Wvla 
> -Wwrite-strings  -fvisibility=hidden -MD -MT 
> storage/maria/CMakeFiles/aria.dir/ma_rsame.c.o -MF 
> CMakeFiles/aria.dir/ma_rsame.c.o.d -o CMakeFiles/aria.dir/ma_rsame.c.o 
> -c 
> /tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/storage/maria/ma_rsame.c
> [ 74%] Building CXX object 
> storage/perfschema/CMakeFiles/perfschema.dir/pfs_user.cc.o
> cd /tmp/guix-build-mariadb-10.5.12.drv-0/build/storage/perfschema && 
> /gnu/store/m0rqc26blilychvlkyvlddwynjag73c7-gcc-10.4.0/bin/c++ 
> -DDBUG_TRACE -DHAVE_CONFIG_H -DHAVE_OPENSSL -DMYSQL_SERVER 
> -D_FILE_OFFSET_BITS=64 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/wsrep-lib/include 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/wsrep-lib/wsrep-API/v26 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/build/include 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/include 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/sql 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/build/sql 
> -I/tmp/guix-build-mariadb-10.5.12.drv-0/build/storage/perfschema -pie 
> -fPIC -fstack-protector --param=ssp-buffer-size=4 -O3 -g 
> -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing 
> -Wno-uninitialized -fno-omit-frame-pointer -D_FORTIFY_SOURCE=2 
> -DDBUG_OFF -Wall -Wextra -Wno-format-truncation -Wno-init-self 
> -Wno-nonnull-compare -Wno-unused-parameter -Woverloaded-virtual 
> -Wnon-virtual-dtor -Wvla -Wwrite-strings  -fvisibility=hidden 
> -std=gnu++11 -MD -MT 
> storage/perfschema/CMakeFiles/perfschema.dir/pfs_user.cc.o -MF 
> CMakeFiles/perfschema.dir/pfs_user.cc.o.d -o 
> CMakeFiles/perfschema.dir/pfs_user.cc.o -c 
> /tmp/guix-build-mariadb-10.5.12.drv-0/mariadb-10.5.12/storage/perfschema/pfs_user.cc
>    Compiling num_cpus v1.13.1
> Waf: Leaving directory 
> `/tmp/guix-build-samba-4.15.3.drv-0/samba-4.15.3/bin/default'
> Build failed
>  -> task in 'mit-kdb-samba.objlist' failed with exit status 1 (run 
> with -v to display more information)
>  -> task in 'mit-kdb-samba.objlist' failed with exit status 1 (run 
> with -v to display more information)
>  -> task in 'MIT_SAMBA' failed with exit status 1 (run with -v to 
> display more information)
>    Compiling terminal_size v0.1.17
> make: *** [Makefile:7: all] Error 1
> error: in phase 'build': uncaught exception:
> %exception #<&invoke-error program: "make" arguments: ("-j" "16" 
> "TEST_OPTIONS=--quick") exit-status: 2 term-signal: #f stop-signal: #f>
> phase `build' failed after 815.9 seconds
> command "make" "-j" "16" "TEST_OPTIONS=--quick" failed with status 2
> builder for 
> `/gnu/store/cscxgl6iplsar9jg044kl8vcv1jqvlad-samba-4.15.3.drv' failed 
> with exit code 1
> de bouw van 
> /gnu/store/cscxgl6iplsar9jg044kl8vcv1jqvlad-samba-4.15.3.drv mislukte
I'll give building the current latest samba on core-update ('samba', 
4.16.2., from (gnu packages samba)) a try.

If it succeeds, maybe replacing the current definition of samba/fixed by

(define samba/fixed samba) ; <insert appropriate comment>

a try. (It appears to be an 'avoid rebuilds' package variant.)

Greetings,
Maxime