nixpkgs/pkgs/servers/amqp/rabbitmq-server/default.nix
Tae Sandoval 0e3a28a462 rabbitmq: fix darwin build
ed16f83 made all dependencies explicit, including systemd, which makes the
build step to fail on macOS. Here systemd is added to runtimePath only if the
target system is Linux
2020-05-31 13:41:04 -04:00

74 lines
2.6 KiB
Nix
Raw 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.

{ stdenv, fetchurl, erlang, elixir, python, libxml2, libxslt, xmlto
, docbook_xml_dtd_45, docbook_xsl, zip, unzip, rsync, getconf, socat
, procps, coreutils, gnused, systemd, glibcLocales
, AppKit, Carbon, Cocoa
, nixosTests
}:
stdenv.mkDerivation rec {
pname = "rabbitmq-server";
version = "3.8.4";
# 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";
sha256 = "1sa9zfd8hv5mxgnxva9sydqnyzwssxjkbba028pwpml2im97z7j5";
};
buildInputs =
[ erlang elixir python libxml2 libxslt xmlto docbook_xml_dtd_45 docbook_xsl zip unzip rsync glibcLocales ]
++ stdenv.lib.optionals stdenv.isDarwin [ AppKit Carbon Cocoa ];
outputs = [ "out" "man" "doc" ];
installFlags = [ "PREFIX=$(out)" "RMQ_ERLAPP_DIR=$(out)" ];
installTargets = [ "install" "install-man" ];
preBuild = ''
export LANG=C.UTF-8 # fix elixir locale warning
'';
runtimePath = stdenv.lib.makeBinPath ([
erlang
getconf # for getting memory limits
socat procps
gnused coreutils # used by helper scripts
] ++ stdenv.lib.optionals stdenv.isLinux [ systemd ]); # for systemd unit activation check
postInstall = ''
# rabbitmq-env calls to sed/coreutils, so provide everything early
sed -i $out/sbin/rabbitmq-env -e '2s|^|PATH=${runtimePath}\''${PATH:+:}\$PATH/\n|'
# rabbitmq-server script uses `dirname` to get hold of a
# rabbitmq-env, so let's provide this file directly. After that
# point everything is OK - the PATH above will kick in
substituteInPlace $out/sbin/rabbitmq-server \
--replace '`dirname $0`/rabbitmq-env' \
"$out/sbin/rabbitmq-env"
# 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
'';
meta = {
homepage = "https://www.rabbitmq.com/";
description = "An implementation of the AMQP messaging protocol";
license = stdenv.lib.licenses.mpl11;
platforms = stdenv.lib.platforms.unix;
maintainers = with stdenv.lib.maintainers; [ Profpatsch ];
};
passthru.tests = {
vm-test = nixosTests.rabbitmq;
};
}