GNU Shepherd 1.0.5 released

Ludovic Courtès <[email protected]> Sat, 24 May 2025 11:18:46 +0200
Newsgroups gmane.lisp.guile.sources,gmane.comp.gnu.guix.devel,gmane.lisp.guile.user
Message-ID <[email protected]>
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

We are glad to announce version 1.0.5 of the Shepherd, the next
bug-fix release in the 1.0.x series.

Check out the web site to learn more about the Shepherd 1.0.x series:

  https://gnu.org/software/shepherd/news/2024/12/the-shepherd-1.0.0-release=
d/

It is also the first release made from its new home at Codeberg:

  https://codeberg.org/shepherd/shepherd/

=E2=80=A2 About

  The Shepherd is a service manager written in Guile that looks after
  the herd of daemons running on the system.  It can be used as an
  =E2=80=9Cinit=E2=80=9D system (PID 1) and also by unprivileged users to m=
anage
  per-user daemons=E2=80=94e.g., gpg-agent, tor, privoxy.  It supports seve=
ral
  daemon startup mechanisms, including inetd, systemd-style socket
  activation, and timers.  The Shepherd is configured in Guile Scheme
  and can be extended in the same language.  It builds on a simple
  memory-safe and callback-free programming model.

  The Shepherd is developed jointly with the Guix project; it is used as
  the init system of Guix System and service manager of Guix Home.

  https://www.gnu.org/software/shepherd/

=E2=80=A2 Download

  Here are the compressed sources and a GPG detached signature:
    https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.5.tar.gz
    https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.5.tar.gz.sig

  Here are the SHA1 and SHA256 checksums:

    2b222be41b143fe77b9cbccc9dd8062717938d47  shepherd-1.0.5.tar.gz
    3c475069a02b49018491e5a5bbab5b7a424d76c7a06bdbf47afd005dc86805f8  sheph=
erd-1.0.5.tar.gz

  Authenticate the code by downloading the corresponding .sig file:

    gpg --verify shepherd-1.0.5.tar.gz.sig

  The signing key can be retrieved with:

    gpg --recv-keys 3CE464558A84FDC69DB40CFB090B11993D9AEBB5

  As a last resort to find the key, you can try the official GNU
  keyring:

    wget -q https://ftp.gnu.org/gnu/gnu-keyring.gpg
    gpg --keyring gnu-keyring.gpg --verify shepherd-1.0.5.tar.gz.sig

  It is bit-for-bit reproducible from a checkout of the =E2=80=98v1.0.5=E2=
=80=99 tag of
  the Git repository.


=E2=80=A2 Changes since version 1.0.4

  ** =E2=80=98herd status system-log=E2=80=99 now displays the socket and k=
ernel log file

  When using the =E2=80=98system-log=E2=80=99 service, =E2=80=98herd status=
 system-log=E2=80=99 now shows the
  socket(s) it is listening to and the kernel log file it is reading (if an=
y).

  ** =E2=80=98system-log=E2=80=99 starts even if #:kernel-log-file is inacc=
