workflows/check-nix-format: enforce for build-support/php

This commit is contained in:
Pol Dellaiera 2024-05-04 23:06:24 +02:00
parent c759efa5e7
commit 75ae762133
No known key found for this signature in database
GPG Key ID: D476DFE9C67467CA
7 changed files with 229 additions and 143 deletions

View File

@ -40,6 +40,7 @@ jobs:
pkgs/top-level/cuda-packages.nix pkgs/top-level/cuda-packages.nix
NIX_FMT_PATHS_VSCODE_EXTS: pkgs/applications/editors/vscode/extensions NIX_FMT_PATHS_VSCODE_EXTS: pkgs/applications/editors/vscode/extensions
NIX_FMT_PATHS_PHP_PACKAGES: pkgs/development/php-packages NIX_FMT_PATHS_PHP_PACKAGES: pkgs/development/php-packages
NIX_FMT_PATHS_BUILD_SUPPORT_PHP: pkgs/build-support/php
# Iterate over all environment variables beginning with NIX_FMT_PATHS_. # Iterate over all environment variables beginning with NIX_FMT_PATHS_.
run: | run: |
for env_var in "${!NIX_FMT_PATHS_@}"; do for env_var in "${!NIX_FMT_PATHS_@}"; do

View File

@ -1,7 +1,17 @@
{ callPackage, stdenvNoCC, lib, writeTextDir, php, makeBinaryWrapper, fetchFromGitHub, fetchurl }: {
callPackage,
stdenvNoCC,
lib,
writeTextDir,
php,
makeBinaryWrapper,
fetchFromGitHub,
fetchurl,
}:
let let
buildComposerProjectOverride = finalAttrs: previousAttrs: buildComposerProjectOverride =
finalAttrs: previousAttrs:
let let
phpDrv = finalAttrs.php or php; phpDrv = finalAttrs.php or php;
@ -22,49 +32,58 @@ let
phpDrv.composerHooks.composerInstallHook phpDrv.composerHooks.composerInstallHook
]; ];
buildInputs = (previousAttrs.buildInputs or [ ]) ++ [ buildInputs = (previousAttrs.buildInputs or [ ]) ++ [ phpDrv ];
phpDrv
];
patches = previousAttrs.patches or [ ]; patches = previousAttrs.patches or [ ];
strictDeps = previousAttrs.strictDeps or true; strictDeps = previousAttrs.strictDeps or true;
# Should we keep these empty phases? # Should we keep these empty phases?
configurePhase = previousAttrs.configurePhase or '' configurePhase =
runHook preConfigure previousAttrs.configurePhase or ''
runHook preConfigure
runHook postConfigure runHook postConfigure
''; '';
buildPhase = previousAttrs.buildPhase or '' buildPhase =
runHook preBuild previousAttrs.buildPhase or ''
runHook preBuild
runHook postBuild runHook postBuild
''; '';
doCheck = previousAttrs.doCheck or true; doCheck = previousAttrs.doCheck or true;
checkPhase = previousAttrs.checkPhase or '' checkPhase =
runHook preCheck previousAttrs.checkPhase or ''
runHook preCheck
runHook postCheck runHook postCheck
''; '';
installPhase = previousAttrs.installPhase or '' installPhase =
runHook preInstall previousAttrs.installPhase or ''
runHook preInstall
runHook postInstall runHook postInstall
''; '';
doInstallCheck = previousAttrs.doInstallCheck or false; doInstallCheck = previousAttrs.doInstallCheck or false;
installCheckPhase = previousAttrs.installCheckPhase or '' installCheckPhase =
runHook preInstallCheck previousAttrs.installCheckPhase or ''
runHook preInstallCheck
runHook postInstallCheck runHook postInstallCheck
''; '';
composerRepository = phpDrv.mkComposerRepository { composerRepository = phpDrv.mkComposerRepository {
inherit composer composer-local-repo-plugin; inherit composer composer-local-repo-plugin;
inherit (finalAttrs) patches pname src vendorHash version; inherit (finalAttrs)
patches
pname
src
vendorHash
version
;
composerLock = previousAttrs.composerLock or null; composerLock = previousAttrs.composerLock or null;
composerNoDev = previousAttrs.composerNoDev or true; composerNoDev = previousAttrs.composerNoDev or true;
@ -73,9 +92,9 @@ let
composerStrictValidation = previousAttrs.composerStrictValidation or true; composerStrictValidation = previousAttrs.composerStrictValidation or true;
}; };
COMPOSER_CACHE_DIR="/dev/null"; COMPOSER_CACHE_DIR = "/dev/null";
COMPOSER_DISABLE_NETWORK="1"; COMPOSER_DISABLE_NETWORK = "1";
COMPOSER_MIRROR_PATH_REPOS="1"; COMPOSER_MIRROR_PATH_REPOS = "1";
meta = previousAttrs.meta or { } // { meta = previousAttrs.meta or { } // {
platforms = lib.platforms.all; platforms = lib.platforms.all;

