diff options
author | k32 <10274441+k32@users.noreply.github.com> | 2019-01-16 22:51:19 +0100 |
---|---|---|
committer | k32 <10274441+k32@users.noreply.github.com> | 2019-02-06 19:45:40 +0100 |
commit | d4b243905f2181111b52d5a58b2119469ed689fc (patch) | |
tree | 895379986d9b69a9cfcbb503c92bf040908da34a /pkgs/development/beam-modules | |
parent | ed5ec8b375e6a2b254c6110ff5124b3a95e019d7 (diff) | |
download | nixpkgs-d4b243905f2181111b52d5a58b2119469ed689fc.tar nixpkgs-d4b243905f2181111b52d5a58b2119469ed689fc.tar.gz nixpkgs-d4b243905f2181111b52d5a58b2119469ed689fc.tar.bz2 nixpkgs-d4b243905f2181111b52d5a58b2119469ed689fc.tar.lz nixpkgs-d4b243905f2181111b52d5a58b2119469ed689fc.tar.xz nixpkgs-d4b243905f2181111b52d5a58b2119469ed689fc.tar.zst nixpkgs-d4b243905f2181111b52d5a58b2119469ed689fc.zip |
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.nix | 30 | ||||
-rw-r--r-- | pkgs/development/beam-modules/fetch-rebar-deps.nix | 32 | ||||
-rw-r--r-- | pkgs/development/beam-modules/rebar3-release.nix | 85 |
3 files changed, 122 insertions, 25 deletions
diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix index f71379459dc..a1eedaad6a0 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 00000000000..a94d803f0d3 --- /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 00000000000..837d0ccf15c --- /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 |