Unverified Commit cfdc0687 authored by Adam C. Stephens's avatar Adam C. Stephens Committed by GitHub
Browse files

elixir: simplifiy generic builder and overriding (#453635)

parents ea15dc69 a6139c3d
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -8,8 +8,6 @@ let
  pkgs = __splicedPackages;
  inherit (lib) makeExtensible;

  lib' = pkgs.callPackage ./lib.nix { };

  # FIXME: add support for overrideScope
  callPackageWithScope =
    scope: drv: args:
@@ -51,27 +49,27 @@ let
      # BEAM-based languages.
      elixir = elixir_1_18;

      elixir_1_19 = lib'.callElixir ../interpreters/elixir/1.19.nix {
      elixir_1_19 = callPackage ../interpreters/elixir/1.19.nix {
        inherit erlang;
        debugInfo = true;
      };

      elixir_1_18 = lib'.callElixir ../interpreters/elixir/1.18.nix {
      elixir_1_18 = callPackage ../interpreters/elixir/1.18.nix {
        inherit erlang;
        debugInfo = true;
      };

      elixir_1_17 = lib'.callElixir ../interpreters/elixir/1.17.nix {
      elixir_1_17 = callPackage ../interpreters/elixir/1.17.nix {
        inherit erlang;
        debugInfo = true;
      };

      elixir_1_16 = lib'.callElixir ../interpreters/elixir/1.16.nix {
      elixir_1_16 = callPackage ../interpreters/elixir/1.16.nix {
        inherit erlang;
        debugInfo = true;
      };

      elixir_1_15 = lib'.callElixir ../interpreters/elixir/1.15.nix {
      elixir_1_15 = callPackage ../interpreters/elixir/1.15.nix {
        inherit erlang;
        debugInfo = true;
      };
+0 −85
Original line number Diff line number Diff line
{ __splicedPackages, lib }:

let
  pkgs = __splicedPackages;
in
rec {

  # Similar to callPackageWith/callPackage, but without makeOverridable
  callPackageWith =
    autoArgs: fn: args:
    let
      f = if pkgs.lib.isFunction fn then fn else import fn;
      auto = builtins.intersectAttrs (lib.functionArgs f) autoArgs;
    in
    f (auto // args);

  callPackage = callPackageWith pkgs;

  /*
    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
      genericBuilder =
        versionArgs: import ../../development/interpreters/erlang/generic-builder.nix (versionArgs // args);
    in
    pkgs.callPackage (import drv genericBuilder) { };

  /*
    Uses generic-builder to evaluate provided drv containing Elixir version
    specific data.

    drv: file containing version-specific args;
    genericBuilder: generic builder for all Erlang versions;
    args: arguments merged into version-specific args, used mostly to customize
          high level options;

    Arguments passed to the generic-builder are overridable.
  */
  callElixir =
    drv: args:
    let
      builder = callPackage ../interpreters/elixir/generic-builder.nix args;
    in
    callPackage drv {
      mkDerivation = pkgs.makeOverridable builder;
    };

  /*
    Uses generic-builder to evaluate provided drv containing Elixir 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.

    Please note that "mkDerivation" defined here is the one called from 1.2.nix
    and similar files.
  */
  callLFE =
    drv: args:
    let
      builder = callPackage ../interpreters/lfe/generic-builder.nix args;
    in
    callPackage drv {
      mkDerivation = pkgs.makeOverridable builder;
    };

}
+2 −4
Original line number Diff line number Diff line
{ mkDerivation }:
mkDerivation {
import ./generic-builder.nix {
  version = "1.15.7";
  sha256 = "sha256-6GfZycylh+sHIuiQk/GQr1pRQRY1uBycSQdsVJ0J13k=";
  hash = "sha256-6GfZycylh+sHIuiQk/GQr1pRQRY1uBycSQdsVJ0J13k=";
  # https://hexdocs.pm/elixir/1.15.0/compatibility-and-deprecations.html#compatibility-between-elixir-and-erlang-otp
  minimumOTPVersion = "24";
  maximumOTPVersion = "26";
  escriptPath = "lib/elixir/scripts/generate_app.escript";
}
+2 −4
Original line number Diff line number Diff line
{ mkDerivation }:
mkDerivation {
import ./generic-builder.nix {
  version = "1.16.3";
  sha256 = "sha256-WUBqoz3aQvBlSG3pTxGBpWySY7I0NUcDajQBgq5xYTU=";
  hash = "sha256-WUBqoz3aQvBlSG3pTxGBpWySY7I0NUcDajQBgq5xYTU=";
  # https://hexdocs.pm/elixir/1.16.0/compatibility-and-deprecations.html#compatibility-between-elixir-and-erlang-otp
  minimumOTPVersion = "24";
  maximumOTPVersion = "26";
  escriptPath = "lib/elixir/scripts/generate_app.escript";
}
+2 −4
Original line number Diff line number Diff line
{ mkDerivation }:
mkDerivation {
import ./generic-builder.nix {
  version = "1.17.3";
  sha256 = "sha256-7Qo6y0KAQ9lwD4oH+7wQ4W5i6INHIBDN9IQAAsYzNJw=";
  hash = "sha256-7Qo6y0KAQ9lwD4oH+7wQ4W5i6INHIBDN9IQAAsYzNJw=";
  # https://hexdocs.pm/elixir/1.17.3/compatibility-and-deprecations.html#compatibility-between-elixir-and-erlang-otp
  minimumOTPVersion = "25";
  maximumOTPVersion = "27";
  escriptPath = "lib/elixir/scripts/generate_app.escript";
}
Loading