guix-commits
[Top][All Lists]
Advanced

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

30/350: build-system: cargo: Use platform-rust-target.


From: guix-commits
Subject: 30/350: build-system: cargo: Use platform-rust-target.
Date: Sun, 15 Dec 2024 02:13:28 -0500 (EST)

efraim pushed a commit to branch rust-team
in repository guix.

commit 65bb27e8ff9c9a4708c0391865179bae391e1a92
Author: Efraim Flashner <efraim@flashner.co.il>
AuthorDate: Mon Dec 2 21:19:06 2024 +0200

    build-system: cargo: Use platform-rust-target.
    
    * guix/build-system/cargo.scm (cargo-triplet): New procedure.
    (cargo-build, cargo-cross-build): Add cargo-target.
    (lower): Add cargo-target as private keyword.
    * guix/build/cargo-build-system.scm (configure): Use cargo-target to set
    CARGO_BUILD_TARGET.
    
    Change-Id: I476fa195dce0e9d20d59dda7dd15f050a56a15cb
---
 guix/build-system/cargo.scm       | 13 +++++++++++--
 guix/build/cargo-build-system.scm | 20 ++------------------
 2 files changed, 13 insertions(+), 20 deletions(-)

diff --git a/guix/build-system/cargo.scm b/guix/build-system/cargo.scm
index 0e9a4b1d23..4d4740300d 100644
--- a/guix/build-system/cargo.scm
+++ b/guix/build-system/cargo.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
-;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021, 2024 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +29,7 @@
   #:use-module (guix gexp)
   #:use-module (guix monads)
   #:use-module (guix packages)
+  #:use-module (guix platform)
   #:use-module (guix build-system)
   #:use-module (guix build-system gnu)
   #:use-module (ice-9 match)
@@ -67,6 +68,11 @@ to NAME and VERSION."
   (let ((module (resolve-interface '(gnu packages rust))))
     (module-ref module 'make-rust-sysroot)))
 
+(define (cargo-triplet target)
+  (false-if-exception
+    (platform-rust-target
+      (lookup-platform-by-target-or-system target))))
+
 (define %cargo-utils-modules
   ;; Build-side modules imported by default.
   `((guix build cargo-utils)
@@ -113,6 +119,7 @@ to NAME and VERSION."
                        #:cargo-build-flags #$(sexp->gexp cargo-build-flags)
                        #:cargo-test-flags #$(sexp->gexp cargo-test-flags)
                        #:cargo-package-flags #$(sexp->gexp cargo-package-flags)
+                       #:cargo-target #$(cargo-triplet system)
                        #:features #$(sexp->gexp features)
                        #:skip-build? #$skip-build?
                        #:install-source? #$install-source?
@@ -142,6 +149,7 @@ to NAME and VERSION."
                             (cargo-build-flags ''("--release"))
                             (cargo-test-flags ''("--release"))
                             (cargo-package-flags ''("--no-metadata" 
"--no-verify"))
+                            (cargo-target (cargo-triplet (or target system)))
                             (features ''())
                             (skip-build? #f)
                             (install-source? (not (target-mingw? target)))
@@ -170,6 +178,7 @@ to NAME and VERSION."
                        #:cargo-build-flags #$(sexp->gexp cargo-build-flags)
                        #:cargo-test-flags #$(sexp->gexp cargo-test-flags)
                        #:cargo-package-flags #$(sexp->gexp cargo-package-flags)
+                       #:cargo-target #$(cargo-triplet (or target system))
                        #:features #$(sexp->gexp features)
                        #:skip-build? #$skip-build?
                        #:install-source? #$install-source?
@@ -313,7 +322,7 @@ any dependent crates. This can be a benefits:
   (define private-keywords
     `(#:rust #:inputs #:native-inputs #:outputs
       #:cargo-inputs #:cargo-development-inputs
-      #:rust-sysroot
+      #:rust-sysroot #:cargo-target
       ,@(if target '() '(#:target))))
 
   (bag
diff --git a/guix/build/cargo-build-system.scm 
b/guix/build/cargo-build-system.scm
index 8dcbd461a8..132a811f49 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -120,6 +120,7 @@ libraries or executables."
 
 (define* (configure #:key inputs
                     target system
+                    cargo-target
                     (vendor-dir "guix-vendor")
                     #:allow-other-keys)
   "Vendor Cargo.toml dependencies as guix inputs."
@@ -149,24 +150,7 @@ libraries or executables."
 
   ;; For cross-building
   (when target
-    (setenv "CARGO_BUILD_TARGET"
-            ;; Can this be replaced with platform-rust-architecture?
-            ;; Keep this synchronized with (guix platforms *)
-            (match target
-                   ("aarch64-linux-gnu" "aarch64-unknown-linux-gnu")
-                   ("arm-linux-gnueabihf" "armv7-unknown-linux-gnueabihf")
-                   ("i686-linux-gnu" "i686-unknown-linux-gnu")
-                   ("mips64el-linux-gnu" "mips64el-unknown-linux-gnuabi64")
-                   ("powerpc-linux-gnu" "powerpc-unknown-linux-gnu")
-                   ("powerpc64-linux-gnu" "powerpc64-unknown-linux-gnu")
-                   ("powerpc64le-linux-gnu" "powerpc64le-unknown-linux-gnu")
-                   ("riscv64-linux-gnu" "riscv64gc-unknown-linux-gnu")
-                   ("x86_64-linux-gnu" "x86_64-unknown-linux-gnu")
-                   ("x86_64-linux-gnux32" "x86_64-unknown-linux-gnux32")
-                   ("i586-pc-gnu" "i686-unknown-hurd-gnu")
-                   ("i686-w64-mingw32" "i686-pc-windows-gnu")
-                   ("x86_64-w64-mingw32" "x86_64-pc-windows-gnu")
-                   (else #f)))
+    (setenv "CARGO_BUILD_TARGET" cargo-target)
     (setenv "RUSTFLAGS" (string-append
                           (or (getenv "RUSTFLAGS") "")
                           " --sysroot " (assoc-ref inputs "rust-sysroot")))



reply via email to

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