Subject: bug#41019: util-linux runstatedir is not actually a state directory

From: Danny Milosavljevic <[email-masked]>
Date: Sat, 2 May 2020 11:55:25 +0200

Hi,

util-linux tries to use a "uuidd" daemon to generate uuids.  It tries to
communicate with it via socket in $runstatedir/var/run/uuidd/ .

Unfortunately, we do not set runstatedir which means that we'll uselessly
refer to a socket inside util-linux's derivation output directory that never
will be there.

Better would be to refer to /var/run directly, or to remove that functionality
from our version of util-linux.

Git checkout:
  repository: /home/dannym/src/guix-raghav/guix
  branch: master
  commit: 807986a55fc2849d6986efb79f9a015cf4132e09

I stumbled upon that while trying to get F2FS's fsck to work (bug 41015).
We try to build a static version of f2fs-tools (f2fs-tools-static in
guix master), but it retains a reference from mkfs to the non-static
util-linux because of the problem above.

Details of that part of util-linux:

./libuuid/src/uuidd.h: * Definitions used by the uuidd daemon
./libuuid/src/uuidd.h:#define UUIDD_DIR         _PATH_RUNSTATEDIR "/uuidd"
./libuuid/src/uuidd.h:#define UUIDD_PIDFILE_PATH        UUIDD_DIR "/uuidd.pid"
./libuuid/src/uuidd.h:#define UUIDD_PATH                "/usr/sbin/uuidd"
./libuuid/src/gen_uuid.c:#include "uuidd.h"
./libuuid/src/gen_uuid.c: * Try using the uuidd daemon to generate the UUID
./libuuid/src/gen_uuid.c: * Tries to guarantee uniqueness of the generated UUIDs
 by obtaining them from the uuidd daemon,
./libuuid/src/gen_uuid.c: * or, if uuidd is not usable, by using the global cloc
k state counter (see get_clock()).
UUIDD_SOCKET_PATH 
./libuuid/src/uuidd.h:#define UUIDD_SOCKET_PATH UUIDD_DIR "/request"
./libuuid/src/uuidd.h:#define UUIDD_DIR         _PATH_RUNSTATEDIR "/uuidd"

/gnu/store/xymkwf57x988q8cny2is1dgzrbr9xdfi-util-linux-2.34/var/run/uuidd