guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cross-compilation broken on canonical packages.


From: Mathieu Othacehe
Subject: Re: Cross-compilation broken on canonical packages.
Date: Tue, 31 Dec 2019 10:55:03 +0100
User-agent: mu4e 1.2.0; emacs 26.3

Hola,

> However, the hack doesn’t work for things like the ‘packages’ field of
> <operating-system> because it’s not a thunked field.

I see! Thanks for explaining.

>
> Two simple solutions here, I think:
>
>   1. Make ‘packages’ a thunked field.
>
>   2. Stop using ‘canonical-package’ altogether in ‘%base-packages’.
>
> I actually have a preference for #2.  We’d need to check what impact it
> has on the system closure size, but I suspect it’s going to be minimal.
>
> Thoughts?

Option #2 seems nicer. There are other canonical-package calls when
building services. I have a patch attached that removes all those calls.

The image produced when running "guix system disk-image bare-bones.tmpl"
increases by:

* 30MB when removing the canonical-package of %base-packages
* 30MB for all other calls.

So altogether, that's a 60MB increase on a 1.5GB image (4%). I find it
acceptable, WDYT?

Thanks,

Mathieu
>From a55eb86975c5f1c2783b0af265364821259e3351 Mon Sep 17 00:00:00 2001
From: Mathieu Othacehe <address@hidden>
Date: Tue, 31 Dec 2019 09:56:51 +0100
Subject: [PATCH] system: Stop using canonical-package.

Usage of canonical-package outside of thunked fields breaks cross-compilation,
see: https://lists.gnu.org/archive/html/guix-devel/2019-12/msg00410.html.

* gnu/installer.scm (installer-program): Remove canonical-package.
* gnu/services/base.scm (<nscd-cache>): Ditto,
(%base-services): ditto.
* gnu/services/xorg.scm: Remove useless canonical-package import.
* gnu/system.scm (%base-packages): Remove canonical-package.
* gnu/system/install.scm (%installation-services): Ditto,
(installation-os): ditto.
* gnu/system/locale.scm (single-locale-directory): Ditto,
(%default-locale-libcs): ditto.
---
 gnu/installer.scm      | 22 +++++++++++-----------
 gnu/services/base.scm  | 10 ++++------
 gnu/services/xorg.scm  |  2 +-
 gnu/system.scm         | 11 ++---------
 gnu/system/install.scm |  7 +++----
 gnu/system/locale.scm  |  4 ++--
 6 files changed, 23 insertions(+), 33 deletions(-)

diff --git a/gnu/installer.scm b/gnu/installer.scm
index 167653263f..7f12b39ffc 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -290,17 +290,17 @@ selected keymap."
   (define set-installer-path
     ;; Add the specified binary to PATH for later use by the installer.
     #~(let* ((inputs
-              '#$(append (list bash ;start subshells
-                               connman ;call connmanctl
-                               cryptsetup
-                               dosfstools ;mkfs.fat
-                               e2fsprogs ;mkfs.ext4
-                               btrfs-progs
-                               kbd ;chvt
-                               guix ;guix system init call
-                               util-linux ;mkwap
-                               shadow)
-                         (map canonical-package (list coreutils)))))
+              '#$(list bash ;start subshells
+                       connman ;call connmanctl
+                       cryptsetup
+                       dosfstools ;mkfs.fat
+                       e2fsprogs ;mkfs.ext4
+                       btrfs-progs
+                       kbd ;chvt
+                       guix ;guix system init call
+                       util-linux ;mkwap
+                       shadow
+                       coreutils)))
         (with-output-to-port (%make-void-port "w")
           (lambda ()
             (set-path-environment-variable "PATH" '("bin" "sbin") inputs)))))
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index b1eff89ecc..b7cde09611 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -44,7 +44,7 @@
                 #:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 
rng-tools))
   #:use-module (gnu packages bash)
   #:use-module ((gnu packages base)
-                #:select (canonical-package coreutils glibc 
glibc-utf8-locales))
+                #:select (coreutils glibc glibc-utf8-locales))
   #:use-module (gnu packages package-management)
   #:use-module ((gnu packages gnupg) #:select (guile-gcrypt))
   #:use-module (gnu packages linux)
