aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/tools/eclipse-mat/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/tools/eclipse-mat/default.nix')
-rw-r--r--nixpkgs/pkgs/development/tools/eclipse-mat/default.nix119
1 files changed, 119 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/eclipse-mat/default.nix b/nixpkgs/pkgs/development/tools/eclipse-mat/default.nix
new file mode 100644
index 00000000000..44411d0db72
--- /dev/null
+++ b/nixpkgs/pkgs/development/tools/eclipse-mat/default.nix
@@ -0,0 +1,119 @@
+{ buildEnv
+, fetchurl
+, fontconfig
+, freetype
+, glib
+, gsettings-desktop-schemas
+, gtk3
+, jdk11
+, lib
+, libX11
+, libXrender
+, libXtst
+, makeDesktopItem
+, makeWrapper
+, shared-mime-info
+, stdenv
+, unzip
+, webkitgtk
+, zlib
+}:
+
+with lib;
+let
+ pVersion = "1.10.0.20200225";
+ pVersionTriple = splitVersion pVersion;
+ majorVersion = elemAt pVersionTriple 0;
+ minorVersion = elemAt pVersionTriple 1;
+ patchVersion = elemAt pVersionTriple 2;
+ baseVersion = "${majorVersion}.${minorVersion}.${patchVersion}";
+ jdk = jdk11;
+in
+stdenv.mkDerivation rec {
+ pname = "eclipse-mat";
+ version = "${pVersion}";
+
+ src = fetchurl {
+ url = "http://ftp.halifax.rwth-aachen.de/eclipse//mat/${baseVersion}/rcp/MemoryAnalyzer-${version}-linux.gtk.x86_64.zip";
+ sha256 = "11cg01gjjvlm6lr6z6rwqs1r31xx5pxddnz55ca0s33lrnywf9fx";
+ };
+
+ desktopItem = makeDesktopItem {
+ name = "eclipse-mat";
+ exec = "eclipse-mat";
+ icon = "eclipse";
+ comment = "Eclipse Memory Analyzer";
+ desktopName = "Eclipse MAT";
+ genericName = "Java Memory Analyzer";
+ categories = "Development;";
+ };
+
+ unpackPhase = ''
+ unzip $src
+ '';
+
+ buildCommand = ''
+ mkdir -p $out
+ unzip $src
+ mv mat $out
+
+ # Patch binaries.
+ interpreter=$(echo ${stdenv.glibc.out}/lib/ld-linux*.so.2)
+ libCairo=$out/eclipse/libcairo-swt.so
+ patchelf --set-interpreter $interpreter $out/mat/MemoryAnalyzer
+ [ -f $libCairo ] && patchelf --set-rpath ${
+ stdenv.lib.makeLibraryPath [ freetype fontconfig libX11 libXrender zlib ]
+ } $libCairo
+
+ # Create wrapper script. Pass -configuration to store settings in ~/.eclipse-mat/<version>
+ makeWrapper $out/mat/MemoryAnalyzer $out/bin/eclipse-mat \
+ --prefix PATH : ${jdk}/bin \
+ --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath ([ glib gtk3 libXtst webkitgtk ])} \
+ --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
+ --add-flags "-configuration \$HOME/.eclipse-mat/''${version}/configuration"
+
+ # Create desktop item.
+ mkdir -p $out/share/applications
+ cp ${desktopItem}/share/applications/* $out/share/applications
+ mkdir -p $out/share/pixmaps
+ find $out/mat/plugins -name 'eclipse*.png' -type f -exec cp {} $out/share/pixmaps \;
+ mv $out/share/pixmaps/eclipse64.png $out/share/pixmaps/eclipse.png
+ '';
+
+ buildInputs = [
+ fontconfig
+ freetype
+ glib
+ gsettings-desktop-schemas
+ gtk3
+ jdk
+ libX11
+ libXrender
+ libXtst
+ makeWrapper
+ zlib
+ unzip
+ shared-mime-info
+ webkitgtk
+ ];
+
+ dontBuild = true;
+ dontConfigure = true;
+
+ meta = with stdenv.lib; {
+ description = "Fast and feature-rich Java heap analyzer";
+ longDescription = ''
+ The Eclipse Memory Analyzer is a tool that helps you find memory
+ leaks and reduce memory consumption. Use the Memory Analyzer to
+ analyze productive heap dumps with hundreds of millions of
+ objects, quickly calculate the retained sizes of objects, see
+ who is preventing the Garbage Collector from collecting objects,
+ run a report to automatically extract leak suspects.
+ '';
+ homepage = "https://www.eclipse.org/mat";
+ license = licenses.epl20;
+ maintainers = [ maintainers.ktor ];
+ platforms = [ "x86_64-linux" ];
+ };
+
+}