Unverified Commit e712497e authored by Matt Sturgeon's avatar Matt Sturgeon Committed by GitHub
Browse files

python2Packages.buildPytonPackage: restructure with lib.extendMkDerivation (#481423)

parents b4c0f010 397f1ecd
Loading
Loading
Loading
Loading
+258 −238
Original line number Diff line number Diff line
@@ -27,7 +27,24 @@
  eggBuildHook,
  eggInstallHook,
}:
lib.extendMkDerivation {
  constructDrv = stdenv.mkDerivation;

  excludeDrvArgNames = [
    "disabled"
    "checkPhase"
    "checkInputs"
    "nativeCheckInputs"
    "doCheck"
    "doInstallCheck"
    "dontWrapPythonPrograms"
    "catchConflicts"
    "format"
    "disabledTestPaths"
  ];

  extendDrvArgs =
    finalAttrs:
    {
      name ? "${attrs.pname}-${attrs.version}",

@@ -173,23 +190,8 @@ let
        in
        inputs: map checkDrv inputs;

  # Keep extra attributes from `attrs`, e.g., `patchPhase', etc.
  self = toPythonModule (
    stdenv.mkDerivation (
      (removeAttrs attrs [
        "disabled"
        "checkPhase"
        "checkInputs"
        "nativeCheckInputs"
        "doCheck"
        "doInstallCheck"
        "dontWrapPythonPrograms"
        "catchConflicts"
        "format"
        "disabledTestPaths"
        "outputs"
      ])
      // {
    in
    {

      name = namePrefix + name_;

@@ -272,6 +274,21 @@ let

      outputs = outputs ++ lib.optional withDistOutput "dist";

      passthru = {
        inherit
          disabled
          ;
        updateScript =
          let
            filename = builtins.head (lib.splitString ":" finalAttrs.finalPackage.meta.position);
          in
          [
            update-python-libraries
            filename
          ];
      }
      // passthru;

      meta = {
        # default to python's platforms
        platforms = python.meta.platforms;
@@ -286,19 +303,22 @@ let
    }
    // lib.optionalAttrs (disabledTestPaths != [ ]) {
      disabledTestPaths = lib.escapeShellArgs disabledTestPaths;
      }
    )
  );
    };

  passthru.updateScript =
  transformDrv =
    let
      filename = builtins.head (lib.splitString ":" self.meta.position);
    in
    attrs.passthru.updateScript or [
      update-python-libraries
      filename
    ];
in
      # Workaround to make the `lib.extendDerivation`-based disabled functionality
      # respect `<pkg>.overrideAttrs`
      # It doesn't cover `<pkg>.<output>.overrideAttrs`.
      disablePythonPackage =
        drv:
        lib.extendDerivation (
  disabled -> throw "${name} not supported for interpreter ${python.executable}"
) passthru self
          drv.disabled
          -> throw "${lib.removePrefix namePrefix drv.name} not supported for interpreter ${python.executable}"
        ) { } drv
        // {
          overrideAttrs = fdrv: disablePythonPackage (drv.overrideAttrs fdrv);
        };
    in
    drv: disablePythonPackage (toPythonModule drv);
}