forked from NixOS/nixpkgs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
heroku: [WIP] 3.43.2 -> 3.43.12 and wrap the downloaded binary
The heroku tool has changed and now downloads a binary to do bulk of the work. This PR also downloads the binary to wrap it properly, but due to NixOS/patchelf#66 we cannot ```patchelf``` the binary and it doesn't work. So for now we instead wrap it in a buildFHSUserEnv so at least things are working again. Once the patchelf issue has been solved, I'll update this again.
- Loading branch information
Peter Hoeg
committed
Nov 4, 2016
1 parent
fa4167c
commit 46e6e2b
Showing
1 changed file
with
65 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1,74 @@ | ||
{ stdenv, fetchurl, postgresql, ruby, makeWrapper, nodejs-6_x }: | ||
{ stdenv, fetchurl, bash, buildFHSUserEnv, makeWrapper, writeTextFile | ||
, nodejs-6_x, postgresql, ruby }: | ||
|
||
with stdenv.lib; | ||
stdenv.mkDerivation rec { | ||
version = "3.43.2"; | ||
name = "heroku-${version}"; | ||
|
||
meta = { | ||
homepage = "https://toolbelt.heroku.com"; | ||
description = "Everything you need to get started using Heroku"; | ||
maintainers = with maintainers; [ aflatter mirdhyn ]; | ||
license = licenses.mit; | ||
platforms = with platforms; unix; | ||
let | ||
version = "3.43.12"; | ||
bin_ver = "5.4.7-8dc2c80"; | ||
|
||
arch = { | ||
"x86_64-linux" = "linux-amd64"; | ||
}."${stdenv.system}" or (throw "system ${stdenv.system} not supported"); | ||
|
||
sha256 = { | ||
"x86_64-linux" = "0iqjxkdw53dvy54ahmr9yijlxrp5nbikh9z7iss93z753cgxdl06"; | ||
}."${stdenv.system}" or (throw "system ${stdenv.system} not supported"); | ||
|
||
fhsEnv = buildFHSUserEnv { | ||
name = "heroku-fhs-env"; | ||
}; | ||
|
||
src = fetchurl { | ||
url = "https://s3.amazonaws.com/assets.heroku.com/heroku-client/heroku-client-${version}.tgz"; | ||
sha256 = "1sapbxg7pzi89c95k0vsp8k5bysggkjf58jwck2xs0y4ly36wbnc"; | ||
heroku = stdenv.mkDerivation rec { | ||
inherit version; | ||
name = "heroku"; | ||
|
||
meta = { | ||
homepage = "https://toolbelt.heroku.com"; | ||
description = "Everything you need to get started using Heroku"; | ||
maintainers = with maintainers; [ aflatter mirdhyn ]; | ||
license = licenses.mit; | ||
platforms = with platforms; unix; | ||
}; | ||
|
||
src = fetchurl { | ||
url = "https://s3.amazonaws.com/assets.heroku.com/heroku-client/heroku-client-${version}.tgz"; | ||
sha256 = "1z7z8sl2hkrc8rdvx3h00fbcrxs827xlfp6fji0ap97a6jc0v9x4"; | ||
}; | ||
|
||
bin = fetchurl { | ||
url = "https://cli-assets.heroku.com/branches/stable/${bin_ver}/heroku-v${bin_ver}-${arch}.tar.gz"; | ||
inherit sha256; | ||
}; | ||
|
||
installPhase = '' | ||
cli=$out/share/heroku/cli | ||
mkdir -p $cli | ||
tar xzf $src -C $out --strip-components=1 | ||
tar xzf $bin -C $cli --strip-components=1 | ||
wrapProgram $out/bin/heroku \ | ||
--set HEROKU_NODE_PATH ${nodejs-6_x}/bin/node \ | ||
--set XDG_DATA_HOME $out/share \ | ||
--set XDG_DATA_DIRS $out/share | ||
# When https://github.com/NixOS/patchelf/issues/66 is fixed, reinstate this and dump the fhsuserenv | ||
#patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ | ||
# $cli/bin/heroku | ||
''; | ||
|
||
buildInputs = [ fhsEnv ruby postgresql makeWrapper ]; | ||
|
||
doUnpack = false; | ||
}; | ||
|
||
installPhase = '' | ||
mkdir -p $out | ||
cp -R * $out/ | ||
wrapProgram $out/bin/heroku --set HEROKU_NODE_PATH ${nodejs-6_x}/bin/node | ||
in writeTextFile { | ||
name = "heroku-${version}"; | ||
destination = "/bin/heroku"; | ||
executable = true; | ||
text = '' | ||
#!${bash}/bin/bash -e | ||
${fhsEnv}/bin/heroku-fhs-env ${heroku}/bin/heroku | ||
''; | ||
|
||
buildInputs = [ ruby postgresql makeWrapper ]; | ||
} |