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.wip/yesman
parent
31703358bd
commit
d1b9c9d2cd
@ -1,16 +1,45 @@ |
||||
{ stdenv, pkgs }: |
||||
{ stdenv, pkgs, erlang, overrides ? (self: super: {}) }: |
||||
|
||||
let |
||||
self = rec { |
||||
hexPackages = import ./hex-packages.nix { stdenv = stdenv; callPackage = self.callPackage; pkgs = pkgs; }; |
||||
callPackage = pkgs.lib.callPackageWith (pkgs // self // hexPackages); |
||||
buildRebar3 = callPackage ./build-rebar3.nix {}; |
||||
buildHex = callPackage ./build-hex.nix {}; |
||||
buildErlangMk = callPackage ./build-erlang-mk.nix {}; |
||||
buildMix = callPackage ./build-mix.nix {}; |
||||
|
||||
## Non hex packages |
||||
hex = callPackage ./hex {}; |
||||
webdriver = callPackage ./webdriver {}; |
||||
}; |
||||
in self // self.hexPackages |
||||
inherit (stdenv.lib) fix' extends; |
||||
|
||||
# FIXME: add support for overrideScope |
||||
callPackageWithScope = scope: drv: args: stdenv.lib.callPackageWith scope drv args; |
||||
mkScope = scope: pkgs // scope; |
||||
|
||||
packages = self: |
||||
let |
||||
defaultScope = mkScope self; |
||||
callPackage = drv: args: callPackageWithScope defaultScope drv args; |
||||
in |
||||
import ./hex-packages.nix { |
||||
inherit pkgs stdenv callPackage; |
||||
} // { |
||||
inherit callPackage erlang; |
||||
beamPackages = self; |
||||
|
||||
rebar = callPackage ../tools/build-managers/rebar { }; |
||||
rebar3-open = callPackage ../tools/build-managers/rebar3 { |
||||
hermeticRebar3 = false; |
||||
}; |
||||
rebar3 = callPackage ../tools/build-managers/rebar3 { |
||||
hermeticRebar3 = true; |
||||
}; |
||||
|
||||
hexRegistrySnapshot = callPackage ./hex-registry-snapshot.nix { }; |
||||
fetchHex = callPackage ./fetch-hex.nix { }; |
||||
|
||||
buildRebar3 = callPackage ./build-rebar3.nix {}; |
||||
buildHex = callPackage ./build-hex.nix {}; |
||||
buildErlangMk = callPackage ./build-erlang-mk.nix {}; |
||||
buildMix = callPackage ./build-mix.nix {}; |
||||
|
||||
## Non hex packages |
||||
hex = callPackage ./hex {}; |
||||
webdriver = callPackage ./webdriver {}; |
||||
|
||||
hex2nix = callPackage ../tools/erlang/hex2nix { }; |
||||
cuter = callPackage ../tools/erlang/cuter { }; |
||||
relxExe = callPackage ../tools/erlang/relx-exe {}; |
||||
}; |
||||
in fix' (extends overrides packages) |
||||
|
Loading…
Reference in new issue