about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/python-modules/johnnycanencrypt/default.nix
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-01-26 18:06:19 +0000
committerAlyssa Ross <hi@alyssa.is>2021-01-26 18:21:18 +0000
commit7ac6743433dd45ceaead2ca96f6356dc0d064ce6 (patch)
treeb68ec89d7d2a8d2b6e6b1ff94ba26d6af4096350 /nixpkgs/pkgs/development/python-modules/johnnycanencrypt/default.nix
parentc5c7451dbef37b51f52792d6395a670ef5183d27 (diff)
parent891f607d5301d6730cb1f9dcf3618bcb1ab7f10e (diff)
downloadnixlib-7ac6743433dd45ceaead2ca96f6356dc0d064ce6.tar
nixlib-7ac6743433dd45ceaead2ca96f6356dc0d064ce6.tar.gz
nixlib-7ac6743433dd45ceaead2ca96f6356dc0d064ce6.tar.bz2
nixlib-7ac6743433dd45ceaead2ca96f6356dc0d064ce6.tar.lz
nixlib-7ac6743433dd45ceaead2ca96f6356dc0d064ce6.tar.xz
nixlib-7ac6743433dd45ceaead2ca96f6356dc0d064ce6.tar.zst
nixlib-7ac6743433dd45ceaead2ca96f6356dc0d064ce6.zip
Merge commit '891f607d5301d6730cb1f9dcf3618bcb1ab7f10e'
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/johnnycanencrypt/default.nix')
-rw-r--r--nixpkgs/pkgs/development/python-modules/johnnycanencrypt/default.nix99
1 files changed, 99 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/johnnycanencrypt/default.nix b/nixpkgs/pkgs/development/python-modules/johnnycanencrypt/default.nix
new file mode 100644
index 000000000000..77789fa44dbe
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/johnnycanencrypt/default.nix
@@ -0,0 +1,99 @@
+{ lib
+, stdenv
+, rustPlatform
+, fetchFromGitHub
+, pipInstallHook
+, llvmPackages
+, pkg-config
+, maturin
+, pcsclite
+, nettle
+, python
+, requests
+, vcrpy
+, numpy
+, pytestCheckHook
+, pythonOlder
+, PCSC
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "johnnycanencrypt";
+  version = "0.5.0";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "kushaldas";
+    repo = "johnnycanencrypt";
+    rev = "v${version}";
+    sha256 = "192wfrlyylrpzq70yki421mi1smk8q2cyki2a1d03q7h6apib3j4";
+  };
+  cargoPatches = [ ./Cargo.lock.patch ];
+
+  cargoSha256 = "0ifvpdizcdp2c5x2x2j1bhhy5a75q0pk7a63dmh52mlpmh45fy6r";
+
+  LIBCLANG_PATH = llvmPackages.libclang + "/lib";
+
+  propagatedBuildInputs = [
+    requests
+    vcrpy
+  ];
+
+  nativeBuildInputs = [
+    llvmPackages.clang
+    pkg-config
+    python
+    maturin
+    pipInstallHook
+  ];
+
+  buildInputs = [
+    pcsclite
+    nettle
+  ] ++ lib.optionals stdenv.isDarwin [ PCSC ];
+
+  # Needed b/c need to check AFTER python wheel is installed (using Rust Build, not buildPythonPackage)
+  doCheck = false;
+  doInstallCheck = true;
+
+  installCheckInputs = [
+    pytestCheckHook
+    numpy
+  ];
+
+  # Remove with the next release after 0.5.0. This change is required
+  # for compatibility with maturin 0.9.0.
+  postPatch = ''
+    sed '/project-url = /d' -i Cargo.toml
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+    maturin build --release --manylinux off --strip --cargo-extra-args="-j $NIX_BUILD_CORES --frozen"
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    install -Dm644 -t dist target/wheels/*.whl
+    pipInstallPhase
+  '';
+
+  preCheck = ''
+    export TESTDIR=$(mktemp -d)
+    cp -r tests/ $TESTDIR
+    pushd $TESTDIR
+  '';
+
+  postCheck = ''
+    popd
+  '';
+
+  pythonImportsCheck = [ "johnnycanencrypt" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/kushaldas/johnnycanencrypt";
+    description = "Python module for OpenPGP written in Rust";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ _0x4A6F ];
+  };
+}