9f09253e52
Some PECLs depend on other PECLs and, like internal PHP extension dependencies, need to be loaded in the correct order. This makes this possible by adding the argument "peclDeps" to buildPecl, which adds the extension to buildInputs and is treated the same way as internalDeps when the extension config is generated.
37 lines
814 B
Nix
37 lines
814 B
Nix
{ stdenv, lib, php, autoreconfHook, fetchurl, re2c }:
|
|
|
|
{ pname
|
|
, version
|
|
, internalDeps ? []
|
|
, peclDeps ? []
|
|
, buildInputs ? []
|
|
, nativeBuildInputs ? []
|
|
, postPhpize ? ""
|
|
, makeFlags ? []
|
|
, src ? fetchurl {
|
|
url = "http://pecl.php.net/get/${pname}-${version}.tgz";
|
|
inherit (args) sha256;
|
|
}
|
|
, ...
|
|
}@args:
|
|
|
|
stdenv.mkDerivation (args // {
|
|
name = "php-${pname}-${version}";
|
|
extensionName = pname;
|
|
|
|
inherit src;
|
|
|
|
nativeBuildInputs = [ autoreconfHook re2c ] ++ nativeBuildInputs;
|
|
buildInputs = [ php ] ++ peclDeps ++ buildInputs;
|
|
|
|
makeFlags = [ "EXTENSION_DIR=$(out)/lib/php/extensions" ] ++ makeFlags;
|
|
|
|
autoreconfPhase = ''
|
|
phpize
|
|
${postPhpize}
|
|
${lib.concatMapStringsSep "\n"
|
|
(dep: "mkdir -p ext; ln -s ${dep.dev}/include ext/${dep.extensionName}")
|
|
internalDeps}
|
|
'';
|
|
})
|