Patchwork [v2,2/2] Add system start-up files for "guix publish".

login
register
mail settings
Submitter Hartmut Goebel
Date Nov. 21, 2016, 5:33 p.m.
Message ID <1479749611-829-3-git-send-email-h.goebel@crazy-compilers.com>
Download mbox | patch
Permalink /patch/17675/
State New
Headers show

Comments

Hartmut Goebel - Nov. 21, 2016, 5:33 p.m.
* .gitignore: add etc/guix-publish.conf and /etc/guix-publish.service.
* etc/guix-publish.conf.in: New file.
* etc/guix-publish.service.in: New file.
* nix/local.mk (etc/guix-%.service, etc/guix-%.conf): Generalized former
  build-rules for by using patterns.
  (nodist_systemdservice_DATA): Add etc/guix-publish.service, update
  comment.
  (nodist_upstartjob_DATA): Add etc/guix-publish.conf, update comment.
* doc/guix.texi (Invoking guix publish): Add description for enabling
  "guix publish" on host distros using the new files.
---
 .gitignore                  |  2 ++
 doc/guix.texi               | 21 +++++++++++++++++++++
 etc/guix-publish.conf.in    | 12 ++++++++++++
 etc/guix-publish.service.in | 19 +++++++++++++++++++
 nix/local.mk                | 16 ++++++++--------
 5 files changed, 62 insertions(+), 8 deletions(-)
 create mode 100644 etc/guix-publish.conf.in
 create mode 100644 etc/guix-publish.service.in
Ludovic Courtès - Nov. 23, 2016, 9:25 p.m.
Hartmut Goebel <h.goebel@crazy-compilers.com> skribis:

> * .gitignore: add etc/guix-publish.conf and /etc/guix-publish.service.
> * etc/guix-publish.conf.in: New file.
> * etc/guix-publish.service.in: New file.
> * nix/local.mk (etc/guix-%.service, etc/guix-%.conf): Generalized former
>   build-rules for by using patterns.
>   (nodist_systemdservice_DATA): Add etc/guix-publish.service, update
>   comment.
>   (nodist_upstartjob_DATA): Add etc/guix-publish.conf, update comment.
> * doc/guix.texi (Invoking guix publish): Add description for enabling
>   "guix publish" on host distros using the new files.

[...]

> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -6055,6 +6055,27 @@ add a call to @code{guix-publish-service} in the @code{services} field
>  of the @code{operating-system} declaration (@pxref{guix-publish-service,
>  @code{guix-publish-service}}).
>  
> +If you are running Guix on top of host distro, this can be achieved with
> +the following commands.

What about: “If you are instead running Guix on a ``foreign distro'',
follow these instructions:”

> +@itemize
> +@item
> +If your host distro uses the systemd init system:
> +
> +@example
> +# ln -s ~root/.guix-profile/lib/systemd/system/guix-publish.service \
> +        /etc/systemd/system/
> +# systemctl start guix-publish && systemctl enable guix-publish
> +@end example
> +
> +@item
> +If your host distro uses the Upstart init system:
> +
> +@example
> +# ln -s ~root/.guix-profile/lib/upstart/system/guix-publish.conf /etc/init/
> +# start guix-publish
> +@end example

Maybe add something like:

  @item
  Otherwise, proceed similarly with your distro's init system.

OK with these changes, thank you!

Ludo’.
Hartmut Goebel - Nov. 24, 2016, 8:25 a.m.
Am 23.11.2016 um 22:25 schrieb Ludovic Courtès:
> OK with these changes, thank you!

Pushed with these changes.

Patch

diff --git a/.gitignore b/.gitignore
index 329d489..b64f5ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,6 +50,8 @@ 
 /emacs/guix-helper.scm
 /etc/guix-daemon.conf
 /etc/guix-daemon.service
+/etc/guix-publish.conf
+/etc/guix-publish.service
 /guix-daemon
 /guix-register
 /guix/config.scm
diff --git a/doc/guix.texi b/doc/guix.texi
index 4a921f2..e751cd6 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -6055,6 +6055,27 @@  add a call to @code{guix-publish-service} in the @code{services} field
 of the @code{operating-system} declaration (@pxref{guix-publish-service,
 @code{guix-publish-service}}).
 
