core/pkgs/build-support/php/build-composer-project.nix

84 lines
2.6 KiB
Nix
Raw Normal View History

2024-05-13 21:24:10 +00:00
{ callPackage, stdenvNoCC, lib, writeTextDir, php, makeBinaryWrapper
, fetchFromGitHub, fetchurl }:
2024-05-02 00:46:19 +00:00
let
buildComposerProjectOverride = finalAttrs: previousAttrs:
let
phpDrv = finalAttrs.php or php;
composer = finalAttrs.composer or phpDrv.packages.composer;
2024-05-13 21:24:10 +00:00
composer-local-repo-plugin =
callPackage ./pkgs/composer-local-repo-plugin.nix { };
in {
2024-05-02 00:46:19 +00:00
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 [ ]) ++ [
composer
composer-local-repo-plugin
phpDrv
phpDrv.composerHooks.composerInstallHook
];
2024-05-13 21:24:10 +00:00
buildInputs = (previousAttrs.buildInputs or [ ]) ++ [ phpDrv ];
2024-05-02 00:46:19 +00:00
patches = previousAttrs.patches or [ ];
strictDeps = previousAttrs.strictDeps or true;
# Should we keep these empty phases?
configurePhase = previousAttrs.configurePhase or ''
runHook preConfigure
runHook postConfigure
'';
buildPhase = previousAttrs.buildPhase or ''
runHook preBuild
runHook postBuild
'';
doCheck = previousAttrs.doCheck or true;
checkPhase = previousAttrs.checkPhase or ''
runHook preCheck
runHook postCheck
'';
installPhase = previousAttrs.installPhase or ''
runHook preInstall
runHook postInstall
'';
doInstallCheck = previousAttrs.doInstallCheck or false;
installCheckPhase = previousAttrs.installCheckPhase or ''
runHook preInstallCheck
runHook postInstallCheck
'';
composerRepository = phpDrv.mkComposerRepository {
inherit composer composer-local-repo-plugin;
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;
2024-05-13 21:24:10 +00:00
composerStrictValidation =
previousAttrs.composerStrictValidation or true;
2024-05-02 00:46:19 +00:00
};
2024-05-13 21:24:10 +00:00
COMPOSER_CACHE_DIR = "/dev/null";
COMPOSER_DISABLE_NETWORK = "1";
COMPOSER_MIRROR_PATH_REPOS = "1";
2024-05-02 00:46:19 +00:00
2024-05-13 21:24:10 +00:00
meta = previousAttrs.meta or { } // { platforms = lib.platforms.all; };
2024-05-02 00:46:19 +00:00
};
2024-05-13 21:24:10 +00:00
in args:
(stdenvNoCC.mkDerivation args).overrideAttrs buildComposerProjectOverride