GNU bug report logs -
#62955
Guix Home Breaks Some Foreign Distros
Previous Next
To reply to this bug, email your comments to 62955 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
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):
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):
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 305 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.