+If you are running Guix on top of host distro, this can be achieved with
+the following commands.
+
+@itemize
+@item
+If your host distro uses the systemd init system:
+
+@example
+# ln -s ~root/.guix-profile/lib/systemd/system/guix-publish.service \
+        /etc/systemd/system/
+# systemctl start guix-publish && systemctl enable guix-publish
+@end example
+
+@item
+If your host distro uses the Upstart init system:
+
+@example
+# ln -s ~root/.guix-profile/lib/upstart/system/guix-publish.conf /etc/init/
+# start guix-publish
+@end example
+@end itemize
 
 @node Invoking guix challenge
 @section Invoking @command{guix challenge}
diff --git a/etc/guix-publish.conf.in b/etc/guix-publish.conf.in
new file mode 100644
index 0000000..498fa29
--- /dev/null
+++ b/etc/guix-publish.conf.in
@@ -0,0 +1,12 @@ 
+# This is a "job" for the Upstart init system to launch 'guix-daemon'.
+# Drop it in /etc/init to have 'guix-daemon' automatically started.
+
+description "Publish the GNU Guix store"
+
+start on runlevel [2345]
+
+stop on runlevel [016]
+
+task
+
+exec @bindir@/guix publish --user=nobody --port=8181
diff --git a/etc/guix-publish.service.in b/etc/guix-publish.service.in
new file mode 100644
index 0000000..fc4e3c2
--- /dev/null
+++ b/etc/guix-publish.service.in
@@ -0,0 +1,19 @@ 
+# This is a "service unit file" for the systemd init system to launch
+# 'guix publish'.  Drop it in /etc/systemd/system or similar to have
+# 'guix publish' automatically started.
+
+[Unit]
+Description=Publish the GNU Guix store
+
+[Service]
+ExecStart=@bindir@/guix publish --user=nobody --port=8181
+Environment=GUIX_LOCPATH=/root/.guix-profile/lib/locale
+RemainAfterExit=yes
+StandardOutput=syslog
+StandardError=syslog
+
+# See <https://lists.gnu.org/archive/html/guix-devel/2016-04/msg00608.html>.
+TasksMax=1024
+
+[Install]
+WantedBy=multi-user.target
diff --git a/nix/local.mk b/nix/local.mk
index 86ef769..79667ed 100644
--- a/nix/local.mk
+++ b/nix/local.mk
@@ -183,26 +183,26 @@  endif BUILD_DAEMON_OFFLOAD
 nodist_libexec_SCRIPTS =			\
   %D%/scripts/guix-authenticate
 
-# The '.service' file for systemd.
+# The '.service' files for systemd.
 systemdservicedir = $(libdir)/systemd/system
-nodist_systemdservice_DATA = etc/guix-daemon.service
+nodist_systemdservice_DATA = etc/guix-daemon.service etc/guix-publish.service
 
-etc/guix-daemon.service: etc/guix-daemon.service.in	\
+etc/guix-%.service: etc/guix-%.service.in	\
 			 $(top_builddir)/config.status
 	$(AM_V_GEN)$(MKDIR_P) "`dirname $@`";				\
 	$(SED) -e 's|@''bindir''@|$(bindir)|' <				\
-	       "$(srcdir)/etc/guix-daemon.service.in" > "$@.tmp";	\
+	       "$(srcdir)/$<" > "$@.tmp";	\
 	mv "$@.tmp" "$@"
 
-# The '.conf' job for Upstart.
+# The '.conf' jobs for Upstart.
 upstartjobdir = $(libdir)/upstart/system
-nodist_upstartjob_DATA = etc/guix-daemon.conf
+nodist_upstartjob_DATA = etc/guix-daemon.conf etc/guix-publish.conf
 
-etc/guix-daemon.conf: etc/guix-daemon.conf.in	\
+etc/guix-%.conf: etc/guix-%.conf.in	\
 			 $(top_builddir)/config.status
 	$(AM_V_GEN)$(MKDIR_P) "`dirname $@`";				\
 	$(SED) -e 's|@''bindir''@|$(bindir)|' <				\
-	       "$(srcdir)/etc/guix-daemon.conf.in" > "$@.tmp";		\
+	       "$(srcdir)/$<" > "$@.tmp";		\
 	mv "$@.tmp" "$@"
 
 EXTRA_DIST +=					\