tpm2-software / tpm2-tss

OSS implementation of the TCG TPM2 Software Stack (TSS2)
https://tpm2-software.github.io
BSD 2-Clause "Simplified" License
751 stars 365 forks source link

MacOS builds #2876

Open Firstyear opened 3 months ago

Firstyear commented 3 months ago

configure.ac contains the following test

# Check all tools used by make install
AS_IF([test "$HOSTOS" = "Linux" && test "x$systemd_sysusers" != "xyes"],
    [ AC_CHECK_PROG(useradd, useradd, yes)
      AC_CHECK_PROG(groupadd, groupadd, yes)
      AC_CHECK_PROG(adduser, adduser, yes)
      AC_CHECK_PROG(addgroup, addgroup, yes)
      AS_IF([test "x$addgroup" != "xyes" && test "x$groupadd" != "xyes" ],
         [AC_MSG_ERROR([addgroup or groupadd are needed.])])
      AS_IF([test "x$adduser" != "xyes" && test "x$useradd" != "xyes" ],
         [AC_MSG_ERROR([adduser or useradd are needed.])])])

This condition is impossible to satisfy on macos as none of these group managament commands are available. Additionally, this isn't needed for vendoring/bundled of the library such as in a development workflow.

I would propose a --disable-useradd feature which allows this check to be skipped when not required.

tie commented 3 months ago

I would propose a --disable-useradd feature which allows this check to be skipped when not required.

These programs are already optional (i.e. Makefile considers errors non-fatal) and I think that configure.ac should be using AC_MSG_WARN instead of AC_MSG_ERROR. https://github.com/tpm2-software/tpm2-tss/blob/6c46325b466f35d40c2ed1043bfdfcfb8a367a34/Makefile.am#L987-L988 See also https://github.com/NixOS/nixpkgs/pull/317786#issuecomment-2265608736

```diff diff --git a/configure.ac b/configure.ac index e2d579b8..0eac4ff3 100644 --- a/configure.ac +++ b/configure.ac @@ -672,9 +672,9 @@ AS_IF([test "$HOSTOS" = "Linux" && test "x$systemd_sysusers" != "xyes"], AC_CHECK_PROG(adduser, adduser, yes) AC_CHECK_PROG(addgroup, addgroup, yes) AS_IF([test "x$addgroup" != "xyes" && test "x$groupadd" != "xyes" ], - [AC_MSG_ERROR([addgroup or groupadd are needed.])]) + [AC_MSG_WARN([addgroup or groupadd are needed.])]) AS_IF([test "x$adduser" != "xyes" && test "x$useradd" != "xyes" ], - [AC_MSG_ERROR([adduser or useradd are needed.])])]) + [AC_MSG_WARN([adduser or useradd are needed.])])]) AC_SUBST([PATH]) ```