nixpkgs/pkgs/servers/http/bozohttpd/default.nix
Alyssa Ross 4de8cbfb16 bmake.passthru.setupHook: set some defaults
These are all read from the environment by the default bmake
stdlib (e.g. <bsd.prog.mk>, <bsd.own.mk>).  Some of the default
values (like building cat pages instead of man pages, or stripping
binaries when installing) don't really make sense for Nixpkgs, so we
override them here for every build using bmake.

Eventually I'd like to unify the bmake setupHook and the NetBSD make
setupHook, but not today.
2021-06-09 12:44:43 +00:00

96 lines
3 KiB
Nix

{ lib
, stdenv
, fetchurl
, bmake
, groff
, inetutils
, wget
, openssl
, minimal ? false
, userSupport ? !minimal
, cgiSupport ? !minimal
, dirIndexSupport ? !minimal
, dynamicContentSupport ? !minimal
, sslSupport ? !minimal
, luaSupport ? !minimal
, lua
, htpasswdSupport ? !minimal
}:
let inherit (lib) optional optionals;
in
stdenv.mkDerivation rec {
pname = "bozohttpd";
version = "20210227";
# bozohttpd is developed in-tree in pkgsrc, canonical hashes can be found at:
# http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/www/bozohttpd/distinfo
src = fetchurl {
url = "http://www.eterna.com.au/${pname}/${pname}-${version}.tar.bz2";
sha512 = "b838498626ffb7f7e84f31611e0e99aaa3af64bd9376e1a13ec16313c182eebfd9ea2c2d03904497239af723bf34a3d2202dac1f2d3e55f9fd076f6d45ccfa33";
};
# backport two unreleased commits to fix builds on non-netbsd platforms.
patches = [
# add missing `#include <stdint.h>`
# https://freshbsd.org/netbsd/src/commit/qMGNoXfgeieZBVRC
./0001-include-stdint.h.patch
# BUFSIZ is not guaranteed to be large enough
# https://freshbsd.org/netbsd/src/commit/A4ueIHIp3JgjNVRC
./0002-dont-use-host-BUFSIZ.patch
];
patchFlags = [ "-p3" ];
buildInputs = [ openssl ] ++ optional (luaSupport) lua;
nativeBuildInputs = [ bmake groff ];
COPTS = [
"-D_DEFAULT_SOURCE"
"-D_GNU_SOURCE"
# ensure that we can serve >2GB files even on 32-bit systems.
"-D_LARGEFILE_SOURCE"
"-D_FILE_OFFSET_BITS=64"
# unpackaged dependency: https://man.netbsd.org/blocklist.3
"-DNO_BLOCKLIST_SUPPORT"
]
++ optional (!userSupport) "-DNO_USER_SUPPORT"
++ optional (!dirIndexSupport) "-DNO_DIRINDEX_SUPPORT"
++ optional (!dynamicContentSupport) "-DNO_DYNAMIC_CONTENT"
++ optional (!luaSupport) "-DNO_LUA_SUPPORT"
++ optional (!sslSupport) "-DNO_SSL_SUPPORT"
++ optional (!cgiSupport) "-DNO_CGIBIN_SUPPORT"
++ optional (htpasswdSupport) "-DDO_HTPASSWD";
_LDADD = [ "-lm" ]
++ optional (stdenv.hostPlatform.libc != "libSystem") "-lcrypt"
++ optional (luaSupport) "-llua"
++ optionals (sslSupport) [ "-lssl" "-lcrypto" ];
makeFlags = [ "LDADD=$(_LDADD)" ];
doCheck = true;
checkInputs = [ inetutils wget ];
checkFlags = optional (!cgiSupport) "CGITESTS=";
meta = with lib; {
description = "Bozotic HTTP server; small and secure";
longDescription = ''
bozohttpd is a small and secure HTTP version 1.1 server. Its main
feature is the lack of features, reducing the code size and improving
verifiability.
It supports CGI/1.1, HTTP/1.1, HTTP/1.0, HTTP/0.9, ~user translations,
virtual hosting support, as well as multiple IP-based servers on a
single machine. It is capable of servicing pages via the IPv6 protocol.
It has SSL support. It has no configuration file by design.
'';
homepage = "http://www.eterna.com.au/bozohttpd/";
changelog = "http://www.eterna.com.au/bozohttpd/CHANGES";
license = licenses.bsd2;
maintainers = [ maintainers.embr ];
platforms = platforms.all;
};
}