unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Thiago Jung Bauermann via Guix-patches via <guix-patches@gnu.org>
To: 50326@debbugs.gnu.org
Cc: Thiago Jung Bauermann <bauermann@kolabnow.com>
Subject: [bug#50326] [PATCH cuirass] Add systemd unit file for remote worker service.
Date: Wed,  1 Sep 2021 16:14:43 -0300	[thread overview]
Message-ID: <20210901191443.59352-1-bauermann@kolabnow.com> (raw)

* etc/cuirass-remote-worker.service.in: New file.
* doc/cuirass.texi: Mention it.
* .gitignore: Ignore it.
* Makefile.am (noinst_SCRIPTS): Add ‘etc/cuirass-remote-worker.service’.
(EXTRA_DIST): Likewise.
(etc/cuirass-remote-worker.service): New target.
* configure.ac: Check for ‘(guix config)’ module.
Set ‘guix_localstatedir’ variable.
---

Hello,

This patch adds the systemd unit file I installed on guixp9. The
configure script finds out Guix’s localstatedir and substitutes it in
etc/cuirass-remote-worker.service.in. The service file isn’t installed
anywhere and the user is supposed to get it from the build directory if
they want to use it.

I did it this way because there’s no $PREFIX/doc/examples directory
or equivalent where it could be shipped, and I thought that it would
be excessive to add it to all Cuirass installations considering that
only a few of them would actually have a use for it. But I can send a
v2 making this change if people think it would be better.

 .gitignore                           |  1 +
 Makefile.am                          |  8 +++++++-
 configure.ac                         |  4 ++++
 doc/cuirass.texi                     | 13 +++++++++++++
 etc/cuirass-remote-worker.service.in | 15 +++++++++++++++
 5 files changed, 40 insertions(+), 1 deletion(-)
 create mode 100644 etc/cuirass-remote-worker.service.in

diff --git a/.gitignore b/.gitignore
index 95ed6cb3982c..0807874e9513 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,6 +24,7 @@
 /config.cache
 /configure
 /doc/version.texi
+/etc/cuirass-remote-worker.service
 /src/cuirass/config.scm
 /tests/cache
 Makefile
diff --git a/Makefile.am b/Makefile.am
index 1d754673f450..6c5dab26f105 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -25,7 +25,9 @@
 bin_SCRIPTS =                    \
   bin/cuirass
 
-noinst_SCRIPTS = pre-inst-env
+noinst_SCRIPTS =				\
+  pre-inst-env					\
+  etc/cuirass-remote-worker.service
 
 guilesitedir = $(datarootdir)/guile/site/@GUILE_EFFECTIVE_VERSION@
 guileobjectdir = $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache
@@ -188,6 +190,7 @@ EXTRA_DIST = \
   bootstrap \
   build-aux/guix.scm \
   src/cuirass/config.scm.in \
+  etc/cuirass-remote-worker.service.in \
   $(TESTS)
 
 dist-hook: gen-ChangeLog
@@ -247,6 +250,9 @@ $(bin_SCRIPTS): Makefile
 	$(generate_file); chmod +x $@
 src/cuirass/config.scm: $(srcdir)/src/cuirass/config.scm.in Makefile
 	$(generate_file)
+etc/cuirass-remote-worker.service: $(srcdir)/etc/cuirass-remote-worker.service.in \
+					Makefile
+	$(generate_file)
 
 # Guile modules require 'src/cuirass/config.scm' to exist before their
 # compilation.
diff --git a/configure.ac b/configure.ac
index 479e93a1cb8e..af294c16d025 100644
--- a/configure.ac
+++ b/configure.ac
@@ -47,6 +47,7 @@ GUILE_MODULE_REQUIRED([avahi])
 GUILE_MODULE_REQUIRED([fibers])
 GUILE_MODULE_REQUIRED([guix])
 GUILE_MODULE_REQUIRED([guix git])
+GUILE_MODULE_REQUIRED([guix config])
 GUILE_MODULE_REQUIRED([git])
 GUILE_MODULE_REQUIRED([json])
 GUILE_MODULE_REQUIRED([mailutils mailutils])
@@ -58,6 +59,9 @@ GUILE_MODULE_REQUIRED([zlib])
 # We depend on new Guile-Git errors.
 GUILE_MODULE_REQUIRED_EXPORT([(git)], git-error-message)
 
+guix_localstatedir="$($GUILE -c '(import (guix config)) (display %localstatedir)')"
+AC_SUBST(guix_localstatedir)
+
 AC_CONFIG_FILES([Makefile])
 AC_CONFIG_FILES([pre-inst-env:build-aux/pre-inst-env.in],
   [chmod +x pre-inst-env])
diff --git a/doc/cuirass.texi b/doc/cuirass.texi
index 72b0b5b0913a..e32ab29e5d5d 100644
--- a/doc/cuirass.texi
+++ b/doc/cuirass.texi
@@ -463,6 +463,19 @@ The easiest way to setup such an infrastructure is to rely on the GNU
 Guix Cuirass services definitions (@pxref{Continuous Integration,
 Continuous Integration,, guix, Guix}).
 
+Alternatively, there is a systemd service unit file at
+@code{etc/cuirass-remote-worker.service} to launch the
+@code{cuirass remote-worker} on systems which use systemd.  It can be
+installed and enabled as follows:
+
+@example
+sudo install -o root -g root -m 644 \
+     $CUIRASS_BUILD_DIR/etc/cuirass-remote-worker.service \
+     /etc/systemd/system
+sudo systemctl enable cuirass-remote-worker.service
+sudo systemctl start cuirass-remote-worker.service
+@end example
+
 @c *********************************************************************
 @node Invocation
 @chapter Invocation
diff --git a/etc/cuirass-remote-worker.service.in b/etc/cuirass-remote-worker.service.in
new file mode 100644
index 000000000000..2c334d74804f
--- /dev/null
+++ b/etc/cuirass-remote-worker.service.in
@@ -0,0 +1,15 @@
+# This is a "service unit file" for the systemd init system to launch
+# 'cuirass remote-worker'.  Drop it in /etc/systemd/system or similar
+# to have 'cuirass remote-worker' automatically started.
+
+[Unit]
+Description=Continuous integration remmote worker for GNU Guix
+
+[Service]
+ExecStart=@guix_localstatedir@/guix/profiles/per-user/root/guix-profile/bin/cuirass \
+    remote-worker --workers=2 --server=10.0.0.1:5555
+Environment= LC_ALL=en_US.UTF-8 \
+    'GUIX_LOCPATH=@guix_localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale'
+
+[Install]
+WantedBy=multi-user.target




             reply	other threads:[~2021-09-01 19:22 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-01 19:14 Thiago Jung Bauermann via Guix-patches via [this message]
2021-09-08 14:01 ` [bug#50326] [PATCH cuirass] Add systemd unit file for remote worker service Ludovic Courtès
2021-09-08 14:24   ` Thiago Jung Bauermann via Guix-patches via
2021-09-16  2:38   ` [bug#50326] [PATCH cuirass v2] " Thiago Jung Bauermann via Guix-patches via
2021-09-16 20:04     ` bug#50326: " Ludovic Courtès
2021-09-16 20:17       ` [bug#50326] " Thiago Jung Bauermann via Guix-patches via

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210901191443.59352-1-bauermann@kolabnow.com \
    --to=guix-patches@gnu.org \
    --cc=50326@debbugs.gnu.org \
    --cc=bauermann@kolabnow.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).