Subject: bug#17946: closed (Re: bug#17946: Try LOGNAME in addition to USER)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 05 Jul 2014 13:13:02 +0000

Your bug report

#17946: Try LOGNAME in addition to USER

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
17946: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17946
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#17946: Try LOGNAME in addition to USER
From: [email-masked] (Ludovic Courtès)
To: Taylan Ulrich Bayirli/Kammer <[email-masked]>
Cc: [email-masked]
Date: Sat, 05 Jul 2014 15:12:48 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Taylan Ulrich Bayirli/Kammer <[email-masked]> skribis:

> Cron jobs may set the LOGNAME environment variable but no USER,
> e.g. under Debian 7 (wheezy).  In that case 'guix package' fails to
> use $localstatedir/guix/profiles/per-user/$user.  From a quick grep I
> couldn't find more places in Guix where USER is used, so here's a
> patch that just does it straightforwardly in two places in
> scripts/package.scm, but perhaps a more generic solution would be good
> for the future.

Good catch.  I agree we’ll need to factorize that eventually.

> From 902267cf99aacaea994cc95b77551f0d2bd35836 Mon Sep 17 00:00:00 2001
> From: Taylan Ulrich B <[email-masked]>
> Date: Sat, 5 Jul 2014 15:28:50 +0300
> Subject: [PATCH] Try LOGNAME in addition to USER.
>
> Notoriously, cron jobs may set LOGNAME only and not USER.  See
> e.g. crontab(5) under Debian 7 (wheezy).
>
> * guix/scripts/package.scm (%profile-directory)
> (guix-package): Also try LOGNAME if USER is unset.

Pushed after tweaking the commit log.

Thanks!

Ludo’.

Subject: Try LOGNAME in addition to USER
From: Taylan Ulrich Bayirli/Kammer <[email-masked]>
To: [email-masked]
Date: Sat, 05 Jul 2014 15:36:44 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

Cron jobs may set the LOGNAME environment variable but no USER,
e.g. under Debian 7 (wheezy).  In that case 'guix package' fails to
use $localstatedir/guix/profiles/per-user/$user.  From a quick grep I
couldn't find more places in Guix where USER is used, so here's a
patch that just does it straightforwardly in two places in
scripts/package.scm, but perhaps a more generic solution would be good
for the future.

===File
/home/tub/media/src/guix/0001-Try-LOGNAME-in-addition-to-USER.patch===
>From 902267cf99aacaea994cc95b77551f0d2bd35836 Mon Sep 17 00:00:00 2001
From: Taylan Ulrich B <[email-masked]>
Date: Sat, 5 Jul 2014 15:28:50 +0300
Subject: [PATCH] Try LOGNAME in addition to USER.

Notoriously, cron jobs may set LOGNAME only and not USER.  See
e.g. crontab(5) under Debian 7 (wheezy).

* guix/scripts/package.scm (%profile-directory)
(guix-package): Also try LOGNAME if USER is unset.
---
 guix/scripts/package.scm | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index f930b00..2e626f3 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -59,7 +59,8 @@
 
 (define %profile-directory
   (string-append %state-directory "/profiles/"
-                 (or (and=> (getenv "USER")
+                 (or (and=> (or (getenv "USER")
+                                (getenv "LOGNAME"))
                             (cut string-append "per-user/" <>))
                      "default")))
 
@@ -797,7 +798,9 @@ more information.~%"))
                 %profile-directory)
         (format (current-error-port)
                 (_ "Please change the owner of `~a' to user ~s.~%")
-                %profile-directory (or (getenv "USER") (getuid)))
+                %profile-directory (or (getenv "USER")
+                                       (getenv "LOGNAME")
+                                       (getuid)))
         (rtfm))))
 
   (define (process-actions opts)
-- 
1.8.4

============================================================

Taylan