@@ -1208,7 +1208,7 @@ the tty to run, among other things."
   (name-services nscd-configuration-name-services ;list of <packages>
                  (default '()))
   (glibc      nscd-configuration-glibc            ;<package>
-              (default (canonical-package glibc))))
+              (default glibc)))
 
 (define-record-type* <nscd-cache> nscd-cache make-nscd-cache
   nscd-cache?
@@ -2441,9 +2441,7 @@ to handle."
                    (rules (list lvm2 fuse alsa-utils crda))))
 
         (service special-files-service-type
-                 `(("/bin/sh" ,(file-append (canonical-package bash)
-                                            "/bin/sh"))
-                   ("/usr/bin/env" ,(file-append (canonical-package coreutils)
-                                                 "/bin/env"))))))
+                 `(("/bin/sh" ,(file-append bash "/bin/sh"))
+                   ("/usr/bin/env" ,(file-append coreutils "/bin/env"))))))
 
 ;;; base.scm ends here
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 9c84f7413f..4f6a8aec1e 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -29,7 +29,7 @@
   #:use-module (gnu system keyboard)
   #:use-module (gnu services base)
   #:use-module (gnu services dbus)
-  #:use-module ((gnu packages base) #:select (canonical-package))
+  #:use-module (gnu packages base)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages fonts)
diff --git a/gnu/system.scm b/gnu/system.scm
index abdbb081e6..3efa496194 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -591,18 +591,11 @@ of PROVENANCE-SERVICE-TYPE to its services."
 
          bash-completion
 
-         ;; XXX: We don't use (canonical-package guile-2.2) here because that
-         ;; would create a collision in the global profile between the GMP
-         ;; variant propagated by 'guile-final' and the GMP variant propagated
-         ;; by 'gnutls', itself propagated by 'guix'.
          guile-2.2
          guile-readline guile-colorized
 
-         ;; The packages below are also in %FINAL-INPUTS, so take them from
-         ;; there to avoid duplication.
-         (map canonical-package
-              (list bash coreutils findutils grep sed
-                    diffutils patch gawk tar gzip bzip2 xz lzip))))
+         bash coreutils findutils grep sed
+         diffutils patch gawk tar gzip bzip2 xz lzip))
 
 (define %default-issue
   ;; Default contents for /etc/issue.
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 4d1612ac7f..64fd1d1747 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -383,8 +383,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
           ;; Having /bin/sh is a good idea.  In particular it allows Tramp
           ;; connections to this system to work.
           (service special-files-service-type
-                   `(("/bin/sh" ,(file-append (canonical-package bash)
-                                              "/bin/sh"))))
+                   `(("/bin/sh" ,(file-append bash "/bin/sh"))))
 
           ;; Loopback device, needed by OpenSSH notably.
           (service static-networking-service-type
@@ -407,7 +406,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
                    (list bare-bones-os
                          glibc-utf8-locales
                          texinfo
-                         (canonical-package guile-2.2))))))
+                         guile-2.2)))))
 
 (define %issue
   ;; Greeting.
@@ -479,7 +478,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
      ;; Explicitly allow for empty passwords.
      (base-pam-services #:allow-empty-passwords? #t))
 
-    (packages (cons* (canonical-package glibc) ;for 'tzselect' & co.
+    (packages (cons* glibc ;for 'tzselect' & co.
                      parted gptfdisk ddrescue
                      fontconfig
                      font-dejavu font-gnu-unifont
diff --git a/gnu/system/locale.scm b/gnu/system/locale.scm
index 8466d5b07d..c7a371e9bf 100644
--- a/gnu/system/locale.scm
+++ b/gnu/system/locale.scm
@@ -86,7 +86,7 @@ or #f on failure."
      #f)))
 
 (define* (single-locale-directory locales
-                                  #:key (libc (canonical-package glibc)))
+                                  #:key (libc glibc))
   "Return a directory containing all of LOCALES for LIBC compiled.
 
 Because locale data formats are incompatible when switching from one libc to
@@ -147,7 +147,7 @@ data format changes between libc versions."
 
 (define %default-locale-libcs
   ;; The libcs for which we build locales by default.
-  (list (canonical-package glibc)))
+  (list glibc))
 
 (define %default-locale-definitions
   ;; Arbitrary set of locales that are built by default.  They are here mostly
-- 
2.24.1


reply via email to

[Prev in Thread] Current Thread [Next in Thread]