essible
     (<https://issues.guix.gnu.org/77578>)

  It used to be that =E2=80=98system-log=E2=80=99 would fail to start if th=
e file specified as
  #:kernel-log-file was inaccessible.  This was unwise because that would t=
hen
  typically prevent most system services from starting; also, on Linux, the
  default #:kernel-log-file is /proc/kmsg, and that is inaccessible within
  containers.

  Failure to open #:kernel-log-file is now logged but is non-fatal.

  ** =E2=80=98system-log=E2=80=99 service reads /dev/klog on the Hurd
     (<https://issues.guix.gnu.org/77634>)

  The =E2=80=98system-log=E2=80=99 service would unconditionally read kerne=
l messages from
  /proc/kmsg, which is Linux-specific and nonexistent on the Hurd.  It now =
reads
  from /dev/klog on the Hurd.

  ** Fix bug that would cause a system-log test failure on the Hurd
     (<https://issues.guix.gnu.org/77634>)

  A bug would cause =E2=80=98system-log=E2=80=99 to keep polling the file p=
assed as
  #:kernel-log-file after it has reached end-of-file; this would significan=
tly
  slow down =E2=80=98shepherd=E2=80=99 on the Hurd, leading =E2=80=98tests/=
service/system-log.sh=E2=80=99 to
  fail.  This bug had no impact in real use where #:kernel-log-file points =
to an
  =E2=80=9Cendless=E2=80=9D file such as /proc/kmsg.

  ** Fix possible deadlock with timers hitting #:max-duration
     (<https://codeberg.org/shepherd/shepherd/issues/2>)

  A deadlock could occur when using a timer with #:max-duration that would
  result in shepherd being unable to handle process creation and terminatio=
n.
  The bug could happen only when #:max-duration is specified for the timer,=
 the
  timer=E2=80=99s process exceeds #:max-duration, and the timer=E2=80=99s p=
rocess does not
  terminate within 5 seconds after being sent SIGTERM by shepherd.

  ** Adjust =E2=80=98tests/pid-file.sh=E2=80=99 for systems where unlink(2)=
 returns EROFS on /
     (<https://issues.guix.gnu.org/77548>)

  This test used to assume that removing a nonexistent file on the root file
  system would return ENOENT, which is not the case on Linux when it is mou=
nted
  read-only.  Adjust to cope with that.

  ** Translations

  This version is fully translated in French, German, Romanian, Serbian, Sl=
ovak,
  Swedish, and Ukrainian; it is partially translated in several other langu=
ages.
  Check out https://translationproject.org/domain/shepherd.html to help
  translate it into your language!


Please report bugs to [email protected].
Join [email protected] for discussions.

Many thanks to everyone who reported bugs or contributed patches!

Ludovic, on behalf of the Shepherd herd.

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQJBBAEBCgArFiEEPORkVYqE/cadtAz7CQsRmT2a67UFAmgxjvYNHGx1ZG9AZ251
Lm9yZwAKCRAJCxGZPZrrtb8oD/0fFtJnUGPfr4MyUjZ+nA7aSv4hayTuzbqz/kgx
t3ok2OQ6GmseaDubmv/2pxTaMGUZo1rE5xroQakyZQfWHFYAUxxHILFJmm/WNBtt
T+v5NYCCYRL7g0at/6SIBqWwumNjjOEAjHhzjL7NvenpjQreiDnbdJGJ3oebPKs8
HvT7wrJeEJcV3GFZp/0G2AwlWdAW9ZARxg9scDutAwx8xKhovA3OnC6ocj29UTOi
gJvwhsrO8fHY7U2ErAvgtGsemDmxSAcxB5JGuVa+0cOfoR+URw+lzHtxwPiqC8aw
lfuk5rGvDU7mzrFXtvKMi1G2FR4DFW9X4HkeweeeD0CYtDUVFSZVxePc83392YJf
TNANQNF+0Wwg7VYKBrxH7tqOvA4mAfKBZcXJyWpVL1F9axYfrYFJmO1qXHOEw7o5
pZhQXeOLLEStmQ778skYKYxDOfTA92tLaGjOCfSZywiX+5cjjlBMp9PFyXf5FDoW
qzx7kuBRzSZqr2Fa6VjmEfCB0C/7JqVTGg4EWuomw50S0484OggYu26WiM8HOAu/
VYMb0ck4bNH4vJzLwqzYHHXNpG6fC9XWWid4zOtVtWW08RmK3/6pfE4BPhnbuwXR
33y6Bgcc+YuGtlagPaCpDnmAfCZY4zEh44jBLwLdi8cRVKkj6fyWOxiXvgD/Xfmv
/s5A1A==
=N2VI
-----END PGP SIGNATURE-----
--=-=-=--