Subject: guix pack -f squashfs silently ignores symlinks

From: Konrad Hinsen <[email-masked]>
Date: Wed, 31 Jan 2024 08:48:17 +0100

Let's make a basic Singularity file system containing certificates at
the place many programs expect them to be, i.e. /etc/ssl:

$ guix pack -S /etc/ssl=etc/ssl --format=squashfs bash nss-certs
/gnu/store/mxyc56nsrcgcclvm5qsz5c9fkqwdswpw-bash-nss-certs-squashfs-pack.gz.squashfs

There is no error message concerning the symlink, but it's not recorded
either:

$ guix shell squashfs-tools -- unsquashfs -l /gnu/store/mxyc56nsrcgcclvm5qsz5c9fkqwdswpw-bash-nss-certs-squashfs-pack.gz.squashfs | grep -v /gnu/store
squashfs-root
squashfs-root/.empty
squashfs-root/.empty_1
squashfs-root/.singularity.d
squashfs-root/.singularity.d/actions
squashfs-root/.singularity.d/env
squashfs-root/.singularity.d/env/90-environment.sh
squashfs-root/bin
squashfs-root/dev
squashfs-root/gnu
squashfs-root/gnu/.empty
squashfs-root/home
squashfs-root/proc
squashfs-root/sys

What *does* work is:

$ guix pack -S /etc=etc --format=squashfs bash nss-certs

which makes me suspect that linking /etc/ssl fails because there is no
/etc in the file system, but I don't much about squashfs, so maybe I am
wrong.

Cheers,
  Konrad