atom, electron, vscode: split dependencies to atomEnv

fixes #14890
This commit is contained in:
Nikolay Amiantov 2016-04-22 13:51:11 +03:00 committed by Jakob Gillich
parent b2426adf1c
commit 6185f74531
6 changed files with 52 additions and 88 deletions

View File

@ -1,20 +1,6 @@
{ stdenv, fetchurl, lib, makeDesktopItem, makeWrapper, zlib, glib, alsaLib { stdenv, fetchurl, lib, makeWrapper, gvfs, atomEnv }:
, dbus, gtk, atk, pango, freetype, fontconfig, libgnome_keyring3, gdk_pixbuf
, gvfs, cairo, cups, expat, libgpgerror, nspr, gconf, nss, xorg, libcap, systemd
}:
let stdenv.mkDerivation rec {
atomPkgs = [
stdenv.cc.cc zlib glib dbus gtk atk pango freetype libgnome_keyring3
fontconfig gdk_pixbuf cairo cups expat libgpgerror alsaLib nspr gconf nss
xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst
xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr
xorg.libXcursor libcap systemd
];
atomLib = lib.makeLibraryPath atomPkgs;
atomLib64 = lib.makeSearchPathOutputs "lib64" ["lib"] atomPkgs;
in stdenv.mkDerivation rec {
name = "atom-${version}"; name = "atom-${version}";
version = "1.6.2"; version = "1.6.2";
@ -26,25 +12,23 @@ in stdenv.mkDerivation rec {
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
phases = [ "installPhase" "fixupPhase" ]; buildCommand = ''
mkdir -p $out/usr/
installPhase = ''
mkdir -p $out
ar p $src data.tar.gz | tar -C $out -xz ./usr ar p $src data.tar.gz | tar -C $out -xz ./usr
substituteInPlace $out/usr/share/applications/atom.desktop \ substituteInPlace $out/usr/share/applications/atom.desktop \
--replace /usr/share/atom $out/bin --replace /usr/share/atom $out/bin
mv $out/usr/* $out/ mv $out/usr/* $out/
rm -r $out/share/lintian rm -r $out/share/lintian
rm -r $out/usr/ rm -r $out/usr/
wrapProgram $out/bin/atom \
--prefix "PATH" : "${gvfs}/bin"
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${atomEnv.libPath}:$out/share/atom" \
$out/share/atom/atom $out/share/atom/atom
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${atomEnv.libPath}" \
$out/share/atom/resources/app/apm/bin/node $out/share/atom/resources/app/apm/bin/node
wrapProgram $out/bin/atom \
--prefix "LD_LIBRARY_PATH" : "${atomLib}:${atomLib64}" \
--prefix "PATH" : "${gvfs}/bin"
wrapProgram $out/bin/apm \
--prefix "LD_LIBRARY_PATH" : "${atomLib}:${atomLib64}"
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -0,0 +1,19 @@
{ stdenv, lib, zlib, glib, alsaLib, dbus, gtk, atk, pango, freetype, fontconfig
, libgnome_keyring3, gdk_pixbuf, gvfs, cairo, cups, expat, libgpgerror, nspr
, gconf, nss, xorg, libcap, systemd, libnotify
}:
let
packages = [
stdenv.cc.cc zlib glib dbus gtk atk pango freetype libgnome_keyring3
fontconfig gdk_pixbuf cairo cups expat libgpgerror alsaLib nspr gconf nss
xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst
xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr
xorg.libXcursor libcap systemd libnotify
];
libPathNative = lib.makeLibraryPath packages;
libPath64 = lib.makeSearchPathOutputs "lib64" ["lib"] packages;
libPath = "${libPathNative}:${libPath64}";
in { inherit packages libPath; }

View File

@ -1,10 +1,6 @@
{ stdenv, callPackage, fetchurl, unzip { stdenv, lib, callPackage, fetchurl, unzip, atomEnv }:
, ...
} @ args:
let let
atomEnv = callPackage ../../../development/tools/electron/env-atom.nix (args);
version = "0.10.10"; version = "0.10.10";
rev = "5b5f4db87c10345b9d5c8d0bed745bcad4533135"; rev = "5b5f4db87c10345b9d5c8d0bed745bcad4533135";
sha256 = if stdenv.system == "i686-linux" then "1mmgq4fxi2h4hvz7yxgzzyvlznkb42qwr8i1g2b1akdlgnrvvpby" sha256 = if stdenv.system == "i686-linux" then "1mmgq4fxi2h4hvz7yxgzzyvlznkb42qwr8i1g2b1akdlgnrvvpby"
@ -30,21 +26,16 @@ in
buildInputs = [ unzip ]; buildInputs = [ unzip ];
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/lib/vscode $out/bin
cp -r ./* $out/bin cp -r ./* $out/lib/vscode
ln -s $out/lib/vscode/code $out/bin
${if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") then ''
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
$out/bin/code
'' else ""}
''; '';
postFixup = '' fixupPhase = lib.optionalString (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") ''
${if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") then '' patchelf \
patchelf \ --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${atomEnv}/lib:${atomEnv}/lib64:$out/bin:$(patchelf --print-rpath $out/bin/code)" \ --set-rpath "${atomEnv.libPath}:$out/lib/vscode" \
$out/bin/code $out/lib/vscode/code
'' else ""}
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -1,10 +1,6 @@
{ stdenv, callPackage, fetchurl, unzip { stdenv, lib, callPackage, fetchurl, unzip, atomEnv }:
, ...
} @ args:
let stdenv.mkDerivation rec {
atomEnv = callPackage ./env-atom.nix (args);
in stdenv.mkDerivation rec {
name = "electron-${version}"; name = "electron-${version}";
version = "0.36.2"; version = "0.36.2";
@ -14,23 +10,17 @@ in stdenv.mkDerivation rec {
name = "${name}.zip"; name = "${name}.zip";
}; };
buildInputs = [ atomEnv unzip ]; buildInputs = [ unzip ];
phases = [ "installPhase" "fixupPhase" ]; buildCommand = ''
mkdir -p $out/lib/electron $out/bin
unzip -d $out/lib/electron $src
ln -s $out/lib/electron/electron $out/bin
unpackCmd = "unzip";
installPhase = ''
mkdir -p $out/bin
unzip -d $out/bin $src
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
$out/bin/electron
'';
postFixup = ''
patchelf \ patchelf \
--set-rpath "${atomEnv}/lib:${atomEnv}/lib64:$out/bin:$(patchelf --print-rpath $out/bin/electron)" \ --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
$out/bin/electron --set-rpath "${atomEnv.libPath}:$out/lib/electron" \
$out/lib/electron/electron
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -1,17 +0,0 @@
{ stdenv, buildEnv, zlib, glib, alsaLib
, dbus, gtk, atk, pango, freetype, fontconfig, libgnome_keyring3, gdk_pixbuf
, cairo, cups, expat, libgpgerror, nspr, gconf, nss, xorg, libcap
, systemd, libnotify
, ...
}:
buildEnv {
name = "env-atom";
paths = [
stdenv.cc.cc zlib glib dbus gtk atk pango freetype libgnome_keyring3
fontconfig gdk_pixbuf cairo cups expat libgpgerror alsaLib nspr gconf nss
xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst
xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr
xorg.libXcursor libcap systemd libnotify
];
}

View File

@ -5700,10 +5700,7 @@ in
astyle = callPackage ../development/tools/misc/astyle { }; astyle = callPackage ../development/tools/misc/astyle { };
electron = callPackage ../development/tools/electron { electron = callPackage ../development/tools/electron { };
gconf = pkgs.gnome.GConf;
};
autobuild = callPackage ../development/tools/misc/autobuild { }; autobuild = callPackage ../development/tools/misc/autobuild { };
@ -11647,10 +11644,12 @@ in
artha = callPackage ../applications/misc/artha { }; artha = callPackage ../applications/misc/artha { };
atom = callPackage ../applications/editors/atom { atomEnv = callPackage ../applications/editors/atom/env.nix {
gconf = gnome.GConf; gconf = gnome.GConf;
}; };
atom = callPackage ../applications/editors/atom { };
aseprite = callPackage ../applications/editors/aseprite { aseprite = callPackage ../applications/editors/aseprite {
giflib = giflib_4_1; giflib = giflib_4_1;
}; };
@ -14253,9 +14252,7 @@ in
vorbis-tools = callPackage ../applications/audio/vorbis-tools { }; vorbis-tools = callPackage ../applications/audio/vorbis-tools { };
vscode = callPackage ../applications/editors/vscode { vscode = callPackage ../applications/editors/vscode { };
gconf = pkgs.gnome.GConf;
};
vue = callPackage ../applications/misc/vue { }; vue = callPackage ../applications/misc/vue { };