about summary refs log tree commit diff
path: root/pkgs/development/tools/java
diff options
context:
space:
mode:
authorKirill A. Korinsky <kirill@korins.ky>2022-07-01 13:27:52 +0200
committerKirill A. Korinsky <kirill@korins.ky>2022-07-01 13:27:52 +0200
commit84a29ac208037849c25a355cc141c7d7b9b378b1 (patch)
treef38d201ba2bdb4468039fcd223be827477fb867f /pkgs/development/tools/java
parentf4aa10f82aec3727abf5c61347697f5f80113003 (diff)
jprofiler: init at 13.0.2
Diffstat (limited to 'pkgs/development/tools/java')
-rw-r--r--pkgs/development/tools/java/jprofiler/default.nix99
1 files changed, 99 insertions, 0 deletions
diff --git a/pkgs/development/tools/java/jprofiler/default.nix b/pkgs/development/tools/java/jprofiler/default.nix
new file mode 100644
index 0000000000000..e6f0232fe6818
--- /dev/null
+++ b/pkgs/development/tools/java/jprofiler/default.nix
@@ -0,0 +1,99 @@
+{ stdenv
+, lib
+, fetchurl
+, makeWrapper
+, makeDesktopItem
+, copyDesktopItems
+, undmg
+, jdk
+}:
+
+let
+  inherit (stdenv.hostPlatform) system;
+  pname = "jprofiler";
+
+  # 11.1.4 is the last version which can be unpacked by undmg
+  # See: https://github.com/matthewbauer/undmg/issues/9
+  version = if stdenv.isLinux then "13.0.2" else "11.1.4";
+  nameApp = "JProfiler";
+
+  meta = with lib; {
+    description = "JProfiler's intuitive UI helps you resolve performance bottlenecks";
+    longDescription = ''
+      JProfiler's intuitive UI helps you resolve performance bottlenecks,
+      pin down memory leaks and understand threading issues.
+    '';
+    homepage = "https://www.ej-technologies.com/products/jprofiler/overview.html";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ catap ];
+  };
+
+  src = if stdenv.isLinux then fetchurl {
+    url = "https://download-gcdn.ej-technologies.com/jprofiler/jprofiler_linux_${lib.replaceStrings ["."] ["_"]  version}.tar.gz";
+    sha256 = "sha256-x9I7l2ctquCqUymtlQpFXE6+u0Yg773qE6MvAxvCaEE=";
+  } else fetchurl {
+    url = "https://download-gcdn.ej-technologies.com/jprofiler/jprofiler_macos_${lib.replaceStrings ["."] ["_"]  version}.dmg";
+    sha256 = "sha256-WDMGrDsMdY1//WMHgr+/YKSxHWt6A1dD1Pd/MuDOaz8=";
+  };
+
+  srcIcon = fetchurl {
+    url = "https://www.ej-technologies.com/assets/content/header-product-jprofiler@2x-24bc4d84bd2a4eb641a5c8531758ff7c.png";
+    sha256 = "sha256-XUmuqhnNv7mZ3Gb4A0HLSlfiJd5xbCExVsw3hmXHeVE=";
+  };
+
+  desktopItems = makeDesktopItem {
+    name = pname;
+    exec = pname;
+    icon = pname;
+    comment = meta.description;
+    desktopName = nameApp;
+    genericName = "Java Profiler Tool";
+    categories = [ "Development" ];
+  };
+
+  linux = stdenv.mkDerivation {
+    inherit pname version src desktopItems;
+
+    nativeBuildInputs = [ makeWrapper copyDesktopItems ];
+
+    installPhase = ''
+      runHook preInstall
+      cp -r . $out
+
+      rm -f $out/bin/updater
+      rm -rf $out/bin/linux-ppc*
+      rm -rf $out/bin/linux-armhf
+      rm -rf $out/bin/linux-musl*
+
+      for f in $(find $out/bin -type f -executable); do
+        wrapProgram $f --set JAVA_HOME "${jdk.home}"
+      done
+
+      install -Dm644 "${srcIcon}" \
+        "$out/share/icons/hicolor/scalable/apps/jprofiler.png"
+      runHook postInstall
+    '';
+
+    meta = meta // { platforms = lib.platforms.linux; };
+  };
+
+  darwin = stdenv.mkDerivation {
+    inherit pname version src;
+
+    # Archive extraction via undmg fails for this particular version.
+    nativeBuildInputs = [ makeWrapper undmg ];
+
+    sourceRoot = "${nameApp}.app";
+
+    installPhase = ''
+      runHook preInstall
+      mkdir -p $out/{Applications/${nameApp}.app,bin}
+      cp -R . $out/Applications/${nameApp}.app
+      makeWrapper $out/Applications/${nameApp}.app/Contents/MacOS/JavaApplicationStub $out/bin/${pname}
+      runHook postInstall
+    '';
+
+    meta = meta // { platforms = lib.platforms.darwin; };
+  };
+in
+if stdenv.isDarwin then darwin else linux