diff --git a/pkgs/development/tools/eclipse-mat/default.nix b/pkgs/development/tools/eclipse-mat/default.nix new file mode 100644 index 00000000000..44411d0db72 --- /dev/null +++ b/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/ + 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" ]; + }; + +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 462989e6fc6..9b6dac6bfc3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -183,6 +183,8 @@ in deadcode = callPackage ../development/tools/deadcode { }; + eclipse-mat = callPackage ../development/tools/eclipse-mat { }; + glade = callPackage ../development/tools/glade { }; hobbes = callPackage ../development/tools/hobbes { };