mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-01-19 14:07:01 +01:00
gnu: rust: Update to 1.82.
gnu/packages/rust.scm (rust-1.81)[source]: Add patch to fix bootstrap of 1.82 on riscv64. gnu/packages/rust.scm (rust-1.82): New variable. gnu/packages/rust.scm (rust): Update to 1.82. [source]: Update snippet for newer version. [arguments]: Disable more tests in the 'disable-tests-requiring-crates.io phase. Change-Id: If6ff59011edca7a230946a3ba77b51f26cd47789 Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
This commit is contained in:
parent
00acb49a99
commit
ff785d32e3
3 changed files with 118 additions and 16 deletions
|
@ -2133,6 +2133,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch \
|
||||
%D%/packages/patches/rust-1.70-fix-rustix-build.patch \
|
||||
%D%/packages/patches/rust-1.78-unwinding-fix.patch \
|
||||
%D%/packages/patches/rust-1.81-fix-riscv64-bootstrap.patch \
|
||||
%D%/packages/patches/rust-cargo-edit-remove-ureq.patch \
|
||||
%D%/packages/patches/rust-ring-0.17-ring-core.patch \
|
||||
%D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \
|
||||
|
|
40
gnu/packages/patches/rust-1.81-fix-riscv64-bootstrap.patch
Normal file
40
gnu/packages/patches/rust-1.81-fix-riscv64-bootstrap.patch
Normal file
|
@ -0,0 +1,40 @@
|
|||
From 99e6a28804eac57faa37134d61a2bb17069996a2 Mon Sep 17 00:00:00 2001
|
||||
From: Nicholas Bishop <nicholasbishop@google.com>
|
||||
Date: Thu, 30 May 2024 18:32:46 -0400
|
||||
Subject: [PATCH] Add f16/f128 handling in a couple places
|
||||
|
||||
---
|
||||
compiler/rustc_codegen_llvm/src/abi.rs | 2 ++
|
||||
compiler/rustc_target/src/abi/call/mod.rs | 2 ++
|
||||
2 files changed, 4 insertions(+)
|
||||
|
||||
diff --git a/compiler/rustc_codegen_llvm/src/abi.rs b/compiler/rustc_codegen_llvm/src/abi.rs
|
||||
index a6a3f0f964611..2e52d3f426a83 100644
|
||||
--- a/compiler/rustc_codegen_llvm/src/abi.rs
|
||||
+++ b/compiler/rustc_codegen_llvm/src/abi.rs
|
||||
@@ -121,8 +121,10 @@ impl LlvmType for Reg {
|
||||
match self.kind {
|
||||
RegKind::Integer => cx.type_ix(self.size.bits()),
|
||||
RegKind::Float => match self.size.bits() {
|
||||
+ 16 => cx.type_f16(),
|
||||
32 => cx.type_f32(),
|
||||
64 => cx.type_f64(),
|
||||
+ 128 => cx.type_f128(),
|
||||
_ => bug!("unsupported float: {:?}", self),
|
||||
},
|
||||
RegKind::Vector => cx.type_vector(cx.type_i8(), self.size.bytes()),
|
||||
diff --git a/compiler/rustc_target/src/abi/call/mod.rs b/compiler/rustc_target/src/abi/call/mod.rs
|
||||
index fc79c9232d1bd..f83d0492004a2 100644
|
||||
--- a/compiler/rustc_target/src/abi/call/mod.rs
|
||||
+++ b/compiler/rustc_target/src/abi/call/mod.rs
|
||||
@@ -236,8 +236,10 @@ impl Reg {
|
||||
_ => panic!("unsupported integer: {self:?}"),
|
||||
},
|
||||
RegKind::Float => match self.size.bits() {
|
||||
+ 16 => dl.f16_align.abi,
|
||||
32 => dl.f32_align.abi,
|
||||
64 => dl.f64_align.abi,
|
||||
+ 128 => dl.f128_align.abi,
|
||||
_ => panic!("unsupported float: {self:?}"),
|
||||
},
|
||||
RegKind::Vector => dl.vector_align(self.size).abi,
|
|
@ -1051,8 +1051,45 @@ (define-public rust-1.80
|
|||
(string-append all ", \"use-libc\""))))))))))
|
||||
|
||||
(define-public rust-1.81
|
||||
(rust-bootstrapped-package rust-1.80 "1.81.0"
|
||||
"19yggj1qivdhf68gx2652cfi7nxjkdgy39wh7h6facpzppz4h947"))
|
||||
(let ((base-rust (rust-bootstrapped-package rust-1.80 "1.81.0"
|
||||
"19yggj1qivdhf68gx2652cfi7nxjkdgy39wh7h6facpzppz4h947")))
|
||||
(package
|
||||
(inherit base-rust)
|
||||
(source
|
||||
(origin
|
||||
(inherit (package-source base-rust))
|
||||
;; see https://github.com/rust-lang/rust/issues/129268#issuecomment-2430133779
|
||||
(patches (search-patches "rust-1.81-fix-riscv64-bootstrap.patch")))))))
|
||||
|
||||
(define-public rust-1.82
|
||||
(let ((base-rust (rust-bootstrapped-package rust-1.81 "1.82.0"
|
||||
"0ajiryki2aqsg3ydx3nfhrb5i1mmxvasfszs9qblw66skr8g8lvw")))
|
||||
(package
|
||||
(inherit base-rust)
|
||||
(source
|
||||
(origin
|
||||
(inherit (package-source base-rust))
|
||||
(patches '())))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments base-rust)
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(replace 'patch-cargo-checksums
|
||||
(lambda _
|
||||
(substitute* (cons* "Cargo.lock"
|
||||
"src/bootstrap/Cargo.lock"
|
||||
"library/Cargo.lock"
|
||||
(filter
|
||||
;; Don't mess with the lock files in the
|
||||
;; Cargo testsuite; it messes up the tests.
|
||||
(lambda (path)
|
||||
(not (string-contains
|
||||
path "cargo/tests/testsuite")))
|
||||
(find-files "src/tools" "Cargo.lock")))
|
||||
(("(checksum = )\".*\"" all name)
|
||||
(string-append name "\"" ,%cargo-reference-hash "\"")))
|
||||
(generate-all-checksums "vendor"))))))))))
|
||||
|
||||
|
||||
(define (make-ignore-test-list strs)
|
||||
"Function to make creating a list to ignore tests a bit easier."
|
||||
|
@ -1068,7 +1105,7 @@ (define (make-ignore-test-list strs)
|
|||
;;; Here we take the latest included Rust, make it public, and re-enable tests
|
||||
;;; and extra components such as rustfmt.
|
||||
(define-public rust
|
||||
(let ((base-rust rust-1.81))
|
||||
(let ((base-rust rust-1.82))
|
||||
(package
|
||||
(inherit base-rust)
|
||||
(properties (append
|
||||
|
@ -1082,32 +1119,50 @@ (define-public rust
|
|||
'(begin
|
||||
(for-each delete-file-recursively
|
||||
'("src/llvm-project"
|
||||
"vendor/jemalloc-sys-0.5.3+5.3.0-patched/jemalloc"
|
||||
"vendor/jemalloc-sys-0.5.4+5.3.0-patched/jemalloc"
|
||||
"vendor/openssl-src-111.17.0+1.1.1m/openssl"
|
||||
"vendor/openssl-src-111.28.2+1.1.1w/openssl"
|
||||
"vendor/tikv-jemalloc-sys-0.5.4+5.3.0-patched/jemalloc"
|
||||
;; These are referenced by the cargo output
|
||||
;; so we unbundle them.
|
||||
"vendor/curl-sys-0.4.72+curl-8.6.0/curl"
|
||||
"vendor/curl-sys-0.4.52+curl-7.81.0/curl"
|
||||
"vendor/curl-sys-0.4.74+curl-8.9.0/curl"
|
||||
"vendor/libffi-sys-2.3.0/libffi"
|
||||
"vendor/libnghttp2-sys-0.1.9+1.58.0/nghttp2"
|
||||
"vendor/libz-sys-1.1.16/src/zlib"))
|
||||
"vendor/libz-sys-1.1.3/src/zlib"
|
||||
"vendor/libz-sys-1.1.18/src/zlib"
|
||||
"vendor/libz-sys-1.1.19/src/zlib"))
|
||||
;; Use the packaged nghttp2
|
||||
(delete-file "vendor/libnghttp2-sys-0.1.9+1.58.0/build.rs")
|
||||
(with-output-to-file "vendor/libnghttp2-sys-0.1.9+1.58.0/build.rs"
|
||||
(lambda _
|
||||
(format #t "fn main() {~@
|
||||
(for-each
|
||||
(lambda (ver)
|
||||
(let ((vendored-dir (format #f "vendor/libnghttp2-sys-~a/nghttp2" ver))
|
||||
(build-rs (format #f "vendor/libnghttp2-sys-~a/build.rs" ver)))
|
||||
(delete-file-recursively vendored-dir)
|
||||
(delete-file build-rs)
|
||||
(with-output-to-file build-rs
|
||||
(lambda _
|
||||
(format #t "fn main() {~@
|
||||
println!(\"cargo:rustc-link-lib=nghttp2\");~@
|
||||
}~%")))
|
||||
}~%")))))
|
||||
'("0.1.10+1.61.0"
|
||||
"0.1.7+1.45.0"))
|
||||
;; Remove vendored dynamically linked libraries.
|
||||
;; find . -not -type d -executable -exec file {} \+ | grep ELF
|
||||
;; Also remove the bundled (mostly Windows) libraries.
|
||||
(for-each delete-file
|
||||
(find-files "vendor" "\\.(a|dll|exe|lib)$"))
|
||||
;; Adjust vendored dependency to explicitly use rustix with libc backend.
|
||||
(substitute* '("vendor/tempfile-3.7.1/Cargo.toml"
|
||||
"vendor/tempfile-3.10.1/Cargo.toml")
|
||||
(("features = \\[\"fs\"" all)
|
||||
(string-append all ", \"use-libc\"")))))))
|
||||
(for-each
|
||||
(lambda (ver)
|
||||
(let ((f (format #f "vendor/tempfile-~a/Cargo.toml" ver)))
|
||||
(substitute* f
|
||||
(("features = \\[\"fs\"" all)
|
||||
(string-append all ", \"use-libc\"")))))
|
||||
'("3.3.0"
|
||||
"3.4.0"
|
||||
"3.7.1"
|
||||
"3.10.1"
|
||||
"3.12.0"))))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments
|
||||
(strip-keyword-arguments '(#:tests?)
|
||||
|
@ -1217,7 +1272,13 @@ (define-public rust
|
|||
(lambda _
|
||||
(substitute* "src/tools/cargo/tests/testsuite/install.rs"
|
||||
,@(make-ignore-test-list
|
||||
'("fn install_global_cargo_config")))))
|
||||
'("fn install_global_cargo_config")))
|
||||
(substitute* "src/tools/cargo/tests/testsuite/cargo_info/within_ws_with_alternative_registry/mod.rs"
|
||||
,@(make-ignore-test-list
|
||||
'("fn case")))
|
||||
(substitute* "src/tools/cargo/tests/testsuite/package.rs"
|
||||
,@(make-ignore-test-list
|
||||
'("fn workspace_with_local_deps_index_mismatch")))))
|
||||
(add-after 'unpack 'disable-miscellaneous-broken-tests
|
||||
(lambda _
|
||||
(substitute* "src/tools/cargo/tests/testsuite/check_cfg.rs"
|
||||
|
|
Loading…
Reference in a new issue