forked from mirrors/nixpkgs
c77e2cc557
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.
109 lines
2.6 KiB
Nix
109 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 ];
|
|
};
|
|
}
|