Re: git: 7e35117eb07f - main - Makefile: Hook MIT KRB5 into the build

From: Dima Panov <fluffy_at_FreeBSD.org>
Date: Fri, 20 Jun 2025 09:27:09 UTC
Hello!


Looks like something missing after the build with MIT Kerberos.

got this with devel/gvfs build:

==
In file included from ../daemon/pty_open.c:70:
/usr/include/util.h:36:10: fatal error: 'k5-int.h' file not found
    36 | #include "k5-int.h"
       |          ^~~~~~~~~~
1 error generated.
==

Indeed, k5-int.h is missing in /usr/include :(

On 16.06.2025 05:51, Cy Schubert wrote:
> The branch main has been updated by cy:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=7e35117eb07f86c385656ecc6a2a92093be98131
> 
> commit 7e35117eb07f86c385656ecc6a2a92093be98131
> Author:     Cy Schubert <cy@FreeBSD.org>
> AuthorDate: 2025-06-11 02:57:54 +0000
> Commit:     Cy Schubert <cy@FreeBSD.org>
> CommitDate: 2025-06-16 02:49:37 +0000
> 
>      Makefile: Hook MIT KRB5 into the build
>      
>      Add tests for MK_MITKRB5. If "yes" build MIT KRB5. If "no" build Heimdal.
>      The default is MK_MITKRB5 = no, added by "krb5: Add build plumbing".
>      
>      At some point we will change the default to MK_MITKRB5 = yes. A ports
>      exp-run will need to be successfully run first.
>      
>      Sponsored by:           The FreeBSD Foundation
>      Differential revision:  https://reviews.freebsd.org/D50815
> ---
>   Makefile.inc1        | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>   Makefile.libcompat   |  4 +++
>   tools/build/Makefile | 64 +++++++++++++++++++++++++++++++++++++
>   3 files changed, 157 insertions(+)
> 
> diff --git a/Makefile.inc1 b/Makefile.inc1
> index 588f95654e99..97bd81f3263f 100644
> --- a/Makefile.inc1
> +++ b/Makefile.inc1
> @@ -429,8 +429,12 @@ SUBDIR+=cddl
>   .endif
>   SUBDIR+=gnu include
>   .if ${MK_KERBEROS} != "no"
> +.if ${MK_MITKRB5} != "no"
> +SUBDIR+=krb5
> +.else
>   SUBDIR+=kerberos5
>   .endif
> +.endif
>   .if ${MK_RESCUE} != "no"
>   SUBDIR+=rescue
>   .endif
> @@ -2611,6 +2615,22 @@ ${_bt}-usr.bin/mkcsmapper: ${_bt}-usr.bin/yacc ${_bt_lex_depend}
>   .endif
>   
>   .if ${MK_KERBEROS} != "no"
> +.if ${MK_MITKRB5} != "no"
> +_kerberos5_bootstrap_tools= \
> +	krb5/util/build-tools \
> +	krb5/util/compile_et \
> +	krb5/util/support \
> +	krb5/util/et \
> +	lib/ncurses/tinfo \
> +	lib/libedit \
> +	krb5/util/ss \
> +	krb5/util/profile \
> +	krb5/util/verto
> +#	krb5/include \
> +#	krb5/lib/crypto \
> +#	krb5/lib/krb5 \
> +#	krb5/lib/gssapi
> +.else
>   _kerberos5_bootstrap_tools= \
>   	kerberos5/tools/make-roken \
>   	kerberos5/lib/libroken \
> @@ -2619,6 +2639,7 @@ _kerberos5_bootstrap_tools= \
>   	kerberos5/tools/slc \
>   	usr.bin/compile_et
>   
> +.endif
>   .ORDER: ${_kerberos5_bootstrap_tools:C/^/${_bt}-/g}
>   .for _tool in ${_kerberos5_bootstrap_tools}
>   ${_bt}-${_tool}: ${_bt}-usr.bin/yacc ${_bt_lex_depend}
> @@ -3185,6 +3206,8 @@ _prebuild_libs=	${_kerberos5_lib_libasn1} \
>   		${_kerberos5_lib_libhx509} ${_kerberos5_lib_libkrb5} \
>   		${_kerberos5_lib_libroken} \
>   		${_kerberos5_lib_libwind} \
> +		${_krb5_util_et} \
> +		${_krb5_util_profile} \
>   		lib/libbz2 ${_libcom_err} lib/libcrypt \
>   		lib/libc++ \
>   		lib/libelf lib/libexpat \
> @@ -3197,6 +3220,18 @@ _prebuild_libs=	${_kerberos5_lib_libasn1} \
>   		${_lib_casper} \
>   		lib/ncurses/tinfo \
>   		lib/ncurses/ncurses \
> +		lib/libedit \
> +		${_krb5_util_ss} \
> +		${_krb5_util_support} \
> +		${_krb5_util_verto} \
> +		${_krb5_lib_krb5} \
> +		${_krb5_lib_crypto} \
> +		${_krb5_lib_gssapikrb5} \
> +		${_krb5_lib_gssrpc} \
> +		${_krb5_lib_kdb5} \
> +		${_krb5_lib_krad} \
> +		${_krb5_lib_kadm5srvmit} \
> +		${_krb5_lib_kadm5clntmit} \
>   		lib/libpam/libpam lib/libthr \
>   		${_lib_libradius} lib/libsbuf lib/libtacplus \
>   		lib/libgeom \
> @@ -3236,6 +3271,8 @@ _lib_libradius=	lib/libradius
>   
>   lib/ncurses/ncurses__L:	lib/ncurses/tinfo__L
>   
> +lib/libedit__L:		lib/ncurses/ncurses__L
> +
>   .if ${MK_OFED} != "no"
>   _prebuild_libs+= \
>   	lib/ofed/libibverbs \
> @@ -3335,17 +3372,45 @@ secure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L
>   .if ${MK_LDNS} != "no"
>   secure/lib/libssh__L: lib/libldns__L
>   .endif
> +
>   .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no"
> +.if ${MK_MITKRB5} != "no"
> +secure/lib/libssh__L: lib/libgssapi__L krb5/lib/krb5__L \
> +    krb5/util/et__L lib/libmd__L krb5/util/support__L
> +.else
>   secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \
>       kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err__L \
>       lib/libmd__L kerberos5/lib/libroken__L
>   .endif
>   .endif
>   .endif
> +.endif
>   _secure_lib=	secure/lib
>   .endif
>   
>   .if ${MK_KERBEROS} != "no"
> +.if ${MK_MITKRB5} != "no"
> +krb5/util/et__L: krb5/util/support__L
> +krb5/util/profile__L: krb5/util/et__L krb5/util/support__L
> +krb5/lib/crypto__L:  krb5/util/et__L krb5/util/support__L \
> +    secure/lib/libcrypto__L
> +krb5/lib/gssapi__L: krb5/lib/krb5__L krb5/lib/crypto__L krb5/util/et__L \
> +    krb5/util/support__L
> +krb5/lib/kadm5clnt__L: krb5/util/profile__L krb5/lib/rpc__L \
> +    krb5/lib/gssapi__L krb5/lib/krb5__L krb5/lib/crypto__L \
> +    krb5/util/support__L krb5/util/et__L
> +krb5/lib/kadm5srv__L: krb5/util/profile__L krb5/lib/rpc__L \
> +    krb5/lib/gssapi__L krb5/lib/kdb__L krb5/lib/krb5 krb5/lib/crypto__L \
> +    krb5/util/support__L krb5/util/et__L
> +krb5/lib/kdb__L: krb5/util/profile__L krb5/lib/rpc__L krb5/lib/krb5__L \
> +    krb5/lib/crypto__L krb5/util/et__L krb5/util/support__L krb5/lib/gssapi__L
> +krb5/lib/krad__L: krb5/lib/krb5__L krb5/lib/crypto__L krb5/util/et__L \
> +    krb5/util/support__L krb5/util/verto__L
> +krb5/lib/krb5__L: krb5/util/profile__L krb5/lib/crypto__L krb5/util/et__L \
> +    krb5/util/support__L
> +krb5/lib/rpc__L: krb5/lib/gssapi__L krb5/lib/krb5__L krb5/lib/crypto__L \
> +    krb5/util/et__L krb5/util/support__L
> +.else
>   kerberos5/lib/libasn1__L: lib/libcom_err__L kerberos5/lib/libroken__L
>   kerberos5/lib/libhdb__L: kerberos5/lib/libasn1__L lib/libcom_err__L \
>       kerberos5/lib/libkrb5__L kerberos5/lib/libroken__L \
> @@ -3363,6 +3428,7 @@ kerberos5/lib/libwind__L: kerberos5/lib/libroken__L lib/libcom_err__L
>   kerberos5/lib/libheimbase__L: lib/libthr__L
>   kerberos5/lib/libheimipcc__L: kerberos5/lib/libroken__L kerberos5/lib/libheimbase__L lib/libthr__L
>   .endif
> +.endif
>   
>   lib/libsqlite3__L: lib/libthr__L
>   
> @@ -3371,6 +3437,28 @@ _lib_libgssapi=	lib/libgssapi
>   .endif
>   
>   .if ${MK_KERBEROS} != "no"
> +.if ${MK_MITKRB5} != "no"
> +_krb5_util=		krb5/util
> +_krb5_util_build_tools=	krb5/util/build-tools
> +_krb5_util_compileet=	krb5/util/compile_et
> +_krb5_util_et=		krb5/util/et
> +_krb5_util_profile=	krb5/util/profile
> +_krb5_util_ss=		krb5/util/ss
> +_krb5_util_support=	krb5/util/support
> +_krb5_util_verto=	krb5/util/verto
> +_krb5_lib=		krb5/lib
> +_krb5_lib_krb5=		krb5/lib/krb5
> +_krb5_lib_kdb5=		krb5/lib/kdb
> +_krb5_lib_crypto=	krb5/lib/crypto
> +_krb5_lib_gssapikrb5=	krb5/lib/gssapi
> +_krb5_lib_gssrpc=	krb5/lib/rpc
> +_krb5_lib_apputils=	krb5/lib/apputils
> +_krb5_lib_kadm5clntmit=	krb5/lib/kadm5clnt
> +_krb5_lib_kadm5srvmit=	krb5/lib/kadm5srv
> +_krb5_lib_kadm_common=	krb5/lib/kadm_common
> +_krb5_lib_kproputil=	krb5/lib/kprop_util
> +_krb5_lib_krad=		krb5/lib/krad
> +.else
>   _kerberos5_lib=	kerberos5/lib
>   _kerberos5_lib_libasn1= kerberos5/lib/libasn1
>   _kerberos5_lib_libhdb= kerberos5/lib/libhdb
> @@ -3384,6 +3472,7 @@ _kerberos5_lib_libheimipcc= kerberos5/lib/libheimipcc
>   _kerberos5_lib_libwind= kerberos5/lib/libwind
>   _libcom_err= lib/libcom_err
>   .endif
> +.endif
>   
>   .if ${MK_NIS} != "no"
>   _lib_libypclnt=	lib/libypclnt
> diff --git a/Makefile.libcompat b/Makefile.libcompat
> index 5675fa5eaff2..82ef4e9df0ac 100644
> --- a/Makefile.libcompat
> +++ b/Makefile.libcompat
> @@ -91,7 +91,11 @@ _LC_LIBDIRS.yes=		lib
>   _LC_LIBDIRS.yes+=		gnu/lib
>   _LC_LIBDIRS.${MK_CDDL:tl}+=	cddl/lib
>   _LC_LIBDIRS.${MK_CRYPT:tl}+=	secure/lib
> +.if ${MK_MITKRB5} != "no"
> +_LC_LIBDIRS.${MK_KERBEROS:tl}+=	krb5/lib
> +.else
>   _LC_LIBDIRS.${MK_KERBEROS:tl}+=	kerberos5/lib
> +.endif
>   
>   .if ${MK_FILE} != "no"
>   _libmagic=	lib/libmagic
> diff --git a/tools/build/Makefile b/tools/build/Makefile
> index a9f4a84e6f7c..40ac498bfbb4 100644
> --- a/tools/build/Makefile
> +++ b/tools/build/Makefile
> @@ -1,9 +1,18 @@
>   .PATH: ${.CURDIR}/../../include
>   
> +# XXX We need to include this to avoid installing MIT KRB5 includes on
> +# XXX Heimdal systems. Remove the following line when Heimdal is finally
> +# XXX removed.
> +.include <src.opts.mk>
> +
>   LIB=		egacy
>   SRC=
>   INCSGROUPS=	INCS SYSINCS CASPERINC UFSINCS FFSINCS MSDOSFSINCS DISKINCS
>   INCSGROUPS+=	MACHINESYSINCS RPCINCS
> +.if ${MK_MITKRB5} != "no"
> +INCSGROUPS+=	EDITINC K5GSSRPCINC GSSAPIINC
> +INCSGROUPS+=	K5GSSAPIINC K52GSSAPIINC KRB5INC
> +.endif
>   INCS=
>   
>   SYSINCSDIR=	${INCLUDEDIR}/sys
> @@ -15,6 +24,16 @@ MSDOSFSINCSDIR=	${INCLUDEDIR}/fs/msdosfs
>   DISKINCSDIR=	${INCLUDEDIR}/sys/disk
>   MACHINESYSINCSDIR=	${INCLUDEDIR}/machine
>   RPCINCSDIR=	${INCLUDEDIR}/rpc
> +.if ${MK_MITKRB5} != "no"
> +EDITINCDIR=	${INCLUDEDIR}/edit/readline
> +K5GSSRPCINCDIR=	${INCLUDEDIR}/gssrpc
> +GSSAPIINCDIR=	${INCLUDEDIR}/gssapi
> +K5GSSAPIINCDIR=	${INCLUDEDIR}/gssapi_krb5
> +K52GSSAPIINCDIR=${INCLUDEDIR}/gssapi_krb5/gssapi
> +KRB5INCDIR=	${INCLUDEDIR}/krb5
> +KDB5INCDIR=	${INCLUDEDIR}/kdb5
> +KADM5INCDIR=	${INCLUDEDIR}/kadm5
> +.endif
>   
>   BOOTSTRAPPING?=	0
>   
> @@ -256,6 +275,51 @@ CLEANFILES+=	subr_capability.c
>   CASPERINC+=	${SRCTOP}/lib/libcasper/services/cap_fileargs/cap_fileargs.h
>   CASPERINC+=	${SRCTOP}/lib/libcasper/services/cap_net/cap_net.h
>   
> +.if ${MK_MITKRB5} != "no"
> +EDITINC+=	${SRCTOP}/contrib/libedit/readline/readline.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/auth.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/auth_gss.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/auth_gssapi.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/auth_unix.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/clnt.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/netdb.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/pmap_clnt.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/pmap_prot.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/pmap_rmt.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/rpc_msg.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/rpc.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/svc_auth.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/svc.h
> +K5GSSRPCINC+=	${SRCTOP}/krb5/include/gssrpc/types.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/xdr.h
> +K5GSSRPCINC+=	${SRCTOP}/crypto/krb5/src/include/gssrpc/xdr.h
> +GSSAPIINC+=	${SRCTOP}/crypto/krb5/src/lib/gssapi/krb5/gssapi_krb5.h
> +GSSAPIINC+=	${SRCTOP}/crypto/krb5/src/lib/gssapi/generic/gssapi_alloc.h
> +GSSAPIINC+=	${SRCTOP}/crypto/krb5/src/lib/gssapi/generic/gssapi_generic.h
> +GSSAPIINC+=	${SRCTOP}/crypto/krb5/src/lib/gssapi/generic/gssapi_ext.h
> +K5GSSAPIINC+=	${SRCTOP}/crypto/krb5/src/include/gssapi.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/ccselect_plugin.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/certauth_plugin.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/clpreauth_plugin.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/hostrealm_plugin.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/kadm5_auth_plugin.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/kadm5_hook_plugin.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/kdcpolicy_plugin.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/kdcpreauth_plugin.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/localauth_plugin.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/locate_plugin.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/plugin.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/preauth_plugin.h
> +KRB5INC+=	${SRCTOP}/crypto/krb5/src/include/krb5/pwqual_plugin.h
> +INCS+=		${SRCTOP}/crypto/krb5/src/include/gssapi.h
> +INCS+=		${SRCTOP}/crypto/krb5/src/include/kdb.h
> +INCS+=		${SRCTOP}/crypto/krb5/src/include/krb5.h
> +INCS+=		${SRCTOP}/crypto/krb5/src/include/krad.h
> +INCS+=		${SRCTOP}/crypto/krb5/src/util/et/com_err.h
> +INCS+=		${SRCTOP}/crypto/krb5/src/util/verto/verto-module.h
> +INCS+=		${SRCTOP}/crypto/krb5/src/util/verto/verto.h
> +.endif
> +
>   .if empty(SRCS)
>   SRCS=		dummy.c
>   .endif
> 

-- 
Sincerely,
Dima (fluffy@FreeBSD.org, https://t.me/FluffyBSD, @fluffy:matrix-dev.freebsd.org)
(desktop, kde, x11, office, ports-secteam)@FreeBSD team