summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2020-06-19 12:35:26 -0400
committerGitHub <noreply@github.com>2020-06-19 12:35:26 -0400
commit2590885605a38b618b0179a08eb103c8f37e5d1d (patch)
treeb7f571332d1a0207bed4a657565688e071c55a30 /pkgs
parentbe2947a87a4afcc48ec8d85b1a2909ffd2d7412e (diff)
parenta5bdbb895d9c34929a1d7745e615023f30f76fad (diff)
downloadnixpkgs-2590885605a38b618b0179a08eb103c8f37e5d1d.tar
nixpkgs-2590885605a38b618b0179a08eb103c8f37e5d1d.tar.gz
nixpkgs-2590885605a38b618b0179a08eb103c8f37e5d1d.tar.bz2
nixpkgs-2590885605a38b618b0179a08eb103c8f37e5d1d.tar.lz
nixpkgs-2590885605a38b618b0179a08eb103c8f37e5d1d.tar.xz
nixpkgs-2590885605a38b618b0179a08eb103c8f37e5d1d.tar.zst
nixpkgs-2590885605a38b618b0179a08eb103c8f37e5d1d.zip
Merge pull request #89099 from alexbiehl/alex/py-skein
python3Packages.skein: init at 0.8.0
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/python-modules/skein/default.nix39
-rw-r--r--pkgs/development/python-modules/skein/skeinjar.nix21
-rw-r--r--pkgs/development/python-modules/skein/skeinrepo.nix46
-rw-r--r--pkgs/top-level/python-packages.nix2
4 files changed, 108 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/skein/default.nix b/pkgs/development/python-modules/skein/default.nix
new file mode 100644
index 00000000000..630c4370a87
--- /dev/null
+++ b/pkgs/development/python-modules/skein/default.nix
@@ -0,0 +1,39 @@
+{ buildPythonPackage
+, callPackage
+, fetchPypi
+, isPy27
+, jre
+, lib
+, pythonPackages
+, stdenv
+}:
+
+let
+  pname = "skein";
+  version = "0.8.0";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0nb64p1hzshgi1kfc2jx1v9vn8b0wzs50460wfra3fsxh0ap66ab";
+  };
+  skeinJar = callPackage ./skeinjar.nix { inherit src version; };
+in
+buildPythonPackage rec {
+  inherit pname version src;
+  disabled = isPy27;
+
+  propagatedBuildInputs = with pythonPackages; [ cryptography grpcio grpcio-tools jupyter pytest pyyaml requests jre ];
+
+  preBuild = ''
+    # Ensure skein.jar exists skips the maven build in setup.py
+    mkdir -p skein/java
+    ln -s ${skeinJar} skein/java/skein.jar
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://jcristharif.com/skein";
+    description = "A tool and library for easily deploying applications on Apache YARN";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ alexbiehl ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/skein/skeinjar.nix b/pkgs/development/python-modules/skein/skeinjar.nix
new file mode 100644
index 00000000000..c1a0d8a5751
--- /dev/null
+++ b/pkgs/development/python-modules/skein/skeinjar.nix
@@ -0,0 +1,21 @@
+{ callPackage, stdenv, maven, src, version }:
+
+let
+  skeinRepo = callPackage ./skeinrepo.nix { inherit src version; };
+in
+stdenv.mkDerivation rec {
+  name = "skein-${version}.jar";
+
+  inherit src;
+
+  nativeBuildInputs = [ maven ];
+
+  buildPhase = ''
+    mvn --offline -f java/pom.xml package -Dmaven.repo.local="${skeinRepo}" -Dskein.version=${version} -Dversion=${version}
+  '';
+
+  installPhase = ''
+    # Making sure skein.jar exists skips the maven build in setup.py
+    mv java/target/skein-*.jar $out
+  '';
+}
diff --git a/pkgs/development/python-modules/skein/skeinrepo.nix b/pkgs/development/python-modules/skein/skeinrepo.nix
new file mode 100644
index 00000000000..85b4f19c8f7
--- /dev/null
+++ b/pkgs/development/python-modules/skein/skeinrepo.nix
@@ -0,0 +1,46 @@
+{ autoPatchelfHook, lib, maven, stdenv, src, version }:
+
+stdenv.mkDerivation rec {
+  name = "skein-${version}-maven-repo";
+
+  inherit src;
+
+  nativeBuildInputs = [ maven ] ++ lib.optional stdenv.isLinux autoPatchelfHook;
+
+  doBuild = false;
+
+  installPhase = ''
+    mkdir -p $out
+
+    archs="${
+      if stdenv.isLinux
+      then "linux-x86_32 linux-x86_64"
+      else "osx-x86_64"
+    }"
+
+    for arch in $archs
+    do
+      mvn -Dmaven.repo.local=$out dependency:get -Dartifact=com.google.protobuf:protoc:3.0.0:exe:$arch
+      mvn -Dmaven.repo.local=$out dependency:get -Dartifact=io.grpc:protoc-gen-grpc-java:1.16.0:exe:$arch
+    done
+
+    if ${ lib.boolToString stdenv.isLinux }
+    then
+      autoPatchelf $out
+    fi
+
+    # We have to use maven package here as dependency:go-offline doesn't
+    # fetch every required jar.
+    mvn -f java/pom.xml -Dmaven.repo.local=$out package
+
+    rm $(find $out -name _remote.repositories)
+    rm $(find $out -name resolver-status.properties)
+  '';
+
+  outputHashMode = "recursive";
+  outputHashAlgo = "sha256";
+  outputHash = if stdenv.isLinux
+    then "12f0q3444qw6y4f6qsa9540a0fz4cgi844zzi8z1phqn3k4dnl6v"
+    else "0bjbwiv17cary1isxca0m2hsvgs1i5fh18z247h1hky73lnhbrz8";
+
+} // lib.optionalAttrs stdenv.isLinux { dontAutoPatchelf = true; }
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index a1c03bc204e..0ecba8ceb46 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -6421,6 +6421,8 @@ in {
 
   python_statsd = callPackage ../development/python-modules/python_statsd { };
 
+  skein = callPackage ../development/python-modules/skein { };
+
   stompclient = callPackage ../development/python-modules/stompclient { };
 
   subdownloader = callPackage ../development/python-modules/subdownloader { };