Subject: [bug#39214] Updates to etc/guix-install.sh

From: Prafulla Giri <[email-masked]>
Date: Tue, 21 Jan 2020 12:56:34 +0545

Esteemed Maintainer,

Attached are two patches as a follow-up to
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=39049 that was just recently
applied to the main source tree.

Patch 1 exports the INFOPATH and makes the up-to-date guix info manual
available to the user via both /usr/bin/info and $GUIX_PROFILE/bin/info
(previously `info guix` would either show the out-of-date info file
installed during installation or throw a "No menu item 'guix' in node
'(dir)Top" error if the $GUIX_PROFILE/bin/info was invoked, or if the info
pages weren't installed during installation).

Patch 2 adds a defensive test against (highly unlikely) cases where
/etc/profile.d might not exist, and creates it. The function does not quit
on failure because it is possible that /etc/profile is still configured to
read /etc/profile.d/*.sh files. Even if it is not, guix.sh will merely sit
in /etc/profile.d and cause no changes to the user's environment.

These changes caused no regressions in my local machine.

I hope this helps more foreign distro users in their journey with Guix.
From 0f98891feb2cc3cb4c529c65d789cdfc955cfc41 Mon Sep 17 00:00:00 2001
From: Prafulla Giri <[email-masked]>
Date: Tue, 21 Jan 2020 12:25:24 +0545
Subject: [PATCH 1/2] guix-install.sh: Export INFOPATH to contain updated guix
 info-pages

* etc/guix-install.sh (sys_create_init_profile): Export INFOPATH to include
the updated info-pages from ~/.config/guix/current/share/info.  This also makes
sure that both /usr/bin/info and $GUIX_PROFILE/bin/info can read guix info pages
without throwing "no menu item 'guix' in node dir(Top)" error.
---
 etc/guix-install.sh | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/etc/guix-install.sh b/etc/guix-install.sh
index b57d71981f..ff97c78549 100755
--- a/etc/guix-install.sh
+++ b/etc/guix-install.sh
@@ -398,7 +398,12 @@ sys_create_init_profile()
     cat <<"EOF" > /etc/profile.d/guix.sh
 # _GUIX_PROFILE: `guix pull` profile
 _GUIX_PROFILE="$HOME/.config/guix/current"
-[ -L $_GUIX_PROFILE ] && export PATH="$_GUIX_PROFILE/bin${PATH:+:}$PATH"
+if [ -L $_GUIX_PROFILE ]; then
+  export PATH="$_GUIX_PROFILE/bin${PATH:+:}$PATH"
+  # Export INFOPATH so that the updated info pages can be found
+  # and read by both /usr/bin/info and/or $GUIX_PROFILE/bin/info
+  export INFOPATH="$_GUIX_PROFILE/share/info${INFOPATH:+:}$INFOPATH"
+fi
 
 # GUIX_PROFILE: User's default profile
 GUIX_PROFILE="$HOME/.guix-profile"
-- 
2.25.0

From dcd2180c36dc0319ebc3ab821879015e30bba94e Mon Sep 17 00:00:00 2001
From: Prafulla Giri <[email-masked]>
Date: Tue, 21 Jan 2020 12:34:10 +0545
Subject: [PATCH 2/2] guix-install.sh: Create /etc/profile.d if it does not
 exist

* etc/guix-install.sh (sys_create_init_profile): Add code to create
/etc/profile.d if it somehow does not exist; the function still carries
on because it is possible that /etc/profile is still configured to read
the *.sh files from /etc/profile.d, if they exist.
---
 etc/guix-install.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/etc/guix-install.sh b/etc/guix-install.sh
index ff97c78549..0e677c2b90 100755
--- a/etc/guix-install.sh
+++ b/etc/guix-install.sh
@@ -395,6 +395,7 @@ sys_authorize_build_farms()
 
 sys_create_init_profile()
 { # Create /etc/profile.d/guix.sh for better desktop integration
+    [ -d "/etc/profile.d" ] || mkdir /etc/profile.d # Just in case
     cat <<"EOF" > /etc/profile.d/guix.sh
 # _GUIX_PROFILE: `guix pull` profile
 _GUIX_PROFILE="$HOME/.config/guix/current"
-- 
2.25.0