about summary refs log tree commit diff
path: root/pkgs/development/php-packages/composer/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/php-packages/composer/default.nix')
-rw-r--r--pkgs/development/php-packages/composer/default.nix110
1 files changed, 89 insertions, 21 deletions
diff --git a/pkgs/development/php-packages/composer/default.nix b/pkgs/development/php-packages/composer/default.nix
index 28606fdfa2e27..d8bfca7c348fb 100644
--- a/pkgs/development/php-packages/composer/default.nix
+++ b/pkgs/development/php-packages/composer/default.nix
@@ -1,46 +1,114 @@
-{ lib
-, callPackage
-, fetchFromGitHub
-, php
-, unzip
-, _7zz
-, xz
-, git
-, curl
-, cacert
-, makeBinaryWrapper
+{
+  lib,
+  stdenvNoCC,
+  fetchFromGitHub,
+  callPackage,
+  php,
+  unzip,
+  _7zz,
+  xz,
+  git,
+  curl,
+  cacert,
+  makeBinaryWrapper,
 }:
 
-php.buildComposerProject (finalAttrs: {
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "composer";
+  version = "2.7.6";
+
   # Hash used by ../../../build-support/php/pkgs/composer-phar.nix to
   # use together with the version from this package to keep the
   # bootstrap phar file up-to-date together with the end user composer
   # package.
-  passthru.pharHash = "sha256-/MAv8ES1oE++z/AVjLYEHCXo94rElAmHNv7NK7TzgeQ=";
+  passthru.pharHash = "sha256-KdyaGe8zU12wYbMRgLKoM6fPjSz0FFszovg1BId7ugg=";
 
   composer = callPackage ../../../build-support/php/pkgs/composer-phar.nix {
     inherit (finalAttrs) version;
     inherit (finalAttrs.passthru) pharHash;
   };
 
-  pname = "composer";
-  version = "2.7.3";
-
   src = fetchFromGitHub {
     owner = "composer";
     repo = "composer";
     rev = finalAttrs.version;
-    hash = "sha256-4cQ/p6lC8qgba/GSKuP2rFc0mZrUc+HuwvBMXnVERoU=";
+    hash = "sha256-LZwg3PR3zl07Nb6MS8oKkRfjLgqtT/c4sfUOzWE4S+U=";
   };
 
   nativeBuildInputs = [ makeBinaryWrapper ];
 
-  postInstall = ''
+  buildInputs = [ php ];
+
+  vendor = stdenvNoCC.mkDerivation {
+    pname = "${finalAttrs.pname}-vendor";
+
+    inherit (finalAttrs) src version;
+
+    nativeBuildInputs = [
+      cacert
+      finalAttrs.composer
+    ];
+
+    dontPatchShebangs = true;
+    doCheck = true;
+
+    buildPhase = ''
+      runHook preBuild
+
+      composer install --no-dev --no-interaction --no-progress --optimize-autoloader
+
+      runHook postBuild
+    '';
+
+    checkPhase = ''
+      runHook preCheck
+
+      composer validate
+
+      runHook postCheck
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+      cp -ar . $out/
+
+      runHook postInstall
+    '';
+
+    env = {
+      COMPOSER_CACHE_DIR = "/dev/null";
+      COMPOSER_DISABLE_NETWORK = "0";
+      COMPOSER_HTACCESS_PROTECT = "0";
+      COMPOSER_MIRROR_PATH_REPOS = "1";
+      COMPOSER_ROOT_VERSION = finalAttrs.version;
+    };
+
+    outputHashMode = "recursive";
+    outputHashAlgo = "sha256";
+    outputHash = "sha256-AyX57oV5Jf8U4B9tEl+b2Rnt/Igu7ockEap0wfN9b2Q=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out
+    cp -ar ${finalAttrs.vendor}/* $out/
+    chmod +w $out/bin
+
     wrapProgram $out/bin/composer \
-      --prefix PATH : ${lib.makeBinPath [ _7zz cacert curl git unzip xz ]}
-  '';
+      --prefix PATH : ${
+        lib.makeBinPath [
+          _7zz
+          curl
+          git
+          unzip
+          xz
+        ]
+      }
 
-  vendorHash = "sha256-dNNV9fTyGyRoGeDV/vBjn0aMgkaUMsrKQv5AOoiYokQ=";
+    runHook postInstall
+  '';
 
   meta = {
     changelog = "https://github.com/composer/composer/releases/tag/${finalAttrs.version}";