about summary refs log tree commit diff
path: root/pkgs/development/tools/global-platform-pro
diff options
context:
space:
mode:
authorLéo Gaspard <leo@gaspard.io>2018-08-01 13:53:33 +0900
committerLéo Gaspard <leo@gaspard.io>2018-08-01 13:53:33 +0900
commitcccfa8f3953933147757d6790ad025e88de32dc0 (patch)
tree11b96e6337790d30e0c1070be0ede1701cb9c3aa /pkgs/development/tools/global-platform-pro
parentf8e8ecde51b49132d7f8d5adb971c0e37eddcdc2 (diff)
downloadnixlib-cccfa8f3953933147757d6790ad025e88de32dc0.tar
nixlib-cccfa8f3953933147757d6790ad025e88de32dc0.tar.gz
nixlib-cccfa8f3953933147757d6790ad025e88de32dc0.tar.bz2
nixlib-cccfa8f3953933147757d6790ad025e88de32dc0.tar.lz
nixlib-cccfa8f3953933147757d6790ad025e88de32dc0.tar.xz
nixlib-cccfa8f3953933147757d6790ad025e88de32dc0.tar.zst
nixlib-cccfa8f3953933147757d6790ad025e88de32dc0.zip
global-platform-pro: init at 0.3.10-rc11
Diffstat (limited to 'pkgs/development/tools/global-platform-pro')
-rw-r--r--pkgs/development/tools/global-platform-pro/default.nix89
1 files changed, 89 insertions, 0 deletions
diff --git a/pkgs/development/tools/global-platform-pro/default.nix b/pkgs/development/tools/global-platform-pro/default.nix
new file mode 100644
index 000000000000..fdbeb82cf206
--- /dev/null
+++ b/pkgs/development/tools/global-platform-pro/default.nix
@@ -0,0 +1,89 @@
+{ stdenv, fetchFromGitHub, jdk, maven, writeText, makeWrapper, jre_headless, pcsclite }:
+
+# TODO: This is quite a bit of duplicated logic with gephy. Factor it out?
+stdenv.mkDerivation rec {
+    pname = "global-platform-pro";
+    version = "0.3.10-rc11";
+    describeVersion = "v0.3.10-rc11-0-g8923747"; # git describe --tags --always --long --dirty
+    name = "${pname}-${version}";
+
+    src = fetchFromGitHub {
+        owner = "martinpaljak";
+        repo = "GlobalPlatformPro";
+        rev = "v${version}";
+        sha256 = "0rk81x2y7vx1caxm6wa59fjrfxmjn7s8yxaxm764p8m2qxk3m4y2";
+    };
+
+    patches = [ (writeText "${name}-version.patch" ''
+        diff --git a/pom.xml b/pom.xml
+        index 1e5a82d..1aa01fe 100644
+        --- a/pom.xml
+        +++ b/pom.xml
+        @@ -121,14 +121,10 @@
+                             </execution>
+                         </executions>
+                         <configuration>
+        -                    <executable>git</executable>
+        +                    <executable>echo</executable>
+                             <outputFile>target/generated-resources/pro/javacard/gp/pro_version.txt</outputFile>
+                             <arguments>
+        -                        <argument>describe</argument>
+        -                        <argument>--tags</argument>
+        -                        <argument>--always</argument>
+        -                        <argument>--long</argument>
+        -                        <argument>--dirty</argument>
+        +                        <argument>${describeVersion}</argument>
+                             </arguments>
+                         </configuration>
+                     </plugin>
+    '') ];
+
+    deps = stdenv.mkDerivation {
+        name = "${name}-deps";
+        inherit src patches;
+        nativeBuildInputs = [ jdk maven ];
+        buildPhase = ''
+            while mvn package -Dmaven.repo.local=$out/.m2 -Dmaven.wagon.rto=5000; [ $? = 1 ]; do
+                echo "timeout, restart maven to continue downloading"
+            done
+        '';
+        # keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside
+        installPhase = ''find $out/.m2 -type f -regex '.+\(\.lastUpdated\|resolver-status\.properties\|_remote\.repositories\)' -delete'';
+        outputHashAlgo = "sha256";
+        outputHashMode = "recursive";
+        outputHash = "15bbi7z9v601all9vr2azh8nk8rpz2vd91yvvw8id6birnbhn3if";
+    };
+
+    nativeBuildInputs = [ jdk maven makeWrapper ];
+
+    buildPhase = ''
+        mvn package --offline -Dmaven.repo.local=$( \
+            cp -dpR ${deps}/.m2 ./ && \
+            chmod +w -R .m2 && \
+            pwd \
+        )/.m2
+    '';
+
+    installPhase = ''
+        mkdir -p $out/lib/java $out/share/java
+        cp -R target/apidocs $out/doc
+        cp target/gp.jar $out/share/java
+        makeWrapper ${jre_headless}/bin/java $out/bin/gp \
+            --add-flags "-jar $out/share/java/gp.jar" \
+            --prefix LD_LIBRARY_PATH : "${pcsclite.out}/lib"
+    '';
+
+    meta = with stdenv.lib; {
+        description = "Command-line utility for managing applets and keys on Java Cards";
+        longDescription = ''
+            This command-line utility can be used to manage applets and keys
+            on Java Cards. It is made available as the `gp` executable.
+
+            The executable requires the PC/SC daemon running for correct execution.
+            If you run NixOS, it can be enabled with `services.pcscd.enable = true;`.
+        '';
+        homepage = https://github.com/martinpaljak/GlobalPlatformPro;
+        license = with licenses; [ lgpl3 ];
+        platforms = platforms.all;
+    };
+}