summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2018-02-19 18:54:16 +0100
committerProfpatsch <mail@profpatsch.de>2018-02-22 17:04:20 +0100
commit186c76539855a8d1a3e76af0ff95b5de50aa48f8 (patch)
treebd23dad23081c3fa7edd8e5f120f33f97d911e01 /pkgs
parentf1dfc2212853daa57d676b1e5d79d3df625c6573 (diff)
downloadnixlib-186c76539855a8d1a3e76af0ff95b5de50aa48f8.tar
nixlib-186c76539855a8d1a3e76af0ff95b5de50aa48f8.tar.gz
nixlib-186c76539855a8d1a3e76af0ff95b5de50aa48f8.tar.bz2
nixlib-186c76539855a8d1a3e76af0ff95b5de50aa48f8.tar.lz
nixlib-186c76539855a8d1a3e76af0ff95b5de50aa48f8.tar.xz
nixlib-186c76539855a8d1a3e76af0ff95b5de50aa48f8.tar.zst
nixlib-186c76539855a8d1a3e76af0ff95b5de50aa48f8.zip
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.
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/servers/amqp/rabbitmq-server/default.nix59
1 files changed, 46 insertions, 13 deletions
diff --git a/pkgs/servers/amqp/rabbitmq-server/default.nix b/pkgs/servers/amqp/rabbitmq-server/default.nix
index 889ec4d3745f..3d4a8902c918 100644
--- a/pkgs/servers/amqp/rabbitmq-server/default.nix
+++ b/pkgs/servers/amqp/rabbitmq-server/default.nix
@@ -1,40 +1,73 @@
-{ stdenv, fetchurl, erlang, python, libxml2, libxslt, xmlto
+{ stdenv, fetchurl, runCommand
+, erlang, python, libxml2, libxslt, xmlto
 , docbook_xml_dtd_45, docbook_xsl, zip, unzip, rsync
 
 , AppKit, Carbon, Cocoa
 }:
 
-stdenv.mkDerivation rec {
-  name = "rabbitmq-server-${version}";
+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
+  '';
 
-  version = "3.6.10";
+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 = "0k1rhg1a51201b1hp6vaf4fk48hqz7m9hw55b8xnnyz2ld88jiqg";
+    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 ];
 
-  preBuild =
-    ''
-      # Fix the "/usr/bin/env" in "calculate-relative".
-      patchShebangs .
-    '';
+  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
+  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"
+
+    # there’s 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 ];
   };
 }