Merge remote-tracking branch 'central/master' into viric_clean

This commit is contained in:
Lluís Batlle i Rossell
2018-07-28 19:25:14 +02:00
292 changed files with 11331 additions and 3672 deletions
@@ -0,0 +1,7 @@
{ mkDerivation }:
mkDerivation rec {
version = "1.7.0";
sha256 = "082924fngc6ypbkn1ghdwf199radk00daf4q09mm04h81jy4nmxm";
minimumOTPVersion = "18";
}
@@ -37,7 +37,7 @@ in
preBuild = ''
# The build process uses ./rebar. Link it to the nixpkgs rebar
rm -v rebar
rm -vf rebar
ln -s ${rebar}/bin/rebar rebar
substituteInPlace Makefile \
+143 -260
View File
@@ -1,21 +1,63 @@
# pcre functionality is tested in nixos/tests/php-pcre.nix
{ lib, stdenv, fetchurl, composableDerivation, flex, bison
{ lib, stdenv, fetchurl, flex, bison
, mysql, libxml2, readline, zlib, curl, postgresql, gettext
, openssl, pcre, pkgconfig, sqlite, config, libjpeg, libpng, freetype
, libxslt, libmcrypt, bzip2, icu, openldap, cyrus_sasl, libmhash, freetds
, uwimap, pam, gmp, apacheHttpd, libiconv, systemd, libsodium }:
, uwimap, pam, gmp, apacheHttpd, libiconv, systemd, libsodium, html-tidy
}:
with lib;
let
php7 = versionAtLeast version "7.0";
generic =
{ version, sha256 }:
{ version
, sha256
, imapSupport ? config.php.imap or (!stdenv.isDarwin)
, ldapSupport ? config.php.ldap or true
, mhashSupport ? config.php.mhash or true
, mysqlSupport ? (config.php.mysql or true) && (!php7)
, mysqlndSupport ? config.php.mysqlnd 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 ? (config.php.curlWrappers or true) && (!php7)
, 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 ? (config.php.mssql or (!stdenv.isDarwin)) && (!php7)
, ztsSupport ? config.php.zts or false
, calendarSupport ? config.php.calendar or true
, sodiumSupport ? (config.php.sodium or true) && (versionAtLeast version "7.2")
, tidySupport ? false
}:
let php7 = lib.versionAtLeast version "7.0";
mysqlndSupport = config.php.mysqlnd or false;
mysqlBuildInputs = lib.optional (!mysqlndSupport) mysql.connector-c;
in composableDerivation.composableDerivation {} (fixed: {
let
mysqlBuildInputs = optional (!mysqlndSupport) mysql.connector-c;
libmcrypt' = libmcrypt.override { disablePosixThreads = true; };
in stdenv.mkDerivation {
inherit version;
@@ -25,252 +67,99 @@ let
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ flex bison pcre ]
++ lib.optional stdenv.isLinux systemd;
++ optional stdenv.isLinux systemd
++ optionals imapSupport [ uwimap openssl pam ]
++ optionals curlSupport [ curl openssl ]
++ optionals ldapSupport [ openldap openssl ]
++ optionals gdSupport [ libpng libjpeg freetype ]
++ optionals opensslSupport [ openssl openssl.dev ]
++ optional apxs2Support apacheHttpd
++ optional (ldapSupport && stdenv.isLinux) cyrus_sasl
++ optional mhashSupport libmhash
++ optional zlibSupport zlib
++ optional libxml2Support libxml2
++ optional readlineSupport readline
++ optional sqliteSupport sqlite
++ optional postgresqlSupport postgresql
++ optional pdo_pgsqlSupport postgresql
++ optional pdo_mysqlSupport mysqlBuildInputs
++ optional mysqlSupport mysqlBuildInputs
++ optional mysqliSupport mysqlBuildInputs
++ optional gmpSupport gmp
++ optional gettextSupport gettext
++ optional intlSupport icu
++ optional xslSupport libxslt
++ optional mcryptSupport libmcrypt'
++ optional bz2Support bzip2
++ optional (mssqlSupport && !stdenv.isDarwin) freetds
++ optional sodiumSupport libsodium
++ optional tidySupport html-tidy;
CXXFLAGS = lib.optional stdenv.cc.isClang "-std=c++11";
CXXFLAGS = optional stdenv.cc.isClang "-std=c++11";
flags = {
# much left to do here...
configureFlags = [
"--with-config-file-scan-dir=/etc/php.d"
"--with-pcre-regex=${pcre.dev} PCRE_LIBDIR=${pcre}"
]
++ optional stdenv.isDarwin "--with-iconv=${libiconv}"
++ optional stdenv.isLinux "--with-fpm-systemd"
++ optionals imapSupport [
"--with-imap=${uwimap}"
"--with-imap-ssl"
]
++ optionals ldapSupport [
"--with-ldap=/invalid/path"
"LDAP_DIR=${openldap.dev}"
"LDAP_INCDIR=${openldap.dev}/include"
"LDAP_LIBDIR=${openldap.out}/lib"
]
++ optional (ldapSupport && stdenv.isLinux) "--with-ldap-sasl=${cyrus_sasl.dev}"
++ optional apxs2Support "--with-apxs2=${apacheHttpd.dev}/bin/apxs"
++ optional embedSupport "--enable-embed"
++ optional mhashSupport "--with-mhash"
++ optional curlSupport "--with-curl=${curl.dev}"
++ optional curlWrappersSupport "--with-curlwrappers"
++ optional zlibSupport "--with-zlib=${zlib.dev}"
++ optional libxml2Support "--with-libxml-dir=${libxml2.dev}"
++ optional pcntlSupport "--enable-pcntl"
++ optional readlineSupport "--with-readline=${readline.dev}"
++ optional sqliteSupport "--with-pdo-sqlite=${sqlite.dev}"
++ optional postgresqlSupport "--with-pgsql=${postgresql}"
++ optional pdo_pgsqlSupport "--with-pdo-pgsql=${postgresql}"
++ optional pdo_mysqlSupport "--with-pdo-mysql=${if mysqlndSupport then "mysqlnd" else mysql.connector-c}"
++ optional mysqlSupport "--with-mysql${if mysqlndSupport then "=mysqlnd" else ""}"
++ optionals mysqliSupport [
"--with-mysqli=${if mysqlndSupport then "mysqlnd" else "${mysql.connector-c}/bin/mysql_config"}"
]
++ optional bcmathSupport "--enable-bcmath"
# FIXME: Our own gd package doesn't work, see https://bugs.php.net/bug.php?id=60108.
++ optionals gdSupport [
"--with-gd"
"--with-freetype-dir=${freetype.dev}"
"--with-png-dir=${libpng.dev}"
"--with-jpeg-dir=${libjpeg.dev}"
]
++ optional gmpSupport "--with-gmp=${gmp.dev}"
++ optional soapSupport "--enable-soap"
++ optional socketsSupport "--enable-sockets"
++ optional opensslSupport "--with-openssl"
++ optional mbstringSupport "--enable-mbstring"
++ optional gettextSupport "--with-gettext=${gettext}"
++ optional intlSupport "--enable-intl"
++ optional exifSupport "--enable-exif"
++ optional xslSupport "--with-xsl=${libxslt.dev}"
++ optional mcryptSupport "--with-mcrypt=${libmcrypt'}"
++ optional bz2Support "--with-bz2=${bzip2.dev}"
++ optional zipSupport "--enable-zip"
++ optional ftpSupport "--enable-ftp"
++ optional fpmSupport "--enable-fpm"
++ optional (mssqlSupport && !stdenv.isDarwin) "--with-mssql=${freetds}"
++ optional ztsSupport "--enable-maintainer-zts"
++ optional calendarSupport "--enable-calendar"
++ optional sodiumSupport "--with-sodium=${libsodium.dev}"
++ optional tidySupport "--with-tidy=${html-tidy}";
# 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=/invalid/path"
"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${if mysqlndSupport then "=mysqlnd" else ""}"];
buildInputs = mysqlBuildInputs;
};
mysqli = {
configureFlags = ["--with-mysqli=${if mysqlndSupport then "mysqlnd" else "${mysql.connector-c}/bin/mysql_config"}"];
buildInputs = mysqlBuildInputs;
};
mysqli_embedded = {
configureFlags = ["--enable-embedded-mysqli"];
depends = "mysqli";
assertion = fixed.mysqliSupport;
};
pdo_mysql = {
configureFlags = ["--with-pdo-mysql=${if mysqlndSupport then "mysqlnd" else mysql.connector-c}"];
buildInputs = mysqlBuildInputs;
};
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"];
};
sodium = {
configureFlags = ["--with-sodium=${libsodium.dev}"];
buildInputs = [libsodium];
};
};
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;
sodiumSupport = (lib.versionAtLeast version "7.2") && config.php.sodium or true;
};
hardeningDisable = [ "bindnow" ];
@@ -292,12 +181,6 @@ let
--includedir=$dev/include)
'';
configureFlags = [
"--with-config-file-scan-dir=/etc/php.d"
"--with-pcre-regex=${pcre.dev} PCRE_LIBDIR=${pcre}"
] ++ lib.optional stdenv.isDarwin "--with-iconv=${libiconv}"
++ lib.optional stdenv.isLinux "--with-fpm-systemd";
postInstall = ''
cp php.ini-production $out/etc/php.ini
'';
@@ -326,7 +209,7 @@ let
patches = if !php7 then [ ./fix-paths.patch ] else [ ./fix-paths-php7.patch ];
postPatch = lib.optional stdenv.isDarwin ''
postPatch = optional stdenv.isDarwin ''
substituteInPlace configure --replace "-lstdc++" "-lc++"
'';
@@ -334,7 +217,7 @@ let
outputs = [ "out" "dev" ];
});
};
in {
php56 = generic {
@@ -1,4 +1,4 @@
{ stdenv, fetchurl, CF, configd, coreutils }:
{ stdenv, fetchurl, configd, CF, coreutils }:
with stdenv.lib;
@@ -75,6 +75,8 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
passthru.pkgs = builtins.throw "python-boot does not support packages, this package is only intended for bootstrapping." {};
meta = {
homepage = http://python.org;
description = "A high-level dynamically-typed programming language";
@@ -133,6 +133,11 @@ let
++ op (stdenv.hostPlatform != stdenv.buildPlatform)
"--with-baseruby=${buildRuby}";
# fails with "16993 tests, 2229489 assertions, 105 failures, 14 errors, 89 skips"
# mostly TZ- and patch-related tests
# TZ- failures are caused by nix sandboxing, I didn't investigate others
doCheck = false;
preInstall = ''
# Ruby installs gems here itself now.
mkdir -pv "$out/${passthru.gemPath}"