7547cf9dfc
The documentation says this should be a list, and it already is in about half the expressions that set it. The difference doesn't matter at present, because these values are all space-free literals. But it will in a future with __structuredAttrs . (The similar attr stripAllList has no users in the nixpkgs tree, so there's nothing to do to fix any of those up.)
99 lines
3.0 KiB
Nix
99 lines
3.0 KiB
Nix
{ stdenv, fetchurl, perl, zlib, apr, aprutil, pcre, libiconv, lynx
|
||
, proxySupport ? true
|
||
, sslSupport ? true, openssl
|
||
, http2Support ? true, nghttp2
|
||
, ldapSupport ? true, openldap
|
||
, libxml2Support ? true, libxml2
|
||
, brotliSupport ? true, brotli
|
||
, luaSupport ? false, lua5
|
||
}:
|
||
|
||
let inherit (stdenv.lib) optional;
|
||
in
|
||
|
||
assert sslSupport -> aprutil.sslSupport && openssl != null;
|
||
assert ldapSupport -> aprutil.ldapSupport && openldap != null;
|
||
assert http2Support -> nghttp2 != null;
|
||
|
||
stdenv.mkDerivation rec {
|
||
version = "2.4.41";
|
||
pname = "apache-httpd";
|
||
|
||
src = fetchurl {
|
||
url = "mirror://apache/httpd/httpd-${version}.tar.bz2";
|
||
sha256 = "0h7a31yxwyh7h521frnmlppl0h7sh9icc3ka6vlmlcg5iwllhg8k";
|
||
};
|
||
|
||
# FIXME: -dev depends on -doc
|
||
outputs = [ "out" "dev" "man" "doc" ];
|
||
setOutputFlags = false; # it would move $out/modules, etc.
|
||
|
||
buildInputs = [perl] ++
|
||
optional brotliSupport brotli ++
|
||
optional sslSupport openssl ++
|
||
optional ldapSupport openldap ++ # there is no --with-ldap flag
|
||
optional libxml2Support libxml2 ++
|
||
optional http2Support nghttp2 ++
|
||
optional stdenv.isDarwin libiconv;
|
||
|
||
prePatch = ''
|
||
sed -i config.layout -e "s|installbuilddir:.*|installbuilddir: $dev/share/build|"
|
||
sed -i support/apachectl.in -e 's|@LYNX_PATH@|${lynx}/bin/lynx|'
|
||
sed -i support/apachectl.in -e 's|$HTTPD -t|$HTTPD -t -f /etc/httpd/httpd.conf|'
|
||
'';
|
||
|
||
# Required for ‘pthread_cancel’.
|
||
NIX_LDFLAGS = stdenv.lib.optionalString (!stdenv.isDarwin) "-lgcc_s";
|
||
|
||
configureFlags = [
|
||
"--with-apr=${apr.dev}"
|
||
"--with-apr-util=${aprutil.dev}"
|
||
"--with-z=${zlib.dev}"
|
||
"--with-pcre=${pcre.dev}"
|
||
"--disable-maintainer-mode"
|
||
"--disable-debugger-mode"
|
||
"--enable-mods-shared=all"
|
||
"--enable-mpms-shared=all"
|
||
"--enable-cern-meta"
|
||
"--enable-imagemap"
|
||
"--enable-cgi"
|
||
"--includedir=${placeholder "dev"}/include"
|
||
(stdenv.lib.enableFeature proxySupport "proxy")
|
||
(stdenv.lib.enableFeature sslSupport "ssl")
|
||
(stdenv.lib.withFeatureAs libxml2Support "libxml2" "${libxml2.dev}/include/libxml2")
|
||
"--docdir=$(doc)/share/doc"
|
||
|
||
(stdenv.lib.enableFeature brotliSupport "brotli")
|
||
(stdenv.lib.withFeatureAs brotliSupport "brotli" brotli)
|
||
|
||
(stdenv.lib.enableFeature http2Support "http2")
|
||
(stdenv.lib.withFeature http2Support "nghttp2")
|
||
|
||
(stdenv.lib.enableFeature luaSupport "lua")
|
||
(stdenv.lib.withFeatureAs luaSupport "lua" lua5)
|
||
];
|
||
|
||
enableParallelBuilding = true;
|
||
|
||
stripDebugList = [ "lib" "modules" "bin" ];
|
||
|
||
postInstall = ''
|
||
mkdir -p $doc/share/doc/httpd
|
||
mv $out/manual $doc/share/doc/httpd
|
||
mkdir -p $dev/bin
|
||
mv $out/bin/apxs $dev/bin/apxs
|
||
'';
|
||
|
||
passthru = {
|
||
inherit apr aprutil sslSupport proxySupport ldapSupport;
|
||
};
|
||
|
||
meta = with stdenv.lib; {
|
||
description = "Apache HTTPD, the world's most popular web server";
|
||
homepage = http://httpd.apache.org/;
|
||
license = licenses.asl20;
|
||
platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
|
||
maintainers = with maintainers; [ lovek323 peti ];
|
||
};
|
||
}
|