Subject: bug#77634: [shepherd] Test failures on GNU/Hurd

From: [email-masked]
Date: Sun, 20 Apr 2025 13:34:28 +0200 (CEST)

Hello,

Apr 19, 2025, 20:42 by [email-masked]:

> Hi again,
>
> [email-masked] writes:
>
>> Some minor other things:
>> -  Currently the NULL byte from the sender is added into the log
>> message, might be worth filtering out
>> - "herd status syslogd" does not show the endpoints and
>> kernel-log-file the syslog is reading from
>> - the shepherd package from the shepherd channel in
>> 'set-fibers-directory sets fibers ccache dir also to the fibers source
>> dir
>> - I am unable to cross compile shepehrd from git with guix because of help2man
>> - the guix shepherd-syslog service currently does not expose setting
>> the endpoints and kernel-log-file (currently on my childhurd this
>> would be /dev/klog instead of /dev/kmsg)
>>
>
> All good points!  Most of these are now fixed on the Shepherd side:
>
> 48e53a4 guix: Record the right Fibers .go file directory.
> 98878a7 system-log: Serialize information about sockets and the kernel log file.
> be57f65 system-log: Close input file on end-of-file.
> 21bd4ec system-log: Print “localhost” for messages received over AF_UNIX sockets.
> 1ad90aa system-log: Read kernel messages from /dev/klog on the Hurd.
>

Great, thanks.

The last thing that still needs fixing is the message-destination procedure in the system-log.sh test. Currently It sends all messages to the $syslog_remote_file if the message has a sender, but arguably the (null) AF_UNIX sockets are not remote.

After I changed that I was able to finally build shepherd with all non skipped tests passing.

I then tried the shepherd syslogd on the childhurd but some things were not quite right:
- the /dev/klog messages are being logged but were missing the %kernel-prefix, i dont think this is a  problem with shepherd.
- I saw no syslog messages in /var/log/messages, i.e. from sshd or a user shepherd logging to syslog. It just seems to stop logging to the main log file entirely after finishing with /dev/klog.
Any ideas?

> Regarding cross-compilation, here’s a protip:
>
> guix build -L $PWD/.guix/modules [email-masked] \
> --target=i586-pc-gnu
>
> It works because it first builds the tarball, which includes
> pre-generated man pages, and then uses it as the source of the Shepherd
> being cross-compiled.
>
This even works in the childhurd operating system record and I can just use that package instead of the manual "make dist" and  source override I did before.

> Thanks a lot for the detailed bug reports and suggestions; it’s much
> appreciated!
>

Thank you for making shepherd very approachable. I had no issues understanding how the syslog service is supposed to work and hunt down the bug.

> Ludo’.