diff options
Diffstat (limited to 'pkgs/development/tools/build-managers/rebar3/default.nix')
-rw-r--r-- | pkgs/development/tools/build-managers/rebar3/default.nix | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/pkgs/development/tools/build-managers/rebar3/default.nix b/pkgs/development/tools/build-managers/rebar3/default.nix new file mode 100644 index 00000000000..c4e256d5873 --- /dev/null +++ b/pkgs/development/tools/build-managers/rebar3/default.nix @@ -0,0 +1,129 @@ +{ stdenv, fetchurl, fetchHex, erlang, tree, fetchFromGitHub }: + + +let + version = "3.0.0-beta.4"; + registrySnapshot = import ./registrySnapshot.nix { inherit fetchFromGitHub; }; + setupRegistry = '' + mkdir -p _build/default/{lib,plugins,packages}/ ./.cache/rebar3/hex/default/ + zcat ${registrySnapshot}/registry.ets.gz > .cache/rebar3/hex/default/registry + ''; + # TODO: all these below probably should go into nixpkgs.erlangModules.sources.* + # {erlware_commons, "0.16.0"}, + erlware_commons = fetchHex { + pkg = "erlware_commons"; + version = "0.16.0"; + sha256 = "0kh24d0001390wfx28d0xa874vrsfvjgj41g315vg4hac632krxx"; + }; + # {ssl_verify_hostname, "1.0.5"}, + ssl_verify_hostname = fetchHex { + pkg = "ssl_verify_hostname"; + version = "1.0.5"; + sha256 = "1gzavzqzljywx4l59gvhkjbr1dip4kxzjjz1s4wsn42f2kk13jzj"; + }; + # {certifi, "0.1.1"}, + certifi = fetchHex { + pkg = "certifi"; + version = "0.1.1"; + sha256 = "0afylwqg74gprbg116asz0my2nipmki0512c8mdiq6xdiyjdvlg6"; + }; + # {providers, "1.5.0"}, + providers = fetchHex { + pkg = "providers"; + version = "1.5.0"; + sha256 = "1hc8sp2l1mmx9dfpmh1f8j9hayfg7541rmx05wb9cmvxvih7zyvf"; + }; + # {getopt, "0.8.2"}, + getopt = fetchHex { + pkg = "getopt"; + version = "0.8.2"; + sha256 = "1xw30h59zbw957cyjd8n50hf9y09jnv9dyry6x3avfwzcyrnsvkk"; + }; + # {bbmustache, "1.0.4"}, + bbmustache = fetchHex { + pkg = "bbmustache"; + version = "1.0.4"; + sha256 = "04lvwm7f78x8bys0js33higswjkyimbygp4n72cxz1kfnryx9c03"; + }; + # {relx, "3.8.0"}, + relx = fetchHex { + pkg = "relx"; + version = "3.8.0"; + sha256 = "0y89iirjz3kc1rzkdvc6p3ssmwcm2hqgkklhgm4pkbc14fcz57hq"; + }; + # {cf, "0.2.1"}, + cf = fetchHex { + pkg = "cf"; + version = "0.2.1"; + sha256 = "19d0yvg8wwa57cqhn3vqfvw978nafw8j2rvb92s3ryidxjkrmvms"; + }; + # {cth_readable, "1.1.0"}, + cth_readable = fetchHex { + pkg = "cth_readable"; + version = "1.0.1"; + sha256 = "1cnc4fbypckqllfi5h73rdb24dz576k3177gzvp1kbymwkp1xcz1"; + }; + # {eunit_formatters, "0.2.0"} + eunit_formatters = fetchHex { + pkg = "eunit_formatters"; + version = "0.2.0"; + sha256 = "03kiszlbgzscfd2ns7na6bzbfzmcqdb5cx3p6qy3657jk2fai332"; + }; + +in +stdenv.mkDerivation { + name = "rebar3-${version}"; + + src = fetchurl { + url = "https://github.com/rebar/rebar3/archive/${version}.tar.gz"; + sha256 = "0px66scjdia9aaa5z36qzxb848r56m0k98g0bxw065a2narsh4xy"; + }; + + patches = [ ./hermetic-bootstrap.patch ]; + + buildInputs = [ erlang + tree + ]; + inherit setupRegistry; + + postPatch = '' + echo postPatch + ${setupRegistry} + mkdir -p _build/default/lib/ + cp --no-preserve=mode -R ${erlware_commons} _build/default/lib/erlware_commons + cp --no-preserve=mode -R ${providers} _build/default/lib/providers + cp --no-preserve=mode -R ${getopt} _build/default/lib/getopt + cp --no-preserve=mode -R ${bbmustache} _build/default/lib/bbmustache + cp --no-preserve=mode -R ${certifi} _build/default/lib/certifi + cp --no-preserve=mode -R ${cf} _build/default/lib/cf + cp --no-preserve=mode -R ${cth_readable} _build/default/lib/cth_readable + cp --no-preserve=mode -R ${eunit_formatters} _build/default/lib/eunit_formatters + cp --no-preserve=mode -R ${relx} _build/default/lib/relx + cp --no-preserve=mode -R ${ssl_verify_hostname} _build/default/lib/ssl_verify_hostname + ''; + + buildPhase = '' + HOME=. escript bootstrap + ''; + installPhase = '' + mkdir -p $out/bin + cp rebar3 $out/bin/rebar3 + ''; + + meta = { + homepage = "https://github.com/rebar/rebar3"; + description = "rebar 3.0 is an Erlang build tool that makes it easy to compile and test Erlang applications, port drivers and releases."; + + longDescription = '' + rebar is a self-contained Erlang script, so it's easy to distribute or + even embed directly in a project. Where possible, rebar uses standard + Erlang/OTP conventions for project structures, thus minimizing the amount + of build configuration work. rebar also provides dependency management, + enabling application writers to easily re-use common libraries from a + variety of locations (hex.pm, git, hg, and so on). + ''; + + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.gleber ]; + }; +} |