git: 8c3eaf244a41 - main - pkgbase: Install all BSM includes with INCS

Bjoern A. Zeeb bz at FreeBSD.org
Sun Mar 21 01:39:33 UTC 2021


On 16 Mar 2021, at 6:13, Emmanuel Vadot wrote:

Hi manu,
Cc: rwatson


> The branch main has been updated by manu:
>
> URL: 
> https://cgit.FreeBSD.org/src/commit/?id=8c3eaf244a417a4ee105834410a52144206102e5
>
> commit 8c3eaf244a417a4ee105834410a52144206102e5
> Author:     Emmanuel Vadot <manu at FreeBSD.org>
> AuthorDate: 2021-03-16 06:12:46 +0000
> Commit:     Emmanuel Vadot <manu at FreeBSD.org>
> CommitDate: 2021-03-16 06:12:46 +0000
>
>     pkgbase: Install all BSM includes with INCS
>
>     Now they are correctly taggued and put them into the libbsm 
> package
>
>     Reviewed by:    bapt
>     Differential Revision:  https://reviews.freebsd.org/D29165
>     MFC after:      2 weeks
> ---
>  include/Makefile | 27 +++++++++++++++++++++++++--
>  1 file changed, 25 insertions(+), 2 deletions(-)
>
> diff --git a/include/Makefile b/include/Makefile
> index 8ddfd7015918..cf760359d2f5 100644
> --- a/include/Makefile
> +++ b/include/Makefile
..
> @@ -175,6 +193,11 @@ INCSGROUPS=	INCS \
>  		VERIEXEC \
>  		WG
>
> +.if ${MK_AUDIT} != "no"
> +INCSGROUPS+=	BSM
> +INCSGROUPS+=	SECAUDIT
> +.endif
> +
>  .if ${MK_IPFILTER} != "no"
>  INCSGROUPS+=	IPFILTER
>  .endif

This breaks builds for WITHOUT_AUDIT= I believe.  Files in libc 
(gen/fstab.c) include sys/mount.h which includes sys/ucred.h which 
unconditionally includes bsm/audit.h (and has been for a decade or more, 
and so does sys/sysent.h) which now is not found anymore if audit is 
turned off.

I believe sys/ucred.h can be fixed:

iff --git a/sys/sys/ucred.h b/sys/sys/ucred.h
index 6a9becb54c7..b23374f48c9 100644
--- a/sys/sys/ucred.h
+++ b/sys/sys/ucred.h
@@ -38,8 +38,8 @@
  #if defined(_KERNEL) || defined(_WANT_UCRED)
  #include <sys/_lock.h>
  #include <sys/_mutex.h>
-#endif
  #include <bsm/audit.h>
+#endif

  struct loginclass;

Sadly this won’t fix lib/libkvm/kvm_proc.c and 
lib/libprocstat/libprocstat.c which define _WANT_UCRED and at least 
kvm_proc.c and probably kdump and rpcgen consumers rely on sysent and 
whatever else I missed with a quick look again which are not as easily 
fixed.

How do we check in kernel header files for user space build options to 
be set correctly?  That would actually not fix the problem for sysent.h 
as we’d have a missing type.  And for ucred with the places actually 
asking for it as well.  Given we cannot change the size of these structs 
I believe we have to unconditionally install at least audit.h (for now)?


/bz




More information about the dev-commits-src-main mailing list