aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/python-modules/skein
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/skein')
-rw-r--r--nixpkgs/pkgs/development/python-modules/skein/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/skein/skeinjar.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/skein/skeinrepo.nix46
3 files changed, 106 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/skein/default.nix b/nixpkgs/pkgs/development/python-modules/skein/default.nix
new file mode 100644
index 00000000000..630c4370a87
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/skein/skeinjar.nix b/nixpkgs/pkgs/development/python-modules/skein/skeinjar.nix
new file mode 100644
index 00000000000..c1a0d8a5751
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/skein/skeinrepo.nix b/nixpkgs/pkgs/development/python-modules/skein/skeinrepo.nix
new file mode 100644
index 00000000000..85b4f19c8f7
--- /dev/null
+++ b/nixpkgs/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; }