Unverified Commit 6bad2e21 authored by Pol Dellaiera's avatar Pol Dellaiera
Browse files

build-support/php: use `php.packages.composer-local-repo-plugin`

parent d503bc4f
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
{
  callPackage,
  nix-update-script,
  stdenvNoCC,
  lib,
@@ -12,8 +11,7 @@ let

    let
      phpDrv = finalAttrs.php or php;
      composer = finalAttrs.composer or phpDrv.packages.composer;
      composer-local-repo-plugin = callPackage ../../pkgs/composer-local-repo-plugin.nix { };
      composer = finalAttrs.composer or phpDrv.packages.composer-local-repo-plugin;
    in
    {
      composerLock = previousAttrs.composerLock or null;
@@ -24,7 +22,6 @@ let

      nativeBuildInputs = (previousAttrs.nativeBuildInputs or [ ]) ++ [
        composer
        composer-local-repo-plugin
        phpDrv
        phpDrv.composerHooks.composerInstallHook
      ];
@@ -74,7 +71,7 @@ let

      composerRepository =
        previousAttrs.composerRepository or (phpDrv.mkComposerRepository {
          inherit composer composer-local-repo-plugin;
          inherit composer;
          inherit (finalAttrs)
            patches
            pname
+1 −4
Original line number Diff line number Diff line
{
  callPackage,
  stdenvNoCC,
  lib,
  php,
@@ -23,8 +22,7 @@ let

    let
      phpDrv = finalAttrs.php or php;
      composer = finalAttrs.composer or phpDrv.packages.composer;
      composer-local-repo-plugin = callPackage ../../pkgs/composer-local-repo-plugin.nix { };
      composer = finalAttrs.composer or phpDrv.packages.composer-local-repo-plugin;
    in
    assert (lib.assertMsg (previousAttrs ? src) "mkComposerRepository expects src argument.");
    assert (
@@ -58,7 +56,6 @@ let

      nativeBuildInputs = (previousAttrs.nativeBuildInputs or [ ]) ++ [
        composer
        composer-local-repo-plugin
        phpDrv
        phpDrv.composerHooks.composerRepositoryHook
      ];
+1 −1
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ composerInstallBuildHook() {

    # Since this file cannot be generated in the composer-repository-hook.sh
    # because the file contains hardcoded nix store paths, we generate it here.
    composer-local-repo-plugin --no-ansi build-local-repo-lock -m "${composerRepository}" .
    composer build-local-repo-lock -m "${composerRepository}" .

    echo "Finished composerInstallBuildHook"
}
+1 −1
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@ composerRepositoryBuildHook() {
    # Build the local composer repository
    # The command 'build-local-repo' is provided by the Composer plugin
    # nix-community/composer-local-repo-plugin.
    composer-local-repo-plugin --no-ansi build-local-repo-lock ${composerNoDev:+--no-dev} -r repository
    composer build-local-repo-lock ${composerNoDev:+--no-dev} -r repository

    echo "Finished composerRepositoryBuildHook"
}
+0 −116
Original line number Diff line number Diff line
{
  php,
  callPackage,
  stdenvNoCC,
  lib,
  fetchFromGitHub,
  makeBinaryWrapper,
}:

let
  composer = callPackage ./composer-phar.nix { inherit (php.packages.composer) version pharHash; };

  composerKeys = stdenvNoCC.mkDerivation (finalComposerKeysAttrs: {
    pname = "composer-keys";
    version = "fa5a62092f33e094073fbda23bbfc7188df3cbc5";

    src = fetchFromGitHub {
      owner = "composer";
      repo = "composer.github.io";
      rev = "${finalComposerKeysAttrs.version}";
      hash = "sha256-3Sfn71LDG1jHwuEIU8iEnV3k6D6QTX7KVIKVaNSuCVE=";
    };

    installPhase = ''
      runHook preInstall

      mkdir -p $out
      install releases.pub $out/keys.tags.pub
      install snapshots.pub $out/keys.dev.pub

      runHook postInstall
    '';
  });
in
stdenvNoCC.mkDerivation (finalAttrs: {
  pname = "composer-local-repo-plugin";
  version = "1.1.0";

  src = fetchFromGitHub {
    owner = "nix-community";
    repo = "composer-local-repo-plugin";
    rev = finalAttrs.version;
    hash = "sha256-edbn07r/Uc1g0qOuVBZBs6N1bMN5kIfA1b4FCufdw5M=";
  };

  env = {
    COMPOSER_CACHE_DIR = "/dev/null";
    COMPOSER_MIRROR_PATH_REPOS = "1";
    COMPOSER_HTACCESS_PROTECT = "0";
    COMPOSER_DISABLE_NETWORK = "1";
  };

  nativeBuildInputs = [ makeBinaryWrapper ];

  buildInputs = [ composer ];

  configurePhase = ''
    runHook preConfigure

    export COMPOSER_HOME=${placeholder "out"}

    runHook postConfigure
  '';

  buildPhase = ''
    runHook preBuild

    # Configure composer globally
    composer global init --quiet --no-interaction --no-ansi \
      --name="nixos/composer" \
      --homepage "https://nixos.org/" \
      --description "Composer with nix-community/composer-local-repo-plugin" \
      --license "MIT"

    composer global config --quiet minimum-stability dev
    composer global config --quiet prefer-stable true
    composer global config --quiet apcu-autoloader false
    composer global config --quiet allow-plugins.nix-community/composer-local-repo-plugin true
    composer global config --quiet repo.packagist false
    composer global config --quiet repo.plugin path $src

    # Install the local repository plugin
    composer global require --quiet --no-ansi --no-interaction nix-community/composer-local-repo-plugin

    runHook postBuild
  '';

  checkPhase = ''
    runHook preCheck

    composer global validate --no-ansi
    composer global show --no-ansi nix-community/composer-local-repo-plugin

    runHook postCheck
  '';

  installPhase = ''
    runHook preInstall

    mkdir -p $out
    cp -ar ${composerKeys}/* $out/

    makeWrapper ${composer}/bin/composer $out/bin/composer-local-repo-plugin \
      --prefix COMPOSER_HOME : $out

    runHook postInstall
  '';

  meta = {
    description = "Composer local repo plugin for Composer";
    homepage = "https://github.com/nix-community/composer-local-repo-plugin";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ drupol ];
    platforms = lib.platforms.all;
  };
})