* Eclipse: don't use an ugly "version" argument. Instead there now is
a function "buildEclipse" that takes a binary Eclipse distribution plus metadata as arguments. The package name now distinguishes between Eclipse distributions (e.g. "eclipse-sdk" for Classic, "eclipse-cpp" for the C/C++ IDE). svn path=/nixpkgs/trunk/; revision=26787
This commit is contained in:
parent
4f3f7bd4ad
commit
e91e1cfe76
@ -1,153 +1,114 @@
|
|||||||
{ stdenv, fetchurl, patchelf, makeDesktopItem, makeWrapper
|
{ stdenv, fetchurl, patchelf, makeDesktopItem, makeWrapper
|
||||||
, freetype, fontconfig, libX11, libXext, libXrender, zlib
|
, freetype, fontconfig, libX11, libXext, libXrender, zlib
|
||||||
, glib, gtk, libXtst, jre
|
, 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;
|
assert stdenv ? glibc;
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
let
|
||||||
name = "eclipse-${v}";
|
|
||||||
|
buildEclipse =
|
||||||
src =
|
{ name, src, description }:
|
||||||
if v == "3.5.2" then
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
inherit name src;
|
||||||
|
|
||||||
|
desktopItem = makeDesktopItem {
|
||||||
|
name = "Eclipse";
|
||||||
|
exec = "eclipse";
|
||||||
|
icon = "eclipse";
|
||||||
|
comment = "Integrated Development Environment";
|
||||||
|
desktopName = "Eclipse IDE";
|
||||||
|
genericName = "Integrated Development Environment";
|
||||||
|
categories = "Application;Development;";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ makeWrapper patchelf ];
|
||||||
|
|
||||||
|
buildCommand = ''
|
||||||
|
# Unpack tarball.
|
||||||
|
ensureDir $out
|
||||||
|
tar xfvz $src -C $out
|
||||||
|
|
||||||
|
# Patch binaries.
|
||||||
|
interpreter=$(echo ${stdenv.glibc}/lib/ld-linux*.so.2)
|
||||||
|
patchelf --set-interpreter $interpreter $out/eclipse/eclipse
|
||||||
|
patchelf --set-rpath ${freetype}/lib:${fontconfig}/lib:${libX11}/lib:${libXrender}/lib:${zlib}/lib $out/eclipse/libcairo-swt.so
|
||||||
|
|
||||||
|
# Create wrapper script. Pass -configuration to store
|
||||||
|
# settings in ~/.eclipse/org.eclipse.platform_<version> rather
|
||||||
|
# than ~/.eclipse/org.eclipse.platform_<version>_<number>.
|
||||||
|
productId=$(sed 's/id=//; t; d' $out/eclipse/.eclipseproduct)
|
||||||
|
productVersion=$(sed 's/version=//; t; d' $out/eclipse/.eclipseproduct)
|
||||||
|
|
||||||
|
makeWrapper $out/eclipse/eclipse $out/bin/eclipse \
|
||||||
|
--prefix PATH : ${jre}/bin \
|
||||||
|
--prefix LD_LIBRARY_PATH : ${glib}/lib:${gtk}/lib:${libXtst}/lib \
|
||||||
|
--add-flags "-configuration \$HOME/.eclipse/''${productId}_$productVersion/configuration"
|
||||||
|
|
||||||
|
# Create desktop item.
|
||||||
|
ensureDir $out/share/applications
|
||||||
|
cp ${desktopItem}/share/applications/* $out/share/applications
|
||||||
|
''; # */
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = http://www.eclipse.org/;
|
||||||
|
inherit description;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
in {
|
||||||
|
|
||||||
|
eclipse_sdk_35 = buildEclipse {
|
||||||
|
name = "eclipse-sdk-3.5.2";
|
||||||
|
description = "Eclipse Classic";
|
||||||
|
src =
|
||||||
if stdenv.system == "x86_64-linux" then
|
if stdenv.system == "x86_64-linux" then
|
||||||
fetchurl {
|
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;
|
url = http://archive.eclipse.org/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk-x86_64.tar.gz;
|
||||||
md5 = "54e2ce0660b2b1b0eb4267acf70ea66d";
|
md5 = "54e2ce0660b2b1b0eb4267acf70ea66d";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
fetchurl {
|
fetchurl {
|
||||||
url = http://mirror.selfnet.de/eclipse/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk.tar.gz;
|
url = http://archive.eclipse.org/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk.tar.gz;
|
||||||
md5 = "bde55a2354dc224cf5f26e5320e72dac";
|
md5 = "bde55a2354dc224cf5f26e5320e72dac";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# !!! Use mirror://eclipse/.
|
||||||
|
|
||||||
|
eclipse_sdk_36 = buildEclipse {
|
||||||
|
name = "eclipse-sdk-3.6.2";
|
||||||
|
description = "Eclipse Classic";
|
||||||
|
src =
|
||||||
|
if stdenv.system == "x86_64-linux" then
|
||||||
|
fetchurl {
|
||||||
|
url = http://ftp.ing.umu.se/mirror/eclipse/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-linux-gtk-x86_64.tar.gz;
|
||||||
|
sha256 = "0dfcfadcd6337c897fbfd5b292de481931dfce12d43289ecb93691fd27dd47f4";
|
||||||
}
|
}
|
||||||
else if v == "3.5.1" then
|
else
|
||||||
if stdenv.system == "x86_64-linux" then
|
fetchurl {
|
||||||
fetchurl {
|
url = http://ftp.ing.umu.se/mirror/eclipse/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-linux-gtk.tar.gz;
|
||||||
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 = "1bh8ykliqr8wbciv13vpiy50rvm7yszk7y8dslr796dbwhi5b1cj";
|
||||||
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 if v == "3.6.2" then
|
|
||||||
if stdenv.system == "x86_64-linux" then
|
|
||||||
fetchurl {
|
|
||||||
url = http://ftp.ing.umu.se/mirror/eclipse/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-linux-gtk-x86_64.tar.gz;
|
|
||||||
sha256 = "0dfcfadcd6337c897fbfd5b292de481931dfce12d43289ecb93691fd27dd47f4";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
fetchurl {
|
|
||||||
url = http://ftp.ing.umu.se/mirror/eclipse/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-linux-gtk.tar.gz;
|
|
||||||
sha256 = "1bh8ykliqr8wbciv13vpiy50rvm7yszk7y8dslr796dbwhi5b1cj";
|
|
||||||
}
|
|
||||||
else throw "no source for eclipse version ${v} known";
|
|
||||||
|
|
||||||
desktopItem = makeDesktopItem {
|
|
||||||
name = "Eclipse";
|
|
||||||
exec = "eclipse";
|
|
||||||
icon = "eclipse";
|
|
||||||
comment = "Integrated Development Environment";
|
|
||||||
desktopName = "Eclipse IDE";
|
|
||||||
genericName = "Integrated Development Environment";
|
|
||||||
categories = "Application;Development;";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ makeWrapper patchelf ];
|
eclipse_cpp_36 = buildEclipse {
|
||||||
|
name = "eclipse-cpp-3.6.2";
|
||||||
buildCommand = ''
|
description = "Eclipse IDE for C/C++ Developers";
|
||||||
# Unpack tarball
|
src =
|
||||||
ensureDir $out
|
if stdenv.system == "x86_64-linux" then
|
||||||
tar xfvz $src -C $out
|
fetchurl {
|
||||||
|
url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/technology/epp/downloads/release/helios/SR2/eclipse-cpp-helios-SR2-linux-gtk-x86_64.tar.gz;
|
||||||
# Patch binaries
|
sha1 = "6f914e11fa15a900c46825e4aa8299afd76e7e65";
|
||||||
interpreter=$(echo ${stdenv.glibc}/lib/ld-linux*.so.2)
|
}
|
||||||
patchelf --set-interpreter $interpreter $out/eclipse/eclipse
|
else
|
||||||
patchelf --set-rpath ${freetype}/lib:${fontconfig}/lib:${libX11}/lib:${libXrender}/lib:${zlib}/lib $out/eclipse/libcairo-swt.so
|
fetchurl {
|
||||||
|
url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/technology/epp/downloads/release/helios/SR2/eclipse-cpp-helios-SR2-linux-gtk.tar.gz;
|
||||||
# Create wrapper script
|
sha1 = "1156e4bc0253ae3a3a4e54839e4944dc64d3108f";
|
||||||
makeWrapper $out/eclipse/eclipse $out/bin/eclipse \
|
};
|
||||||
--prefix PATH : ${jre}/bin \
|
|
||||||
--prefix LD_LIBRARY_PATH : ${glib}/lib:${gtk}/lib:${libXtst}/lib
|
|
||||||
|
|
||||||
# Create desktop item
|
|
||||||
ensureDir $out/share/applications
|
|
||||||
cp ${desktopItem}/share/applications/* $out/share/applications
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
homepage = http://www.eclipse.org/;
|
|
||||||
description = "A extensible multi-language software development environment";
|
|
||||||
longDescription = ''
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5920,15 +5920,7 @@ let
|
|||||||
|
|
||||||
eaglemode = callPackage ../applications/misc/eaglemode { };
|
eaglemode = callPackage ../applications/misc/eaglemode { };
|
||||||
|
|
||||||
eclipse = callPackage ../applications/editors/eclipse {
|
eclipses = recurseIntoAttrs (callPackage ../applications/editors/eclipse { });
|
||||||
# GTK 2.18 gives glitches such as mouse clicks on buttons not
|
|
||||||
# working correctly.
|
|
||||||
inherit (gtkLibs216) glib gtk;
|
|
||||||
};
|
|
||||||
eclipseLatest = eclipse.override { version = "latest"; };
|
|
||||||
eclipse36 = callPackage ../applications/editors/eclipse {
|
|
||||||
version = "3.6.2";
|
|
||||||
};
|
|
||||||
|
|
||||||
ed = callPackage ../applications/editors/ed { };
|
ed = callPackage ../applications/editors/ed { };
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user