View File

@ -1,4 +1,11 @@
{ callPackage, stdenvNoCC, lib, writeTextDir, fetchFromGitHub, php }: {
callPackage,
stdenvNoCC,
lib,
writeTextDir,
fetchFromGitHub,
php,
}:
let let
mkComposerRepositoryOverride = mkComposerRepositoryOverride =
@ -22,12 +29,24 @@ let
composer-local-repo-plugin = callPackage ./pkgs/composer-local-repo-plugin.nix { }; composer-local-repo-plugin = callPackage ./pkgs/composer-local-repo-plugin.nix { };
in in
assert (lib.assertMsg (previousAttrs ? src) "mkComposerRepository expects src argument."); assert (lib.assertMsg (previousAttrs ? src) "mkComposerRepository expects src argument.");
assert (lib.assertMsg (previousAttrs ? vendorHash) "mkComposerRepository expects vendorHash argument."); assert (
lib.assertMsg (previousAttrs ? vendorHash) "mkComposerRepository expects vendorHash argument."
);
assert (lib.assertMsg (previousAttrs ? version) "mkComposerRepository expects version argument."); assert (lib.assertMsg (previousAttrs ? version) "mkComposerRepository expects version argument.");
assert (lib.assertMsg (previousAttrs ? pname) "mkComposerRepository expects pname argument."); assert (lib.assertMsg (previousAttrs ? pname) "mkComposerRepository expects pname argument.");
assert (lib.assertMsg (previousAttrs ? composerNoDev) "mkComposerRepository expects composerNoDev argument."); assert (
assert (lib.assertMsg (previousAttrs ? composerNoPlugins) "mkComposerRepository expects composerNoPlugins argument."); lib.assertMsg (previousAttrs ? composerNoDev) "mkComposerRepository expects composerNoDev argument."
assert (lib.assertMsg (previousAttrs ? composerNoScripts) "mkComposerRepository expects composerNoScripts argument."); );
assert (
lib.assertMsg (
previousAttrs ? composerNoPlugins
) "mkComposerRepository expects composerNoPlugins argument."
);
assert (
lib.assertMsg (
previousAttrs ? composerNoScripts
) "mkComposerRepository expects composerNoScripts argument."
);
{ {
composerNoDev = previousAttrs.composerNoDev or true; composerNoDev = previousAttrs.composerNoDev or true;
composerNoPlugins = previousAttrs.composerNoPlugins or true; composerNoPlugins = previousAttrs.composerNoPlugins or true;
@ -51,37 +70,42 @@ let
strictDeps = previousAttrs.strictDeps or true; strictDeps = previousAttrs.strictDeps or true;
# Should we keep these empty phases? # Should we keep these empty phases?
configurePhase = previousAttrs.configurePhase or '' configurePhase =
runHook preConfigure previousAttrs.configurePhase or ''
runHook preConfigure
runHook postConfigure runHook postConfigure
''; '';
buildPhase = previousAttrs.buildPhase or '' buildPhase =
runHook preBuild previousAttrs.buildPhase or ''
runHook preBuild
runHook postBuild runHook postBuild
''; '';
doCheck = previousAttrs.doCheck or true; doCheck = previousAttrs.doCheck or true;
checkPhase = previousAttrs.checkPhase or '' checkPhase =
runHook preCheck previousAttrs.checkPhase or ''
runHook preCheck
runHook postCheck runHook postCheck
''; '';
installPhase = previousAttrs.installPhase or '' installPhase =
runHook preInstall previousAttrs.installPhase or ''
runHook preInstall
runHook postInstall runHook postInstall
''; '';
doInstallCheck = previousAttrs.doInstallCheck or false; doInstallCheck = previousAttrs.doInstallCheck or false;
installCheckPhase = previousAttrs.installCheckPhase or '' installCheckPhase =
runHook preInstallCheck previousAttrs.installCheckPhase or ''
runHook preInstallCheck
runHook postInstallCheck runHook postInstallCheck
''; '';
COMPOSER_CACHE_DIR = "/dev/null"; COMPOSER_CACHE_DIR = "/dev/null";
COMPOSER_MIRROR_PATH_REPOS = "1"; COMPOSER_MIRROR_PATH_REPOS = "1";
@ -89,7 +113,8 @@ let
COMPOSER_DISABLE_NETWORK = "0"; COMPOSER_DISABLE_NETWORK = "0";
outputHashMode = "recursive"; outputHashMode = "recursive";
outputHashAlgo = if (finalAttrs ? vendorHash && finalAttrs.vendorHash != "") then null else "sha256"; outputHashAlgo =
if (finalAttrs ? vendorHash && finalAttrs.vendorHash != "") then null else "sha256";
outputHash = finalAttrs.vendorHash or ""; outputHash = finalAttrs.vendorHash or "";
}; };
in in

