2009-12-03 15:33:40 +01:00
|
|
|
let version = "5.2.11"; in
|
2008-01-03 11:46:18 +01:00
|
|
|
|
2008-12-20 02:20:35 +01:00
|
|
|
args: with args;
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2008-12-20 02:20:35 +01:00
|
|
|
let inherit (args.composableDerivation) composableDerivation edf wwf; in
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
composableDerivation {} ( fixed : {
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
name = "php_configurable-${version}";
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
buildInputs = ["flex" "bison" "pkgconfig"];
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
flags = {
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2008-12-20 02:20:35 +01:00
|
|
|
# much left to do here...
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
# SAPI modules:
|
|
|
|
|
|
|
|
apxs2 = {
|
|
|
|
configureFlags = ["--with-apxs2=${apacheHttpd}/bin/apxs"];
|
|
|
|
buildInputs = [apacheHttpd];
|
|
|
|
};
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
# Extensions
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
curl = {
|
|
|
|
configureFlags = ["--with-curl=${args.curl}" "--with-curlwrappers"];
|
2009-04-27 03:18:03 +02:00
|
|
|
buildInputs = [curl openssl];
|
2009-03-07 00:21:28 +01:00
|
|
|
};
|
2008-12-20 02:20:35 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
zlib = {
|
|
|
|
configureFlags = ["--with-zlib=${args.zlib}"];
|
|
|
|
buildInputs = [zlib];
|
|
|
|
};
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
libxml2 = {
|
|
|
|
configureFlags = ["--with-libxml-dir=${libxml2}"];
|
|
|
|
buildInputs = [ libxml2 ];
|
|
|
|
};
|
|
|
|
|
2009-05-13 12:43:34 +02:00
|
|
|
sqlite = {
|
|
|
|
configureFlags = ["--with-pdo-sqlite=${sqlite}"];
|
|
|
|
buildInputs = [ sqlite ];
|
|
|
|
};
|
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
postgresql = {
|
|
|
|
configureFlags = ["--with-pgsql=${postgresql}"];
|
|
|
|
buildInputs = [ postgresql ];
|
|
|
|
};
|
|
|
|
|
|
|
|
mysql = {
|
|
|
|
configureFlags = ["--with-mysql=${mysql}"];
|
|
|
|
buildInputs = [ mysql ];
|
|
|
|
};
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
mysqli = {
|
|
|
|
configureFlags = ["--with-mysqli=${mysql}/bin/mysql_config"];
|
|
|
|
buildInputs = [ mysql];
|
|
|
|
};
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
mysqli_embedded = {
|
|
|
|
configureFlags = ["--enable-embedded-mysqli"];
|
|
|
|
depends = "mysqli";
|
|
|
|
assertion = fixed.mysqliSupport;
|
|
|
|
};
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
pdo_mysql = {
|
|
|
|
configureFlags = ["--with-pdo-mysql=${mysql}"];
|
|
|
|
buildInputs = [ mysql ];
|
|
|
|
};
|
|
|
|
|
|
|
|
bcmath = {
|
|
|
|
configureFlags = ["--enable-bcmath"];
|
|
|
|
};
|
2008-08-31 08:36:56 +02:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
gd = {
|
|
|
|
configureFlags = ["--with-gd=${args.gd}"];
|
|
|
|
buildInputs = [gd];
|
|
|
|
};
|
2008-08-31 08:36:56 +02:00
|
|
|
|
2009-06-14 03:30:04 +02:00
|
|
|
soap = {
|
|
|
|
configureFlags = ["--enable-soap"];
|
|
|
|
};
|
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
sockets = {
|
|
|
|
configureFlags = ["--enable-sockets"];
|
|
|
|
};
|
2009-01-04 21:18:20 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
openssl = {
|
|
|
|
configureFlags = ["--with-openssl=${args.openssl}"];
|
|
|
|
buildInputs = ["openssl"];
|
2008-06-06 15:03:55 +02:00
|
|
|
};
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
mbstring = {
|
|
|
|
configureFlags = ["--enable-mbstring"];
|
|
|
|
};
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
/*
|
2009-10-23 10:56:46 +02:00
|
|
|
php is build within this derivation in order to add the xdebug lines to the php.ini.
|
|
|
|
So both Apache and command line php both use xdebug without having to configure anything.
|
|
|
|
Xdebug could be put in its own derivation.
|
2009-10-23 13:30:20 +02:00
|
|
|
* /
|
2009-03-07 00:21:28 +01:00
|
|
|
meta = {
|
|
|
|
description = "debugging support for PHP";
|
|
|
|
homepage = http://xdebug.org;
|
|
|
|
license = "based on the PHP license - as is";
|
|
|
|
};
|
|
|
|
*/
|
|
|
|
xdebug = {
|
|
|
|
buildInputs = [ automake autoconf ];
|
|
|
|
xdebug_src = args.fetchurl {
|
2009-10-22 18:49:07 +02:00
|
|
|
url = "http://xdebug.org/files/xdebug-2.0.5.tgz";
|
|
|
|
sha256 = "1cmq7c36gj8n41mfq1wba5rij8j77yqhydpcsbcysk1zchg68f26";
|
2009-03-07 00:21:28 +01:00
|
|
|
};
|
|
|
|
};
|
2007-11-05 22:13:16 +01:00
|
|
|
};
|
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
cfg = {
|
2009-09-25 21:39:05 +02:00
|
|
|
mysqlSupport = getConfig ["php" "mysql"] true;
|
|
|
|
mysqliSupport = getConfig ["php" "mysqli"] true;
|
|
|
|
pdo_mysqlSupport = getConfig ["php" "pdo_mysql"] true;
|
|
|
|
libxml2Support = getConfig ["php" "libxml2"] true;
|
|
|
|
apxs2Support = getConfig ["php" "apxs2"] true;
|
|
|
|
bcmathSupport = getConfig ["php" "bcmath"] true;
|
|
|
|
socketsSupport = getConfig ["php" "sockets"] true;
|
|
|
|
curlSupport = getConfig ["php" "curl"] true;
|
|
|
|
gettextSupport = getConfig ["php" "gettext"] true;
|
|
|
|
postgresqlSupport = getConfig ["php" "postgresql"] true;
|
|
|
|
sqliteSupport = getConfig ["php" "sqlite"] true;
|
|
|
|
soapSupport = getConfig ["php" "soap"] true;
|
|
|
|
zlibSupport = getConfig ["php" "zlib"] true;
|
|
|
|
opensslSupport = getConfig ["php" "openssl"] true;
|
2009-10-22 18:49:07 +02:00
|
|
|
xdebugSupport = getConfig ["php" "xdebug"] false;
|
2009-09-25 21:39:05 +02:00
|
|
|
mbstringSupport = getConfig ["php" "mbstring"] true;
|
|
|
|
gdSupport = getConfig ["php" "gd"] true;
|
2009-03-07 00:21:28 +01:00
|
|
|
};
|
2007-11-05 22:13:16 +01:00
|
|
|
|
2009-05-07 07:45:40 +02:00
|
|
|
# only -O1
|
2009-03-07 00:21:28 +01:00
|
|
|
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 $configureFlags
|
|
|
|
echo configurePhase end
|
2009-05-07 07:45:40 +02:00
|
|
|
sed -e 's/-O2/-O1/g' -i Makefile # http://bugs.php.net/bug.php?id=47730&edit=3
|
2009-03-07 00:21:28 +01:00
|
|
|
'';
|
|
|
|
|
|
|
|
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
|
2009-10-23 10:56:46 +02:00
|
|
|
if [ -n "$xdebug_src" ]; then
|
2009-03-07 00:21:28 +01:00
|
|
|
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";
|
2009-12-03 15:33:40 +01:00
|
|
|
md5 = "286bf34630f5643c25ebcedfec5e0a09";
|
2009-03-07 00:21:28 +01:00
|
|
|
name = "php-${version}.tar.bz2";
|
|
|
|
};
|
2008-12-20 02:20:35 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
meta = {
|
|
|
|
description = "The PHP language runtime engine";
|
|
|
|
homepage = http://www.php.net/;
|
|
|
|
license = "PHP-3";
|
2007-11-05 22:13:16 +01:00
|
|
|
};
|
2008-12-20 02:20:35 +01:00
|
|
|
|
2009-03-07 00:21:28 +01:00
|
|
|
patches = [./fix.patch];
|
|
|
|
|
|
|
|
})
|