summaryrefslogtreecommitdiffstats
path: root/pkgs/development/beam-modules
diff options
context:
space:
mode:
authork32 <10274441+k32@users.noreply.github.com>2019-01-16 22:51:19 +0100
committerk32 <10274441+k32@users.noreply.github.com>2019-02-06 19:45:40 +0100
commitd4b243905f2181111b52d5a58b2119469ed689fc (patch)
tree895379986d9b69a9cfcbb503c92bf040908da34a /pkgs/development/beam-modules
parented5ec8b375e6a2b254c6110ff5124b3a95e019d7 (diff)
rebar3: 3.6.1 -> 3.9.0
Remove hermetic patch (make it compatible with the upstream) (Mostly) eliminate the need for hex package registry
Diffstat (limited to 'pkgs/development/beam-modules')
-rw-r--r--pkgs/development/beam-modules/default.nix30
-rw-r--r--pkgs/development/beam-modules/fetch-rebar-deps.nix32
-rw-r--r--pkgs/development/beam-modules/rebar3-release.nix85
3 files changed, 122 insertions, 25 deletions
diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix
index f71379459dcb..a1eedaad6a0f 100644
--- a/pkgs/development/beam-modules/default.nix
+++ b/pkgs/development/beam-modules/default.nix
@@ -23,12 +23,8 @@ let
hexRegistrySnapshot = callPackage ./hex-registry-snapshot.nix { };
rebar = callPackage ../tools/build-managers/rebar { };
- rebar3-open = callPackage ../tools/build-managers/rebar3 {
- hermeticRebar3 = false;
- };
- rebar3 = callPackage ../tools/build-managers/rebar3 {
- hermeticRebar3 = true;
- };
+ rebar3-open = callPackage ../tools/build-managers/rebar3 { };
+ rebar3 = callPackage ../tools/build-managers/rebar3 { };
# rebar3 port compiler plugin is required by buildRebar3
pc_1_6_0 = callPackage ./pc {};
@@ -36,6 +32,9 @@ let
fetchHex = callPackage ./fetch-hex.nix { };
+ fetchRebar3Deps = callPackage ./fetch-rebar-deps.nix { };
+ rebar3Relx = callPackage ./rebar3-release.nix { };
+
buildRebar3 = callPackage ./build-rebar3.nix {};
buildHex = callPackage ./build-hex.nix {};
buildErlangMk = callPackage ./build-erlang-mk.nix {};
@@ -75,25 +74,6 @@ let
lfe = lfe_1_2;
lfe_1_2 = lib.callLFE ../interpreters/lfe/1.2.nix { inherit erlang buildRebar3 buildHex; };
- # We list all base hex packages for beam tooling explicitly to ensure
- # tha the tooling does not break during hex-packages.nix updates.
- erlware_commons_1_0_0 = buildHex {
- name = "erlware_commons";
- version = "1.0.0";
- sha256 = "0wkphbrjk19lxdwndy92v058qwcaz13bcgdzp33h21aa7vminzx7";
- beamDeps = [ cf_0_2_2 ];
- };
- cf_0_2_2 = buildHex {
- name = "cf";
- version = "0.2.2";
- sha256 = "08cvy7skn5d2k4manlx5k3anqgjdvajjhc5jwxbaszxw34q3na28";
- };
- getopt_0_8_2 = buildHex {
- name = "getopt";
- version = "0.8.2";
- sha256 = "1xw30h59zbw957cyjd8n50hf9y09jnv9dyry6x3avfwzcyrnsvkk";
- };
-
# Non hex packages. Examples how to build Rebar/Mix packages with and
# without helper functions buildRebar3 and buildMix.
hex = callPackage ./hex {};
diff --git a/pkgs/development/beam-modules/fetch-rebar-deps.nix b/pkgs/development/beam-modules/fetch-rebar-deps.nix
new file mode 100644
index 000000000000..a94d803f0d32
--- /dev/null
+++ b/pkgs/development/beam-modules/fetch-rebar-deps.nix
@@ -0,0 +1,32 @@
+{ stdenv, rebar3, curl }:
+
+{ name, version, sha256, src
+, meta ? {}
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation ({
+ name = "rebar-deps-${name}-${version}";
+
+ phases = [ "downloadPhase" "installPhase" ];
+
+ downloadPhase = ''
+ cp ${src} .
+ HOME='.' DEBUG=1 ${rebar3}/bin/rebar3 get-deps
+ '';
+
+ installPhase = ''
+ mkdir -p "$out/_checkouts"
+ for i in ./_build/default/lib/* ; do
+ echo "$i"
+ cp -R "$i" "$out/_checkouts"
+ done
+ '';
+
+ outputHashAlgo = "sha256";
+ outputHashMode = "recursive";
+ outputHash = sha256;
+
+ impureEnvVars = stdenv.lib.fetchers.proxyImpureEnvVars;
+})
diff --git a/pkgs/development/beam-modules/rebar3-release.nix b/pkgs/development/beam-modules/rebar3-release.nix
new file mode 100644
index 000000000000..837d0ccf15cf
--- /dev/null
+++ b/pkgs/development/beam-modules/rebar3-release.nix
@@ -0,0 +1,85 @@
+{ stdenv, writeText, erlang, rebar3, openssl, libyaml,
+ pc, lib }:
+
+{ name, version
+, src
+, checkouts ? null
+, releaseType
+, buildInputs ? []
+, setupHook ? null
+, profile ? "default"
+, installPhase ? null
+, buildPhase ? null
+, configurePhase ? null
+, meta ? {}
+, enableDebugInfo ? false
+, ... }@attrs:
+
+with stdenv.lib;
+
+let
+ debugInfoFlag = lib.optionalString (enableDebugInfo || erlang.debugInfo) "debug-info";
+
+ shell = drv: stdenv.mkDerivation {
+ name = "interactive-shell-${drv.name}";
+ buildInputs = [ drv ];
+ };
+
+ customPhases = filterAttrs
+ (_: v: v != null)
+ { inherit setupHook configurePhase buildPhase installPhase; };
+
+ pkg = self: stdenv.mkDerivation (attrs // {
+
+ name = "${name}-${version}";
+ inherit version;
+
+ buildInputs = buildInputs ++ [ erlang rebar3 openssl ];
+ propagatedBuildInputs = [checkouts];
+
+ dontStrip = true;
+
+ inherit src;
+
+ setupHook = writeText "setupHook.sh" ''
+ addToSearchPath ERL_LIBS "$1/lib/erlang/lib/"
+ '';
+
+ configurePhase = ''
+ runHook preConfigure
+ ${if checkouts != null then
+ ''cp --no-preserve=all -R ${checkouts}/_checkouts .''
+ else
+ ''''}
+ runHook postConfigure
+ '';
+
+ buildPhase = ''
+ runHook preBuild
+ HOME=. DEBUG=1 rebar3 as ${profile} ${if releaseType == "escript"
+ then '' escriptize''
+ else '' release''}
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+ dir=${if releaseType == "escript"
+ then ''bin''
+ else ''rel''}
+ mkdir -p "$out/$dir"
+ cp -R --preserve=mode "_build/${profile}/$dir" "$out"
+ runHook postInstall
+ '';
+
+ meta = {
+ inherit (erlang.meta) platforms;
+ } // meta;
+
+ passthru = {
+ packageName = name;
+ env = shell self;
+ };
+ } // customPhases);
+in
+ fix pkg