Message ID | 20210901191443.59352-1-bauermann@kolabnow.com |
---|---|
State | Accepted |
Headers | show |
Series | [bug#50326,cuirass] Add systemd unit file for remote worker service. | expand |
Context | Check | Description |
---|---|---|
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
Hello! Thiago Jung Bauermann <bauermann@kolabnow.com> skribis: > * 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. With this approach, the user has to get the source and configure it, which is somewhat annoying. I’d prefer installing it to $sysconfdir, similar to how we do it in Guix. That makes it easier for interested users to locate the right .service and to install it, right after they’ve done ‘guix install cuirass’. WDYT? If that’s fine with you, I’ll happily push v2 on your behalf! Thanks, Ludo’.
Hello Ludo! Em quarta-feira, 8 de setembro de 2021, às 11:01:06 -03, Ludovic Courtès escreveu: > Hello! > > Thiago Jung Bauermann <bauermann@kolabnow.com> skribis: > > * 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. > > With this approach, the user has to get the source and configure it, > which is somewhat annoying. Yes, that is true. > I’d prefer installing it to $sysconfdir, similar to how we do it in > Guix. That makes it easier for interested users to locate the right > .service and to install it, right after they’ve done ‘guix install > cuirass’. > > WDYT? I think it’s a good idea. > If that’s fine with you, I’ll happily push v2 on your behalf! Of course! Feel free to do that. Thank you for the offer, and for reviewing this patch!
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