build-support/php: support lib.extendMkDerivation for php.buildComposerProject2

Inspired from https://github.com/NixOS/nixpkgs/pull/382550

Context: https://github.com/NixOS/nixpkgs/pull/234651
This commit is contained in:
Pol Dellaiera
2025-03-01 13:22:57 +05:30
committed by Masum Reza
parent 1e181ece32
commit 862a3e90a0
@@ -3,100 +3,114 @@
stdenvNoCC,
lib,
php,
}:
}@toplevel:
let
buildComposerProjectOverride =
finalAttrs: previousAttrs:
let
phpDrv = finalAttrs.php or php;
composer = finalAttrs.composer or phpDrv.packages.composer;
in
finalAttrs:
{
composerLock = previousAttrs.composerLock or null;
composerNoDev = previousAttrs.composerNoDev or true;
composerNoPlugins = previousAttrs.composerNoPlugins or true;
composerNoScripts = previousAttrs.composerNoScripts or true;
composerStrictValidation = previousAttrs.composerStrictValidation or true;
nativeBuildInputs = (previousAttrs.nativeBuildInputs or [ ]) ++ [
php ? toplevel.php,
composer ? toplevel.php.packages.composer,
composerVendor ? null,
vendorHash ? null,
composerLock ? null,
composerNoDev ? true,
composerNoPlugins ? true,
composerNoScripts ? true,
composerStrictValidation ? true,
buildInputs ? [ ],
nativeBuildInputs ? [ ],
strictDeps ? true,
patches ? [ ],
doCheck ? true,
doInstallCheck ? true,
passthru ? { },
meta ? { },
...
}@args:
{
inherit
patches
strictDeps
doCheck
doInstallCheck
;
nativeBuildInputs = nativeBuildInputs ++ [
composer
phpDrv
phpDrv.composerHooks2.composerInstallHook
php
php.composerHooks2.composerInstallHook
];
buildInputs = (previousAttrs.buildInputs or [ ]) ++ [ phpDrv ];
patches = previousAttrs.patches or [ ];
strictDeps = previousAttrs.strictDeps or true;
buildInputs = buildInputs ++ [ php ];
# 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
'';
composerVendor =
previousAttrs.composerVendor or (phpDrv.mkComposerVendor {
inherit composer;
args.composerVendor or (php.mkComposerVendor {
inherit
composer
composerLock
composerNoDev
composerNoPlugins
composerNoScripts
composerStrictValidation
vendorHash
;
inherit (finalAttrs)
patches
pname
src
vendorHash
version
;
composerLock = previousAttrs.composerLock or null;
composerNoDev = previousAttrs.composerNoDev or true;
composerNoPlugins = previousAttrs.composerNoPlugins or true;
composerNoScripts = previousAttrs.composerNoScripts or true;
composerStrictValidation = previousAttrs.composerStrictValidation or true;
});
# Projects providing a lockfile from upstream can be automatically updated.
passthru = previousAttrs.passthru or { } // {
passthru = passthru // {
updateScript =
previousAttrs.passthru.updateScript
args.passthru.updateScript
or (if finalAttrs.composerVendor.composerLock == null then nix-update-script { } else null);
};
meta = previousAttrs.meta or { } // {
meta = meta // {
platforms = lib.platforms.all;
};
};
in
args: (stdenvNoCC.mkDerivation args).overrideAttrs buildComposerProjectOverride
lib.extendMkDerivation {
constructDrv = stdenvNoCC.mkDerivation;
extendDrvArgs = buildComposerProjectOverride;
}