Skip to content

Commit

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

Inspired from #382550

Context: #234651
  • Loading branch information
drupol authored and JohnRTitor committed Mar 1, 2025
1 parent 1e181ec commit 862a3e9
Showing 1 changed file with 54 additions and 40 deletions.
94 changes: 54 additions & 40 deletions pkgs/build-support/php/builders/v2/build-composer-project.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

0 comments on commit 862a3e9

Please sign in to comment.