nixpkgs/pkgs/development/php-packages/php-parallel-lint/default.nix
Jan Tojnar 35c91b9630 php80.packages.php-parallel-lint: Fix build
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
2022-11-14 23:36:38 +01:00

49 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;
};
}