summary refs log tree commit diff
path: root/pkgs/development/tools/build-managers/rebar3/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/build-managers/rebar3/default.nix')
-rw-r--r--pkgs/development/tools/build-managers/rebar3/default.nix129
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 ];
+  };
+}