View File

@ -1,45 +1,69 @@
{ stdenv, lib, php, autoreconfHook, fetchurl, re2c, nix-update-script }: {
stdenv,
lib,
php,
autoreconfHook,
fetchurl,
re2c,
nix-update-script,
}:
{ pname {
, version pname,
, internalDeps ? [ ] version,
, peclDeps ? [ ] internalDeps ? [ ],
, buildInputs ? [ ] peclDeps ? [ ],
, nativeBuildInputs ? [ ] buildInputs ? [ ],
, postPhpize ? "" nativeBuildInputs ? [ ],
, makeFlags ? [ ] postPhpize ? "",
, src ? fetchurl ({ makeFlags ? [ ],
url = "https://pecl.php.net/get/${pname}-${version}.tgz"; src ? fetchurl (
} // lib.filterAttrs (attrName: _: lib.elem attrName [ "sha256" "hash" ]) args) {
, passthru ? { } url = "https://pecl.php.net/get/${pname}-${version}.tgz";
, ... }
// lib.filterAttrs (
attrName: _:
lib.elem attrName [
"sha256"
"hash"
]
) args
),
passthru ? { },
...
}@args: }@args:
stdenv.mkDerivation (args // { stdenv.mkDerivation (
name = "php-${pname}-${version}"; args
extensionName = pname; // {
name = "php-${pname}-${version}";
extensionName = pname;
inherit src; inherit src;
nativeBuildInputs = [ autoreconfHook re2c ] ++ nativeBuildInputs; nativeBuildInputs = [
buildInputs = [ php ] ++ peclDeps ++ buildInputs; autoreconfHook
re2c
] ++ nativeBuildInputs;
buildInputs = [ php ] ++ peclDeps ++ buildInputs;
makeFlags = [ "EXTENSION_DIR=$(out)/lib/php/extensions" ] ++ makeFlags; makeFlags = [ "EXTENSION_DIR=$(out)/lib/php/extensions" ] ++ makeFlags;
autoreconfPhase = '' autoreconfPhase = ''
phpize phpize
${postPhpize} ${postPhpize}
${lib.concatMapStringsSep "\n" ${lib.concatMapStringsSep "\n" (
(dep: "mkdir -p ext; ln -s ${dep.dev}/include ext/${dep.extensionName}") dep: "mkdir -p ext; ln -s ${dep.dev}/include ext/${dep.extensionName}"
internalDeps} ) internalDeps}
''; '';
checkPhase = "NO_INTERACTON=yes make test"; checkPhase = "NO_INTERACTON=yes make test";
passthru = passthru // { passthru = passthru // {
# Thes flags were introduced for `nix-update` so that it can update # Thes flags were introduced for `nix-update` so that it can update
# PHP extensions correctly. # PHP extensions correctly.
# See the corresponding PR: https://github.com/Mic92/nix-update/pull/123 # See the corresponding PR: https://github.com/Mic92/nix-update/pull/123
isPhpExtension = true; isPhpExtension = true;
updateScript = nix-update-script {}; updateScript = nix-update-script { };
}; };
}) }
)

View File

