Files
nixpkgs/pkgs/by-name/ze/zeromq/package.nix
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

124 lines
3.1 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
libsodium,
asciidoc,
xmlto,
enableDrafts ? false,
fetchpatch,
# for passthru.tests
azmq,
cppzmq,
czmq,
zmqpp,
ffmpeg,
python3,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "zeromq";
version = "4.3.5";
src = fetchFromGitHub {
owner = "zeromq";
repo = "libzmq";
tag = "v${finalAttrs.version}";
hash = "sha256-q2h5y0Asad+fGB9haO4Vg7a1ffO2JSb7czzlhmT3VmI=";
};
patches = [
# Use proper STREQUAL instead of EQUAL to compare strings
# See: https://github.com/zeromq/libzmq/pull/4711
(fetchpatch {
url = "https://github.com/zeromq/libzmq/pull/4711/commits/55bd6b3df06734730d3012c17bc26681e25b549d.patch";
hash = "sha256-/FVah+s7f1hWXv3MXkYfIiV1XAiMVDa0tmt4BQmSgmY=";
name = "cacheline_undefined.patch";
})
# Fix the build with CMake 4.
(fetchpatch {
name = "zeromq-fix-cmake-4-1.patch";
url = "https://github.com/zeromq/libzmq/commit/34f7fa22022bed9e0e390ed3580a1c83ac4a2834.patch";
hash = "sha256-oauAZV6pThplcn2v9mQxhxlUhYgpbly0JBLYik+zoJE=";
})
(fetchpatch {
name = "zeromq-fix-cmake-4-2.patch";
url = "https://github.com/zeromq/libzmq/commit/b91a6201307b72beb522300366aad763d19b1456.patch";
hash = "sha256-FKvZi7pTUx+wLUR8Suf+pRFg8I5OHpJ93gEmTxUrmO4=";
})
];
strictDeps = true;
nativeBuildInputs = [
cmake
pkg-config
asciidoc
xmlto
];
buildInputs = [ libsodium ];
cmakeFlags = [
(lib.cmakeBool "BUILD_SHARED" (!stdenv.hostPlatform.isStatic))
(lib.cmakeBool "ENABLE_CURVE" true)
(lib.cmakeBool "ENABLE_DRAFTS" enableDrafts)
(lib.cmakeBool "WITH_LIBSODIUM" true)
];
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace '$'{prefix}/'$'{CMAKE_INSTALL_LIBDIR} '$'{CMAKE_INSTALL_FULL_LIBDIR} \
--replace '$'{prefix}/'$'{CMAKE_INSTALL_INCLUDEDIR} '$'{CMAKE_INSTALL_FULL_INCLUDEDIR}
'';
postBuild = ''
# From https://gitlab.archlinux.org/archlinux/packaging/packages/zeromq/-/blob/main/PKGBUILD
# man pages aren't created when using cmake
# https://github.com/zeromq/libzmq/issues/4160
pushd ../doc
for FILE in *.txt; do
asciidoc \
-d manpage \
-b docbook \
-f asciidoc.conf \
-a zmq_version="${finalAttrs.version}" \
"''${FILE}"
xmlto --skip-validation man "''${FILE%.txt}.xml"
done
popd
'';
postInstall = ''
# Install manually created man pages
install -vDm644 -t "$out/share/man/man3" ../doc/*.3
install -vDm644 -t "$out/share/man/man7" ../doc/*.7
'';
passthru.tests = {
inherit
azmq
cppzmq
czmq
zmqpp
;
pyzmq = python3.pkgs.pyzmq;
ffmpeg = ffmpeg.override { withZmq = true; };
pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
};
meta = {
branch = "4";
homepage = "http://www.zeromq.org";
description = "Intelligent Transport Layer";
license = lib.licenses.mpl20;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ fpletz ];
pkgConfigModules = [ "libzmq" ];
};
})