diff options
Diffstat (limited to 'pkgs/servers/amqp/rabbitmq-server/default.nix')
-rw-r--r-- | pkgs/servers/amqp/rabbitmq-server/default.nix | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/pkgs/servers/amqp/rabbitmq-server/default.nix b/pkgs/servers/amqp/rabbitmq-server/default.nix index f1838f2a2cb..868fd3a6d56 100644 --- a/pkgs/servers/amqp/rabbitmq-server/default.nix +++ b/pkgs/servers/amqp/rabbitmq-server/default.nix @@ -1,5 +1,6 @@ { 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 }: @@ -15,7 +16,7 @@ stdenv.mkDerivation rec { }; buildInputs = - [ erlang elixir python libxml2 libxslt xmlto docbook_xml_dtd_45 docbook_xsl zip unzip rsync ] + [ 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" ]; @@ -23,15 +24,31 @@ stdenv.mkDerivation rec { installFlags = [ "PREFIX=$(out)" "RMQ_ERLAPP_DIR=$(out)" ]; installTargets = [ "install" "install-man" ]; - runtimePath = stdenv.lib.makeBinPath [getconf erlang socat]; + preBuild = '' + export LANG=C.UTF-8 # fix elixir locale warning + ''; + + runtimePath = stdenv.lib.makeBinPath [ + erlang + getconf # for getting memory limits + socat systemd procps # for systemd unit activation check + gnused coreutils # used by helper scripts + ]; postInstall = '' - echo 'PATH=${runtimePath}:''${PATH:+:}$PATH' >> $out/sbin/rabbitmq-env + # 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 - substituteInPlace $out/sbin/rabbitmq-env \ - --replace 'RABBITMQ_SCRIPTS_DIR=`dirname $SCRIPT_PATH`' \ - "RABBITMQ_SCRIPTS_DIR=$out/sbin" + # 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|" # there’s a few stray files that belong into share mkdir -p $doc/share/doc/rabbitmq-server |