depot/third_party/nixpkgs/pkgs/by-name/ra/rabbitmq-server/package.nix
Luke Granger-Brown f92e137cfb
Some checks failed
/ combine-systems (push) Blocked by required conditions
/ build (x86_64-linux) (push) Failing after 11m44s
/ build (aarch64-linux) (push) Failing after 11m50s
/ build (push) Failing after 16m42s
Merge commit '1e2ed035f4bebc9adad02b365508ad96f7df87c1' into HEAD
2025-03-02 02:23:32 +00:00

138 lines
3.1 KiB
Nix
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
lib,
stdenv,
fetchurl,
erlang,
elixir,
python3,
libxml2,
libxslt,
xmlto,
docbook_xml_dtd_45,
docbook_xsl,
zip,
unzip,
rsync,
getconf,
socat,
procps,
coreutils,
gnused,
systemd,
glibcLocales,
nixosTests,
which,
}:
let
runtimePath = lib.makeBinPath (
[
erlang
getconf # for getting memory limits
socat
gnused
coreutils # used by helper scripts
]
++ lib.optionals stdenv.hostPlatform.isLinux [
procps # the built-in macOS version has extra entitlements to read rss
systemd # for systemd unit activation check
]
);
in
stdenv.mkDerivation rec {
pname = "rabbitmq-server";
version = "4.0.7";
# when updating, consider bumping elixir version in all-packages.nix
src = fetchurl {
url = "https://github.com/rabbitmq/rabbitmq-server/releases/download/v${version}/${pname}-${version}.tar.xz";
hash = "sha256-ScqNRa1itxawGyRruNihA60xbltw7Lek36SP9Nd+LfI=";
};
nativeBuildInputs = [
unzip
xmlto
docbook_xml_dtd_45
docbook_xsl
zip
rsync
python3
which
];
buildInputs = [
erlang
elixir
libxml2
libxslt
glibcLocales
];
outputs = [
"out"
"man"
"doc"
];
installFlags = [
"PREFIX=${placeholder "out"}"
"RMQ_ERLAPP_DIR=${placeholder "out"}"
];
installTargets = [
"install"
"install-man"
];
preBuild = ''
export LANG=C.UTF-8 # fix elixir locale warning
export PROJECT_VERSION="$version"
'';
postInstall = ''
# rabbitmq-env calls to sed/coreutils, so provide everything early
sed -i $out/sbin/rabbitmq-env -e '2s|^|PATH=${runtimePath}\''${PATH:+:}\$PATH/\n|'
# We know exactly where rabbitmq is gonna be, so we patch that into the env-script.
# By doing it early we make sure that auto-detection for this will
# never be executed (somewhere below in the script).
sed -i $out/sbin/rabbitmq-env -e "2s|^|RABBITMQ_SCRIPTS_DIR=$out/sbin\n|"
# theres a few stray files that belong into share
mkdir -p $doc/share/doc/rabbitmq-server
mv $out/LICENSE* $doc/share/doc/rabbitmq-server
# and an unecessarily copied INSTALL file
rm $out/INSTALL
'';
# Can not use versionCheckHook since that doesn't allow for setting environment variables
# which is necessary since Erlang needs a $HOME for the Cookie.
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
out="$(env - LANG=C.utf8 HOME=$TMPDIR ${placeholder "out"}/bin/rabbitmqctl version)"
if [[ "$out" != "$version" ]]; then
echo "Rabbitmq should report version $version, but thinks it's version $out" >&2
exit 1
fi
runHook postInstallCheck
'';
# Needed for the check in installCheckPhase
__darwinAllowLocalNetworking = true;
passthru.tests = {
vm-test = nixosTests.rabbitmq;
};
meta = {
homepage = "https://www.rabbitmq.com/";
description = "Implementation of the AMQP messaging protocol";
changelog = "https://github.com/rabbitmq/rabbitmq-server/releases/tag/v${version}";
license = lib.licenses.mpl20;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ samueltardieu ];
};
}