unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#31539] [PATCH] Add RabbitMQ package and service.
@ 2018-05-20 20:36 Christopher Baines
  2018-05-20 20:39 ` [bug#31539] [PATCH 1/2] gnu: Add rabbitmq Christopher Baines
  2020-10-20  7:45 ` [bug#31539] [PATCH] Add RabbitMQ package and service zimoun
  0 siblings, 2 replies; 5+ messages in thread
From: Christopher Baines @ 2018-05-20 20:36 UTC (permalink / raw)
  To: 31539

[-- Attachment #1: Type: text/plain, Size: 929 bytes --]

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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 962 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#31539] [PATCH 1/2] gnu: Add rabbitmq.
  2018-05-20 20:36 [bug#31539] [PATCH] Add RabbitMQ package and service Christopher Baines
@ 2018-05-20 20:39 ` Christopher Baines
  2018-05-20 20:39   ` [bug#31539] [PATCH 2/2] services: Add RabbitMQ Christopher Baines
  2020-10-20  7:45 ` [bug#31539] [PATCH] Add RabbitMQ package and service zimoun
  1 sibling, 1 reply; 5+ messages in thread
From: Christopher Baines @ 2018-05-20 20:39 UTC (permalink / raw)
  To: 31539

* 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

diff --git a/gnu/local.mk b/gnu/local.mk
index 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.scm
new file mode 100644
index 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

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#31539] [PATCH 2/2] services: Add RabbitMQ.
  2018-05-20 20:39 ` [bug#31539] [PATCH 1/2] gnu: Add rabbitmq Christopher Baines
@ 2018-05-20 20:39   ` Christopher Baines
  0 siblings, 0 replies; 5+ messages in thread
From: Christopher Baines @ 2018-05-20 20:39 UTC (permalink / raw)
  To: 31539

* 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

diff --git a/gnu/local.mk b/gnu/local.mk
index 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.scm
new file mode 100644
index 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))
+
+\f
+;;;
+;;; 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.scm
new file mode 100644
index 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

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#31539] [PATCH] Add RabbitMQ package and service.
  2018-05-20 20:36 [bug#31539] [PATCH] Add RabbitMQ package and service Christopher Baines
  2018-05-20 20:39 ` [bug#31539] [PATCH 1/2] gnu: Add rabbitmq Christopher Baines
@ 2020-10-20  7:45 ` zimoun
  2020-10-20  7:59   ` Christopher Baines
  1 sibling, 1 reply; 5+ messages in thread
From: zimoun @ 2020-10-20  7:45 UTC (permalink / raw)
  To: Christopher Baines; +Cc: 31539

Dear,

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?

1: <http://issues.guix.gnu.org/issue/31539>


On Sun, 20 May 2018 at 21:36, Christopher Baines <mail@cbaines.net> wrote:
> 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




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#31539] [PATCH] Add RabbitMQ package and service.
  2020-10-20  7:45 ` [bug#31539] [PATCH] Add RabbitMQ package and service zimoun
@ 2020-10-20  7:59   ` Christopher Baines
  0 siblings, 0 replies; 5+ messages in thread
From: Christopher Baines @ 2020-10-20  7:59 UTC (permalink / raw)
  To: zimoun; +Cc: 31539

[-- Attachment #1: Type: text/plain, Size: 408 bytes --]


zimoun <zimon.toutoune@gmail.com> writes:

> 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. It
doesn't built RabbitMQ from source.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-10-20  8:00 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-20 20:36 [bug#31539] [PATCH] Add RabbitMQ package and service Christopher Baines
2018-05-20 20:39 ` [bug#31539] [PATCH 1/2] gnu: Add rabbitmq Christopher Baines
2018-05-20 20:39   ` [bug#31539] [PATCH 2/2] services: Add RabbitMQ Christopher Baines
2020-10-20  7:45 ` [bug#31539] [PATCH] Add RabbitMQ package and service zimoun
2020-10-20  7:59   ` Christopher Baines

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).