(address . bug-guix@gnu.org)
Hi Guix!
I've been getting errors while running `guix pull' on an aarch64 system,
during the final guix-package-cache step:
Toggle snippet (43 lines)
(repl-version 0 1 1)
Generating package cache for '/gnu/store/m8in1imi93snq711d7568dj9hlrx4diz-profile'...
Backtrace:
In ice-9/boot-9.scm:
1747:15 19 (with-exception-handler #<procedure af1570 at ice-9/bo?> ?)
1752:10 18 (with-exception-handler _ _ #:unwind? _ # _)
In guix/repl.scm:
99:21 17 (_)
In unknown file:
16 (_ #<procedure 82fd00 at guix/repl.scm:100:25 ()> #<pr?> ?)
15 (primitive-load "/gnu/store/3x6g541ixbmdjav4ky6dp1ryj4l?")
In ice-9/boot-9.scm:
1752:10 14 (with-exception-handler _ _ #:unwind? _ # _)
In gnu/packages.scm:
438:11 13 (generate-package-cache _)
In srfi/srfi-1.scm:
460:18 12 (fold #<procedure expand-cache expr> _ _)
In gnu/packages.scm:
390:9 11 (expand-cache . _)
In guix/packages.scm:
1317:17 10 (supported-package? #<package linux-libre@4.14.300 gnu?> ?)
In guix/memoization.scm:
101:0 9 (_ #<hash-table 31605e0 13974/28099> #<package linux-l?> ?)
In guix/packages.scm:
1295:37 8 (_)
1555:16 7 (package->bag _ _ _ #:graft? _)
1660:43 6 (thunk)
In gnu/packages/linux.scm:
986:37 5 (arguments #<package linux-libre@4.14.300 gnu/packages/?>)
In guix/gexp.scm:
460:52 4 (%local-file #f #<promise #<procedure 4df2660 at gnu/p?> ?)
In unknown file:
3 (basename #f #<undefined>)
In ice-9/boot-9.scm:
1685:16 2 (raise-exception _ #:continuable? _)
1780:13 1 (_ #<&compound-exception components: (#<&assertion-fail?>)
In unknown file:
0 (backtrace #<undefined>)
(exception wrong-type-arg (value "scm_to_utf8_stringn") (value "Wrong type argument in position ~A (expecting ~A): ~S") (value (1 "string" #f)) (value (#f)))
I was able to decipher the backtrace to *maybe* put together a fix, but
I'm unsure why the problem started. My best guess is that it started
with commit dfc6957a5af7d179d4618eb19d4f555c519bc6f2, even though I
can't find where the issue actually is, it looks fine to me!
What seems to happen is that the `kernel-config' function now receive an
`arch' argument for an architecture that isn't actually supported by
that kernel, as is the case for linux-libre@4.14.300. And, correctly,
the function should not expect to ever get such arch value to begin
with, so we get a `(local-file #f)'.
Toggle snippet (9 lines)
(define* (kernel-config arch #:key variant)
"Return a file-like object of the Linux-Libre build configuration file for
ARCH and optionally VARIANT, or #f if there is no such configuration."
(let* ((name (string-append (if variant (string-append variant "-") "")
(if (string=? "i386" arch) "i686" arch) ".conf"))
(file (string-append "linux-libre/" name)))
(local-file (search-auxiliary-file file))))
I think it's fair for that function expect the arch to be valid (why
would you ask the config for an unsupported arch?).
I think it should be possible to fix this by checking the arch is
supported at the call site:
-----BEGIN PGP SIGNATURE-----
iQFMBAEBCgA2FiEEctU9gYy29KFyWDdMqPyeRH9PfVQFAmOSd6MYHHBpZXJyZS5s
YW5nbG9pc0BnbXguY29tAAoJEKj8nkR/T31UvkAIAIfIh3KKv00mDsQcuElgIj3h
eIWMDO616u00pJeRcC9+C3rD6KPfeURzCkprcIqh9QEoiJDJhO5D2KX/beriz0ai
I/Bqwq3r+zO7Dq6lWOehW/cL4afcqwuVax0XjusPgfLWGmzynY+mQA4FtTeTBfRi
ekGEdY3GNsExqE/HtC5QW5Ffms8Lyt2fjRb+r+w6JHiJ1G3WT2lUiBqDezAXkTEm
+x/m/tBLkRil45+Xy2oROwpjaVi6BZnceKF6SKPr8MhzMUuH+ronD8oMgFTQvZ0W
uSUdmBnVCdw5AiEiMD562Rk+kS3DZN6mTDL6jayw8sXP24+zyT7DkyNh4jhrBg8=
=nB9W
-----END PGP SIGNATURE-----
From 77829140f14928e30cbe4e53c625be3ba2f5895f Mon Sep 17 00:00:00 2001
From: Pierre Langlois <pierre.langlois@gmx.com>
Date: Thu, 8 Dec 2022 23:41:40 +0000
Subject: [PATCH] gnu: make-linux-libre*: Do not get config for unsupported
systems.
* gnu/packages/linux.scm (make-linux-libre*)[phases] <configure>: Check
arch is in supported-systems before calling configuration-file.
---
gnu/packages/linux.scm | 1 +
1 file changed, 1 insertion(+)
Toggle diff (14 lines)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 5ae6366593..87fc9fe94c 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -983,6 +983,7 @@ (define* (make-linux-libre* version gnu-revision source supported-systems
(or (%current-target-system)
(%current-system))))))
(and configuration-file arch
+ (member arch supported-systems)
(configuration-file
arch
#:variant (version-major+minor version))))
--
2.38.1