summary refs log tree commit diff
diff options
context:
space:
mode:
authorFries <fries1234@protonmail.com>2023-09-18 15:19:49 +0300
committerEfraim Flashner <efraim@flashner.co.il>2023-10-18 11:35:39 +0300
commit299a223835f875c9fcb526a76bbe0b7f32cbefaf (patch)
tree790bbba8347336cadf064f28257ae895fff697af
parentfb04d0139e4415e9e6c89c5fb72618b8d80b94bb (diff)
downloadguix-299a223835f875c9fcb526a76bbe0b7f32cbefaf.tar.gz
gnu: Add rust-1.70.
* gnu/packages/rust.scm (rust-1.70): New variable.
* gnu/packages/patches/rust-1.70-fix-rustix-build.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register file.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/patches/rust-1.70-fix-rustix-build.patch21
-rw-r--r--gnu/packages/rust.scm17
3 files changed, 39 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index daacd786a7..bf7cfbf8bd 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1947,6 +1947,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ruby-nokogiri.patch			\
   %D%/packages/patches/rustc-1.54.0-src.patch			\
   %D%/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch	\
+  %D%/packages/patches/rust-1.70-fix-rustix-build.patch	\
   %D%/packages/patches/rust-ring-0.16-missing-files.patch	\
   %D%/packages/patches/rust-ring-0.16-test-files.patch		\
   %D%/packages/patches/i3status-rust-enable-unstable-features.patch	\
diff --git a/gnu/packages/patches/rust-1.70-fix-rustix-build.patch b/gnu/packages/patches/rust-1.70-fix-rustix-build.patch
new file mode 100644
index 0000000000..d72a8fb07a
--- /dev/null
+++ b/gnu/packages/patches/rust-1.70-fix-rustix-build.patch
@@ -0,0 +1,21 @@
+@@ -0,0 +1,20 @@
+--- a/vendor/fd-lock/Cargo.toml        2023-05-31 14:44:48.000000000 -0700
++++ b/vendor/fd-lock/Cargo.toml        2023-07-14 21:19:34.637702319 -0700
+@@ -45,7 +45,7 @@
+
+ [target."cfg(unix)".dependencies.rustix]
+ version = "0.37.0"
+-features = ["fs"]
++features = ["fs", "cc"]
+
+ [target."cfg(windows)".dependencies.windows-sys]
+ version = "0.45.0"
+--- a/src/bootstrap/Cargo.lock 2023-07-11 20:32:40.000000000 -0700
++++ b/src/bootstrap/Cargo.lock 2023-07-14 22:41:53.269284713 -0700
+@@ -618,6 +618,7 @@
+ dependencies = [
+  "bitflags",
++ "cc",
+  "errno",
+  "io-lifetimes",
+  "libc",
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index ca34231803..f0e921375b 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -726,6 +726,23 @@ safety and thread safety guarantees.")
               (for-each delete-file
                         (find-files "vendor" "\\.(a|dll|exe|lib)$")))))))))
 
+(define rust-1.70
+  (let ((base-rust
+         (rust-bootstrapped-package
+          rust-1.69 "1.70.0"
+                      "0z6j7d0ni0rmfznv0w3mrf882m11kyh51g2bxkj40l3s1c0axgxj")))
+   (package
+     (inherit base-rust)
+     (source
+      (origin
+        (inherit (package-source base-rust))
+        ;; Rust 1.70 adds the rustix library which depends on the vendored
+        ;; fd-lock crate.  The fd-lock crate uses Outline assembly which expects
+        ;; a precompiled static library.  Enabling the "cc" feature tells the
+        ;; build.rs script to compile the assembly files instead of searching
+        ;; for a precompiled library.
+        (patches (search-patches "rust-1.70-fix-rustix-build.patch")))))))
+
 ;;; Note: Only the latest version of Rust is supported and tested.  The
 ;;; intermediate rusts are built for bootstrapping purposes and should not
 ;;; be relied upon.  This is to ease maintenance and reduce the time