diff options
author | Gleb Peregud <gleber.p@gmail.com> | 2017-06-17 16:28:41 +0200 |
---|---|---|
committer | Gleb Peregud <gleber.p@gmail.com> | 2017-06-19 19:53:15 +0200 |
commit | d1b9c9d2cddf2e57964fde7e4f468c8767a77b3b (patch) | |
tree | 89b1a30dc484aeeef2f432d7578f0b2ac45f8e74 /pkgs/top-level/beam-packages.nix | |
parent | 31703358bd38845e5bcc47df3c564f0e132272c5 (diff) |
erlang: refactor: build packages per Erlang/OTP.
This change introduces a fixpoint, which allows to do deep override when building packages defined in pkgs/development/beam-modules/default.hex. This allows to provide beam.packages.erlang{,R16,R17,R18,R19} which contains the same packages built with different Erlang/OTP versions. Top-level attribute beamPackages points at beam.packages.erlangR18, the same applies to other top-level Erlang packages. TODO: - beam.packages.erlang{R16,R17} is almost useless, since rebar/rebar3 does not build using these versions; - all packages in beam.packages which use buildMix are actually built with erlangR18; - update documentation.
Diffstat (limited to 'pkgs/top-level/beam-packages.nix')
-rw-r--r-- | pkgs/top-level/beam-packages.nix | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/pkgs/top-level/beam-packages.nix b/pkgs/top-level/beam-packages.nix index 3451816c0c5b4..ccf22d6c53481 100644 --- a/pkgs/top-level/beam-packages.nix +++ b/pkgs/top-level/beam-packages.nix @@ -3,10 +3,11 @@ rec { lib = import ../development/beam-modules/lib.nix { inherit pkgs; }; + # Each interpreters = rec { - # R18 is the Default version. - erlang = erlangR18; + # R18 is the default version. + erlang = erlangR18; # The main switch to change default Erlang version. erlang_odbc = erlangR18_odbc; erlang_javac = erlangR18_javac; erlang_odbc_javac = erlangR18_odbc_javac; @@ -44,22 +45,24 @@ rec { odbcSupport = true; }; - # Other Beam languages. + # Other Beam languages. These are built with beam.interpreters.erlang. elixir = callPackage ../development/interpreters/elixir { debugInfo = true; }; lfe = callPackage ../development/interpreters/lfe { }; }; + # Helper function to generate package set with a specific Erlang version. + packagesWith = erlang: callPackage ../development/beam-modules { inherit erlang; }; + + # Each field in this tuple represents all Beam packages in nixpkgs built with + # appropriate Erlang/OTP version. packages = rec { - rebar = callPackage ../development/tools/build-managers/rebar { }; - rebar3-open = callPackage ../development/tools/build-managers/rebar3 { hermeticRebar3 = false; }; - rebar3 = callPackage ../development/tools/build-managers/rebar3 { hermeticRebar3 = true; }; - hexRegistrySnapshot = callPackage ../development/beam-modules/hex-registry-snapshot.nix { }; - fetchHex = callPackage ../development/beam-modules/fetch-hex.nix { }; - beamPackages = callPackage ../development/beam-modules { }; - hex2nix = beamPackages.callPackage ../development/tools/erlang/hex2nix { }; - cuter = callPackage ../development/tools/erlang/cuter { }; + # Packages built with default Erlang version. + erlang = packagesWith interpreters.erlang; + erlangR16 = packagesWith interpreters.erlangR16; + erlangR17 = packagesWith interpreters.erlangR17; + erlangR18 = packagesWith interpreters.erlangR18; + erlangR19 = packagesWith interpreters.erlangR19; - relxExe = callPackage ../development/tools/erlang/relx-exe {}; }; } |