Subject: Re: bug#58036: kernel module not found "pata_acpi" in linux-libre-5.19.10

From: Ludovic Courtès <[email-masked]>
Date: Mon, 26 Sep 2022 12:12:54 +0200

Hi,

Maxim Cournoyer <[email-masked]> skribis:

> While attempting to reconfigure the overdrive1 aarch64 machine, I got:
>
> substitute: ^Msubstitute: ESC[Kupdating substitutes from 'https://ci.guix.gnu.org'...   0.0%^Msubstitute: ESC[Kupdating substitutes from 'https://ci.guix.gnu.org'... 100.0%
> @ build-started /gnu/store/x9qdj37d6l2yacc73bx284ggj6vkhcdv-linux-modules.drv - aarch64-linux /var/log/guix/drvs/x9//qdj37d6l2yacc73bx284ggj6vkhcdv-linux-modules.drv.gz 31574
> Backtrace:
> In ice-9/eval.scm:
>     619:8 19 (_ #f)
>    626:19 18 (_ #<directory (guile-user) 5ebc80>)
>    293:34 17 (_ #(#<directory (guile-user) 5ebc80> #<procedure loo?>))
> In srfi/srfi-1.scm:
>    586:29 16 (map1 _)
>    586:29 15 (map1 _)
>    586:29 14 (map1 _)
>    586:29 13 (map1 _)
>    586:29 12 (map1 _)
>    586:29 11 (map1 _)
>    586:29 10 (map1 _)
>    586:29  9 (map1 _)
>    586:29  8 (map1 _)
>    586:29  7 (map1 _)
>    586:29  6 (map1 _)
>    586:29  5 (map1 _)
>    586:29  4 (map1 _)
>    586:29  3 (map1 _)
>    586:29  2 (map1 _)
>    586:17  1 (map1 ("pata_acpi" "pata_atiixp" "isci" "virtio_pci" # ?))
> In gnu/build/linux-modules.scm:
>     257:5  0 (_)
>
> gnu/build/linux-modules.scm:257:5: kernel module not found "pata_acpi" "/gnu/store/nmdy7c4i34y12w8af7zl6sl9fmrp8wa0-linux-libre-5.19.10/lib/modules"
> builder for `/gnu/store/x9qdj37d6l2yacc73bx284ggj6vkhcdv-linux-modules.drv' failed with exit code 1

This is the derivation made by ‘flat-linux-module-directory’ in (gnu
system linux-initrd).

How did you work around it?

Normally “pata_acpi” is excluded from ‘%base-initrd-modules’ on
aarch64.  However, since this relies on (%current-system), there could
be situations where the trick doesn’t work as expected when deploying
say from x86_64:

--8<---------------cut here---------------start------------->8---
(define* (default-initrd-modules
           #:optional
           (system (or (%current-target-system)
                       (%current-system))))
    ;; [...]

    ,@(if (string-match "^(x86_64|i[3-6]86)-" system)
          '("pata_acpi" "pata_atiixp"    ;for ATA controllers
            "isci")                      ;for SAS controllers like Intel C602
          '())

    ,@virtio-modules))

(define-syntax %base-initrd-modules
  ;; This more closely matches our naming convention.
  (identifier-syntax (default-initrd-modules)))
--8<---------------cut here---------------end--------------->8---

I tried just now and did not reproduce it:

--8<---------------cut here---------------start------------->8---
$ guix describe
Generation 229  Sep 25 2022 23:42:53    (current)
  guix ab69314
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: ab6931483be544b7debb9496f694b593af7e0c0f
$ guix deploy -L modules deploy-overdrive1.scm
The following 1 machine will be deployed:
  overdrive1

guix deploy: deploying to overdrive1...

[…]

guix deploy: sending 0 store items (0 MiB) to 'overdrive1.guix.gnu.org'...
guix deploy: error: failed to deploy overdrive1: failed to switch systems while deploying 'overdrive1.guix.gnu.org':
system-error "symlink" "~A" ("File exists") (17) 
--8<---------------cut here---------------end--------------->8---

(But as you can see, I did reproduce that other bug you reported.  :-))

Ludo’.