Skip to content

Commit

Permalink
build-support/php: support lib.extendMkDerivation for `php.mkCompos…
Browse files Browse the repository at this point in the history
…erVendor`

Inspired from NixOS#382550

Context: NixOS#234651
  • Loading branch information
drupol committed Feb 28, 2025
1 parent d9d0470 commit 4cdddfa
Showing 1 changed file with 39 additions and 45 deletions.
84 changes: 39 additions & 45 deletions pkgs/build-support/php/builders/v2/build-composer-vendor.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,86 +2,77 @@
stdenvNoCC,
lib,
php,
}:
}@toplevel:

let
mkComposerVendorOverride =
/*
We cannot destruct finalAttrs since the attrset below is used to construct it
and Nix currently does not support lazy attribute names.
{
php ? null,
composer ? null,
composerLock ? "composer.lock",
src,
vendorHash,
finalAttrs:
{
php ? toplevel.php,
composer ? toplevel.php.packages.composer,
composerLock,
vendorHash ? null,
composerNoDev ? true,
composerNoPlugins ? true,
composerNoScripts ? true,
composerStrictValidation ? true,
buildInputs ? [ ],
nativeBuildInputs ? [ ],
dontPatchShebangs ? true,
strictDeps ? true,
doCheck ? true,
doInstallCheck ? false,
...
}@finalAttrs:
*/
finalAttrs: previousAttrs:

let
phpDrv = finalAttrs.php or php;
composer = finalAttrs.composer or phpDrv.packages.composer;
in
assert (lib.assertMsg (previousAttrs ? src) "mkComposerVendor expects src argument.");
assert (lib.assertMsg (previousAttrs ? vendorHash) "mkComposerVendor expects vendorHash argument.");
assert (lib.assertMsg (previousAttrs ? version) "mkComposerVendor expects version argument.");
assert (lib.assertMsg (previousAttrs ? pname) "mkComposerVendor expects pname argument.");
}@args:
assert (lib.assertMsg (args ? src) "mkComposerVendor expects src argument.");
assert (lib.assertMsg (args ? vendorHash) "mkComposerVendor expects vendorHash argument.");
assert (lib.assertMsg (args ? version) "mkComposerVendor expects version argument.");
assert (lib.assertMsg (args ? pname) "mkComposerVendor expects pname argument.");
{
composerNoDev = previousAttrs.composerNoDev or true;
composerNoPlugins = previousAttrs.composerNoPlugins or true;
composerNoScripts = previousAttrs.composerNoScripts or true;
composerStrictValidation = previousAttrs.composerStrictValidation or true;

name = "${previousAttrs.pname}-composer-repository-${previousAttrs.version}";
name = "${args.pname}-composer-vendor-${args.version}";

# See https://github.com/NixOS/nix/issues/6660
dontPatchShebangs = previousAttrs.dontPatchShebangs or true;
inherit dontPatchShebangs;

nativeBuildInputs = (previousAttrs.nativeBuildInputs or [ ]) ++ [
inherit buildInputs strictDeps doCheck;

nativeBuildInputs = nativeBuildInputs ++ [
composer
phpDrv
phpDrv.composerHooks2.composerVendorHook
php
php.composerHooks2.composerVendorHook
];

buildInputs = previousAttrs.buildInputs or [ ];

strictDeps = previousAttrs.strictDeps or true;

# Should we keep these empty phases?
configurePhase =
previousAttrs.configurePhase or ''
args.configurePhase or ''
runHook preConfigure
runHook postConfigure
'';

buildPhase =
previousAttrs.buildPhase or ''
args.buildPhase or ''
runHook preBuild
runHook postBuild
'';

doCheck = previousAttrs.doCheck or true;
checkPhase =
previousAttrs.checkPhase or ''
args.checkPhase or ''
runHook preCheck
runHook postCheck
'';

installPhase =
previousAttrs.installPhase or ''
args.installPhase or ''
runHook preInstall
runHook postInstall
'';

doInstallCheck = previousAttrs.doInstallCheck or false;
installCheckPhase =
previousAttrs.installCheckPhase or ''
args.installCheckPhase or ''
runHook preInstallCheck
runHook postInstallCheck
Expand All @@ -90,7 +81,10 @@ let
outputHashMode = "recursive";
outputHashAlgo =
if (finalAttrs ? vendorHash && finalAttrs.vendorHash != "") then null else "sha256";
outputHash = finalAttrs.vendorHash or "";
outputHash = vendorHash;
};
in
args: (stdenvNoCC.mkDerivation args).overrideAttrs mkComposerVendorOverride
lib.extendMkDerivation {
constructDrv = stdenvNoCC.mkDerivation;
extendDrvArgs = mkComposerVendorOverride;
}

0 comments on commit 4cdddfa

Please sign in to comment.