7797e1a1dd
This makes beam.package.erlangR19.abnf to be actually built with R19, instead of the default R18. It means that Elixir and LFE are provided in two versions, one built with R18 and with R19. Please note that Elixir does not build with R16 and R17 - trying to access beam.packages.erlang{R16,R17}.elixir will throw an error.
46 lines
1.4 KiB
Nix
46 lines
1.4 KiB
Nix
{ pkgs, stdenv }:
|
|
|
|
rec {
|
|
|
|
/* Similar to callPackageWith/callPackage, but without makeOverridable
|
|
*/
|
|
callPackageWith = autoArgs: fn: args:
|
|
let
|
|
f = if builtins.isFunction fn then fn else import fn;
|
|
auto = builtins.intersectAttrs (builtins.functionArgs f) autoArgs;
|
|
in f (auto // args);
|
|
|
|
callPackage = callPackageWith pkgs;
|
|
|
|
/* Erlang/OTP-specific version retrieval, returns 19 for OTP R19 */
|
|
getVersion = x:
|
|
let
|
|
parse = drv: (builtins.parseDrvName drv).version;
|
|
in builtins.replaceStrings ["B" "-"] ["." "."] (
|
|
if builtins.isString x
|
|
then parse x
|
|
else x.version or (parse x.name));
|
|
|
|
/* Uses generic-builder to evaluate provided drv containing OTP-version
|
|
specific data.
|
|
|
|
drv: package containing version-specific args;
|
|
builder: generic builder for all Erlang versions;
|
|
args: arguments merged into version-specific args, used mostly to customize
|
|
dependencies;
|
|
|
|
Arguments passed to the generic-builder are overridable, used to
|
|
enable/disable high-level OTP features, like ODBC or WX support;
|
|
|
|
Please note that "mkDerivation" defined here is the one called from R16.nix
|
|
and similar files.
|
|
*/
|
|
callErlang = drv: args:
|
|
let
|
|
builder = callPackage ../../development/interpreters/erlang/generic-builder.nix args;
|
|
in
|
|
callPackage drv {
|
|
mkDerivation = pkgs.makeOverridable builder;
|
|
};
|
|
|
|
}
|