diff options
author | Guillaume Massé <masgui@gmail.com> | 2018-04-06 18:31:10 +0200 |
---|---|---|
committer | zimbatm <zimbatm@zimbatm.com> | 2018-04-06 17:31:10 +0100 |
commit | 15a2dca15c25279843374003c8ae553e3b4af385 (patch) | |
tree | 7e4ad5d07093850bffdba523058a42a7301ce4cb /pkgs/applications/editors/sublime/3 | |
parent | 0af5b254ab6b3a54037ebab6fa09a85f52568d7f (diff) |
Sublime dev (#38383)
* Package sublime-dev build. * sublime3-dev: Init at 3160 * Sublime3: Refactor to share derivation between sublime-text 3 dev and stable * Sublime3: Refactor as a fuction to avoid duplicating parameters * Sublime3: Remove unnecessary rec https://github.com/NixOS/nixpkgs/pull/38383#discussion_r178898901 * sublime3-dev: 3160 -> 3161
Diffstat (limited to 'pkgs/applications/editors/sublime/3')
-rw-r--r-- | pkgs/applications/editors/sublime/3/common.nix | 119 | ||||
-rw-r--r-- | pkgs/applications/editors/sublime/3/packages.nix | 18 |
2 files changed, 137 insertions, 0 deletions
diff --git a/pkgs/applications/editors/sublime/3/common.nix b/pkgs/applications/editors/sublime/3/common.nix new file mode 100644 index 0000000000000..7185a82a9601d --- /dev/null +++ b/pkgs/applications/editors/sublime/3/common.nix @@ -0,0 +1,119 @@ +{buildVersion, x32sha256, x64sha256}: + +{ fetchurl, stdenv, glib, xorg, cairo, gtk2, pango, makeWrapper, openssl, bzip2, + pkexecPath ? "/run/wrappers/bin/pkexec", libredirect, + gksuSupport ? false, gksu, unzip, zip, bash}: + +assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; +assert gksuSupport -> gksu != null; + +let + + libPath = stdenv.lib.makeLibraryPath [glib xorg.libX11 gtk2 cairo pango]; + redirects = [ "/usr/bin/pkexec=${pkexecPath}" ] + ++ stdenv.lib.optional gksuSupport "/usr/bin/gksudo=${gksu}/bin/gksudo"; +in let + archSha256 = + if stdenv.system == "i686-linux" then + x32sha256 + else + x64sha256; + + arch = + if stdenv.system == "i686-linux" then + "x32" + else + "x64"; + + # package with just the binaries + sublime = stdenv.mkDerivation { + name = "sublimetext3-${buildVersion}-bin"; + src = + fetchurl { + name = "sublimetext-${buildVersion}.tar.bz2"; + url = "https://download.sublimetext.com/sublime_text_3_build_${buildVersion}_${arch}.tar.bz2"; + sha256 = archSha256; + }; + + dontStrip = true; + dontPatchELF = true; + buildInputs = [ makeWrapper zip unzip ]; + + # make exec.py in Default.sublime-package use own bash with + # an LD_PRELOAD instead of "/bin/bash" + patchPhase = '' + mkdir Default.sublime-package-fix + ( cd Default.sublime-package-fix + unzip -q ../Packages/Default.sublime-package + substituteInPlace "exec.py" --replace \ + "[\"/bin/bash\"" \ + "[\"$out/sublime_bash\"" + zip -q ../Packages/Default.sublime-package **/* + ) + rm -r Default.sublime-package-fix + ''; + + buildPhase = '' + for i in sublime_text plugin_host crash_reporter; do + patchelf \ + --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath ${libPath}:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"} \ + $i + done + + # Rewrite pkexec|gksudo argument. Note that we can't delete bytes in binary. + sed -i -e 's,/bin/cp\x00,cp\x00\x00\x00\x00\x00\x00,g' sublime_text + ''; + + installPhase = '' + # Correct sublime_text.desktop to exec `sublime' instead of /opt/sublime_text + sed -e "s,/opt/sublime_text/sublime_text,$out/sublime_text," -i sublime_text.desktop + + mkdir -p $out + cp -prvd * $out/ + + # We can't just call /usr/bin/env bash because a relocation error occurs + # when trying to run a build from within Sublime Text + ln -s ${bash}/bin/bash $out/sublime_bash + wrapProgram $out/sublime_bash \ + --set LD_PRELOAD "${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}/libgcc_s.so.1" + + wrapProgram $out/sublime_text \ + --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ + --set NIX_REDIRECTS ${builtins.concatStringsSep ":" redirects} + + # Without this, plugin_host crashes, even though it has the rpath + wrapProgram $out/plugin_host --prefix LD_PRELOAD : ${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}/libgcc_s.so.1:${openssl.out}/lib/libssl.so:${bzip2.out}/lib/libbz2.so + ''; + }; +in stdenv.mkDerivation (rec { + name = "sublimetext3-${buildVersion}"; + + phases = [ "installPhase" ]; + + inherit sublime; + + installPhase = '' + mkdir -p $out/bin + + cat > $out/bin/subl <<-EOF + #!/bin/sh + exec $sublime/sublime_text "\$@" + EOF + chmod +x $out/bin/subl + + ln $out/bin/subl $out/bin/sublime + ln $out/bin/subl $out/bin/sublime3 + mkdir -p $out/share/applications + ln -s $sublime/sublime_text.desktop $out/share/applications/sublime_text.desktop + ln -s $sublime/Icon/256x256/ $out/share/icons + ''; + + meta = with stdenv.lib; { + description = "Sophisticated text editor for code, markup and prose"; + homepage = https://www.sublimetext.com/; + maintainers = with maintainers; [ wmertens demin-dmitriy zimbatm ]; + license = licenses.unfree; + platforms = platforms.linux; + }; +}) diff --git a/pkgs/applications/editors/sublime/3/packages.nix b/pkgs/applications/editors/sublime/3/packages.nix new file mode 100644 index 0000000000000..84394e85c8852 --- /dev/null +++ b/pkgs/applications/editors/sublime/3/packages.nix @@ -0,0 +1,18 @@ +{ callPackage }: + +let + common = opts: callPackage (import ./common.nix opts); +in + rec { + sublime3-dev = common { + buildVersion = "3161"; + x32sha256 = "0qrm2qmfsj71lr83c8zas2n3xk8hk9k4w8ygnasjhggmyjm3wy0q"; + x64sha256 = "0cgadylm68s2jly10r038q1fvmbzmpc2nvqy86vlyq9avgqbm5pc"; + } {}; + + sublime3 = common { + buildVersion = "3143"; + x32sha256 = "0dgpx4wij2m77f478p746qadavab172166bghxmj7fb61nvw9v5i"; + x64sha256 = "06b554d2cvpxc976rvh89ix3kqc7klnngvk070xrs8wbyb221qcw"; + } {}; + } |