Subject: Lowering an <operating-system> is sensitive to (%current-system)
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Date: Mon, 13 Jun 2022 23:23:14 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Consider this file:

--8<---------------cut here---------------start------------->8---
(use-modules (guix))

(lambda ()
  (lower-object (load "overdrive1.scm") "aarch64-linux"))
--8<---------------cut here---------------end--------------->8---

When ran on x86_64-linux, these two commands return different
derivations, contrary to what one might expect:

  guix build -f that-file.scm -d --no-grafts -s aarch64-linux
  guix build -f that-file.scm -d --no-grafts

That demonstrates that the result depends on (%current-system), even
though it shouldn’t because we’re explicitly specifying the system.

This has implications on ‘guix deploy’: if you try to deploy
aarch64-linux boxes from x86_64-linux (say), some of the derivations are
going to be for x86_64-linux instead of aarch64-linux, which can lead to
unbootable systems, as Ricardo reported a while back.

In particular, /gnu/store/…-activate.scm.drv (a direct dependency
/gnu/store/…-system.drv) is one of those derivations sensitive to
(%current-system).

Ludo’.