Subject: bug#37931: closed (Re: bug#37931: Cannot guix refresh -ru util-linux to get updated lsblk)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 08 Jan 2020 19:15:01 +0000

Your bug report

#37931: Cannot guix refresh -ru util-linux to get updated lsblk

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].

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

Subject: Re: bug#37931: Cannot guix refresh -ru util-linux to get updated lsblk
From: Marius Bakke <[email-masked]>
To: Bengt Richter <[email-masked]>
Cc: [email-masked]
Date: Wed, 08 Jan 2020 20:14:50 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Bengt Richter <[email-masked]> writes:

> Hi Marius,
>
> On +2019-11-03 18:28:40 +0100, Marius Bakke wrote:
>> Bengt Richter <[email-masked]> writes:
>> 
>> > On +2019-10-28 23:29:16 +0100, Marius Bakke wrote:
>> >> The `lsblk` program requires root privileges in order to detect file
>> >> systems and UUIDs.  I'm guessing your distribution makes it setuid root?
>> >>
>> >
>> > It doesn't  look like it to me (the following snip is from TTY4, where I enabled guix paths and environment,
>> > so I can see ~/.guix-profile and /usr stuff at the same time):
>> 
>> [...]
>> 
>> 
>> > $ which -a lsblk|xargs readlink -f|xargs stat
>> >   File: /gnu/store/xymkwf57x988q8cny2is1dgzrbr9xdfi-util-linux-2.34/bin/lsblk
>> >   Size: 135560    	Blocks: 272        IO Block: 4096   regular file
>> > Device: 10304h/66308d	Inode: 1186253     Links: 2
>> > Access: (0555/-r-xr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
>> > Access: 2019-11-01 02:38:11.782574923 -0700
>> > Modify: 1969-12-31 16:00:01.000000000 -0800
>> > Change: 2019-10-08 18:18:48.226579757 -0700
>> >  Birth: -
>> >   File: /usr/bin/lsblk
>> >   Size: 124992    	Blocks: 248        IO Block: 4096   regular file
>> > Device: 10304h/66308d	Inode: 264652      Links: 1
>> > Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
>> > Access: 2019-11-01 02:38:55.354524750 -0700
>> > Modify: 2019-06-27 03:04:01.000000000 -0700
>> > Change: 2019-07-06 00:59:13.620416635 -0700
>> >  Birth: -
>> > $ 
>> > ┌───────────────────────────────────────────────────────────────────┐
>> > │ I see Access: is 0555 vs 0755, so doubt if that should be changed │
>> > └───────────────────────────────────────────────────────────────────┘
>> 
>> Indeed, there are no setuid bits there.
>> 
>> I had a look at the lsblkd source code, and found that it has an
>> optional dependency on udev:
>> 
>> https://github.com/karelzak/util-linux/blob/ccafadb7c58865f73d209fcfc74483be96cdf64d/misc-utils/lsblk-properties.c
>> 
>> I tried building util-linux with udev support, and got the same output
>> you expected without needing root privileges:
>>
>
> Sounds great ;-)
>
>> (define-public util-linux/udev
>>   (package/inherit
>>    util-linux
>>    (name "util-linux-with-udev")
>>    (inputs
>>     `(("udev" ,eudev)
>>       ,@(package-inputs util-linux)))))
>> 
>> Now, eudev already depends on util-linux, so adding udev support to the
>> regular 'util-linux' package would introduce a circular dependency.
>> 
>> I'm not sure what the best approach here is.  We could add a
>> 'util-linux-minimal' for use in package inputs, and/or add a
>> udev-enabled variant to %base-packages.
>> 
>> Thoughts?

This was finally committed in 71e0f1e9adbce4a6476a70bddabf13f6d7af2d40
and 01bb039e7b408893009d15f56cfcbdc8af70a4af.

>
> I'm a guix newbie :)
>
> I don't yet understand the internal dependency machinery of guix,
> so I'm wondering about the exact nature of the circularity.
>
> Is it really a kind of (let((... that needs to be a let*((...
> at some level? And which level of dependency are we talking about?

The circular dependency is straightforward: eudev *requires* util-linux
as part of its build process.  Thus, eudev has util-linux as an input.
That version of util-linux can not depend on eudev, because we can not
build eudev without a working util-linux package.

Wrt the rest of the message, I share your sentiment, and think we will
get there.  'guix build --with-git-url' is pretty close already.  :-)

Subject: Cannot guix refresh -ru util-linux to get updated lsblk
From: Bengt Richter <[email-masked]>
To: New-Bug <[email-masked]>
Date: Fri, 25 Oct 2019 18:22:48 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi Guix,

IpPulled and updated to guix describe:
---------------------
Generation 19	Oct 24 2019 22:37:20	(current)
  guix 6caa739
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: 6caa7392d8e51f5ef26e9efaa867ca5f9e1cac91
---------------------

but lsblk -f still looks like this:
---------------------
NAME        FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda                                          
├─sda1                                       
├─sda2                                       
├─sda3                                       
├─sda4                                       
├─sda5                                       
├─sda6                                       
└─sda7                                       
sdb                                          
└─sdb1                                       
nvme0n1                                      
├─nvme0n1p1                      510M    50% /boot
├─nvme0n1p2                                  
├─nvme0n1p3                                  [SWAP]
└─nvme0n1p4                     12.6G    71% /
---------------------
where it should look like: (got this using foreign /usr/bin/lsblk -f)
---------------------
NAME        FSTYPE LABEL           UUID                                 FSAVAIL FSUSE% MOUNTPOINT
sda                                                                                    
├─sda1      vfat   Phanto1EFI      98AB-229C                                           
├─sda2      ext4                   d8ce4206-fc92-4248-8164-3fe5397c28fb                
├─sda3      swap                   59e8ffd8-a2df-4021-ba59-c8dda6215f83                
├─sda4      ext4   Phanto4ArchGx   617f2280-d34a-4dea-ac50-a1222dd18c26                
├─sda5      ext4   Phanto5ArchGxOn 71e61e41-81d0-48ac-b50f-a00668723c32                
├─sda6      ext4   Phanto6Arch     e5760f87-71bc-4318-92f1-d108e5c9e332                
└─sda7      ext4   Phanto7GuixSD   a60eac5f-2306-49c5-8c87-7cab28ff6d37                
sdb                                                                                    
└─sdb1      ext4   Cruz1GxArchivA  18fb1d34-47b0-4d62-baea-43681ec2e5a4                
nvme0n1                                                                                
├─nvme0n1p1 vfat   PhantoV1EFI     6E3C-D410                               510M    50% /boot
├─nvme0n1p2 ext4   PhantoNv2Empty  76bc8f68-126c-4a6c-8b77-afc89bd2726a                
├─nvme0n1p3 swap                   24151091-f47a-46e2-a6cb-e5219eddae7c                [SWAP]
└─nvme0n1p4 ext4   PhantoNv4ArchGx 12eec2bf-bc81-48a8-b444-26913c078302   12.6G    71% /
---------------------

So I tried:

[17:59 ~/bs]$ guix refresh -r util-linux
guix/build-system/gnu.scm:143:8: findutils would be upgraded from 4.6.0 to 4.7.0
gnu/packages/commencement.scm:2183:2: binutils would be upgraded from 2.32 to 2.33.1
gnu/packages/commencement.scm:2244:2: gcc would be upgraded from 7.4.0 to 9.2.0
gnu/packages/commencement.scm:2142:2: glibc would be upgraded from 2.29 to 2.30
[18:01 ~/bs]$ guix refresh -ru util-linux
guix/build-system/gnu.scm:143:8: error: cannot download for this method: #<procedure 7f277de49100 at gnu/packages/bootstrap.scm:155:4 (url hash-algo hash #:opti
onal name #:key system)>
[18:02 ~/bs]$ lsblk --version
lsblk from util-linux 2.34
[18:04 ~/bs]$ guix package -I util-linux
util-linux      2.34    out     /gnu/store/xymkwf57x988q8cny2is1dgzrbr9xdfi-util-linux-2.34
[18:04 ~/bs]$ # was -ru combination a problem?
[18:05 ~/bs]$ guix refresh -u util-linux
[18:06 ~/bs]$ guix refresh -r util-linux
guix/build-system/gnu.scm:143:8: findutils would be upgraded from 4.6.0 to 4.7.0
gnu/packages/commencement.scm:2183:2: binutils would be upgraded from 2.32 to 2.33.1
gnu/packages/commencement.scm:2244:2: gcc would be upgraded from 7.4.0 to 9.2.0
gnu/packages/commencement.scm:2142:2: glibc would be upgraded from 2.29 to 2.30
[18:06 ~/bs]$ guix refresh -ur util-linux
guix/build-system/gnu.scm:143:8: error: cannot download for this method: #<procedure 7fb30f394e80 at gnu/packages/bootstrap.scm:155:4 (url hash-algo hash #:opti
onal name #:key system)>
[18:06 ~/bs]$ su -c 'setterm -file refresh-errors.txt -dump 1'

TIA for any help :)
--
Regards,
Bengt Richter