2024-05-02 00:46:19 +00:00
|
|
|
{ lib, stdenv, fetchFromGitHub, fetchpatch
|
|
|
|
, enableShared ? !stdenv.hostPlatform.isStatic
|
2024-05-13 21:24:10 +00:00
|
|
|
, enableStatic ? stdenv.hostPlatform.isStatic }:
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
pname = "http-parser";
|
|
|
|
version = "2.9.4";
|
|
|
|
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "nodejs";
|
|
|
|
repo = "http-parser";
|
|
|
|
rev = "v${version}";
|
|
|
|
sha256 = "1vda4dp75pjf5fcph73sy0ifm3xrssrmf927qd1x8g3q46z0cv6c";
|
|
|
|
};
|
|
|
|
|
|
|
|
env.NIX_CFLAGS_COMPILE = "-Wno-error";
|
|
|
|
|
2024-05-13 21:24:10 +00:00
|
|
|
patches = [ ./enable-static-shared.patch ] ++ lib.optionals stdenv.isAarch32 [
|
2024-05-02 00:46:19 +00:00
|
|
|
# https://github.com/nodejs/http-parser/pull/510
|
|
|
|
(fetchpatch {
|
2024-05-13 21:24:10 +00:00
|
|
|
url =
|
|
|
|
"https://github.com/nodejs/http-parser/commit/4f15b7d510dc7c6361a26a7c6d2f7c3a17f8d878.patch";
|
2024-05-02 00:46:19 +00:00
|
|
|
sha256 = "sha256-rZZMJeow3V1fTnjadRaRa+xTq3pdhZn/eJ4xjxEDoU4=";
|
|
|
|
})
|
|
|
|
];
|
|
|
|
|
|
|
|
makeFlags = [
|
|
|
|
"DESTDIR="
|
|
|
|
"PREFIX=$(out)"
|
|
|
|
"BINEXT=${stdenv.hostPlatform.extensions.executable}"
|
|
|
|
"Platform=${lib.toLower stdenv.hostPlatform.uname.system}"
|
2024-05-13 21:24:10 +00:00
|
|
|
"AEXT=${
|
|
|
|
lib.strings.removePrefix "." stdenv.hostPlatform.extensions.staticLibrary
|
|
|
|
}"
|
2024-05-02 00:46:19 +00:00
|
|
|
"ENABLE_SHARED=${if enableShared then "1" else "0"}"
|
|
|
|
"ENABLE_STATIC=${if enableStatic then "1" else "0"}"
|
|
|
|
] ++ lib.optionals enableShared [
|
2024-05-13 21:24:10 +00:00
|
|
|
"SOEXT=${
|
|
|
|
lib.strings.removePrefix "." stdenv.hostPlatform.extensions.sharedLibrary
|
|
|
|
}"
|
2024-05-02 00:46:19 +00:00
|
|
|
] ++ lib.optionals enableStatic [
|
2024-05-13 21:24:10 +00:00
|
|
|
"AEXT=${
|
|
|
|
lib.strings.removePrefix "." stdenv.hostPlatform.extensions.staticLibrary
|
|
|
|
}"
|
2024-05-02 00:46:19 +00:00
|
|
|
] ++ lib.optionals (enableShared && stdenv.hostPlatform.isWindows) [
|
|
|
|
"SONAME=$(SOLIBNAME).$(SOMAJOR).$(SOMINOR).$(SOEXT)"
|
|
|
|
"LIBNAME=$(SOLIBNAME).$(SOMAJOR).$(SOMINOR).$(SOREV).$(SOEXT)"
|
|
|
|
"LDFLAGS=-Wl,--out-implib=$(LIBNAME).a"
|
|
|
|
];
|
|
|
|
|
|
|
|
buildFlags = lib.optional enableShared "library"
|
|
|
|
++ lib.optional enableStatic "package";
|
|
|
|
|
|
|
|
doCheck = true;
|
|
|
|
checkTarget = "test";
|
|
|
|
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
|
|
|
|
postInstall = lib.optionalString stdenv.hostPlatform.isWindows ''
|
|
|
|
install -D *.dll.a $out/lib
|
|
|
|
ln -sf libhttp_parser.${version}.dll.a $out/lib/libhttp_parser.dll.a
|
|
|
|
'';
|
|
|
|
|
|
|
|
meta = with lib; {
|
|
|
|
description = "An HTTP message parser written in C";
|
|
|
|
homepage = "https://github.com/nodejs/http-parser";
|
|
|
|
maintainers = with maintainers; [ matthewbauer ];
|
|
|
|
license = licenses.mit;
|
|
|
|
platforms = platforms.all;
|
|
|
|
};
|
|
|
|
}
|