From: Efraim Flashner <efraim@flashner.co.il>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: Vagrant Cascadian <vagrant@debian.org>,
55283@debbugs.gnu.org, Maxime Devos <maximedevos@telenet.be>,
raingloom <raingloom@riseup.net>
Subject: bug#55283: ‘tests/guix-shell-export-manifest.sh’ fails on aarch64-linux
Date: Mon, 9 May 2022 11:44:28 +0300 [thread overview]
Message-ID: <YnjUbBWxpVMnANHc@3900XT> (raw)
In-Reply-To: <87wnevu0x1.fsf@gnu.org>
[-- Attachment #1.1: Type: text/plain, Size: 898 bytes --]
On Mon, May 09, 2022 at 12:14:50AM +0200, Ludovic Courtès wrote:
> Hi!
>
> Vagrant Cascadian <vagrant@debian.org> skribis:
>
> > Well, I guess I answered my initial question by reading the error
> > message... guix/cpu.scm ... how did that work before for things like
> > cross-building, where /proc/cpuinfo is *definitely* wrong to get
> > information about the architecture you're building for?
>
> (guix cpu) is used when passing ‘--tune’, which is used for native
> builds:
>
> https://hpc.guix.info/blog/2022/01/tuning-packages-for-a-cpu-micro-architecture/
I have a WIP patch for adding CPU detection for aarch64. Perhaps it'll
help with the issues?
--
Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[-- Attachment #1.2: 0005-WIP-guix-cpu-Add-detection-for-aarch64-CPUs.patch --]
[-- Type: text/plain, Size: 4748 bytes --]
From 26894a74e7a1ed861a170239e26d13f1298fe5ac Mon Sep 17 00:00:00 2001
Message-Id: <26894a74e7a1ed861a170239e26d13f1298fe5ac.1644401681.git.efraim@flashner.co.il>
In-Reply-To: <cover.1644401681.git.efraim@flashner.co.il>
References: <cover.1644401681.git.efraim@flashner.co.il>
From: Efraim Flashner <efraim@flashner.co.il>
Date: Wed, 9 Feb 2022 12:07:55 +0200
Subject: [PATCH 5/5] WIP: guix: cpu: Add detection for aarch64 CPUs.
* guix/cpu.scm (current-cpu): Extend existing implementation to also
read cpuinfo from aarch64 machines.
(cpu->gcc-architecture): Add case for aarch64.
---
guix/cpu.scm | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 70 insertions(+)
diff --git a/guix/cpu.scm b/guix/cpu.scm
index 6d44599822..d4dbd5f6b8 100644
--- a/guix/cpu.scm
+++ b/guix/cpu.scm
@@ -66,25 +66,47 @@ (define (prefix? prefix)
(match (read-line port)
((? eof-object?)
#f)
+ ;; vendor for x86_64 and i686
((? (prefix? "vendor_id") str)
(match (string-tokenize str)
(("vendor_id" ":" vendor)
(loop vendor family model))))
+ ;; vendor for aarch64 and armhf
+ ((? (prefix? "CPU implementer") str)
+ (match (string-tokenize str)
+ (("CPU" "implementer" ":" vendor)
+ (loop vendor family model))))
+ ;; family for x86_64 and i686
((? (prefix? "cpu family") str)
(match (string-tokenize str)
(("cpu" "family" ":" family)
(loop vendor (string->number family) model))))
+ ;; model for x86_64 and i686
((? (prefix? "model") str)
(match (string-tokenize str)
(("model" ":" model)
(loop vendor family (string->number model)))
(_
(loop vendor family model))))
+ ;; model for aarch64 and armhf
+ ((? (prefix? "CPU part") str)
+ (match (string-tokenize str)
+ (("CPU" "part" ":" model)
+ (loop vendor family (string->number (string-append "#x" (string-drop model 2)))))
+ (_
+ (loop vendor family model))))
+ ;; flags for x86_64 and i686
((? (prefix? "flags") str)
(match (string-tokenize str)
(("flags" ":" flags ...)
(cpu (utsname:machine (uname))
vendor family model (list->set flags)))))
+ ;; flags for aarch64 and armhf
+ ((? (prefix? "Features") str)
+ (match (string-tokenize str)
+ (("Features" ":" flags ...)
+ (cpu (utsname:machine (uname))
+ vendor family model (list->set flags)))))
(_
(loop vendor family model))))))))
@@ -192,6 +214,54 @@ (define (cpu->gcc-architecture cpu)
;; TODO: Recognize CENTAUR/CYRIX/NSC?
"x86_64"))
+ ("aarch64"
+ (pk (cpu-architecture cpu)(cpu-vendor cpu)(cpu-family cpu) (cpu-model cpu)(cpu-flags cpu))
+ ;; Currently returns ("aarch64" #f #f #f #<<set> vhash: #<vhash 329666c0 9 pairs> insert: #<procedure %insert (t-5ce36f5c768e728-317 t-5ce36f5c768e728-319)> ref: #<procedure vhash-assoc (key vhash #:optional equal? hash)>>)
+ ;; Transcribed from GCC's list of aarch64 processors in aarch64-cores.def
+ (match (cpu-vendor cpu)
+ ("0x41"
+ (match (cpu-model cpu)
+ ((or #xd02 #xd04 #xd03 #xd07 #xd08 #xd09)
+ "armv8-a")
+ ((or #xd05 #xd0a #xd0b #xd0e #xd0d #xd41 #xd42 #xd4b #xd46 #xd43 #xd44 #xd41 #xd0c #xd4a)
+ "armv8.2-a")
+ (#xd40
+ "armv8.4-a")
+ (#xd15
+ "armv8-r")
+ ((or #xd46 #xd47 #xd48)
+ "armv9-a")))
+ ("0x42"
+ "armv8.1-a")
+ ("0x43"
+ (match (cpu-model cpu)
+ ((or #x0a0 #x0a1 #x0a2 #x0a3)
+ "armv8-a")
+ ((or #x0b0 #x0b1 #x0b2 #x0b3 #x0b4 #x0b5)
+ "armv8.2-a")
+ (#x0b8
+ "armv8.3-a")))
+ ("0x46"
+ "armv8.2-a")
+ ("0x48"
+ "armv8.2-a")
+ ("0x50"
+ "armv8-a")
+ ("0x51"
+ (match (cpu-model cpu)
+ (#xC00
+ "armv8-a")
+ (#x516
+ "armv8.1-a")
+ (#xC01
+ "armv8.4-a")))
+ ("0x53"
+ "armv8-a")
+ ("0x68"
+ "armv8-a")
+ (_
+ "armv8-a"))
+ "armv8-a")
(architecture
;; TODO: AArch64.
architecture)))
--
2.34.0
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2022-05-09 8:50 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-05 22:50 bug#55283: ‘tests/guix-shell-export-manifest.sh’ fails on aarch64-linux Ludovic Courtès
2022-05-06 0:28 ` raingloom
2022-05-06 20:43 ` Vagrant Cascadian
2022-05-06 21:12 ` Maxime Devos
2022-05-06 22:13 ` Vagrant Cascadian
2022-05-07 0:14 ` Vagrant Cascadian
2022-05-07 0:45 ` Vagrant Cascadian
2022-05-08 22:14 ` Ludovic Courtès
2022-05-09 8:44 ` Efraim Flashner [this message]
2022-05-09 8:57 ` Efraim Flashner
2022-05-09 10:03 ` Maxime Devos
2022-05-09 14:17 ` Efraim Flashner
2022-05-10 15:40 ` Ludovic Courtès
2022-05-10 15:43 ` Ludovic Courtès
2022-05-10 15:55 ` Efraim Flashner
2022-05-10 15:50 ` Efraim Flashner
2022-05-12 8:09 ` Ludovic Courtès
2022-05-09 12:04 ` Sébastien Lerique
2022-05-09 12:32 ` Sébastien Lerique
2022-05-17 12:29 ` Efraim Flashner
2022-05-17 15:01 ` Pavel Shlyak
2022-05-17 16:38 ` Pavel Shlyak
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=YnjUbBWxpVMnANHc@3900XT \
--to=efraim@flashner.co.il \
--cc=55283@debbugs.gnu.org \
--cc=ludo@gnu.org \
--cc=maximedevos@telenet.be \
--cc=raingloom@riseup.net \
--cc=vagrant@debian.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.