diff mbox

[v2,1/2] rabbitmq-server: new package

Message ID 1477410548-9977-1-git-send-email-fhunleth@troodon-software.com
State Accepted
Commit bfde3b3d47a3af26bc52ccdc30597874b6a1e91b
Headers show

Commit Message

Frank Hunleth Oct. 25, 2016, 3:49 p.m. UTC
Signed-off-by: Frank Hunleth <fhunleth@troodon-software.com>
---
Changes v1 -> v2:
  - Add symlinks to rabbitmq control programs so that they show up
    in /usr/sbin (per Peter Korsgaard)
  - Added init scripts to automatically start rabbitmq-server (per
    Peter)
  - In the license details, list RabbitMQ's license first (per Peter)
  - Add "select BR2_PACKAGE_OPENSSL" after testing in a minimal
    configuration.

 package/Config.in                               |  1 +
 package/rabbitmq-server/Config.in               | 13 ++++++
 package/rabbitmq-server/S50rabbitmq-server      | 36 ++++++++++++++++
 package/rabbitmq-server/rabbitmq-server.hash    |  2 +
 package/rabbitmq-server/rabbitmq-server.mk      | 55 +++++++++++++++++++++++++
 package/rabbitmq-server/rabbitmq-server.service | 15 +++++++
 6 files changed, 122 insertions(+)
 create mode 100644 package/rabbitmq-server/Config.in
 create mode 100755 package/rabbitmq-server/S50rabbitmq-server
 create mode 100644 package/rabbitmq-server/rabbitmq-server.hash
 create mode 100644 package/rabbitmq-server/rabbitmq-server.mk
 create mode 100644 package/rabbitmq-server/rabbitmq-server.service

--
2.7.4

Comments

Peter Korsgaard Oct. 25, 2016, 7:13 p.m. UTC | #1
>>>>> "Frank" == Frank Hunleth <fhunleth@troodon-software.com> writes:

 > Signed-off-by: Frank Hunleth <fhunleth@troodon-software.com>
 > ---
 > Changes v1 -> v2:
 >   - Add symlinks to rabbitmq control programs so that they show up
 >     in /usr/sbin (per Peter Korsgaard)
 >   - Added init scripts to automatically start rabbitmq-server (per
 >     Peter)
 >   - In the license details, list RabbitMQ's license first (per Peter)
 >   - Add "select BR2_PACKAGE_OPENSSL" after testing in a minimal
 >     configuration.

Thanks.

> diff --git a/package/rabbitmq-server/S50rabbitmq-server b/package/rabbitmq-server/S50rabbitmq-server
 > new file mode 100755
 > index 0000000..1a34a61
 > --- /dev/null
 > +++ b/package/rabbitmq-server/S50rabbitmq-server
 > @@ -0,0 +1,36 @@
 > +#!/bin/sh
 > +#
 > +# Start/stop rabbitmq-server
 > +#
 > +
 > +INSTALLUSER=rabbitmq
 > +RUNDIR=/var/run/rabbitmq
 > +
 > +# Create RUNDIR.
 > +mkrundir() {
 > +    install -d -o "$INSTALLUSER" -g "$INSTALLUSER" "$RUNDIR"
 > +}

Having this in a seperate function when it is only called once doesn't
really add any value imho.

> +
 > +case "$1" in
 > +  start)
 > +        mkrundir || exit 1
 > +        printf "Starting rabbitmq-server: "
 > +        su -c "/usr/sbin/rabbitmq-server -detached" - "$INSTALLUSER" 2> /dev/null
 > +        [ $? = 0 ] && echo "OK" || echo "FAIL"
 > +	;;
 > +  stop)
 > +        printf "Stopping rabbitmq-server: "
 > +        su -c "/usr/sbin/rabbitmqctl stop" - "$INSTALLUSER"
 > +        [ $? = 0 ] && echo "OK" || echo "FAIL"
 > +	;;
 > +  restart|reload)
 > +        "$0" stop || true
 > +        "$0" start
 > +	;;
 > +  *)
 > +        echo "Usage: $0 {start|stop|restart}"
 > +        exit 1
 > +esac
 > +
 > +exit $?
 > +

