[PATCH] Add RabbitMQ package and service.

OpenSubmitted by Christopher Baines.
Details
2 participants
  • Christopher Baines
  • zimoun
Owner
unassigned
Severity
normal
C
C
Christopher Baines wrote on 20 May 2018 22:36
(address . guix-patches@gnu.org)
87fu2m3w03.fsf@cbaines.net
Tags: moreinfo
RabbitMQ is a message broker/queuing system service. I've managed to geta package that builds, and a service which at least starts and seems towork.
The package still needs more work, I haven't looked too closely at thesource and what might need stripping out.
As for the service, it's very minimal, and I don't have very muchexperience with RabbitMQ. However, this is a start, so here are somepatches.

Christopher Baines (2): gnu: Add rabbitmq. services: Add RabbitMQ.
gnu/local.mk | 3 + gnu/packages/rabbitmq.scm | 90 +++++++++++++++++++++++++++ gnu/services/message-broker.scm | 105 ++++++++++++++++++++++++++++++++ gnu/tests/message-broker.scm | 86 ++++++++++++++++++++++++++ 4 files changed, 284 insertions(+) create mode 100644 gnu/packages/rabbitmq.scm create mode 100644 gnu/services/message-broker.scm create mode 100644 gnu/tests/message-broker.scm
-----BEGIN PGP SIGNATURE-----
iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAlsB3DxfFIAAAAAALgAoaXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNFODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE9XfwQw/+Omz18htxBm2dQ7uTuKhXoz/OUHUSXqt3LjfxCQgDBSIQ3fDKlMuJxVkaIAaJ7upx5z5ZW11IByHpST+hGm57LV4okiIdkcFTXR8Q+7NIsh2hOdVeimWqGf8iq3yqPV0bEYjQmTdXrEMcM9uxEfzs+XVUEtWRvHStVpjIl9VrJO2HzIJKZos1/zvfFbL72a8Z8Rv1cCkM73yw120oOFzoR3Glwbr787lc4R2W3USQANQtVdMeLz0lewuUpeEjM6aSvqay+96pUWJzoNnyXPPrTxdXjdP7nfHqPpFy97kRJtpCERMKMuTsfM73aB/YLmjIwwBqdbd0gIpzhR8zpZaZtBK+KatfqEIApjLo+XzLaT/KCJrP8J8vWYueVmeFv4Rhw2mnhpSf1sYUUDPYaQnzIGT5NeaS3nRaNTHLriF5k39EIvTCNhOY34+u4Ny3PbgGNY13wy+RpGJW3lr/y5fqgBFGXK8fZQ1uVVFWfYJ3EmNb1sELjscCA3nkKTojh6fEhEs7dsxidjS1KP8PiocJWnzqftVBnTTi5OU4H8Hvgg3+j0PgfI1jzELRfNjtOdU70NFBwi2knFzxEMugPV0N4LzgmasfTxJ2t9DcErFBV1wsXMoVcalZw2Qs4UnWOKuEqtrj7JDl7q28yY9JfZR2AC+DXq4jhI7fkihoQRw95AE==t6j1-----END PGP SIGNATURE-----
C
C
Christopher Baines wrote on 20 May 2018 22:39
[PATCH 2/2] services: Add RabbitMQ.
(address . 31539@debbugs.gnu.org)
20180520203958.25330-2-mail@cbaines.net
* gnu/services/message-broker.scm: New file.* gnu/services/message-broker.scm: New file.* gnu/local.mk: Add entries for new files.--- gnu/local.mk | 2 + gnu/services/message-broker.scm | 105 ++++++++++++++++++++++++++++++++ gnu/tests/message-broker.scm | 86 ++++++++++++++++++++++++++ 3 files changed, 193 insertions(+) create mode 100644 gnu/services/message-broker.scm create mode 100644 gnu/tests/message-broker.scm
Toggle diff (225 lines)diff --git a/gnu/local.mk b/gnu/local.mkindex 22aad6d7e..7f5bc19e9 100644--- a/gnu/local.mk+++ b/gnu/local.mk@@ -478,6 +478,7 @@ GNU_SYSTEM_MODULES = \ %D%/services/virtualization.scm \ %D%/services/mail.scm \ %D%/services/mcron.scm \+ %D%/services/message-broker.scm \ %D%/services/messaging.scm \ %D%/services/monitoring.scm \ %D%/services/networking.scm \@@ -532,6 +533,7 @@ GNU_SYSTEM_MODULES = \ %D%/tests/nfs.scm \ %D%/tests/install.scm \ %D%/tests/mail.scm \+ %D%/tests/message-broker.scm \ %D%/tests/messaging.scm \ %D%/tests/networking.scm \ %D%/tests/rsync.scm \diff --git a/gnu/services/message-broker.scm b/gnu/services/message-broker.scmnew file mode 100644index 000000000..2685ee0fc--- /dev/null+++ b/gnu/services/message-broker.scm@@ -0,0 +1,105 @@+;;; GNU Guix --- Functional package management for GNU+;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>+;;;+;;; This file is part of GNU Guix.+;;;+;;; GNU Guix is free software; you can redistribute it and/or modify it+;;; under the terms of the GNU General Public License as published by+;;; the Free Software Foundation; either version 3 of the License, or (at+;;; your option) any later version.+;;;+;;; GNU Guix is distributed in the hope that it will be useful, but+;;; WITHOUT ANY WARRANTY; without even the implied warranty of+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+;;; GNU General Public License for more details.+;;;+;;; You should have received a copy of the GNU General Public License+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.++(define-module (gnu services message-broker)+ #:use-module (gnu services)+ #:use-module (gnu services shepherd)+ #:use-module (gnu system shadow)+ #:use-module (gnu packages admin)+ #:use-module (gnu packages rabbitmq)+ #:use-module (guix modules)+ #:use-module (guix records)+ #:use-module (guix gexp)+ #:use-module (ice-9 match)+ #:export (<rabbitmq-configuration>+ rabbitmq-configuration+ rabbitmq-configuration?+ rabbitmq-configuration-rabbitmq+ rabbitmq-configuration-interfaces+ rabbitmq-configuration-tcp-port+ rabbitmq-configuration-udp-port+ rabbitmq-configuration-additional-options++ rabbitmq-service-type))++ +;;;+;;; RabbitMQ+;;;++(define-record-type* <rabbitmq-configuration>+ rabbitmq-configuration make-rabbitmq-configuration+ rabbitmq-configuration?+ (rabbitmq rabbitmq-configuration-rabbitmq ;<package>+ (default rabbitmq))+ (interfaces rabbitmq-configuration-interfaces+ (default '("0.0.0.0")))+ (tcp-port rabbitmq-configuration-tcp-port+ (default 11211))+ (udp-port rabbitmq-configuration-udp-port+ (default 11211))+ (additional-options rabbitmq-configuration-additional-options+ (default '())))++(define %rabbitmq-accounts+ (list (user-group (name "rabbitmq") (system? #t))+ (user-account+ (name "rabbitmq")+ (group "rabbitmq")+ (system? #t)+ (comment "Rabbitmq server user")+ (home-directory "/var/empty")+ (shell (file-append shadow "/sbin/nologin")))))++(define rabbitmq-activation+ #~(begin+ (use-modules (guix build utils))+ (let ((user (getpwnam "rabbitmq")))+ (mkdir-p "/var/run/rabbitmq")+ (chown "/var/run/rabbitmq"+ (passwd:uid user) (passwd:gid user)))))++(define rabbitmq-shepherd-service+ (match-lambda+ (($ <rabbitmq-configuration> rabbitmq interfaces tcp-port udp-port+ additional-options)+ (with-imported-modules (source-module-closure+ '((gnu build shepherd)))+ (list (shepherd-service+ (provision '(rabbitmq))+ (documentation "Run the Rabbitmq daemon.")+ (requirement '(user-processes loopback))+ (modules '((gnu build shepherd)))+ (start #~(make-forkexec-constructor+ `(#$(file-append rabbitmq "/sbin/rabbitmq-server"))+ #:pid-file "/var/run/rabbitmq/pid"+ #:environment-variables+ `("RABBITMQ_PID_FILE=/var/run/rabbitmq/pid"+ ,@(environ))))+ (stop #~(make-kill-destructor))))))))++(define rabbitmq-service-type+ (service-type (name 'rabbitmq)+ (extensions+ (list (service-extension shepherd-root-service-type+ rabbitmq-shepherd-service)+ (service-extension activation-service-type+ (const rabbitmq-activation))+ (service-extension account-service-type+ (const %rabbitmq-accounts))))+ (default-value (rabbitmq-configuration))))diff --git a/gnu/tests/message-broker.scm b/gnu/tests/message-broker.scmnew file mode 100644index 000000000..f2f559081--- /dev/null+++ b/gnu/tests/message-broker.scm@@ -0,0 +1,86 @@+;;; GNU Guix --- Functional package management for GNU+;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>+;;;+;;; This file is part of GNU Guix.+;;;+;;; GNU Guix is free software; you can redistribute it and/or modify it+;;; under the terms of the GNU General Public License as published by+;;; the Free Software Foundation; either version 3 of the License, or (at+;;; your option) any later version.+;;;+;;; GNU Guix is distributed in the hope that it will be useful, but+;;; WITHOUT ANY WARRANTY; without even the implied warranty of+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+;;; GNU General Public License for more details.+;;;+;;; You should have received a copy of the GNU General Public License+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.++(define-module (gnu tests message-broker)+ #:use-module (gnu tests)+ #:use-module (gnu system)+ #:use-module (gnu system file-systems)+ #:use-module (gnu system shadow)+ #:use-module (gnu system vm)+ #:use-module (gnu services)+ #:use-module (gnu services message-broker)+ #:use-module (gnu services networking)+ #:use-module (guix gexp)+ #:use-module (guix store)+ #:export (%test-rabbitmq))++(define %rabbitmq-os+ (simple-operating-system+ (dhcp-client-service)+ (service rabbitmq-service-type)))++(define* (run-rabbitmq-test #:optional (port 11211))+ "Run tests in %RABBITMQ-OS, forwarding PORT."+ (define os+ (marionette-operating-system+ %rabbitmq-os+ #:imported-modules '((gnu services herd)+ (guix combinators))))++ (define vm+ (virtual-machine+ (operating-system os)+ (port-forwardings `((11211 . ,port)))))++ (define test+ (with-imported-modules '((gnu build marionette))+ #~(begin+ (use-modules (srfi srfi-11) (srfi srfi-64)+ (gnu build marionette)+ (ice-9 rdelim))++ (define marionette+ (make-marionette (list #$vm)))++ (mkdir #$output)+ (chdir #$output)++ (test-begin "rabbitmq")++ ;; Wait for rabbitmq to be up and running.+ (test-assert "service running"+ (marionette-eval+ '(begin+ (use-modules (gnu services herd))+ (match (start-service 'rabbitmq)+ (#f #f)+ (('service response-parts ...)+ (match (assq-ref response-parts 'running)+ ((pid) (number? pid))))))+ marionette))++ (test-end)+ (exit (= (test-runner-fail-count (test-runner-current)) 0)))))++ (gexp->derivation "rabbitmq-test" test))++(define %test-rabbitmq+ (system-test+ (name "rabbitmq")+ (description "Connect to a running RABBITMQ server.")+ (value (run-rabbitmq-test))))-- 2.17.0
C
C
Christopher Baines wrote on 20 May 2018 22:39
[PATCH 1/2] gnu: Add rabbitmq.
(address . 31539@debbugs.gnu.org)
20180520203958.25330-1-mail@cbaines.net
* gnu/packages/rabbitmq.scm: New file.* gnu/local.mk: Add gnu/packages/rabbitmq.scm.--- gnu/local.mk | 1 + gnu/packages/rabbitmq.scm | 90 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 gnu/packages/rabbitmq.scm
Toggle diff (110 lines)diff --git a/gnu/local.mk b/gnu/local.mkindex fbdb30989..22aad6d7e 100644--- a/gnu/local.mk+++ b/gnu/local.mk@@ -359,6 +359,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/toys.scm \ %D%/packages/tryton.scm \ %D%/packages/qt.scm \+ %D%/packages/rabbitmq.scm \ %D%/packages/ragel.scm \ %D%/packages/rails.scm \ %D%/packages/ratpoison.scm \diff --git a/gnu/packages/rabbitmq.scm b/gnu/packages/rabbitmq.scmnew file mode 100644index 000000000..d453dfe10--- /dev/null+++ b/gnu/packages/rabbitmq.scm@@ -0,0 +1,90 @@+;;; GNU Guix --- Functional package management for GNU+;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>+;;; This file is part of GNU Guix.+;;;+;;; GNU Guix is free software; you can redistribute it and/or modify it+;;; under the terms of the GNU General Public License as published by+;;; the Free Software Foundation; either version 3 of the License, or (at+;;; your option) any later version.+;;;+;;; GNU Guix is distributed in the hope that it will be useful, but+;;; WITHOUT ANY WARRANTY; without even the implied warranty of+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+;;; GNU General Public License for more details.+;;;+;;; You should have received a copy of the GNU General Public License+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.++(define-module (gnu packages rabbitmq)+ #:use-module ((guix licenses) #:prefix license:)+ #:use-module (guix utils)+ #:use-module (guix build-system gnu)+ #:use-module (guix download)+ #:use-module (guix packages)+ #:use-module (gnu packages base)+ #:use-module (gnu packages compression)+ #:use-module (gnu packages xml)+ #:use-module (gnu packages rsync)+ #:use-module (gnu packages erlang)+ #:use-module (gnu packages elixir)+ #:use-module (gnu packages python))++(define-public rabbitmq+ (package+ (name "rabbitmq")+ (version "3.7.4")+ (source (origin+ (method url-fetch)+ (uri (string-append+ "https://github.com/rabbitmq/rabbitmq-server/releases/download/v"+ version+ "/rabbitmq-server-" version ".tar.xz"))+ (file-name (string-append name "-" version ".tar.xz"))+ (sha256+ (base32+ "0y3c3kmj2jnfic4rzfn5x0raigkgscxv94fn3ijnnk535b209iw8"))))+ (build-system gnu-build-system)+ (arguments+ `(#:phases+ (modify-phases %standard-phases+ (add-after 'unpack 'patch-source+ (lambda* (#:key inputs #:allow-other-keys)+ (substitute* "deps/rabbit_common/src/vm_memory_monitor.erl"+ (("getconf") (string-append (assoc-ref inputs "glibc")+ "/bin/getconf")))+ #t))+ (delete 'configure)+ (delete 'check)+ (add-after 'install 'patch-scripts+ (lambda* (#:key inputs outputs #:allow-other-keys)+ (let* ((out (assoc-ref outputs "out")))+ (substitute* (string-append out "/sbin/rabbitmq-server")+ (("uname") (which "uname"))+ (("mkdir") (which "mkdir"))+ (("cp ") (string-append (which "cp") " "))+ (("\\$\\{ERL\\_DIR\\}") (string-append (dirname (which "erl"))+ "/"))+ (("dirname") (which "dirname")))+ (substitute* (string-append out "/sbin/rabbitmq-env")+ (("dirname") (which "dirname"))+ (("\\$\\{ERL\\_DIR\\}") (string-append (dirname (which "erl"))+ "/"))+ (("\\| tr") (string-append "| " (which "tr")))+ (("basename") (which "basename"))+ (("sed") (which "sed")))+ #t))))+ #:make-flags+ (list (string-append "RMQ_ERLAPP_DIR=" (assoc-ref %outputs "out")))))+ (native-inputs+ `(("erlang" ,erlang)+ ("elixir" ,elixir)+ ("python" ,python-wrapper)+ ("libxslt" ,libxslt)+ ("rsync" ,rsync)+ ("glibc",glibc)+ ("zip" ,zip)))+ (home-page "http://www.rabbitmq.com/")+ (synopsis "TODO")+ (description "TODO")+ (license "TODO")))+-- 2.17.0
Z
Z
zimoun wrote on 20 Oct 2020 09:45
Re: [bug#31539] [PATCH] Add RabbitMQ package and service.
(name . Christopher Baines)(address . mail@cbaines.net)(address . 31539@debbugs.gnu.org)
86zh4h8hne.fsf@gmail.com
Dear,
The 2 patches [1] are more than 2 years old. They are about addingRabbitMQ package and service. Have they been fallen in the crack?
Are they still relevant? They are tagged ’moreinfo’, why? Because thepackage needs more work?
1: http://issues.guix.gnu.org/issue/31539

On Sun, 20 May 2018 at 21:36, Christopher Baines <mail@cbaines.net> wrote:
Toggle quote (28 lines)> Tags: moreinfo>> RabbitMQ is a message broker/queuing system service. I've managed to get> a package that builds, and a service which at least starts and seems to> work.>> The package still needs more work, I haven't looked too closely at the> source and what might need stripping out.>> As for the service, it's very minimal, and I don't have very much> experience with RabbitMQ. However, this is a start, so here are some> patches.>>> Christopher Baines (2):> gnu: Add rabbitmq.> services: Add RabbitMQ.>> gnu/local.mk | 3 +> gnu/packages/rabbitmq.scm | 90 +++++++++++++++++++++++++++> gnu/services/message-broker.scm | 105 ++++++++++++++++++++++++++++++++> gnu/tests/message-broker.scm | 86 ++++++++++++++++++++++++++> 4 files changed, 284 insertions(+)> create mode 100644 gnu/packages/rabbitmq.scm> create mode 100644 gnu/services/message-broker.scm> create mode 100644 gnu/tests/message-broker.scm

All the best,simon
C
C
Christopher Baines wrote on 20 Oct 2020 09:59
(name . zimoun)(address . zimon.toutoune@gmail.com)(address . 31539@debbugs.gnu.org)
874kmpib0a.fsf@cbaines.net
zimoun <zimon.toutoune@gmail.com> writes:
Toggle quote (6 lines)> The 2 patches [1] are more than 2 years old. They are about adding> RabbitMQ package and service. Have they been fallen in the crack?>> Are they still relevant? They are tagged ’moreinfo’, why? Because the> package needs more work?
The service is OK, but the package needs some work before merging. Itdoesn't built RabbitMQ from source.
-----BEGIN PGP SIGNATURE-----
iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAl+OmMVfFIAAAAAALgAoaXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNFODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2JhaW5lcy5uZXQACgkQXiijOwuE9XchGRAAorynRVl58Zdn22BRy5Nfd8XbW2BgWNVktq7LNtTO6nLUlpQEPg++l/1AgE43TaDFTqBmXd6akKzqIhOVykXOhhOzrzn0KWf9I1T1Gmp0uE0qYerQWoSG8oGZRHyUettMyh4D1gyYDdNJ4zsatuPrLbrvC08Gz1Rqg9t5Yclqi+bXzeZL2tDaZlcf2al5vYWvtVpT+knM9OWRtHQxem0b5f9vMmaf2J++iKzFaW1Y09fmyAlqCHQ4AR/JcfXrXDc5IZKGPVjTXrZg4TtCZWhJol+J2R2f0QCc/Nbywp2/s5xw24ddIzqIkdilZJeHX+W5to/2pO5HGD2N6QjpHl1wibpS0oDRLQppQ05D1htBel8NREEaFGEPy68OHrky786o5WFprA6iM51Xk6Jj9n/RUMZTCZKLuVNxE3zZL76r1QhP0eWF15MEjHJYrF1iqOgT8CUUCvR8NQnpnxryXhWX0cOSqLgVmrqn9QeiC3LsuEQ5QQaGOL2FhmpVZkoAgWpeM4Bm1Q3rjjtq0iUb9Jn52rH2gPnS/5lTZrnXbROIK+i5JVVQpwYfUj3n74X0eGMgZ/6qVQ0aePOp3OovMcx0fUU4mmC0cGHxYUJ+OVo4rC+AGHmyt3evZ5iahQQ0vtAP9lkhN6dpx8L2clSmXOSvB7uYgWz0/2U27AWP6r8Co/0==QDR5-----END PGP SIGNATURE-----
Z
Z
zimoun wrote on 28 Oct 2020 18:28
tags 31539 + easy - moreinfo
(address . control@debbugs.gnu.org)
86k0va1cqr.fsf@gmail.com
tags 31539 - moreinfotags 31539 + easythanks
?