Subject: bug#60786: cross-kernel-headers can produce broken packages

From: Maxim Cournoyer <[email-masked]>
Date: Fri, 13 Jan 2023 17:12:11 -0500

Hello,

Maxim Cournoyer <[email-masked]> writes:

> Hello,
>
> This issue was triggered by having make-uboot-package uses #:target [0],
> but it already exists on current master.  I've spent some time narrowing
> down the issue, and it is caused by the package returned by
> cross-kernel-headers in (gnu packages cross-base) being produced with a
> bogus arguments field, or at least one that can't be access via the
> package-arguments accessor:
>
> (use-modules (guix packages)
>              (gnu packages cross-base))
>
> (define linux-libre-headers-cross-mips64el-linux-gnuabi64
>   (cross-kernel-headers "mips64el-linux-gnuabi64"))
>
> (package-arguments linux-libre-headers-cross-mips64el-linux-gnuabi64)
>
> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> In procedure struct-vtable: Wrong type argument in position 1 (expecting struct): #f
>
> Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
> scheme@(guix-user) [1]> ,bt
> In gnu/packages/cross-base.scm:
>    388:33  1 (loop (#:phases (modify-phases %standard-phases (delete (quote configure)) (# (…) …) …) …) …)
> In ice-9/boot-9.scm:
>   1685:16  0 (raise-exception _ #:continuable? _)
>
> [0]  https://issues.guix.gnu.org/60224#30

OK, I think I've found the culprit:

--8<---------------cut here---------------start------------->8---
                 (setenv "ARCH" ,(platform-linux-architecture
                                  (lookup-platform-by-target target)))
--8<---------------cut here---------------end--------------->8---

in the definition of cross-kernel-headers*, in (gnu packages
cross-base).

When the target is "mips64el-linux-gnuabi64", lookup-platform-by-target
returns #f, which platform-linux-architecture does not expect.

-- 
Thanks,
Maxim