exit $? is the default anyway, so I've dropped this (and the trailing
empty lines).

> diff --git a/package/rabbitmq-server/rabbitmq-server.hash b/package/rabbitmq-server/rabbitmq-server.hash
 > new file mode 100644
 > index 0000000..be21477
 > --- /dev/null
 > +++ b/package/rabbitmq-server/rabbitmq-server.hash
 > @@ -0,0 +1,2 @@
 > +# Locally computed
 > +sha256 c696134e863f99191a301288c12d69ff00b7e648107ee52c8686ae047dde1bee  rabbitmq-server-3.6.1.tar.xz
 > diff --git a/package/rabbitmq-server/rabbitmq-server.mk b/package/rabbitmq-server/rabbitmq-server.mk
 > new file mode 100644
 > index 0000000..8da5cdd
 > --- /dev/null
 > +++ b/package/rabbitmq-server/rabbitmq-server.mk
 > @@ -0,0 +1,55 @@
 > +#############################################################
 > +#
 > +# rabbitmq-server
 > +#
 > +#############################################################
 > +
 > +RABBITMQ_SERVER_VERSION = 3.6.1
 > +RABBITMQ_SERVER_SITE = http://www.rabbitmq.com/releases/rabbitmq-server/v$(RABBITMQ_SERVER_VERSION)
 > +RABBITMQ_SERVER_SOURCE = rabbitmq-server-$(RABBITMQ_SERVER_VERSION).tar.xz
 > +RABBITMQ_SERVER_LICENSE = MPLv1.1, Apache-2.0, BSD-2c, EPL, MIT, MPLv2.0
 > +RABBITMQ_SERVER_LICENSE_FILES = LICENSE-MPL-RabbitMQ \
 > +				LICENSE LICENSE-APACHE2-ExplorerCanvas \
 > +				LICENSE-APL2-Rebar LICENSE-APL2-Stomp-Websocket \
 > +				LICENSE-BSD-base64js LICENSE-BSD-glMatrix \
 > +				LICENSE-EPL-OTP LICENSE-MIT-EJS10 \
 > +				LICENSE-MIT-Flot LICENSE-MIT-jQuery164 \
 > +				LICENSE-MIT-Mochi LICENSE-MIT-Mochiweb \
 > +				LICENSE-MIT-Sammy060 LICENSE-MIT-SockJS \
 > +				LICENSE-MPL2
 > +RABBITMQ_SERVER_DEPENDS = erlang libxslt
 > +RABBITMQ_SERVER_TARGET_BINS = rabbitmq-plugins rabbitmq-server rabbitmqctl rabbitmq-env rabbitmq-defaults
 > +
 > +define RABBITMQ_SERVER_BUILD_CMDS
 > +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
 > +endef
 > +
 > +define RABBITMQ_SERVER_INSTALL_TARGET_CMDS
 > +	$(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install
 > +
 > +	for bin in $(RABBITMQ_SERVER_TARGET_BINS); do \
 > +		ln -sf /usr/lib/erlang/lib/rabbitmq_server-$(RABBITMQ_SERVER_VERSION)/sbin/$$bin \
 > +			$(TARGET_DIR)/usr/sbin/$$bin; \

It is imho nicer to use relative symlinks so they resolve correctly on
the build host as well, so I changed /usr/lib to ../lib.

Committed with these fixes, thanks.

 > +++ b/package/rabbitmq-server/rabbitmq-server.service
 > @@ -0,0 +1,15 @@
 > +[Unit]
 > +Description=RabbitMQ Messaging Server
 > +After=syslog.target network.target
 > +
 > +[Service]
 > +Type=simple
 > +User=rabbitmq
 > +Group=rabbitmq
 > +Environment=HOME=/var/lib/rabbitmq
 > +WorkingDirectory=/var/lib/rabbitmq
 > +ExecStart=/usr/sbin/rabbitmq-server
 > +ExecStop=/usr/sbin/rabbitmqctl stop

How does /var/run/rabbitmq get created in the systemd case?
Frank Hunleth Oct. 25, 2016, 7:44 p.m. UTC | #2
Hi Peter,

On Tue, Oct 25, 2016 at 3:13 PM, Peter Korsgaard <peter@korsgaard.com> wrote:
>>>>>> "Frank" == Frank Hunleth <fhunleth@troodon-software.com> writes:
>
>  > Signed-off-by: Frank Hunleth <fhunleth@troodon-software.com>
>  > ---
>  > Changes v1 -> v2:
>  >   - Add symlinks to rabbitmq control programs so that they show up
>  >     in /usr/sbin (per Peter Korsgaard)
>  >   - Added init scripts to automatically start rabbitmq-server (per
>  >     Peter)
>  >   - In the license details, list RabbitMQ's license first (per Peter)
>  >   - Add "select BR2_PACKAGE_OPENSSL" after testing in a minimal
>  >     configuration.
>
> Thanks.
>
>> diff --git a/package/rabbitmq-server/S50rabbitmq-server b/package/rabbitmq-server/S50rabbitmq-server
>  > new file mode 100755
>  > index 0000000..1a34a61
>  > --- /dev/null
>  > +++ b/package/rabbitmq-server/S50rabbitmq-server
>  > @@ -0,0 +1,36 @@
>  > +#!/bin/sh
>  > +#
>  > +# Start/stop rabbitmq-server
>  > +#
>  > +
>  > +INSTALLUSER=rabbitmq
>  > +RUNDIR=/var/run/rabbitmq
>  > +
>  > +# Create RUNDIR.
>  > +mkrundir() {
>  > +    install -d -o "$INSTALLUSER" -g "$INSTALLUSER" "$RUNDIR"
>  > +}
>
> Having this in a seperate function when it is only called once doesn't
> really add any value imho.
>
>> +
>  > +case "$1" in
>  > +  start)
>  > +        mkrundir || exit 1
>  > +        printf "Starting rabbitmq-server: "
>  > +        su -c "/usr/sbin/rabbitmq-server -detached" - "$INSTALLUSER" 2> /dev/null
>  > +        [ $? = 0 ] && echo "OK" || echo "FAIL"
>  > +    ;;
>  > +  stop)
>  > +        printf "Stopping rabbitmq-server: "
>  > +        su -c "/usr/sbin/rabbitmqctl stop" - "$INSTALLUSER"
>  > +        [ $? = 0 ] && echo "OK" || echo "FAIL"
>  > +    ;;
>  > +  restart|reload)
>  > +        "$0" stop || true
>  > +        "$0" start
>  > +    ;;
>  > +  *)
>  > +        echo "Usage: $0 {start|stop|restart}"
>  > +        exit 1
>  > +esac
>  > +
>  > +exit $?
>  > +
>
> exit $? is the default anyway, so I've dropped this (and the trailing
> empty lines).
>
>> diff --git a/package/rabbitmq-server/rabbitmq-server.hash b/package/rabbitmq-server/rabbitmq-server.hash
>  > new file mode 100644
>  > index 0000000..be21477
>  > --- /dev/null
>  > +++ b/package/rabbitmq-server/rabbitmq-server.hash
>  > @@ -0,0 +1,2 @@
>  > +# Locally computed
>  > +sha256 c696134e863f99191a301288c12d69ff00b7e648107ee52c8686ae047dde1bee  rabbitmq-server-3.6.1.tar.xz
>  > diff --git a/package/rabbitmq-server/rabbitmq-server.mk b/package/rabbitmq-server/rabbitmq-server.mk
>  > new file mode 100644
>  > index 0000000..8da5cdd
>  > --- /dev/null
>  > +++ b/package/rabbitmq-server/rabbitmq-server.mk
>  > @@ -0,0 +1,55 @@
>  > +#############################################################
>  > +#
>  > +# rabbitmq-server
>  > +#
>  > +#############################################################
>  > +
>  > +RABBITMQ_SERVER_VERSION = 3.6.1
>  > +RABBITMQ_SERVER_SITE = http://www.rabbitmq.com/releases/rabbitmq-server/v$(RABBITMQ_SERVER_VERSION)
>  > +RABBITMQ_SERVER_SOURCE = rabbitmq-server-$(RABBITMQ_SERVER_VERSION).tar.xz
>  > +RABBITMQ_SERVER_LICENSE = MPLv1.1, Apache-2.0, BSD-2c, EPL, MIT, MPLv2.0
>  > +RABBITMQ_SERVER_LICENSE_FILES = LICENSE-MPL-RabbitMQ \
>  > +                            LICENSE LICENSE-APACHE2-ExplorerCanvas \
>  > +                            LICENSE-APL2-Rebar LICENSE-APL2-Stomp-Websocket \
>  > +                            LICENSE-BSD-base64js LICENSE-BSD-glMatrix \
>  > +                            LICENSE-EPL-OTP LICENSE-MIT-EJS10 \
>  > +                            LICENSE-MIT-Flot LICENSE-MIT-jQuery164 \
>  > +                            LICENSE-MIT-Mochi LICENSE-MIT-Mochiweb \
>  > +                            LICENSE-MIT-Sammy060 LICENSE-MIT-SockJS \
>  > +                            LICENSE-MPL2
>  > +RABBITMQ_SERVER_DEPENDS = erlang libxslt
>  > +RABBITMQ_SERVER_TARGET_BINS = rabbitmq-plugins rabbitmq-server rabbitmqctl rabbitmq-env rabbitmq-defaults
>  > +
>  > +define RABBITMQ_SERVER_BUILD_CMDS
>  > +    $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
>  > +endef
>  > +
>  > +define RABBITMQ_SERVER_INSTALL_TARGET_CMDS
>  > +    $(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install
>  > +
>  > +    for bin in $(RABBITMQ_SERVER_TARGET_BINS); do \
>  > +            ln -sf /usr/lib/erlang/lib/rabbitmq_server-$(RABBITMQ_SERVER_VERSION)/sbin/$$bin \
>  > +                    $(TARGET_DIR)/usr/sbin/$$bin; \
>
> It is imho nicer to use relative symlinks so they resolve correctly on
> the build host as well, so I changed /usr/lib to ../lib.

Ahh, now I understand why I've seen so many relative links in BR.
Makes sense. Thanks for the explanation.

>
> Committed with these fixes, thanks.
>
>  > +++ b/package/rabbitmq-server/rabbitmq-server.service
>  > @@ -0,0 +1,15 @@
>  > +[Unit]
>  > +Description=RabbitMQ Messaging Server
>  > +After=syslog.target network.target
>  > +
>  > +[Service]
>  > +Type=simple
>  > +User=rabbitmq
>  > +Group=rabbitmq
>  > +Environment=HOME=/var/lib/rabbitmq
>  > +WorkingDirectory=/var/lib/rabbitmq
>  > +ExecStart=/usr/sbin/rabbitmq-server
>  > +ExecStop=/usr/sbin/rabbitmqctl stop
>
> How does /var/run/rabbitmq get created in the systemd case?

I'm actually getting skeptical that /var/run/rabbitmq really gets
used. I saw that it was included somewhere else, but I think it's
bogus. Our rabbitmq-server was originally running on a system that
used BusyBox init. We're in the process of converting to systemd, and
so far rabbitmq-server appears to be working without the directory.
I'll be doing more testing in the next couple weeks, and assuming
everything goes well, I'll send a patch up removing the
/var/run/rabbitmq parts.

Thanks,
Frank
Peter Korsgaard Oct. 25, 2016, 7:58 p.m. UTC | #3
>>>>> "Frank" == Frank Hunleth <fhunleth@troodon-software.com> writes:

Hi,

 >> > +ExecStop=/usr/sbin/rabbitmqctl stop
 >> 
 >> How does /var/run/rabbitmq get created in the systemd case?

 > I'm actually getting skeptical that /var/run/rabbitmq really gets
 > used. I saw that it was included somewhere else, but I think it's
 > bogus. Our rabbitmq-server was originally running on a system that
 > used BusyBox init. We're in the process of converting to systemd, and
 > so far rabbitmq-server appears to be working without the directory.
 > I'll be doing more testing in the next couple weeks, and assuming
 > everything goes well, I'll send a patch up removing the
 > /var/run/rabbitmq parts.

OK, thanks!
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index 9399f63..e8ec723 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1576,6 +1576,7 @@  endif
 	source "package/pure-ftpd/Config.in"
 	source "package/putty/Config.in"
 	source "package/quagga/Config.in"
+	source "package/rabbitmq-server/Config.in"
 	source "package/radvd/Config.in"
 	source "package/rp-pppoe/Config.in"
 	source "package/rpcbind/Config.in"
diff --git a/package/rabbitmq-server/Config.in b/package/rabbitmq-server/Config.in
new file mode 100644
index 0000000..6a323af
--- /dev/null
+++ b/package/rabbitmq-server/Config.in
@@ -0,0 +1,13 @@ 
+config BR2_PACKAGE_RABBITMQ_SERVER
+	bool "rabbitmq-server"
+	depends on BR2_PACKAGE_ERLANG
+	select BR2_PACKAGE_LIBXSLT
+	select BR2_PACKAGE_OPENSSL # Required to build Erlang's crypto and ssl
+	                           # applications
+	help
+	  High-performance AMQP-compliant message broker written in Erlang.
+
+	  http://www.rabbitmq.com
+
+comment "rabbitmq-server needs erlang"
+	depends on !BR2_PACKAGE_ERLANG
diff --git a/package/rabbitmq-server/S50rabbitmq-server b/package/rabbitmq-server/S50rabbitmq-server
new file mode 100755
index 0000000..1a34a61
--- /dev/null
+++ b/package/rabbitmq-server/S50rabbitmq-server
@@ -0,0 +1,36 @@ 
+#!/bin/sh
+#
+# Start/stop rabbitmq-server
+#
+
+INSTALLUSER=rabbitmq
+RUNDIR=/var/run/rabbitmq
+
+# Create RUNDIR.
+mkrundir() {
+    install -d -o "$INSTALLUSER" -g "$INSTALLUSER" "$RUNDIR"
+}
+
+case "$1" in
+  start)
+        mkrundir || exit 1
+        printf "Starting rabbitmq-server: "
+        su -c "/usr/sbin/rabbitmq-server -detached" - "$INSTALLUSER" 2> /dev/null
+        [ $? = 0 ] && echo "OK" || echo "FAIL"
+	;;
+  stop)
+        printf "Stopping rabbitmq-server: "
+        su -c "/usr/sbin/rabbitmqctl stop" - "$INSTALLUSER"
+        [ $? = 0 ] && echo "OK" || echo "FAIL"
+	;;
+  restart|reload)
+        "$0" stop || true
+        "$0" start
+	;;
+  *)
+        echo "Usage: $0 {start|stop|restart}"
+        exit 1
+esac
+
+exit $?
+
diff --git a/package/rabbitmq-server/rabbitmq-server.hash b/package/rabbitmq-server/rabbitmq-server.hash
new file mode 100644
index 0000000..be21477
--- /dev/null
+++ b/package/rabbitmq-server/rabbitmq-server.hash
@@ -0,0 +1,2 @@ 
+# Locally computed
+sha256 c696134e863f99191a301288c12d69ff00b7e648107ee52c8686ae047dde1bee  rabbitmq-server-3.6.1.tar.xz
diff --git a/package/rabbitmq-server/rabbitmq-server.mk b/package/rabbitmq-server/rabbitmq-server.mk
new file mode 100644
index 0000000..8da5cdd
--- /dev/null
+++ b/package/rabbitmq-server/rabbitmq-server.mk
@@ -0,0 +1,55 @@ 
+#############################################################
+#
+# rabbitmq-server
+#
+#############################################################
+
+RABBITMQ_SERVER_VERSION = 3.6.1
+RABBITMQ_SERVER_SITE = http://www.rabbitmq.com/releases/rabbitmq-server/v$(RABBITMQ_SERVER_VERSION)
+RABBITMQ_SERVER_SOURCE = rabbitmq-server-$(RABBITMQ_SERVER_VERSION).tar.xz
+RABBITMQ_SERVER_LICENSE = MPLv1.1, Apache-2.0, BSD-2c, EPL, MIT, MPLv2.0
+RABBITMQ_SERVER_LICENSE_FILES = LICENSE-MPL-RabbitMQ \
+				LICENSE LICENSE-APACHE2-ExplorerCanvas \
+				LICENSE-APL2-Rebar LICENSE-APL2-Stomp-Websocket \
+				LICENSE-BSD-base64js LICENSE-BSD-glMatrix \
+				LICENSE-EPL-OTP LICENSE-MIT-EJS10 \
+				LICENSE-MIT-Flot LICENSE-MIT-jQuery164 \
+				LICENSE-MIT-Mochi LICENSE-MIT-Mochiweb \
+				LICENSE-MIT-Sammy060 LICENSE-MIT-SockJS \
+				LICENSE-MPL2
+RABBITMQ_SERVER_DEPENDS = erlang libxslt
+RABBITMQ_SERVER_TARGET_BINS = rabbitmq-plugins rabbitmq-server rabbitmqctl rabbitmq-env rabbitmq-defaults
+
+define RABBITMQ_SERVER_BUILD_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
+endef
+
+define RABBITMQ_SERVER_INSTALL_TARGET_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install
+
+	for bin in $(RABBITMQ_SERVER_TARGET_BINS); do \
+		ln -sf /usr/lib/erlang/lib/rabbitmq_server-$(RABBITMQ_SERVER_VERSION)/sbin/$$bin \
+			$(TARGET_DIR)/usr/sbin/$$bin; \
+	done
+endef
+
+define RABBITMQ_SERVER_INSTALL_INIT_SYSTEMD
+	$(INSTALL) -D -m 0644 package/rabbitmq-server/rabbitmq-server.service \
+		$(TARGET_DIR)/usr/lib/systemd/system/rabbitmq-server.service
+
+	mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
+
+	ln -fs ../../../../usr/lib/systemd/system/rabbitmq-server.service \
+		$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service
+endef
+
+define RABBITMQ_SERVER_INSTALL_INIT_SYSV
+	$(INSTALL) -D -m 0755 package/rabbitmq-server/S50rabbitmq-server \
+		$(TARGET_DIR)/etc/init.d/S50rabbitmq-server
+endef
+
+define RABBITMQ_SERVER_USERS
+	rabbitmq -1 rabbitmq -1 * /var/lib/rabbitmq /bin/sh - rabbitmq-server daemon
+endef
+
+$(eval $(generic-package))
diff --git a/package/rabbitmq-server/rabbitmq-server.service b/package/rabbitmq-server/rabbitmq-server.service
new file mode 100644
index 0000000..268b4bd
--- /dev/null
+++ b/package/rabbitmq-server/rabbitmq-server.service
@@ -0,0 +1,15 @@ 
+[Unit]
+Description=RabbitMQ Messaging Server
+After=syslog.target network.target
+
+[Service]
+Type=simple
+User=rabbitmq
+Group=rabbitmq
+Environment=HOME=/var/lib/rabbitmq
+WorkingDirectory=/var/lib/rabbitmq
+ExecStart=/usr/sbin/rabbitmq-server
+ExecStop=/usr/sbin/rabbitmqctl stop
+
+[Install]
+WantedBy=multi-user.target