35c91b9630
One of the main use cases of this program is ensuring that a project
targeting older PHP version does not use syntax that is not available there.
Unfortunately, box is now only available for PHP ≥ 8.1.
And even if we bring it from PHP 8.1 package set, the produced PHAR
will contain syntax incompatible with older PHP versions.
To work around this we either need to disable requirements checks
or force use the default PHAR stub over the box’s one.
And it turns out that php-parallel-linter already does the former,
only we did not have access to the `box.json` file
because it was excluded from the `git archive`.
Let’s fetch the source using Git so that box configuration is available.
Reverts 2db0ddb968
48 lines
1.4 KiB
Nix
48 lines
1.4 KiB
Nix
{ mkDerivation, fetchFromGitHub, makeWrapper, lib, php, php81 }:
|
|
let
|
|
pname = "php-parallel-lint";
|
|
version = "1.3.2";
|
|
in
|
|
mkDerivation {
|
|
inherit pname version;
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "php-parallel-lint";
|
|
repo = "PHP-Parallel-Lint";
|
|
rev = "v${version}";
|
|
# `.gitattibutes` exclude `box.json` from the archive produced git.
|
|
forceFetchGit = true;
|
|
sha256 = "SPP1ynxJad2m5wknGt8z94fW7Ucx8nqLvwZVmlylOgM=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
makeWrapper
|
|
php.packages.composer
|
|
# box is only available for PHP ≥ 8.1 but the purpose of this tool is to validate
|
|
# that project does not use features not available on older PHP versions.
|
|
php81.packages.box
|
|
];
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
composer dump-autoload
|
|
box compile
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
mkdir -p $out/bin
|
|
install -D parallel-lint.phar $out/libexec/php-parallel-lint/php-parallel-lint.phar
|
|
makeWrapper ${php}/bin/php $out/bin/php-parallel-lint \
|
|
--add-flags "$out/libexec/php-parallel-lint/php-parallel-lint.phar"
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "Tool to check syntax of PHP files faster than serial check with fancier output";
|
|
license = licenses.bsd2;
|
|
homepage = "https://github.com/php-parallel-lint/PHP-Parallel-Lint";
|
|
maintainers = with maintainers; [ jtojnar ] ++ teams.php.members;
|
|
};
|
|
}
|