bb2a310c5c
turned on PostgreSQL support by default (maybe I shouldn't, since it makes PHP rather dependency-heavy...). svn path=/nixpkgs/trunk/; revision=12002
161 lines
4 KiB
Nix
161 lines
4 KiB
Nix
let version = "5.2.6"; in
|
|
|
|
args:
|
|
|
|
(args.mkDerivationByConfiguration {
|
|
|
|
flagConfig = {
|
|
|
|
# much left to do here...
|
|
|
|
mandatory = { buildInputs = ["flex" "bison"]; };
|
|
|
|
# SAPI modules:
|
|
|
|
apxs2 = {
|
|
cfgOption = "--with-apxs2=\$apacheHttpd/bin/apxs";
|
|
pass = "apacheHttpd";
|
|
};
|
|
|
|
# Extensions
|
|
|
|
curl = {
|
|
cfgOption = "--with-curl=${args.curl} --with-curlwrappers";
|
|
pass = "curl";
|
|
};
|
|
|
|
zlib = {
|
|
cfgOption = "--with-zlib=${args.zlib}";
|
|
pass = "zlib";
|
|
};
|
|
|
|
libxml2 = {
|
|
cfgOption = "--with-libxml-dir=\$libxml2";
|
|
pass = { inherit (args) libxml2; };
|
|
};
|
|
|
|
no_libxml2 = {
|
|
cfgOption = "--disable-libxml";
|
|
};
|
|
|
|
postgresql = {
|
|
cfgOption = "--with-pgsql=\$postgresql";
|
|
pass = { inherit (args) postgresql; };
|
|
};
|
|
|
|
mysql = {
|
|
cfgOption = "--with-mysql=\$mysql";
|
|
pass = { inherit (args) mysql; };
|
|
};
|
|
|
|
mysqli = {
|
|
cfgOption = "--with-mysqli=\$mysql/bin/mysql_config";
|
|
pass = { inherit (args) mysql; };
|
|
};
|
|
|
|
mysqli_embedded = {
|
|
cfgOption = "--enable-embedded-mysqli";
|
|
depends = "mysqli";
|
|
};
|
|
|
|
pdo_mysql = {
|
|
cfgOption = "--with-pdo-mysql=\$mysql";
|
|
pass = { inherit (args) mysql; };
|
|
};
|
|
|
|
no_pdo_mysql = { };
|
|
|
|
bcmath = {
|
|
cfgOption = "--enable-bcmath";
|
|
};
|
|
|
|
gd = {
|
|
cfgOption = "--with-gd=${args.gd}";
|
|
buildInputs = ["gd"]; # <-- urgh, these strings are ugly
|
|
};
|
|
|
|
/*
|
|
Building xdebug withing php to be able to add the parameters to the ini file.. Ther should be a better way
|
|
meta = {
|
|
description = "debugging support for PHP";
|
|
homepage = http://xdebug.org;
|
|
license = "based on the PHP license - as is";
|
|
};
|
|
*/
|
|
xdebug = {
|
|
buildInputs = [ "automake" "autoconf" ];
|
|
pass = {
|
|
xdebug_src = args.fetchurl {
|
|
name = "xdebug-2.0.2.tar.gz";
|
|
url = "http://xdebug.org/link.php?url=xdebug202";
|
|
sha256 = "1h0bxvf8krr203fmk1k7izrrr81gz537xmd3pqh4vslwdlbhrvic";
|
|
};
|
|
};
|
|
};
|
|
|
|
};
|
|
|
|
defaults = [ "mysql" "mysqli" "pdo_mysql" "libxml2" "apxs2" "bcmath" ];
|
|
|
|
optionals = [ "libxml2" "gettext" "postgresql" "zlib"];
|
|
|
|
extraAttrs = co: {
|
|
name = "php_configurable-${version}";
|
|
|
|
buildInputs = args.lib.getAttr ["phpIncludes"] [] args ++ co.buildInputs;
|
|
|
|
configurePhase = ''
|
|
iniFile=$out/etc/$name.ini
|
|
[[ -z "$libxml2" ]] || export PATH=$PATH:$libxml2/bin
|
|
./configure --with-config-file-scan-dir=/etc --with-config-file-path=$out/etc --prefix=$out ${co.configureFlags}
|
|
echo configurePhase end
|
|
'';
|
|
|
|
installPhase = ''
|
|
unset installPhase; installPhase;
|
|
cp php.ini-recommended $iniFile
|
|
|
|
# Now Let's build xdebug if flag has been given
|
|
# TODO I think there are better paths than the given below
|
|
if [ -n $flag_set_xdebug ]; then
|
|
PATH=$PATH:$out/bin
|
|
tar xfz $xdebug_src;
|
|
cd xdebug*
|
|
phpize
|
|
./configure --prefix=$out
|
|
make
|
|
ensureDir $out/lib; cp modules/xdebug.so $out/lib
|
|
cat >> $out/etc/php.ini << EOF
|
|
zend_extension="$out/lib/xdebug.so"
|
|
zend_extension_ts="$out/lib/xdebug.so"
|
|
zend_extension_debug="$out/lib/xdebug.so"
|
|
xdebug.remote_enable=true
|
|
xdebug.remote_host=127.0.0.1
|
|
xdebug.remote_port=9000
|
|
xdebug.remote_handler=dbgp
|
|
xdebug.profiler_enable=0
|
|
xdebug.profiler_output_dir="/tmp/xdebug"
|
|
xdebug.remote_mode=req
|
|
max_execution_time = 300
|
|
date.timezone = UTC
|
|
EOF
|
|
fi
|
|
'';
|
|
|
|
src = args.fetchurl {
|
|
url = "http://nl.php.net/get/php-${version}.tar.bz2/from/this/mirror";
|
|
md5 = "7380ffecebd95c6edb317ef861229ebd";
|
|
name = "php-${version}.tar.bz2";
|
|
};
|
|
|
|
meta = {
|
|
description = "The PHP language runtime engine";
|
|
homepage = http://www.php.net/;
|
|
license = "PHP-3";
|
|
};
|
|
|
|
patches = [./fix.patch];
|
|
};
|
|
|
|
}) args
|