nixpkgs/pkgs/tools/security/sequoia/default.nix
nicoo c77e2cc557 sequoia: 1.0.0 → 0.24.0 (actually an upgrade, see message)
No change in the libraries, but the sq CLI tool was brought to v0.24.0,
which is its second release “which is meant for general use”.

Per Alyssa's request, using sq's version number rather than the library's.
2021-02-07 00:49:43 +00:00

108 lines
2.6 KiB
Nix

{ stdenv
, fetchFromGitLab
, lib
, darwin
, git
, nettle
# Use the same llvmPackages version as Rust
, llvmPackages_10
, cargo
, rustc
, rustPlatform
, pkg-config
, glib
, openssl
, sqlite
, capnproto
, ensureNewerSourcesForZipFilesHook
, pythonSupport ? true
, pythonPackages ? null
}:
assert pythonSupport -> pythonPackages != null;
rustPlatform.buildRustPackage rec {
pname = "sequoia";
# Upstream has separate version numbering for the library and the CLI frontend.
# This derivation provides the CLI frontend, and thus uses its version number.
version = "0.24.0";
src = fetchFromGitLab {
owner = "sequoia-pgp";
repo = "sequoia";
rev = "sq/v${version}";
sha256 = "0zavkf0grkqljyiywcprsiv8igidk8vc3yfj3fzqvbhm43vnnbdw";
};
cargoSha256 = "172f0gsy5hssrqv0l1np3c0qd1ayp6nqbpqmgwrkc4l37y5fn232";
nativeBuildInputs = [
pkg-config
cargo
rustc
git
llvmPackages_10.libclang
llvmPackages_10.clang
ensureNewerSourcesForZipFilesHook
capnproto
] ++
lib.optionals pythonSupport [ pythonPackages.setuptools ]
;
checkInputs = lib.optionals pythonSupport [
pythonPackages.pytest
pythonPackages.pytestrunner
];
buildInputs = [
openssl
sqlite
nettle
] ++ lib.optionals pythonSupport [ pythonPackages.python pythonPackages.cffi ]
++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ]
;
makeFlags = [
"PREFIX=${placeholder "out"}"
# Defaults to "ginstall" from some reason, although upstream's Makefiles check uname
"INSTALL=install"
];
buildFlags = [
"build-release"
];
LIBCLANG_PATH = "${llvmPackages_10.libclang}/lib";
# Sometimes, tests fail on CI (ofborg) & hydra without this
CARGO_TEST_ARGS = "--workspace --exclude sequoia-store";
# Without this, the examples won't build
postPatch = ''
substituteInPlace openpgp-ffi/examples/Makefile \
--replace '-O0 -g -Wall -Werror' '-g'
substituteInPlace ffi/examples/Makefile \
--replace '-O0 -g -Wall -Werror' '-g'
'';
preInstall = lib.optionalString pythonSupport ''
export installFlags="PYTHONPATH=$PYTHONPATH:$out/${pythonPackages.python.sitePackages}"
'' + lib.optionalString (!pythonSupport) ''
export makeFlags="PYTHON=disable"
'';
# Don't use buildRustPackage phases, only use it for rust deps setup
configurePhase = null;
buildPhase = null;
doCheck = true;
checkPhase = null;
installPhase = null;
meta = with lib; {
description = "A cool new OpenPGP implementation";
homepage = "https://sequoia-pgp.org/";
license = licenses.gpl3;
maintainers = with maintainers; [ minijackson doronbehar ];
};
}