@ -1,11 +1,12 @@
{ lib {
, makeSetupHook lib,
, diffutils makeSetupHook,
, jq diffutils,
, writeShellApplication jq,
, moreutils writeShellApplication,
, cacert moreutils,
, buildPackages cacert,
buildPackages,
}: }:
let let
@ -16,24 +17,30 @@ let
}; };
in in
{ {
composerRepositoryHook = makeSetupHook composerRepositoryHook = makeSetupHook {
{ name = "composer-repository-hook.sh";
name = "composer-repository-hook.sh"; propagatedBuildInputs = [
propagatedBuildInputs = [ jq moreutils cacert ]; jq
substitutions = { moreutils
phpScriptUtils = lib.getExe php-script-utils; cacert
}; ];
} ./composer-repository-hook.sh; substitutions = {
phpScriptUtils = lib.getExe php-script-utils;
};
} ./composer-repository-hook.sh;
composerInstallHook = makeSetupHook composerInstallHook = makeSetupHook {
{ name = "composer-install-hook.sh";
name = "composer-install-hook.sh"; propagatedBuildInputs = [
propagatedBuildInputs = [ jq moreutils cacert ]; jq
substitutions = { moreutils
# Specify the stdenv's `diff` by abspath to ensure that the user's build cacert
# inputs do not cause us to find the wrong `diff`. ];
cmp = "${lib.getBin buildPackages.diffutils}/bin/cmp"; substitutions = {
phpScriptUtils = lib.getExe php-script-utils; # Specify the stdenv's `diff` by abspath to ensure that the user's build
}; # inputs do not cause us to find the wrong `diff`.
} ./composer-install-hook.sh; cmp = "${lib.getBin buildPackages.diffutils}/bin/cmp";
phpScriptUtils = lib.getExe php-script-utils;
};
} ./composer-install-hook.sh;
} }

View File

@ -1,9 +1,14 @@
{ php, callPackage, stdenvNoCC, lib, fetchFromGitHub, makeBinaryWrapper }: {
php,
callPackage,
stdenvNoCC,
lib,
fetchFromGitHub,
makeBinaryWrapper,
}:
let let
composer = callPackage ./composer-phar.nix { composer = callPackage ./composer-phar.nix { inherit (php.packages.composer) version pharHash; };
inherit (php.packages.composer) version pharHash;
};
composerKeys = stdenvNoCC.mkDerivation (finalComposerKeysAttrs: { composerKeys = stdenvNoCC.mkDerivation (finalComposerKeysAttrs: {
pname = "composer-keys"; pname = "composer-keys";
@ -43,13 +48,9 @@ stdenvNoCC.mkDerivation (finalAttrs: {
COMPOSER_HTACCESS_PROTECT = "0"; COMPOSER_HTACCESS_PROTECT = "0";
COMPOSER_DISABLE_NETWORK = "1"; COMPOSER_DISABLE_NETWORK = "1";
nativeBuildInputs = [ nativeBuildInputs = [ makeBinaryWrapper ];
makeBinaryWrapper
];
buildInputs = [ buildInputs = [ composer ];
composer
];
configurePhase = '' configurePhase = ''
runHook preConfigure runHook preConfigure

View File

@ -1,17 +1,17 @@
{ {
_7zz _7zz,
, cacert cacert,
, curl curl,
, fetchurl fetchurl,
, git git,
, lib lib,
, makeBinaryWrapper makeBinaryWrapper,
, php php,
, stdenvNoCC stdenvNoCC,
, unzip unzip,
, xz xz,
, version version,
, pharHash pharHash,
}: }:
stdenvNoCC.mkDerivation (finalAttrs: { stdenvNoCC.mkDerivation (finalAttrs: {
@ -34,7 +34,16 @@ stdenvNoCC.mkDerivation (finalAttrs: {
install -D $src $out/libexec/composer/composer.phar install -D $src $out/libexec/composer/composer.phar
makeWrapper ${php}/bin/php $out/bin/composer \ makeWrapper ${php}/bin/php $out/bin/composer \
--add-flags "$out/libexec/composer/composer.phar" \ --add-flags "$out/libexec/composer/composer.phar" \
--prefix PATH : ${lib.makeBinPath [ _7zz cacert curl git unzip xz ]} --prefix PATH : ${
lib.makeBinPath [
_7zz
cacert
curl
git
unzip
xz
]
}
runHook postInstall runHook postInstall
''; '';