GNU bug report logs - #62955
Guix Home Breaks Some Foreign Distros

Previous Next

Package: guix;

Reported by: Zacchaeus Scheffer <zaccysc <at> gmail.com>

Date: Wed, 19 Apr 2023 20:51:01 UTC

Severity: normal

To reply to this bug, email your comments to 62955 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#62955; Package guix. (Wed, 19 Apr 2023 20:51:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Zacchaeus Scheffer <zaccysc <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Wed, 19 Apr 2023 20:51:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Zacchaeus Scheffer <zaccysc <at> gmail.com>
To: bug-guix <at> gnu.org
Subject: Guix Home Breaks Some Foreign Distros
Date: Wed, 19 Apr 2023 13:50:17 -0700
Hi all!

$HOME/PROFILE/setup-environment contains the following lines:

case $XDG_CONFIG_DIRS in
  *$HOME_ENVIRONMENT/profile/etc/xdg*) ;;
  *) export XDG_CONFIG_DIRS=$HOME_ENVIRONMENT/profile/etc/xdg:$XDG_CONFIG_DIRS ;;
esac

There are two bugs in this code.  Both bugs revolve around what happens
if XDG_CONFIG_DIRS is unset, as is the case in some foreign distros.

The first problem is if, XDG_CONFIG_DIRS is unset, and
$HOME_ENVIRONMENT/profile/etc/xdg does not exist, then the conditional
resolves to "is the empty string in the empty string", so
XDG_CONFIG_DIRS is prepended with $HOME_ENVIRONMENT/profile/etc/xdg,
despite it not existing.  I'm not sure if incuding a nonexistant path in
XDG_CONFIG_DIRS should cause problems, but this scenario is not
mentioned in the XDG specifications[1], so some programs are bound to
crash because of this.

The second problem (more important) relates to how XDG_CONFIG_DIRS is
interpreted if empty vs set to a value.  As per the xdg
specifications[1], if XDG_CONFIG_DIRS is unset, then a value of /etc/xdg
should be used.  When an empty XDG_CONFIG_DIRS is set by guix home,
programs find a non-empty value and ignore /etc/xdg.

The above problem means that when I do a guix home reconfigure on my
Librem 5 running PureOS, I get a black screen as Phosh fails to start as
it needs files in /etc/xdg.  I can fix it by adding:

XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS:/etc/xdg"

to my .zlogin.  A similar issue can be seen with the lines regarding
XDG_DATA_DIRS in $HOME/PROFILE/setup-environment.  I think a good step
to resovling this issue is to set empty variables to their default value
first.  Maybe something like the following in gnu/home/services.scm:267

...
[ -f $PROFILE_FILE ] && . $PROFILE_FILE
[ -z "$XDG_DATA_DIRS"] && XDG_DATA_DIRS=/usr/local/share/:/usr/share/
[ -z "$XDG_CONFIG_DIRS"] && XDG_CONFIG_DIRS=/etc/xdg
case $XDG_DATA_DIRS in
...

This addresses the second problem, but not the first.  Someone may find
a more elegant way to deal with both issues.

-Zacchae

[1] https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html




Information forwarded to bug-guix <at> gnu.org:
bug#62955; Package guix. (Wed, 19 Apr 2023 21:06:01 GMT) Full text and rfc822 format available.

Message #8 received at 62955 <at> debbugs.gnu.org (full text, mbox):

From: Zacchaeus Scheffer <zaccysc <at> gmail.com>
To: 62955 <at> debbugs.gnu.org
Date: Wed, 19 Apr 2023 14:05:44 -0700
And just like that, i find there is already a discussion of some of this
in 56050, though the fact that non-existant paths can be added by guix
home to those variables is seems to be missing from that discussion.
Could someone merge the threads?  (I assume I can't do that.)

-Zacchae




This bug report was last modified 1 year and 1 day ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.