python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / tools / security / sequoia / default.nix
blobedeaec56daf2db4f3aaf3c6079c771f4eb5a7611
1 { stdenv
2 , fetchFromGitLab
3 , fetchpatch
4 , lib
5 , darwin
6 , git
7 , nettle
8 # Use the same llvmPackages version as Rust
9 , llvmPackages_12
10 , cargo
11 , rustc
12 , rustPlatform
13 , pkg-config
14 , glib
15 , openssl
16 , sqlite
17 , capnproto
18 , ensureNewerSourcesForZipFilesHook
19 , pythonSupport ? true
20 , pythonPackages ? null
23 assert pythonSupport -> pythonPackages != null;
25 rustPlatform.buildRustPackage rec {
26   pname = "sequoia";
27   # Upstream has separate version numbering for the library and the CLI frontend.
28   # This derivation provides the CLI frontend, and thus uses its version number.
29   version = "0.27.0";
31   src = fetchFromGitLab {
32     owner = "sequoia-pgp";
33     repo = "sequoia";
34     rev = "sq/v${version}";
35     sha256 = "sha256-KhJAXpj47Tvds5SLYwnsNeIlPf9QEopoCzsvvHgCwaI=";
36   };
38   cargoSha256 = "sha256-Y7iiZVIT9Vbe4YmTfGTU8p3H3odQKms2FBnnWgvF7mI=";
40   patches = [
41     (fetchpatch
42       { url = "https://gitlab.com/sequoia-pgp/sequoia/-/commit/7916f90421ecb9a75e32f0284459bcc9a3fd02b0.patch";
43         sha256 = "sha256-KBBn6XaGzIT0iVzoCYsS0N+OkZzGuWmUmIF2hl49FEI=";
44       }
45     )
46   ];
48   nativeBuildInputs = [
49     pkg-config
50     cargo
51     rustc
52     git
53     llvmPackages_12.libclang.lib
54     llvmPackages_12.clang
55     ensureNewerSourcesForZipFilesHook
56     capnproto
57   ] ++
58     lib.optionals pythonSupport [ pythonPackages.setuptools ]
59   ;
61   checkInputs = lib.optionals pythonSupport [
62     pythonPackages.pytest
63     pythonPackages.pytest-runner
64   ];
66   buildInputs = [
67     openssl
68     sqlite
69     nettle
70   ] ++ lib.optionals pythonSupport [ pythonPackages.python pythonPackages.cffi ]
71     ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ]
72   ;
74   makeFlags = [
75     "PREFIX=${placeholder "out"}"
76     # Defaults to "ginstall" from some reason, although upstream's Makefiles check uname
77     "INSTALL=install"
78   ];
80   buildFlags = [
81     "build-release"
82   ];
84   LIBCLANG_PATH = "${llvmPackages_12.libclang.lib}/lib";
86   # Sometimes, tests fail on CI (ofborg) & hydra without this
87   checkFlags = [
88     # doctest for sequoia-ipc fail for some reason
89     "--skip=macros::assert_send_and_sync"
90     "--skip=macros::time_it"
91   ];
93   preInstall = lib.optionalString pythonSupport ''
94     export installFlags="PYTHONPATH=$PYTHONPATH:$out/${pythonPackages.python.sitePackages}"
95   '' + lib.optionalString (!pythonSupport) ''
96     export makeFlags="PYTHON=disable"
97   '';
99   # Don't use buildRustPackage phases, only use it for rust deps setup
100   configurePhase = null;
101   buildPhase = null;
102   doCheck = true;
103   checkPhase = null;
104   installPhase = null;
106   meta = with lib; {
107     description = "A cool new OpenPGP implementation";
108     homepage = "https://sequoia-pgp.org/";
109     license = licenses.gpl2Plus;
110     maintainers = with maintainers; [ minijackson doronbehar ];
111     mainProgram = "sq";
112   };