Package: guix-patches;
Reported by: Efraim Flashner <efraim <at> flashner.co.il>
Date: Tue, 2 Jan 2024 07:27:01 UTC
Severity: normal
Tags: patch
Done: Efraim Flashner <efraim <at> flashner.co.il>
Bug is archived. No further changes may be made.
Message #8 received at 68202 <at> debbugs.gnu.org (full text, mbox):
From: Efraim Flashner <efraim <at> flashner.co.il> To: 68202 <at> debbugs.gnu.org Cc: Efraim Flashner <efraim <at> flashner.co.il> Subject: [PATCH 1/5] gnu: Add support for x86_64-linux-gnux32. Date: Tue, 2 Jan 2024 09:27:32 +0200
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Add entry for x86_64-linux-gnux32. * gnu/packages/gcc.scm (gcc-configure-flags-for-triplet): Add configure-flag for x86_64-linux-gnux32. * guix/platforms/x86.scm (x86_64-linux-gnux32): New variable. * guix/utils.scm (gnu-triplet->nix-system): Force x86_64-linux-gnux32 to output a different nix-system than x86_64-linux-gnu. Change-Id: I519fea2f8357e4b9895ede05fe8a5e373e9b034a --- gnu/packages/bootstrap.scm | 5 ++++- gnu/packages/gcc.scm | 5 ++++- guix/platforms/x86.scm | 10 ++++++++++ guix/utils.scm | 4 +++- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index 602d8f26c5..a36bb289cd 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo <at> gnu.org> ;;; Copyright © 2014, 2015, 2018, 2019 Mark H Weaver <mhw <at> netris.org> -;;; Copyright © 2017, 2020 Efraim Flashner <efraim <at> flashner.co.il> +;;; Copyright © 2017, 2020, 2024 Efraim Flashner <efraim <at> flashner.co.il> ;;; Copyright © 2018, 2020, 2022 Jan (janneke) Nieuwenhuizen <janneke <at> gnu.org> ;;; Copyright © 2019 Carl Dong <contact <at> carldong.me> ;;; Copyright © 2019 Léo Le Bouter <lle-bout <at> zaclys.net> @@ -323,6 +323,9 @@ (define* (glibc-dynamic-linker ((string=? system "powerpc64-linux") "/lib/ld64.so.1") ((string=? system "alpha-linux") "/lib/ld-linux.so.2") + ;; TODO: Differentiate between x86_64-linux-gnu and x86_64-linux-gnux32. + ((string=? system "x86_64-linux-gnux32") "/lib/ld-linux-x32.so.2") + ;; XXX: This one is used bare-bones, without a libc, so add a case ;; here just so we can keep going. ((string=? system "arm-eabi") "no-ld.so") diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index a8b74a3632..5590cd3d7e 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw <at> netris.org> ;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2021 Ricardo Wurmus <rekado <at> elephly.net> ;;; Copyright © 2015, 2023 Andreas Enge <andreas <at> enge.fr> -;;; Copyright © 2015-2018, 2020-2023 Efraim Flashner <efraim <at> flashner.co.il> +;;; Copyright © 2015-2018, 2020-2024 Efraim Flashner <efraim <at> flashner.co.il> ;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll <at> gmail.com> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me <at> tobias.gr> ;;; Copyright © 2018, 2020, 2022 Marius Bakke <marius <at> gnu.org> @@ -75,6 +75,9 @@ (define (gcc-configure-flags-for-triplet target) "--with-mode=thumb" "--with-fpu=neon")) + ((string-match "x86_64-linux-gnux32" target) + '("--with-abi=mx32")) + ((and (string-suffix? "-gnu" target) (not (string-contains target "-linux"))) ;; Cross-compilation of libcilkrts in GCC 5.5.0 to GNU/Hurd fails diff --git a/guix/platforms/x86.scm b/guix/platforms/x86.scm index 4ed5638c14..0c8fc7296c 100644 --- a/guix/platforms/x86.scm +++ b/guix/platforms/x86.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2022 Mathieu Othacehe <othacehe <at> gnu.org> +;;; Copyright © 2023, 2024 Efraim Flashner <efraim <at> flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,6 +22,7 @@ (define-module (guix platforms x86) #:use-module (guix records) #:export (i686-linux x86_64-linux + x86_64-linux-x32 i686-mingw x86_64-mingw i586-gnu)) @@ -41,6 +43,14 @@ (define x86_64-linux (rust-target "x86_64-unknown-linux-gnu") (glibc-dynamic-linker "/lib/ld-linux-x86-64.so.2"))) +(define x86_64-linux-x32 + (platform + (target "x86_64-linux-gnux32") + (system #f) + (linux-architecture "x86_64") + (rust-target "x86_64-unknown-linux-gnux32") + (glibc-dynamic-linker "/lib/ld-linux-x32.so.2"))) + (define i686-mingw (platform (target "i686-w64-mingw32") diff --git a/guix/utils.scm b/guix/utils.scm index 8e71f97e1c..f4bf965e9a 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2015 David Thompson <davet <at> gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe <at> gmail.com> ;;; Copyright © 2018, 2020 Marius Bakke <marius <at> gnu.org> -;;; Copyright © 2020, 2021 Efraim Flashner <efraim <at> flashner.co.il> +;;; Copyright © 2020, 2021, 2024 Efraim Flashner <efraim <at> flashner.co.il> ;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer <at> gmail.com> ;;; Copyright © 2021 Simon Tournier <zimon.toutoune <at> gmail.com> ;;; Copyright © 2021 Chris Marusich <cmmarusich <at> gmail.com> @@ -634,6 +634,8 @@ (define (gnu-triplet->nix-system triplet) (else triplet)))) (cond ((string-match "^arm[^-]*-([^-]+-)?linux-gnueabihf" triplet) "armhf-linux") + ;; Otherwise it will show up as x86_64-linux... which isn't wrong. + ((string-match "x86_64-linux-gnux32" triplet) "x86_64-linux-gnux32") ((string-match "^([^-]+)-([^-]+-)?linux-gnu.*" triplet) => (lambda (m) -- Efraim Flashner <efraim <at> 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
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.