python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / tools / security / swtpm / default.nix
blob5d20b65d5914b0d2a4a431fe783fccc5bd1a81c8
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , autoreconfHook
5 , pkg-config
6 , libtasn1, openssl, fuse, glib, libseccomp, json-glib
7 , libtpms
8 , unixtools, expect, socat
9 , gnutls
10 , perl
12 # Tests
13 , python3, which
14 , nixosTests
17 stdenv.mkDerivation rec {
18   pname = "swtpm";
19   version = "0.7.3";
21   src = fetchFromGitHub {
22     owner = "stefanberger";
23     repo = "swtpm";
24     rev = "v${version}";
25     sha256 = "sha256-YaNQgxk0uT8FLUIxF80jpgO/L9ygGRHaABEcs5ukq5E=";
26   };
28   nativeBuildInputs = [
29     pkg-config unixtools.netstat expect socat
30     perl # for pod2man
31     python3
32     autoreconfHook
33   ];
35   checkInputs = [
36     which
37   ];
39   buildInputs = [
40     libtpms
41     openssl libtasn1
42     glib json-glib
43     gnutls
44   ] ++ lib.optionals stdenv.isLinux [
45     fuse
46     libseccomp
47   ];
49   configureFlags = [
50     "--localstatedir=/var"
51   ] ++ lib.optionals stdenv.isLinux [
52     "--with-cuse"
53   ];
55   postPatch = ''
56     patchShebangs tests/*
58     # Makefile tries to create the directory /var/lib/swtpm-localca, which fails
59     substituteInPlace samples/Makefile.am \
60         --replace 'install-data-local:' 'do-not-execute:'
62     # Use the correct path to the certtool binary
63     # instead of relying on it being in the environment
64     substituteInPlace src/swtpm_localca/swtpm_localca.c \
65       --replace \
66         '# define CERTTOOL_NAME "gnutls-certtool"' \
67         '# define CERTTOOL_NAME "${gnutls}/bin/certtool"' \
68       --replace \
69         '# define CERTTOOL_NAME "certtool"' \
70         '# define CERTTOOL_NAME "${gnutls}/bin/certtool"'
72     substituteInPlace tests/common --replace \
73         'CERTTOOL=gnutls-certtool;;' \
74         'CERTTOOL=certtool;;'
76     # Fix error on macOS:
77     # stat: invalid option -- '%'
78     # This is caused by the stat program not being the BSD version,
79     # as is expected by the test
80     substituteInPlace tests/common --replace \
81         'if [[ "$(uname -s)" =~ (Linux|CYGWIN_NT-) ]]; then' \
82         'if [[ "$(uname -s)" =~ (Linux|Darwin|CYGWIN_NT-) ]]; then'
84     # Otherwise certtool seems to pick up the system language on macOS,
85     # which might cause a test to fail
86     substituteInPlace tests/test_swtpm_setup_create_cert --replace \
87         '$CERTTOOL' \
88         'LC_ALL=C.UTF-8 $CERTTOOL'
89   '';
91   doCheck = true;
92   enableParallelBuilding = true;
94   outputs = [ "out" "man" ];
96   passthru.tests = { inherit (nixosTests) systemd-cryptenroll; };
98   meta = with lib; {
99     description = "Libtpms-based TPM emulator";
100     homepage = "https://github.com/stefanberger/swtpm";
101     license = licenses.bsd3;
102     maintainers = [ maintainers.baloo ];
103   };