mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-20 20:53:48 +00:00
6b05651c20
Firstly this creates a cycle in 9.6 .out <-> .dev after fixing the PGXS path. Secondly this breaks extension handling and the pg_config as it resolves a lot of paths relatively resulting in the following bogus output: BINDIR = /nix/store/csiq6zkn2c994kkdjln461jvgbka4yb1-postgresql-9.5.9-dev/bin DOCDIR = /nix/store/csiq6zkn2c994kkdjln461jvgbka4yb1-postgresql-9.5.9-dev/share/doc HTMLDIR = /nix/store/csiq6zkn2c994kkdjln461jvgbka4yb1-postgresql-9.5.9-dev/share/doc INCLUDEDIR = /nix/store/csiq6zkn2c994kkdjln461jvgbka4yb1-postgresql-9.5.9-dev/include PKGINCLUDEDIR = /nix/store/csiq6zkn2c994kkdjln461jvgbka4yb1-postgresql-9.5.9-dev/include INCLUDEDIR-SERVER = /nix/store/csiq6zkn2c994kkdjln461jvgbka4yb1-postgresql-9.5.9-dev/include/server LIBDIR = /nix/store/85s9m7hpfzsl93wcb5gr6ii2km9mpx3z-postgresql-9.5.9-lib/lib PKGLIBDIR = /nix/store/85s9m7hpfzsl93wcb5gr6ii2km9mpx3z-postgresql-9.5.9-lib/lib LOCALEDIR = /nix/store/csiq6zkn2c994kkdjln461jvgbka4yb1-postgresql-9.5.9-dev/share/locale MANDIR = /nix/store/csiq6zkn2c994kkdjln461jvgbka4yb1-postgresql-9.5.9-dev/share/man SHAREDIR = /nix/store/csiq6zkn2c994kkdjln461jvgbka4yb1-postgresql-9.5.9-dev/share SYSCONFDIR = /etc/postgresql PGXS = /nix/store/csiq6zkn2c994kkdjln461jvgbka4yb1-postgresql-9.5.9-dev/lib/pgxs/src/makefiles/pgxs.mk CONFIGURE = '--prefix=/nix/store/irqqq4g173g9xrk1mh12kxv0s1d8dbyh-postgresql-9.5.9' '--with-openssl' '--with-libxml' '--sysconfdir=/etc' '--libdir=/nix/store/85s9m7hpfzsl93wcb5gr6ii2km9mpx3z-postgresql-9.5.9-lib/lib' '--with-ossp-uuid' 'CC=gcc' CC = gcc CPPFLAGS = -D_GNU_SOURCE -I/nix/store/z6r0j2b4bcdfw3pck2x6ay0vvx0qzb92-libxml2-2.9.5-dev/include/libxml2 CFLAGS = -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 CFLAGS_SL = -fPIC LDFLAGS = -L../../../src/common -L/nix/store/ighspl5sa3qi1zy7nkih0c9p73xjfqa6-libxml2-2.9.5/lib -Wl,--as-needed -Wl,-rpath,'/nix/store/85s9m7hpfzsl93wcb5gr6ii2km9mpx3z-postgresql-9.5.9-lib/lib',--enable-new-dtags LDFLAGS_EX = LDFLAGS_SL = LIBS = -lpgcommon -lpgport -lxml2 -lssl -lcrypto -lz -lreadline -lrt -lcrypt -ldl -lm VERSION = PostgreSQL 9.5.9 This can probably only be properly fixed by rewriting pg_config in large parts as it does not in any way respect splitting the postgres tree and assumes it can simply resolve paths relative to its location. This does not even handle symlinks: $ result-dev/bin/pg_config BINDIR = /home/robin/dev/nixpkgs-upstream/result-dev/bin DOCDIR = /home/robin/dev/nixpkgs-upstream/result-dev/share/doc HTMLDIR = /home/robin/dev/nixpkgs-upstream/result-dev/share/doc INCLUDEDIR = /home/robin/dev/nixpkgs-upstream/result-dev/include PKGINCLUDEDIR = /home/robin/dev/nixpkgs-upstream/result-dev/include INCLUDEDIR-SERVER = /home/robin/dev/nixpkgs-upstream/result-dev/include/server LIBDIR = /nix/store/85s9m7hpfzsl93wcb5gr6ii2km9mpx3z-postgresql-9.5.9-lib/lib PKGLIBDIR = /nix/store/85s9m7hpfzsl93wcb5gr6ii2km9mpx3z-postgresql-9.5.9-lib/lib LOCALEDIR = /home/robin/dev/nixpkgs-upstream/result-dev/share/locale MANDIR = /home/robin/dev/nixpkgs-upstream/result-dev/share/man SHAREDIR = /home/robin/dev/nixpkgs-upstream/result-dev/share SYSCONFDIR = /etc/postgresql PGXS = /nix/store/csiq6zkn2c994kkdjln461jvgbka4yb1-postgresql-9.5.9-dev/lib/pgxs/src/makefiles/pgxs.mk CONFIGURE = '--prefix=/nix/store/irqqq4g173g9xrk1mh12kxv0s1d8dbyh-postgresql-9.5.9' '--with-openssl' '--with-libxml' '--sysconfdir=/etc' '--libdir=/nix/store/85s9m7hpfzsl93wcb5gr6ii2km9mpx3z-postgresql-9.5.9-lib/lib' '--with-ossp-uuid' 'CC=gcc' CC = gcc CPPFLAGS = -D_GNU_SOURCE -I/nix/store/z6r0j2b4bcdfw3pck2x6ay0vvx0qzb92-libxml2-2.9.5-dev/include/libxml2 CFLAGS = -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 CFLAGS_SL = -fPIC LDFLAGS = -L../../../src/common -L/nix/store/ighspl5sa3qi1zy7nkih0c9p73xjfqa6-libxml2-2.9.5/lib -Wl,--as-needed -Wl,-rpath,'/nix/store/85s9m7hpfzsl93wcb5gr6ii2km9mpx3z-postgresql-9.5.9-lib/lib',--enable-new-dtags LDFLAGS_EX = LDFLAGS_SL = LIBS = -lpgcommon -lpgport -lxml2 -lssl -lcrypto -lz -lreadline -lrt -lcrypt -ldl -lm VERSION = PostgreSQL 9.5.9 cc @edolstra Revert "bacula: fix after postgresql output splitting" This reverts commit13c9cbacdd
. Revert "postgresql: fix pgxs dir in pg_config" This reverts commit21998d597b
. Revert "rubyGems.pg: fix postgresql path" This reverts commite253ae7d3a
. Revert "kea: fix path to pg_config" This reverts commit086c636eb7
. Revert "php: fix build wrt. new postgres.dev build output" This reverts commit2f23a83920
. Revert "gdal: fix path to pg_config" This reverts commit032c50d45b
. Revert "postgresql: Add dev output" This reverts commitb0280f598e
.
342 lines
9.6 KiB
Nix
342 lines
9.6 KiB
Nix
{ lib, stdenv, fetchurl, composableDerivation, autoconf, automake, flex, bison
|
|
, mysql, libxml2, readline, zlib, curl, postgresql, gettext
|
|
, openssl, pkgconfig, sqlite, config, libjpeg, libpng, freetype
|
|
, libxslt, libmcrypt, bzip2, icu, openldap, cyrus_sasl, libmhash, freetds
|
|
, uwimap, pam, gmp, apacheHttpd, libiconv, systemd }:
|
|
|
|
let
|
|
|
|
generic =
|
|
{ version, sha256 }:
|
|
|
|
let php7 = lib.versionAtLeast version "7.0";
|
|
mysqlHeaders = mysql.lib.dev or mysql;
|
|
|
|
in composableDerivation.composableDerivation {} (fixed: {
|
|
|
|
inherit version;
|
|
|
|
name = "php-${version}";
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
buildInputs = [ flex bison pkgconfig ]
|
|
++ lib.optional stdenv.isLinux systemd;
|
|
|
|
flags = {
|
|
|
|
# much left to do here...
|
|
|
|
# SAPI modules:
|
|
|
|
apxs2 = {
|
|
configureFlags = ["--with-apxs2=${apacheHttpd.dev}/bin/apxs"];
|
|
buildInputs = [apacheHttpd];
|
|
};
|
|
|
|
embed = {
|
|
configureFlags = ["--enable-embed"];
|
|
};
|
|
|
|
# Extensions
|
|
imap = {
|
|
configureFlags = [
|
|
"--with-imap=${uwimap}"
|
|
"--with-imap-ssl"
|
|
];
|
|
buildInputs = [ uwimap openssl pam ];
|
|
};
|
|
|
|
ldap = {
|
|
configureFlags = [
|
|
"--with-ldap"
|
|
"LDAP_DIR=${openldap.dev}"
|
|
"LDAP_INCDIR=${openldap.dev}/include"
|
|
"LDAP_LIBDIR=${openldap.out}/lib"
|
|
(lib.optional stdenv.isLinux "--with-ldap-sasl=${cyrus_sasl.dev}")
|
|
];
|
|
buildInputs = [openldap openssl] ++ lib.optional stdenv.isLinux cyrus_sasl;
|
|
};
|
|
|
|
mhash = {
|
|
configureFlags = ["--with-mhash"];
|
|
buildInputs = [libmhash];
|
|
};
|
|
|
|
curl = {
|
|
configureFlags = ["--with-curl=${curl.dev}"];
|
|
buildInputs = [curl openssl];
|
|
};
|
|
|
|
curlWrappers = {
|
|
configureFlags = ["--with-curlwrappers"];
|
|
};
|
|
|
|
zlib = {
|
|
configureFlags = ["--with-zlib=${zlib.dev}"];
|
|
buildInputs = [zlib];
|
|
};
|
|
|
|
libxml2 = {
|
|
configureFlags = [
|
|
"--with-libxml-dir=${libxml2.dev}"
|
|
];
|
|
buildInputs = [ libxml2 ];
|
|
};
|
|
|
|
pcntl = {
|
|
configureFlags = [ "--enable-pcntl" ];
|
|
};
|
|
|
|
readline = {
|
|
configureFlags = ["--with-readline=${readline.dev}"];
|
|
buildInputs = [ readline ];
|
|
};
|
|
|
|
sqlite = {
|
|
configureFlags = ["--with-pdo-sqlite=${sqlite.dev}"];
|
|
buildInputs = [ sqlite ];
|
|
};
|
|
|
|
postgresql = {
|
|
configureFlags = ["--with-pgsql=${postgresql}"];
|
|
buildInputs = [ postgresql ];
|
|
};
|
|
|
|
pdo_pgsql = {
|
|
configureFlags = ["--with-pdo-pgsql=${postgresql}"];
|
|
buildInputs = [ postgresql ];
|
|
};
|
|
|
|
mysql = {
|
|
configureFlags = ["--with-mysql"];
|
|
buildInputs = [ mysqlHeaders ];
|
|
};
|
|
|
|
mysqli = {
|
|
configureFlags = ["--with-mysqli=${mysqlHeaders}/bin/mysql_config"];
|
|
buildInputs = [ mysqlHeaders ];
|
|
};
|
|
|
|
mysqli_embedded = {
|
|
configureFlags = ["--enable-embedded-mysqli"];
|
|
depends = "mysqli";
|
|
assertion = fixed.mysqliSupport;
|
|
};
|
|
|
|
pdo_mysql = {
|
|
configureFlags = ["--with-pdo-mysql=${mysqlHeaders}"];
|
|
buildInputs = [ mysqlHeaders ];
|
|
};
|
|
|
|
bcmath = {
|
|
configureFlags = ["--enable-bcmath"];
|
|
};
|
|
|
|
gd = {
|
|
# FIXME: Our own gd package doesn't work, see https://bugs.php.net/bug.php?id=60108.
|
|
configureFlags = [
|
|
"--with-gd"
|
|
"--with-freetype-dir=${freetype.dev}"
|
|
"--with-png-dir=${libpng.dev}"
|
|
"--with-jpeg-dir=${libjpeg.dev}"
|
|
];
|
|
buildInputs = [ libpng libjpeg freetype ];
|
|
};
|
|
|
|
gmp = {
|
|
configureFlags = ["--with-gmp=${gmp.dev}"];
|
|
buildInputs = [ gmp ];
|
|
};
|
|
|
|
soap = {
|
|
configureFlags = ["--enable-soap"];
|
|
};
|
|
|
|
sockets = {
|
|
configureFlags = ["--enable-sockets"];
|
|
};
|
|
|
|
openssl = {
|
|
configureFlags = ["--with-openssl"];
|
|
buildInputs = [openssl openssl.dev];
|
|
};
|
|
|
|
mbstring = {
|
|
configureFlags = ["--enable-mbstring"];
|
|
};
|
|
|
|
gettext = {
|
|
configureFlags = ["--with-gettext=${gettext}"];
|
|
buildInputs = [gettext];
|
|
};
|
|
|
|
intl = {
|
|
configureFlags = ["--enable-intl"];
|
|
buildInputs = [icu];
|
|
};
|
|
|
|
exif = {
|
|
configureFlags = ["--enable-exif"];
|
|
};
|
|
|
|
xsl = {
|
|
configureFlags = ["--with-xsl=${libxslt.dev}"];
|
|
buildInputs = [libxslt];
|
|
};
|
|
|
|
mcrypt = let libmcrypt' = libmcrypt.override { disablePosixThreads = true; }; in {
|
|
configureFlags = ["--with-mcrypt=${libmcrypt'}"];
|
|
buildInputs = [libmcrypt'];
|
|
};
|
|
|
|
bz2 = {
|
|
configureFlags = ["--with-bz2=${bzip2.dev}"];
|
|
buildInputs = [bzip2];
|
|
};
|
|
|
|
zip = {
|
|
configureFlags = ["--enable-zip"];
|
|
};
|
|
|
|
ftp = {
|
|
configureFlags = ["--enable-ftp"];
|
|
};
|
|
|
|
fpm = {
|
|
configureFlags = ["--enable-fpm"];
|
|
};
|
|
|
|
mssql = stdenv.lib.optionalAttrs (!stdenv.isDarwin) {
|
|
configureFlags = ["--with-mssql=${freetds}"];
|
|
buildInputs = [freetds];
|
|
};
|
|
|
|
zts = {
|
|
configureFlags = ["--enable-maintainer-zts"];
|
|
};
|
|
|
|
calendar = {
|
|
configureFlags = ["--enable-calendar"];
|
|
};
|
|
};
|
|
|
|
cfg = {
|
|
imapSupport = config.php.imap or (!stdenv.isDarwin);
|
|
ldapSupport = config.php.ldap or true;
|
|
mhashSupport = config.php.mhash or true;
|
|
mysqlSupport = (!php7) && (config.php.mysql or true);
|
|
mysqliSupport = config.php.mysqli or true;
|
|
pdo_mysqlSupport = config.php.pdo_mysql or true;
|
|
libxml2Support = config.php.libxml2 or true;
|
|
apxs2Support = config.php.apxs2 or (!stdenv.isDarwin);
|
|
embedSupport = config.php.embed or false;
|
|
bcmathSupport = config.php.bcmath or true;
|
|
socketsSupport = config.php.sockets or true;
|
|
curlSupport = config.php.curl or true;
|
|
curlWrappersSupport = (!php7) && (config.php.curlWrappers or true);
|
|
gettextSupport = config.php.gettext or true;
|
|
pcntlSupport = config.php.pcntl or true;
|
|
postgresqlSupport = config.php.postgresql or true;
|
|
pdo_pgsqlSupport = config.php.pdo_pgsql or true;
|
|
readlineSupport = config.php.readline or true;
|
|
sqliteSupport = config.php.sqlite or true;
|
|
soapSupport = config.php.soap or true;
|
|
zlibSupport = config.php.zlib or true;
|
|
opensslSupport = config.php.openssl or true;
|
|
mbstringSupport = config.php.mbstring or true;
|
|
gdSupport = config.php.gd or true;
|
|
intlSupport = config.php.intl or true;
|
|
exifSupport = config.php.exif or true;
|
|
xslSupport = config.php.xsl or false;
|
|
mcryptSupport = config.php.mcrypt or true;
|
|
bz2Support = config.php.bz2 or false;
|
|
zipSupport = config.php.zip or true;
|
|
ftpSupport = config.php.ftp or true;
|
|
fpmSupport = config.php.fpm or true;
|
|
gmpSupport = config.php.gmp or true;
|
|
mssqlSupport = (!php7) && (config.php.mssql or (!stdenv.isDarwin));
|
|
ztsSupport = config.php.zts or false;
|
|
calendarSupport = config.php.calendar or true;
|
|
};
|
|
|
|
hardeningDisable = [ "bindnow" ];
|
|
|
|
preConfigure = ''
|
|
# Don't record the configure flags since this causes unnecessary
|
|
# runtime dependencies
|
|
for i in main/build-defs.h.in scripts/php-config.in; do
|
|
substituteInPlace $i \
|
|
--replace '@CONFIGURE_COMMAND@' '(omitted)' \
|
|
--replace '@CONFIGURE_OPTIONS@' "" \
|
|
--replace '@PHP_LDFLAGS@' ""
|
|
done
|
|
|
|
#[[ -z "$libxml2" ]] || addToSearchPath PATH $libxml2/bin
|
|
|
|
export EXTENSION_DIR=$out/lib/php/extensions
|
|
|
|
configureFlags+=(--with-config-file-path=$out/etc \
|
|
--includedir=$dev/include)
|
|
'';
|
|
|
|
configureFlags = [
|
|
"--with-config-file-scan-dir=/etc/php.d"
|
|
] ++ lib.optional stdenv.isDarwin "--with-iconv=${libiconv}"
|
|
++ lib.optional stdenv.isLinux "--with-fpm-systemd";
|
|
|
|
postInstall = ''
|
|
cp php.ini-production $out/etc/php.ini
|
|
'';
|
|
|
|
postFixup = ''
|
|
mkdir -p $dev/bin $dev/share/man/man1
|
|
mv $out/bin/phpize $out/bin/php-config $dev/bin/
|
|
mv $out/share/man/man1/phpize.1.gz \
|
|
$out/share/man/man1/php-config.1.gz \
|
|
$dev/share/man/man1/
|
|
'';
|
|
|
|
src = fetchurl {
|
|
url = "http://www.php.net/distributions/php-${version}.tar.bz2";
|
|
inherit sha256;
|
|
};
|
|
|
|
meta = with stdenv.lib; {
|
|
description = "An HTML-embedded scripting language";
|
|
homepage = http://www.php.net/;
|
|
license = licenses.php301;
|
|
maintainers = with maintainers; [ globin ];
|
|
platforms = platforms.all;
|
|
outputsToInstall = [ "out" "dev" ];
|
|
};
|
|
|
|
patches = if !php7 then [ ./fix-paths.patch ] else [ ./fix-paths-php7.patch ];
|
|
|
|
postPatch = lib.optional stdenv.isDarwin ''
|
|
substituteInPlace configure --replace "-lstdc++" "-lc++"
|
|
'';
|
|
|
|
stripDebugList = "bin sbin lib modules";
|
|
|
|
outputs = [ "out" "dev" ];
|
|
|
|
});
|
|
|
|
in {
|
|
php56 = generic {
|
|
version = "5.6.31";
|
|
sha256 = "03xixkvfp64bqp97p8vlj3hp63bpjw7hc16b7fgm7w35rdlp2fcg";
|
|
};
|
|
|
|
php70 = generic {
|
|
version = "7.0.22";
|
|
sha256 = "1ppxdlyb9vapcmzylml447vrlizam72h1w41vvn15pdbd5zv5q48";
|
|
};
|
|
|
|
php71 = generic {
|
|
version = "7.1.8";
|
|
sha256 = "1y527hs9yh9lmr38q3rf7gkhnvk49vh4nyhci6852mjhjh5a0r3h";
|
|
};
|
|
}
|