Subject: bug#46109: Failing tests (guix-pack, lint)

From: taxuswc <[email-masked]>
Date: Tue, 26 Jan 2021 13:03:13 +0000

Hello,

26.01.2021 10:55, zimoun wrote:
> On Mon, 25 Jan 2021 at 22:10, taxuswc--- via Bug reports for GNU Guix <[email-masked]> wrote:
> 
>> I am building GNU Guix from the source on a foreign distro. Several
>> tests fail:
> 
> Which commit are you building using which commit version?

Оfficial source tarball from https://guix.gnu.org/en/download/, probably 
v1.2.0 (d5b556eef57321d0be89fdb07db447b2db2718ed)

> Did you do
> 
>     guix environment guix
>     ./bootstrap
>     ./configure --localstatedir=/var/
>     make
>     make check
> 
> ?  Or something else?
> Or are you trying to bootstrap Guix on foreign distro?

Basically the same steps only without --localstatedir (it seems to 
default to /var) and guix environment stuff, as guix is not installed in 
the system yet.

I have installed the prerequisites manually or from a foreign distro 
package manager, so to my mind it probably does not count as 
``bootstrapping''.

>> FAIL: tests/lint
>> ================
> 
> [...]
> 
> 
>> test-name: archival: missing content
>> location: /home/taxus/downloads/distro/guix/guix-1.2.0/tests/lint.scm:921
>> source:
>> + (test-assert
>> +   "archival: missing content"
>> +   (let* ((origin
>> +            (origin
>> +              (method url-fetch)
>> +              (uri "http://example.org/foo.tgz")
>> +              (sha256 (make-bytevector 32))))
>> +          (warnings
>> +            (with-http-server
>> +              '((404 "Not archived."))
>> +              (parameterize
>> +                ((%swh-base-url (%local-url)))
>> +                (check-archival
>> +                  (dummy-package "x" (source origin)))))))
>> +     (warning-contains? "not archived" warnings)))
>> actual-value: #f
>> actual-error:
>> + (keyword-argument-error
>> +   #<procedure http-request (uri #:key body port method version keep-alive? headers decode-body? streaming? request)>
>> +   "Unrecognized keyword"
>> +   ()
>> +   (#:verify-certificate?))
>> result: FAIL
> 
> Hum?!

I got guile from the foreign distro package manager, so it was an 
obvious suspect, but upon inspection [1] it is just vanilla guile 2.2.6 
without any distro-specific patches.

[1] 
https://gitea.artixlinux.org/artixlinux/packages/src/branch/master/guile/repos/extra-x86_64/PKGBUILD

Could you please clarify which additional info can I provide to identify 
the root of the issue? Maybe, should I try building with guile 3.x?

> [...]
> 
>> FAIL: tests/guix-pack
>> =====================
>>
>> + guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)'
>> + guix pack --version
>> guix pack (GNU Guix) 1.2.0
>> Copyright (C) 2020 the Guix authors
>> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
>> This is free software: you are free to change and redistribute it.
>> There is NO WARRANTY, to the extent permitted by law.
> 
> [...]
> 
>> + tar -xf /home/taxus/downloads/distro/guix/guix-1.2.0/test-tmp/store/az698s2v2q2qnc1ljrg4ypnjpb246x4c-tarball-pack.tar.xz
>> tar: ./opt/gnu/bin: Cannot hard link to ‘./opt/gnu/bin’: No such file or directory
>> tar: Exiting with failure status due to previous errors
>> + chmod -Rf +w /tmp/tmp.QVmTayA5IX
>> + rm -rf /tmp/tmp.QVmTayA5IX
>> FAIL tests/guix-pack.sh (exit status: 2)

Well, the problem is not with tar as I previously assumed.
	
	guix pack --bootstrap -S /opt/gnu/bin=bin guile-bootstrap

creates the following tarball
	
	$ tar -tvf "$the_pack" | grep '/opt/'

	drwxr-xr-x root/root         0 1970-01-01 03:00 ./opt/gnu/
	lrwxrwxrwx root/root         0 1970-01-01 03:00 ./opt/gnu/bin -> 
../../home/taxus/downloads/distro/guix/guix-1.2.0/test-tmp/store/w67kdqf2ghkkxp6spdyvfvvhiqqk3g76-profile/bin
	hrwxrwxrwx root/root         0 1970-01-01 03:00 ./opt/gnu/bin link to 
./opt/gnu/bin

I can hardly understand how the last line can be correct in any setup.
An attempt to unpack the tarball quite expectedly results in

	tar: ./opt/gnu/bin: Cannot hard link to './opt/gnu/bin': No such file 
or directory

as the hardlink creation erases the file it wants to reference in the 
first place..

>>
>> Backtrace:
>> In ice-9/boot-9.scm:
>> [...]
>> ERROR: In procedure scm-error:
>> no code for module (ssh key)
> 
> It seems a misconfiguration of your environment.

It is likely the case, however, I would like to setup offloading once 
guix is working, so for now I have commented out the test in question to 
get any sort of report.

Thanks for the reply!

All the best,
	~taxuswc