at master 2.7 kB view raw
1{ 2 lib, 3 stdenvNoCC, 4 fetchFromGitHub, 5 callPackage, 6 php, 7 unzip, 8 _7zz, 9 xz, 10 gitMinimal, 11 curl, 12 cacert, 13 makeBinaryWrapper, 14 versionCheckHook, 15}: 16 17stdenvNoCC.mkDerivation (finalAttrs: { 18 pname = "composer"; 19 version = "2.8.12"; 20 21 # Hash used by ../../../build-support/php/pkgs/composer-phar.nix to 22 # use together with the version from this package to keep the 23 # bootstrap phar file up-to-date together with the end user composer 24 # package. 25 passthru.pharHash = "sha256-9EbqcZcIu4X8v07xje9dBRXx+bTXA/bYIMnBZW4QovI="; 26 27 composer = callPackage ../../../build-support/php/pkgs/composer-phar.nix { 28 inherit (finalAttrs) version; 29 inherit (finalAttrs.passthru) pharHash; 30 }; 31 32 src = fetchFromGitHub { 33 owner = "composer"; 34 repo = "composer"; 35 tag = finalAttrs.version; 36 hash = "sha256-UHCsdJmoE7X2ZiiBAWfC004FUMqHyd0URt+v8R3hn70="; 37 }; 38 39 nativeBuildInputs = [ makeBinaryWrapper ]; 40 41 buildInputs = [ php ]; 42 43 vendor = stdenvNoCC.mkDerivation { 44 pname = "${finalAttrs.pname}-vendor"; 45 46 inherit (finalAttrs) src version; 47 48 nativeBuildInputs = [ 49 cacert 50 finalAttrs.composer 51 ]; 52 53 dontPatchShebangs = true; 54 doCheck = true; 55 56 buildPhase = '' 57 runHook preBuild 58 59 composer install --no-dev --no-interaction --no-progress --optimize-autoloader 60 61 runHook postBuild 62 ''; 63 64 checkPhase = '' 65 runHook preCheck 66 67 composer validate 68 69 runHook postCheck 70 ''; 71 72 installPhase = '' 73 runHook preInstall 74 75 cp -ar . $out/ 76 77 runHook postInstall 78 ''; 79 80 env = { 81 COMPOSER_CACHE_DIR = "/dev/null"; 82 COMPOSER_DISABLE_NETWORK = "0"; 83 COMPOSER_HTACCESS_PROTECT = "0"; 84 COMPOSER_MIRROR_PATH_REPOS = "1"; 85 COMPOSER_ROOT_VERSION = finalAttrs.version; 86 }; 87 88 outputHashMode = "recursive"; 89 outputHashAlgo = "sha256"; 90 outputHash = "sha256-gnCPcp+c2dFL+9MJf0JRCQ5E95/dET1F0ZZAYj/rWq4="; 91 }; 92 93 installPhase = '' 94 runHook preInstall 95 96 mkdir -p $out 97 cp -ar ${finalAttrs.vendor}/* $out/ 98 chmod +w $out/bin 99 100 wrapProgram $out/bin/composer \ 101 --prefix PATH : ${ 102 lib.makeBinPath [ 103 _7zz 104 curl 105 gitMinimal 106 unzip 107 xz 108 ] 109 } 110 111 runHook postInstall 112 ''; 113 114 doInstallCheck = true; 115 nativeInstallCheckInputs = [ versionCheckHook ]; 116 versionCheckProgramArg = "--version"; 117 118 meta = { 119 changelog = "https://github.com/composer/composer/releases/tag/${finalAttrs.version}"; 120 description = "Dependency Manager for PHP"; 121 homepage = "https://getcomposer.org/"; 122 license = lib.licenses.mit; 123 mainProgram = "composer"; 124 teams = [ lib.teams.php ]; 125 }; 126})