From 6185f74531b1610fb0e71a4f057e6dbeeb116616 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Fri, 22 Apr 2016 13:51:11 +0300 Subject: [PATCH] atom, electron, vscode: split dependencies to atomEnv fixes #14890 --- pkgs/applications/editors/atom/default.nix | 34 ++++++-------------- pkgs/applications/editors/atom/env.nix | 19 +++++++++++ pkgs/applications/editors/vscode/default.nix | 27 ++++++---------- pkgs/development/tools/electron/default.nix | 30 ++++++----------- pkgs/development/tools/electron/env-atom.nix | 17 ---------- pkgs/top-level/all-packages.nix | 13 +++----- 6 files changed, 52 insertions(+), 88 deletions(-) create mode 100644 pkgs/applications/editors/atom/env.nix delete mode 100644 pkgs/development/tools/electron/env-atom.nix diff --git a/pkgs/applications/editors/atom/default.nix b/pkgs/applications/editors/atom/default.nix index 9f8f6f5fd0cd..5cad049ba32d 100644 --- a/pkgs/applications/editors/atom/default.nix +++ b/pkgs/applications/editors/atom/default.nix @@ -1,20 +1,6 @@ -{ stdenv, fetchurl, lib, makeDesktopItem, makeWrapper, zlib, glib, alsaLib -, dbus, gtk, atk, pango, freetype, fontconfig, libgnome_keyring3, gdk_pixbuf -, gvfs, cairo, cups, expat, libgpgerror, nspr, gconf, nss, xorg, libcap, systemd -}: +{ stdenv, fetchurl, lib, makeWrapper, gvfs, atomEnv }: -let - 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 { +stdenv.mkDerivation rec { name = "atom-${version}"; version = "1.6.2"; @@ -26,25 +12,23 @@ in stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper ]; - phases = [ "installPhase" "fixupPhase" ]; - - installPhase = '' - mkdir -p $out + buildCommand = '' + mkdir -p $out/usr/ ar p $src data.tar.gz | tar -C $out -xz ./usr substituteInPlace $out/usr/share/applications/atom.desktop \ --replace /usr/share/atom $out/bin mv $out/usr/* $out/ rm -r $out/share/lintian rm -r $out/usr/ + wrapProgram $out/bin/atom \ + --prefix "PATH" : "${gvfs}/bin" + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${atomEnv.libPath}:$out/share/atom" \ $out/share/atom/atom patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${atomEnv.libPath}" \ $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; { diff --git a/pkgs/applications/editors/atom/env.nix b/pkgs/applications/editors/atom/env.nix new file mode 100644 index 000000000000..d91d8a4ecbe4 --- /dev/null +++ b/pkgs/applications/editors/atom/env.nix @@ -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; } diff --git a/pkgs/applications/editors/vscode/default.nix b/pkgs/applications/editors/vscode/default.nix index 0d9572ebc223..5e8a39bb101d 100644 --- a/pkgs/applications/editors/vscode/default.nix +++ b/pkgs/applications/editors/vscode/default.nix @@ -1,10 +1,6 @@ -{ stdenv, callPackage, fetchurl, unzip -, ... -} @ args: +{ stdenv, lib, callPackage, fetchurl, unzip, atomEnv }: let - atomEnv = callPackage ../../../development/tools/electron/env-atom.nix (args); - version = "0.10.10"; rev = "5b5f4db87c10345b9d5c8d0bed745bcad4533135"; sha256 = if stdenv.system == "i686-linux" then "1mmgq4fxi2h4hvz7yxgzzyvlznkb42qwr8i1g2b1akdlgnrvvpby" @@ -30,21 +26,16 @@ in buildInputs = [ unzip ]; installPhase = '' - mkdir -p $out/bin - cp -r ./* $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 ""} + mkdir -p $out/lib/vscode $out/bin + cp -r ./* $out/lib/vscode + ln -s $out/lib/vscode/code $out/bin ''; - postFixup = '' - ${if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") then '' - patchelf \ - --set-rpath "${atomEnv}/lib:${atomEnv}/lib64:$out/bin:$(patchelf --print-rpath $out/bin/code)" \ - $out/bin/code - '' else ""} + fixupPhase = lib.optionalString (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") '' + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${atomEnv.libPath}:$out/lib/vscode" \ + $out/lib/vscode/code ''; meta = with stdenv.lib; { diff --git a/pkgs/development/tools/electron/default.nix b/pkgs/development/tools/electron/default.nix index d7d338f7f60e..74adbb3f153d 100644 --- a/pkgs/development/tools/electron/default.nix +++ b/pkgs/development/tools/electron/default.nix @@ -1,10 +1,6 @@ -{ stdenv, callPackage, fetchurl, unzip -, ... -} @ args: +{ stdenv, lib, callPackage, fetchurl, unzip, atomEnv }: -let - atomEnv = callPackage ./env-atom.nix (args); -in stdenv.mkDerivation rec { +stdenv.mkDerivation rec { name = "electron-${version}"; version = "0.36.2"; @@ -14,23 +10,17 @@ in stdenv.mkDerivation rec { 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 \ - --set-rpath "${atomEnv}/lib:${atomEnv}/lib64:$out/bin:$(patchelf --print-rpath $out/bin/electron)" \ - $out/bin/electron + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${atomEnv.libPath}:$out/lib/electron" \ + $out/lib/electron/electron ''; meta = with stdenv.lib; { diff --git a/pkgs/development/tools/electron/env-atom.nix b/pkgs/development/tools/electron/env-atom.nix deleted file mode 100644 index 6c69b2e52ccb..000000000000 --- a/pkgs/development/tools/electron/env-atom.nix +++ /dev/null @@ -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 - ]; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b8a736420553..bba0883c923b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5700,10 +5700,7 @@ in astyle = callPackage ../development/tools/misc/astyle { }; - electron = callPackage ../development/tools/electron { - gconf = pkgs.gnome.GConf; - }; - + electron = callPackage ../development/tools/electron { }; autobuild = callPackage ../development/tools/misc/autobuild { }; @@ -11647,10 +11644,12 @@ in artha = callPackage ../applications/misc/artha { }; - atom = callPackage ../applications/editors/atom { + atomEnv = callPackage ../applications/editors/atom/env.nix { gconf = gnome.GConf; }; + atom = callPackage ../applications/editors/atom { }; + aseprite = callPackage ../applications/editors/aseprite { giflib = giflib_4_1; }; @@ -14253,9 +14252,7 @@ in vorbis-tools = callPackage ../applications/audio/vorbis-tools { }; - vscode = callPackage ../applications/editors/vscode { - gconf = pkgs.gnome.GConf; - }; + vscode = callPackage ../applications/editors/vscode { }; vue = callPackage ../applications/misc/vue { };