From: Mathieu Othacehe <othacehe@gnu.org>
To: 55220@debbugs.gnu.org
Cc: Mathieu Othacehe <othacehe@gnu.org>
Subject: [bug#55220] [PATCH v2 6/6] linux: Remove system->linux-architecture procedure.
Date: Sat, 7 May 2022 18:11:26 +0200 [thread overview]
Message-ID: <20220507161126.14553-7-othacehe@gnu.org> (raw)
In-Reply-To: <20220507161126.14553-1-othacehe@gnu.org>
* gnu/packages/linux.scm (system->linux-architecture): Remove it.
(make-linux-libre-headers*, make-linux-libre*): Adapt them.
* guix/build-system/linux-module.scm (system->arch): Adapt it.
* gnu/packages/instrumentation.scm (uftrace): Ditto.
* gnu/packages/cross-base.scm (cross-kernel-headers): Ditto.
* gnu/packages/bioinformatics.scm (ncbi-vdb): Ditto.
* doc/guix.texi (Porting to a new platform): Update it.
---
doc/guix.texi | 30 ++++++++++++++------------
gnu/packages/bioinformatics.scm | 11 ++++++----
gnu/packages/cross-base.scm | 4 +++-
gnu/packages/instrumentation.scm | 8 ++++---
gnu/packages/linux.scm | 34 +++++++++++-------------------
guix/build-system/linux-module.scm | 4 ++--
6 files changed, 45 insertions(+), 46 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 6757c105dc..1dc1474ec7 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -39896,20 +39896,22 @@ one:
guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs
@end example
-For this to work, the @code{glibc-dynamic-linker} procedure in
-@code{(gnu packages bootstrap)} must be augmented to return the right
-file name for libc's dynamic linker on that platform; likewise,
-@code{system->linux-architecture} in @code{(gnu packages linux)} must be
-taught about the new platform.
-
-Once these are built, the @code{(gnu packages bootstrap)} module needs
-to be updated to refer to these binaries on the target platform. That
-is, the hashes and URLs of the bootstrap tarballs for the new platform
-must be added alongside those of the currently supported platforms. The
-bootstrap Guile tarball is treated specially: it is expected to be
-available locally, and @file{gnu/local.mk} has rules to download it for
-the supported architectures; a rule for the new platform must be added
-as well.
+For this to work, it is first required to register a new platform as
+defined in the @code{(gnu platform)} module. A platform is making the
+connection between a GNU triplet (@pxref{Specifying Target Triplets, GNU
+configuration triplets,, autoconf, Autoconf}), the equivalent
+@var{system} in Nix notation, the name of the
+@var{glibc-dynamic-linker}, and the corresponding Linux architecture
+name if applicable.
+
+Once the bootstrap tarball are built, the @code{(gnu packages
+bootstrap)} module needs to be updated to refer to these binaries on the
+target platform. That is, the hashes and URLs of the bootstrap tarballs
+for the new platform must be added alongside those of the currently
+supported platforms. The bootstrap Guile tarball is treated specially:
+it is expected to be available locally, and @file{gnu/local.mk} has
+rules to download it for the supported architectures; a rule for the new
+platform must be added as well.
In practice, there may be some complications. First, it may be that the
extended GNU triplet that specifies an ABI (like the @code{eabi} suffix
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index ae35087964..d23f5fa9e0 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -161,6 +161,7 @@ (define-module (gnu packages bioinformatics)
#:use-module (gnu packages wget)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
+ #:use-module (gnu platform)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match))
@@ -6576,10 +6577,12 @@ (define-public ncbi-vdb
;; architecture name ("i386") instead of the target system prefix
;; ("i686").
(mkdir (string-append (assoc-ref outputs "out") "/ilib"))
- (copy-recursively (string-append "build/ncbi-vdb/linux/gcc/"
- ,(system->linux-architecture
- (or (%current-target-system)
- (%current-system)))
+ (copy-recursively (string-append
+ "build/ncbi-vdb/linux/gcc/"
+ ,(platform-linux-architecture
+ (lookup-platform-by-target-or-system
+ (or (%current-target-system)
+ (%current-system))))
"/rel/ilib")
(string-append (assoc-ref outputs "out")
"/ilib"))
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 66412b9e92..427fefbcd2 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -30,6 +30,7 @@ (define-module (gnu packages cross-base)
#:use-module (gnu packages linux)
#:use-module (gnu packages hurd)
#:use-module (gnu packages mingw)
+ #:use-module (gnu platform)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
@@ -345,7 +346,8 @@ (define xlinux-headers
`(modify-phases ,phases
(replace 'build
(lambda _
- (setenv "ARCH" ,(system->linux-architecture target))
+ (setenv "ARCH" ,(platform-linux-architecture
+ (lookup-platform-by-target target)))
(format #t "`ARCH' set to `~a' (cross compiling)~%"
(getenv "ARCH"))
diff --git a/gnu/packages/instrumentation.scm b/gnu/packages/instrumentation.scm
index ab986bfcc7..1271619ad6 100644
--- a/gnu/packages/instrumentation.scm
+++ b/gnu/packages/instrumentation.scm
@@ -42,6 +42,7 @@ (define-module (gnu packages instrumentation)
#:use-module (gnu packages swig)
#:use-module (gnu packages tbb)
#:use-module (gnu packages xml)
+ #:use-module (gnu platform)
#:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
@@ -312,9 +313,10 @@ (define-public uftrace
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs target #:allow-other-keys)
- (let ((arch ,(system->linux-architecture
- (or (%current-target-system)
- (%current-system)))))
+ (let ((arch ,(platform-linux-architecture
+ (lookup-platform-by-target-or-system
+ (or (%current-target-system)
+ (%current-system))))))
(setenv "ARCH"
(cond
((string=? arch "arm64") "aarch64")
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 828bd4e208..c5d30f937b 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -158,6 +158,7 @@ (define-module (gnu packages linux)
#:use-module (gnu packages groff)
#:use-module (gnu packages selinux)
#:use-module (gnu packages swig)
+ #:use-module (gnu platform)
#:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
@@ -181,20 +182,6 @@ (define-module (gnu packages linux)
#:use-module (ice-9 match)
#:use-module (ice-9 regex))
-(define-public (system->linux-architecture arch)
- "Return the Linux architecture name for ARCH, a Guix system name such as
-\"x86_64-linux\" or a target triplet such as \"arm-linux-gnueabihf\"."
- (let ((arch (car (string-split arch #\-))))
- (cond ((string=? arch "i686") "i386")
- ((string-prefix? "mips" arch) "mips")
- ((string-prefix? "arm" arch) "arm")
- ((string-prefix? "aarch64" arch) "arm64")
- ((string-prefix? "alpha" arch) "alpha")
- ((string-prefix? "powerpc" arch) "powerpc") ;including "powerpc64le"
- ((string-prefix? "s390" arch) "s390")
- ((string-prefix? "riscv" arch) "riscv")
- (else arch))))
-
(define-public (system->defconfig system)
"Some systems (notably powerpc-linux) require a special target for kernel
defconfig. Return the appropriate make target if applicable, otherwise return
@@ -567,9 +554,10 @@ (define (make-linux-libre-headers* version gnu-revision source)
(delete 'configure)
(replace 'build
(lambda _
- (let ((arch ,(system->linux-architecture
- (or (%current-target-system)
- (%current-system))))
+ (let ((arch ,(platform-linux-architecture
+ (lookup-platform-by-target-or-system
+ (or (%current-target-system)
+ (%current-system)))))
(defconfig ,(system->defconfig
(or (%current-target-system)
(%current-system))))
@@ -807,8 +795,9 @@ (define* (make-linux-libre* version gnu-revision source supported-systems
,@(match (and configuration-file
(configuration-file
- (system->linux-architecture
- (or (%current-target-system) (%current-system)))
+ (platform-linux-architecture
+ (lookup-platform-by-target-or-system
+ (or (%current-target-system) (%current-system))))
#:variant (version-major+minor version)))
(#f ;no config for this platform
'())
@@ -839,9 +828,10 @@ (define* (make-linux-libre* version gnu-revision source supported-systems
(setenv "KBUILD_BUILD_HOST" "guix")
;; Set ARCH and CROSS_COMPILE.
- (let ((arch #$(system->linux-architecture
- (or (%current-target-system)
- (%current-system)))))
+ (let ((arch #$(platform-linux-architecture
+ (lookup-platform-by-target-or-system
+ (or (%current-target-system)
+ (%current-system))))))
(setenv "ARCH" arch)
(format #t "`ARCH' set to `~a'~%" (getenv "ARCH"))
diff --git a/guix/build-system/linux-module.scm b/guix/build-system/linux-module.scm
index e82a9ca65c..761ebe25b1 100644
--- a/guix/build-system/linux-module.scm
+++ b/guix/build-system/linux-module.scm
@@ -50,8 +50,8 @@ (define (default-linux)
(module-ref module 'linux-libre)))
(define (system->arch system)
- (let ((module (resolve-interface '(gnu packages linux))))
- ((module-ref module 'system->linux-architecture) system)))
+ (let ((module (resolve-interface '(gnu platform))))
+ ((module-ref module 'lookup-platform-by-target-or-system) system)))
(define (make-linux-module-builder linux)
(package
--
2.36.0
prev parent reply other threads:[~2022-05-07 16:12 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-02 11:17 [bug#55220] [PATCH 0/4] Add --list-systems and --list-targets options Mathieu Othacehe
2022-05-02 11:18 ` [bug#55220] [PATCH 1/4] platform: Introduce new platforms Mathieu Othacehe
2022-05-02 11:18 ` [bug#55220] [PATCH 2/4] platform: Add discovery support Mathieu Othacehe
2022-05-06 14:41 ` [bug#55220] [PATCH 0/4] Add --list-systems and --list-targets options Ludovic Courtès
2022-05-07 15:53 ` Mathieu Othacehe
2022-05-02 11:18 ` [bug#55220] [PATCH 3/4] ci: Do not rely on hardcoded cross-targets lists Mathieu Othacehe
2022-05-02 11:18 ` [bug#55220] [PATCH 4/4] scripts: Add --list-systems and --list-targets options Mathieu Othacehe
2022-05-06 14:54 ` [bug#55220] [PATCH 0/4] " Ludovic Courtès
2022-05-07 16:04 ` Mathieu Othacehe
2022-05-22 1:30 ` Maxim Cournoyer
2022-05-22 1:25 ` Maxim Cournoyer
2022-05-22 13:09 ` Mathieu Othacehe
2022-05-06 14:39 ` Ludovic Courtès
2022-05-07 15:50 ` Mathieu Othacehe
2022-05-06 14:37 ` Ludovic Courtès
2022-05-07 16:11 ` [bug#55220] [PATCH v2 0/6] " Mathieu Othacehe
2022-05-07 16:11 ` [bug#55220] [PATCH v2 1/6] platform: Introduce new platforms Mathieu Othacehe
2022-05-09 20:44 ` Maxime Devos
2022-05-22 1:39 ` [bug#55220] [PATCH 0/4] Add --list-systems and --list-targets options Maxim Cournoyer
2022-05-22 13:12 ` Mathieu Othacehe
2022-05-22 13:42 ` Maxim Cournoyer
2022-05-22 13:01 ` [bug#55220] [PATCH v2 1/6] platform: Introduce new platforms Mathieu Othacehe
2022-05-09 20:50 ` Maxime Devos
2022-05-22 13:02 ` Mathieu Othacehe
2022-05-07 16:11 ` [bug#55220] [PATCH v2 2/6] platform: Add discovery support Mathieu Othacehe
2022-05-09 20:58 ` Maxime Devos
2022-05-22 1:34 ` [bug#55220] [PATCH 0/4] Add --list-systems and --list-targets options Maxim Cournoyer
2022-05-22 13:06 ` [bug#55220] [PATCH v2 2/6] platform: Add discovery support Mathieu Othacehe
2022-05-07 16:11 ` [bug#55220] [PATCH v2 3/6] ci: Do not rely on hardcoded cross-targets lists Mathieu Othacehe
2022-05-07 16:11 ` [bug#55220] [PATCH v2 4/6] scripts: Add --list-systems and --list-targets options Mathieu Othacehe
2022-05-07 16:11 ` [bug#55220] [PATCH v2 5/6] platform: Add glibc-dynamic-linker field Mathieu Othacehe
2022-05-07 16:11 ` Mathieu Othacehe [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220507161126.14553-7-othacehe@gnu.org \
--to=othacehe@gnu.org \
--cc=55220@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.