From d86dace29b16619e858f68eb45f5053ad12ef01d Mon Sep 17 00:00:00 2001 From: Marc Weber Date: Sun, 9 May 2010 14:17:21 +0000 Subject: [PATCH] adding Eclipse note, readding older version. adding eclipseLatest top level name svn path=/nixpkgs/trunk/; revision=21684 --- pkgs/applications/editors/eclipse/default.nix | 100 ++++++++++++++++-- pkgs/top-level/all-packages.nix | 3 +- 2 files changed, 92 insertions(+), 11 deletions(-) diff --git a/pkgs/applications/editors/eclipse/default.nix b/pkgs/applications/editors/eclipse/default.nix index 225c94faa87..937c5df5894 100644 --- a/pkgs/applications/editors/eclipse/default.nix +++ b/pkgs/applications/editors/eclipse/default.nix @@ -1,24 +1,104 @@ { stdenv, fetchurl, patchelf, makeDesktopItem, makeWrapper , freetype, fontconfig, libX11, libXext, libXrender, zlib , glib, gtk, libXtst, jre + # defaulting to this version because not all installable plugins work with 3.5.2 yet + # can also be set to "latest" +, version ? "3.5.1" }: +/* + Note: Eclipse stores various Eclipse instance specific data in ~/.eclipse/*-instance/... + The '*' depends on the executable location of Eclipse. + + So if an Eclipse dependency such as gtk changes a different Eclipse setup directory will be used and + the plugins and update site list and more global settings seem to be gone. + + Staring Eclipse from ~/.nix-profile/bin/eclipse doesn't help. + + So I suggest copying the store path to ~/eclipse and run ~/eclipse/bin/eclipse instead. + + However this still has some drawbacks: If you run nix-collect-garbage the gtk + libs the wrapper refers to might be gone. It should be easy for you to + replace the imortant lines in the wrapper. + + You can also put this eclipse wrapper script (which was removed from + all-packages.nix -r 18458) + to your packageOverrides section and use that to run eclipse/eclipse. + + Its parameterized by system because you may want to run both: i686 and x86_64 systems. + + eclipseRunner = + pkgs.stdenv.mkDerivation { + name = "nix-eclipse-runner-script-${stdenv.system}"; + + phases = "installPhase"; + installPhase = '' + ensureDir $out/bin + target=$out/bin/nix-run-eclipse-${stdenv.system} + cat > $target << EOF + #!/bin/sh + export PATH=${pkgs.jre}/bin:\$PATH + export LD_LIBRARY_PATH=${pkgs.gtkLibs216.glib}/lib:${pkgs.gtkLibs216.gtk}/lib:${pkgs.xlibs.libXtst}/lib + # If you run out of XX space try these? -vmargs -Xms512m -Xmx2048m -XX:MaxPermSize=256m + eclipse="\$1"; shift + exec \$eclipse -vmargs -Xms512m -Xmx2048m -XX:MaxPermSize=256m "\$@" + EOF + chmod +x $target + ''; + + meta = { + description = "provide environment to run Eclipse"; + longDescription = '' + Is there one distribution providing support for up to date Eclipse installations? + There are various reasons why not. + Installing binaries just works. Get Eclipse binaries form eclipse.org/downloads + install this wrapper then run Eclipse like this: + nix-run-eclipse $PATH_TO_ECLIPSE/eclipse/eclipse + and be happy. Everything works including update sites. + ''; + maintainers = [pkgs.lib.maintainers.marcweber]; + platforms = pkgs.lib.platforms.linux; + }; + }; + +*/ + + +let + + v = if version == "latest" then "3.5.2" else version; + +in + assert stdenv ? glibc; stdenv.mkDerivation rec { - name = "eclipse-3.5.2"; + name = "eclipse-${v}"; src = - if stdenv.system == "x86_64-linux" then - fetchurl { - url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk-x86_64.tar.gz; - md5 = "54e2ce0660b2b1b0eb4267acf70ea66d"; + if v == "3.5.2" then + if stdenv.system == "x86_64-linux" then + fetchurl { + url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk-x86_64.tar.gz; + md5 = "54e2ce0660b2b1b0eb4267acf70ea66d"; + } + else + fetchurl { + url = http://mirror.selfnet.de/eclipse/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk.tar.gz; + md5 = "bde55a2354dc224cf5f26e5320e72dac"; + } + else if v == "3.5.1" then + if stdenv.system == "x86_64-linux" then + fetchurl { + url = http://ftp.ing.umu.se/mirror/eclipse/eclipse/downloads/drops/R-3.5.1-200909170800/eclipse-SDK-3.5.1-linux-gtk-x86_64.tar.gz; + sha256 = "132zd7q9q29h978wnlsfbrlszc85r1wj30yqs2aqbv3l5xgny1kk"; + } + else + fetchurl { + url = http://mirrors.linux-bg.org/eclipse/eclipse/downloads/drops/R-3.5.1-200909170800/eclipse-SDK-3.5.1-linux-gtk.tar.gz; + sha256 = "0a0lpa7gxg91zswpahi6fvg3csl4csvlym4z2ad5cc1d4yvicp56"; } - else - fetchurl { - url = http://mirror.selfnet.de/eclipse/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk.tar.gz; - md5 = "bde55a2354dc224cf5f26e5320e72dac"; - }; + else throw "no source for eclipse version ${v} known"; desktopItem = makeDesktopItem { name = "Eclipse"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 71226bc355a..e94adea7bfa 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7358,13 +7358,14 @@ let inherit (xlibs) libX11; }; - eclipse = import ../applications/editors/eclipse { + eclipse = makeOverridable (import ../applications/editors/eclipse) { inherit stdenv fetchurl patchelf makeDesktopItem makeWrapper freetype fontconfig jre zlib; # GTK 2.18 gives glitches such as mouse clicks on buttons not # working correctly. inherit (gtkLibs216) glib gtk; inherit (xlibs) libX11 libXext libXrender libXtst; }; + eclipseLatest = eclipse.override { version = "latest"; }; ed = import ../applications/editors/ed { inherit fetchurl stdenv;