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 = [ nativeBuildInputs = [
pkg-config unixtools.netstat expect socat pkg-config unixtools.netstat expect socat
perl # for pod2man perl # for pod2man
python3
autoreconfHook autoreconfHook
]; ];
checkInputs = [ checkInputs = [
python3 which which
]; ];
buildInputs = [ buildInputs = [
libtpms libtpms
openssl libtasn1 libseccomp openssl libtasn1
fuse glib json-glib glib json-glib
gnutls gnutls
] ++ lib.optionals stdenv.isLinux [
fuse
libseccomp
]; ];
configureFlags = [ configureFlags = [
"--with-cuse"
"--localstatedir=/var" "--localstatedir=/var"
] ++ lib.optionals stdenv.isLinux [
"--with-cuse"
]; ];
postPatch = '' postPatch = ''
@ -56,9 +61,31 @@ stdenv.mkDerivation rec {
# Use the correct path to the certtool binary # Use the correct path to the certtool binary
# instead of relying on it being in the environment # 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 "certtool"' \
'# define CERTTOOL_NAME "${gnutls}/bin/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; doCheck = true;