nixpkgs/pkgs/servers/amqp/rabbitmq-server/default.nix
Profpatsch 186c765398 rabbitmq: 3.6.10 -> 3.6.15 (and various improvements)
- split outputs (doc, man, out)
- a new runtime dependency on getconf
- fix up SCRIPTS_DIR in wrapper
- clean output folder of stray doc files
- add license & maintainer

Tested with `nixos/tests/rabbitmq.nix`, inside a docker image and manually.
2018-02-22 17:04:20 +01:00

74 lines
2.2 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, runCommand
, erlang, python, libxml2, libxslt, xmlto
, docbook_xml_dtd_45, docbook_xsl, zip, unzip, rsync
, AppKit, Carbon, Cocoa
}:
let
# we only need that one glibc binary (28k instead of 2.7M)
getconf = runCommand "getconf" {} ''
install -D ${stdenv.lib.getBin stdenv.cc.libc}/bin/getconf $out/bin/getconf
'';
in stdenv.mkDerivation rec {
name = "rabbitmq-server-${version}";
version = "3.6.15";
src = fetchurl {
url = "https://www.rabbitmq.com/releases/rabbitmq-server/v${version}/${name}.tar.xz";
sha256 = "1zdmil657mhjmd20jv47s5dfpj2liqwvyg0zv2ky3akanfpgj98y";
};
buildInputs =
[ erlang python libxml2 libxslt xmlto docbook_xml_dtd_45 docbook_xsl zip unzip rsync ]
++ stdenv.lib.optionals stdenv.isDarwin [ AppKit Carbon Cocoa ];
outputs = [ "out" "man" "doc" ];
postPatch = with stdenv.lib; ''
# patch the path to getconf
substituteInPlace deps/rabbit_common/src/vm_memory_monitor.erl \
--replace "getconf PAGESIZE" "${getconf}/bin/getconf PAGESIZE"
'';
preBuild = ''
# Fix the "/usr/bin/env" in "calculate-relative".
patchShebangs .
'';
installFlags = "PREFIX=$(out) RMQ_ERLAPP_DIR=$(out)";
installTargets = "install install-man";
postInstall = ''
echo 'PATH=${erlang}/bin:''${PATH:+:}$PATH' >> $out/sbin/rabbitmq-env
# we know exactly where rabbitmq is gonna be,
# so we patch that into the env-script
substituteInPlace $out/sbin/rabbitmq-env \
--replace 'RABBITMQ_SCRIPTS_DIR=`dirname $SCRIPT_PATH`' \
"RABBITMQ_SCRIPTS_DIR=$out/sbin"
# 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
# patched into a source file above;
# needs to be explicitely passed to not be stripped by fixup
mkdir -p $out/nix-support
echo "${getconf}" > $out/nix-support/dont-strip-getconf
'';
meta = {
homepage = http://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 ];
};
}