swtpm: fix build on darwin

This commit is contained in:
Will Cohen 2022-03-10 09:34:40 -05:00
parent acd095ab64
commit 3689136441

View File

@ -28,23 +28,28 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [
pkg-config unixtools.netstat expect socat
perl # for pod2man
python3
autoreconfHook
];
checkInputs = [
python3 which
which
];
buildInputs = [
libtpms
openssl libtasn1 libseccomp
fuse glib json-glib
openssl libtasn1
glib json-glib
gnutls
] ++ lib.optionals stdenv.isLinux [
fuse
libseccomp
];
configureFlags = [
"--with-cuse"
"--localstatedir=/var"
] ++ lib.optionals stdenv.isLinux [
"--with-cuse"
];
postPatch = ''
@ -56,9 +61,31 @@ stdenv.mkDerivation rec {
# Use the correct path to the certtool binary
# instead of relying on it being in the environment
substituteInPlace src/swtpm_localca/swtpm_localca.c --replace \
substituteInPlace src/swtpm_localca/swtpm_localca.c \
--replace \
'# define CERTTOOL_NAME "gnutls-certtool"' \
'# define CERTTOOL_NAME "${gnutls}/bin/certtool"' \
--replace \
'# define CERTTOOL_NAME "certtool"' \
'# define CERTTOOL_NAME "${gnutls}/bin/certtool"'
substituteInPlace tests/common --replace \
'CERTTOOL=gnutls-certtool;;' \
'CERTTOOL=certtool;;'
# Fix error on macOS:
# stat: invalid option -- '%'
# This is caused by the stat program not being the BSD version,
# as is expected by the test
substituteInPlace tests/common --replace \
'if [[ "$(uname -s)" =~ (Linux|CYGWIN_NT-) ]]; then' \
'if [[ "$(uname -s)" =~ (Linux|Darwin|CYGWIN_NT-) ]]; then'
# Otherwise certtool seems to pick up the system language on macOS,
# which might cause a test to fail
substituteInPlace tests/test_swtpm_setup_create_cert --replace \
'$CERTTOOL' \
'LC_ALL=C.UTF-8 $CERTTOOL'
'';
doCheck = true;