diff options
author | Ludovic Courtès <ludo@gnu.org> | 2024-12-02 15:04:46 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2024-12-12 23:23:33 +0100 |
commit | 12d00767f036029f1f5738de644d4972db374f4f (patch) | |
tree | 5ea390393940fde1ad29fadfb0f13a72bf32a042 /etc/manifests/release.scm | |
parent | b8a45bd0473ab2ba9b96b7ef429a557ece9bf06c (diff) | |
download | guix-12d00767f036029f1f5738de644d4972db374f4f.tar.gz guix-12d00767f036029f1f5738de644d4972db374f4f.zip |
etc: Move manifests to a separate directory.
* etc/disarchive-manifest.scm, etc/hurd-manifest.scm,
etc/kernels-manifest.scm, etc/release-manifest.scm,
etc/source-manifest.scm, etc/system-tests.scm,
etc/time-travel-manifest.scm, etc/upgrade-manifest.scm: Move to…
* etc/manifests: … here, and drop “-manifest” from file name.
* Makefile.am (EXTRA_DIST, assert-binaries-available, check-system):
Adjust accordingly.
Change-Id: Iedee3d0cdd42e72ef8bbf654ea5d3b47dca95874
Diffstat (limited to 'etc/manifests/release.scm')
-rw-r--r-- | etc/manifests/release.scm | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/etc/manifests/release.scm b/etc/manifests/release.scm new file mode 100644 index 0000000000..b003f216ff --- /dev/null +++ b/etc/manifests/release.scm @@ -0,0 +1,175 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020-2022, 2024 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2023 Andreas Enge <andreas@enge.fr> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +;;; This file returns a manifest containing release-critical bit, for all the +;;; supported architectures and cross-compilation targets. + +(use-modules (gnu packages) + (guix packages) + (guix profiles) + ((guix platform) #:select (targets)) + ((gnu services xorg) #:select (%default-xorg-modules)) + (guix utils) + (guix gexp) + (srfi srfi-1) + (srfi srfi-26)) + +(define* (package->manifest-entry* package system + #:key target) + "Return a manifest entry for PACKAGE on SYSTEM, optionally cross-compiled to +TARGET." + (manifest-entry + (inherit (package->manifest-entry package)) + (name (string-append (package-name package) "." system + (if target + (string-append "." target) + "'"))) + (item (with-parameters ((%current-system system) + (%current-target-system target)) + package)))) + +(define %base-packages + ;; Packages that must be substitutable on all the platforms Guix supports. + (map specification->package + '("bootstrap-tarballs" "gcc-toolchain" "nss-certs" + "openssh" "emacs" "vim" "python" "guile" "guix"))) + +(define %base-packages/armhf + ;; The guix package doesn't build natively on armhf due to Guile memory + ;; issues compiling the package modules + (remove (lambda (package) + (string=? (package-name package) "guix")) + %base-packages)) + +(define %base-packages/hurd + ;; XXX: For now we are less demanding of "i586-gnu". + (map specification->package + '("coreutils" "grep" "findutils" "gawk" "make" + #;"gcc-toolchain" "tar" "xz"))) + +(define %system-packages + ;; Key packages proposed by the Guix System installer. + (append (map specification->package + '("xorg-server" "xfce" "gnome" "mate" "enlightenment" + "openbox" "awesome" "i3-wm" "ratpoison" + "emacs" "emacs-exwm" "emacs-desktop-environment" + "xlockmore" "slock" "libreoffice" + "connman" "network-manager" "network-manager-applet" + "openssh" "ntp" "tor" + "linux-libre" "grub-hybrid" + "icecat")) + %default-xorg-modules)) + +(define %packages-to-cross-build + ;; Packages that must be cross-buildable from x86_64-linux. + ;; FIXME: Add (@ (gnu packages gcc) gcc) when <https://bugs.gnu.org/40463> + ;; is fixed. + (append (list (@ (gnu packages guile) guile-3.0/pinned)) + (map specification->package + '("coreutils" "grep" "sed" "findutils" "diffutils" "patch" + "gawk" "gettext" "gzip" "xz" + "hello" "zlib")))) + +(define %packages-to-cross-build-for-mingw + ;; Many things don't build for MinGW. Restrict to what's known to work. + (map specification->package '("hello"))) + +(define %cross-bootstrap-targets + ;; Cross-compilation triplets for which 'bootstrap-tarballs' must be + ;; buildable. + '("i586-pc-gnu" + "arm-linux-gnueabihf" + "aarch64-linux-gnu")) + + +;;; +;;; Manifests. +;;; + +(define %base-manifest + (manifest + (append-map (lambda (system) + (map (cut package->manifest-entry* <> system) + (cond ((string=? system "i586-gnu") + %base-packages/hurd) + ((string=? system "armhf-linux") + %base-packages/armhf) + ((string=? system "powerpc64le-linux") + ;; FIXME: Drop 'bootstrap-tarballs' until + ;; <https://bugs.gnu.org/48055> is fixed. + (drop %base-packages 1)) + (else + %base-packages)))) + %cuirass-supported-systems))) + +(define %system-manifest + (manifest + (append-map (lambda (system) + ;; Some of %SYSTEM-PACKAGES are currently unsupported on some + ;; systems--e.g., GNOME on non-x86_64, due to Rust. Filter + ;; them out. + (filter-map (lambda (package) + (and (supported-package? package system) + (package->manifest-entry* package system))) + %system-packages)) + '("x86_64-linux" "i686-linux")))) ;Guix System + +(define %cross-manifest + (manifest + (append-map (lambda (target) + (map (cut package->manifest-entry* <> "x86_64-linux" + #:target target) + (if (target-mingw? target) + %packages-to-cross-build-for-mingw + %packages-to-cross-build))) + (fold delete (targets) + '(;; Like in (gnu ci), dismiss cross-compilation to x86: + ;; it's pointless. + "x86_64-linux-gnu" + "i686-linux-gnu" + + ;; Ignore obsolete systems, as in (gnu ci). + "mips64el-linux-gnu" + "powerpc-linux-gnu" + "powerpc64-linux-gnu" + + ;; Ignore bare-metal targets. + "avr" + "or1k-elf" + "xtensa-ath9k-elf" + + ;; XXX: Important bits like libsigsegv and libffi don't + ;; support RISCV at the moment, so don't require RISCV + ;; support. + "riscv64-linux-gnu"))))) + +(define %cross-bootstrap-manifest + (manifest + (map (lambda (target) + (package->manifest-entry* + (specification->package "bootstrap-tarballs") + "x86_64-linux" #:target target)) + %cross-bootstrap-targets))) + +;; Return the union of all three manifests. +(concatenate-manifests (list %base-manifest + %system-manifest + %cross-manifest + %cross-bootstrap-manifest)) |