gnu: rust: Update to 1.31.1.

* gnu/patches/rust-1.30-gdb-llvm.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/rust.scm (rust): Rename to...
(rust-1.29): ...this.
(rust-1.30): New variable.
(rust): New variable.

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
This commit is contained in:
Ivan Petkov 2019-02-27 19:53:21 -08:00 committed by Danny Milosavljevic
parent ac5aad535c
commit 1a3db0b22f
No known key found for this signature in database
GPG Key ID: E71A35542C30BAA5
3 changed files with 172 additions and 1 deletions

View File

@ -1226,6 +1226,7 @@ dist_patch_DATA = \
%D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \ %D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \
%D%/packages/patches/rust-bootstrap-stage0-test.patch \ %D%/packages/patches/rust-bootstrap-stage0-test.patch \
%D%/packages/patches/rust-coresimd-doctest.patch \ %D%/packages/patches/rust-coresimd-doctest.patch \
%D%/packages/patches/rust-1.30-gdb-llvm.patch \
%D%/packages/patches/rust-reproducible-builds.patch \ %D%/packages/patches/rust-reproducible-builds.patch \
%D%/packages/patches/rxvt-unicode-escape-sequences.patch \ %D%/packages/patches/rxvt-unicode-escape-sequences.patch \
%D%/packages/patches/scalapack-blacs-mpi-deprecations.patch \ %D%/packages/patches/scalapack-blacs-mpi-deprecations.patch \

View File

@ -0,0 +1,89 @@
Tweak some gdb tests which were broken during LLVM upgrades.
This has been subsequently fixed upstream in later rustc versions,
but still needed to bootstrap some earlier versions of the compiler.
diff -r -u rustc-1.30.1-src-orig/src/test/debuginfo/borrowed-c-style-enum.rs rustc-1.30.1-src/src/test/debuginfo/borrowed-c-style-enum.rs
--- rustc-1.30.1-src-orig/src/test/debuginfo/borrowed-c-style-enum.rs 2019-02-04 12:49:34.055483896 -0800
+++ rustc-1.30.1-src/src/test/debuginfo/borrowed-c-style-enum.rs 2019-02-04 13:01:10.915950356 -0800
@@ -18,15 +18,15 @@
// gdb-command:print *the_a_ref
// gdbg-check:$1 = TheA
-// gdbr-check:$1 = borrowed_c_style_enum::ABC::TheA
+// gdbr-check:$1 = borrowed_c_style_enum::TheA
// gdb-command:print *the_b_ref
// gdbg-check:$2 = TheB
-// gdbr-check:$2 = borrowed_c_style_enum::ABC::TheB
+// gdbr-check:$2 = borrowed_c_style_enum::TheB
// gdb-command:print *the_c_ref
// gdbg-check:$3 = TheC
-// gdbr-check:$3 = borrowed_c_style_enum::ABC::TheC
+// gdbr-check:$3 = borrowed_c_style_enum::TheC
// === LLDB TESTS ==================================================================================
diff -r -u rustc-1.30.1-src-orig/src/test/debuginfo/c-style-enum-in-composite.rs rustc-1.30.1-src/src/test/debuginfo/c-style-enum-in-composite.rs
--- rustc-1.30.1-src-orig/src/test/debuginfo/c-style-enum-in-composite.rs 2019-02-04 12:49:34.051483727 -0800
+++ rustc-1.30.1-src/src/test/debuginfo/c-style-enum-in-composite.rs 2019-02-04 13:02:00.981997525 -0800
@@ -19,31 +19,31 @@
// gdb-command:print tuple_interior_padding
// gdbg-check:$1 = {__0 = 0, __1 = OneHundred}
-// gdbr-check:$1 = (0, c_style_enum_in_composite::AnEnum::OneHundred)
+// gdbr-check:$1 = (0, c_style_enum_in_composite::OneHundred)
// gdb-command:print tuple_padding_at_end
// gdbg-check:$2 = {__0 = {__0 = 1, __1 = OneThousand}, __1 = 2}
-// gdbr-check:$2 = ((1, c_style_enum_in_composite::AnEnum::OneThousand), 2)
+// gdbr-check:$2 = ((1, c_style_enum_in_composite::OneThousand), 2)
// gdb-command:print tuple_different_enums
// gdbg-check:$3 = {__0 = OneThousand, __1 = MountainView, __2 = OneMillion, __3 = Vienna}
-// gdbr-check:$3 = (c_style_enum_in_composite::AnEnum::OneThousand, c_style_enum_in_composite::AnotherEnum::MountainView, c_style_enum_in_composite::AnEnum::OneMillion, c_style_enum_in_composite::AnotherEnum::Vienna)
+// gdbr-check:$3 = (c_style_enum_in_composite::OneThousand, c_style_enum_in_composite::MountainView, c_style_enum_in_composite::OneMillion, c_style_enum_in_composite::Vienna)
// gdb-command:print padded_struct
// gdbg-check:$4 = {a = 3, b = OneMillion, c = 4, d = Toronto, e = 5}
-// gdbr-check:$4 = c_style_enum_in_composite::PaddedStruct {a: 3, b: c_style_enum_in_composite::AnEnum::OneMillion, c: 4, d: c_style_enum_in_composite::AnotherEnum::Toronto, e: 5}
+// gdbr-check:$4 = c_style_enum_in_composite::PaddedStruct {a: 3, b: c_style_enum_in_composite::OneMillion, c: 4, d: c_style_enum_in_composite::Toronto, e: 5}
// gdb-command:print packed_struct
// gdbg-check:$5 = {a = 6, b = OneHundred, c = 7, d = Vienna, e = 8}
-// gdbr-check:$5 = c_style_enum_in_composite::PackedStruct {a: 6, b: c_style_enum_in_composite::AnEnum::OneHundred, c: 7, d: c_style_enum_in_composite::AnotherEnum::Vienna, e: 8}
+// gdbr-check:$5 = c_style_enum_in_composite::PackedStruct {a: 6, b: c_style_enum_in_composite::OneHundred, c: 7, d: c_style_enum_in_composite::Vienna, e: 8}
// gdb-command:print non_padded_struct
// gdbg-check:$6 = {a = OneMillion, b = MountainView, c = OneThousand, d = Toronto}
-// gdbr-check:$6 = c_style_enum_in_composite::NonPaddedStruct {a: c_style_enum_in_composite::AnEnum::OneMillion, b: c_style_enum_in_composite::AnotherEnum::MountainView, c: c_style_enum_in_composite::AnEnum::OneThousand, d: c_style_enum_in_composite::AnotherEnum::Toronto}
+// gdbr-check:$6 = c_style_enum_in_composite::NonPaddedStruct {a: c_style_enum_in_composite::OneMillion, b: c_style_enum_in_composite::MountainView, c: c_style_enum_in_composite::OneThousand, d: c_style_enum_in_composite::Toronto}
// gdb-command:print struct_with_drop
// gdbg-check:$7 = {__0 = {a = OneHundred, b = Vienna}, __1 = 9}
-// gdbr-check:$7 = (c_style_enum_in_composite::StructWithDrop {a: c_style_enum_in_composite::AnEnum::OneHundred, b: c_style_enum_in_composite::AnotherEnum::Vienna}, 9)
+// gdbr-check:$7 = (c_style_enum_in_composite::StructWithDrop {a: c_style_enum_in_composite::OneHundred, b: c_style_enum_in_composite::Vienna}, 9)
// === LLDB TESTS ==================================================================================
diff -r -u rustc-1.30.1-src-orig/src/test/debuginfo/gdb-pretty-struct-and-enums-pre-gdb-7-7.rs rustc-1.30.1-src/src/test/debuginfo/gdb-pretty-struct-and-enums-pre-gdb-7-7.rs
--- rustc-1.30.1-src-orig/src/test/debuginfo/gdb-pretty-struct-and-enums-pre-gdb-7-7.rs 2019-02-04 12:49:34.043483393 -0800
+++ rustc-1.30.1-src/src/test/debuginfo/gdb-pretty-struct-and-enums-pre-gdb-7-7.rs 2019-02-04 13:02:17.954691634 -0800
@@ -27,15 +27,15 @@
// gdb-command: print c_style_enum1
// gdbg-check:$3 = CStyleEnumVar1
-// gdbr-check:$3 = gdb_pretty_struct_and_enums_pre_gdb_7_7::CStyleEnum::CStyleEnumVar1
+// gdbr-check:$3 = gdb_pretty_struct_and_enums_pre_gdb_7_7::CStyleEnumVar1
// gdb-command: print c_style_enum2
// gdbg-check:$4 = CStyleEnumVar2
-// gdbr-check:$4 = gdb_pretty_struct_and_enums_pre_gdb_7_7::CStyleEnum::CStyleEnumVar2
+// gdbr-check:$4 = gdb_pretty_struct_and_enums_pre_gdb_7_7::CStyleEnumVar2
// gdb-command: print c_style_enum3
// gdbg-check:$5 = CStyleEnumVar3
-// gdbr-check:$5 = gdb_pretty_struct_and_enums_pre_gdb_7_7::CStyleEnum::CStyleEnumVar3
+// gdbr-check:$5 = gdb_pretty_struct_and_enums_pre_gdb_7_7::CStyleEnumVar3
#![allow(dead_code, unused_variables)]

View File

@ -784,7 +784,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
;; The thinlto test should pass with llvm 6. ;; The thinlto test should pass with llvm 6.
(delete 'disable-thinlto-test)))))))) (delete 'disable-thinlto-test))))))))
(define-public rust (define-public rust-1.29
(let ((base-rust (let ((base-rust
(rust-bootstrapped-package rust-1.28 "1.29.2" (rust-bootstrapped-package rust-1.28 "1.29.2"
"1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h" "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"
@ -793,3 +793,84 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
"rust-reproducible-builds.patch")))) "rust-reproducible-builds.patch"))))
(package (package
(inherit base-rust)))) (inherit base-rust))))
(define-public rust-1.30
(let ((base-rust
(rust-bootstrapped-package rust-1.29 "1.30.1"
"0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"
#:patches
'("rust-1.25-accept-more-detailed-gdb-lines.patch"
"rust-1.30-gdb-llvm.patch"
"rust-reproducible-builds.patch"))))
(package
(inherit base-rust)
(inputs
;; Use LLVM 7.0
(alist-replace "llvm" (list llvm)
(package-inputs base-rust)))
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
((#:phases phases)
`(modify-phases ,phases
(add-after 'patch-cargo-tests 'patch-cargo-env-shebang
(lambda* (#:key inputs #:allow-other-keys)
(let ((coreutils (assoc-ref inputs "coreutils")))
(substitute* "src/tools/cargo/tests/testsuite/fix.rs"
;; Cargo has a test which explicitly sets a
;; RUSTC_WRAPPER environment variable which points
;; to /usr/bin/env. Since it's not a shebang, it
;; needs to be manually patched
(("\"/usr/bin/env\"")
(string-append "\"" coreutils "/bin/env\"")))
#t)))
(add-after 'patch-cargo-env-shebang 'ignore-cargo-package-tests
(lambda* _
(substitute* "src/tools/cargo/tests/testsuite/package.rs"
;; These tests largely check that cargo outputs warning/error
;; messages as expected. It seems that cargo outputs an
;; absolute path to something in the store instead of the
;; expected relative path (e.g. `[..]`) so we'll ignore
;; these for now
(("fn include") "#[ignore]\nfn include")
(("fn exclude") "#[ignore]\nfn exclude"))
#t))
;; Appears that this test isn't currently running and has been
;; moved elsewhere, so the patch doesn't apply.
(delete 'disable-amd64-avx-test))))))))
(define-public rust
(let ((base-rust
(rust-bootstrapped-package rust-1.30 "1.31.1"
"0sk84ff0cklybcp0jbbxcw7lk7mrm6kb6km5nzd6m64dy0igrlli"
#:patches
'("rust-1.25-accept-more-detailed-gdb-lines.patch"
"rust-1.30-gdb-llvm.patch"
"rust-reproducible-builds.patch"))))
(package
(inherit base-rust)
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
((#:phases phases)
`(modify-phases ,phases
(add-after 'patch-tests 'patch-command-exec-tests
(lambda* (#:key inputs #:allow-other-keys)
(let ((coreutils (assoc-ref inputs "coreutils")))
(substitute* "src/test/run-pass/command-exec.rs"
;; This test suite includes some tests that the stdlib's
;; `Command` execution properly handles situations where
;; the environment or PATH variable are empty, but this
;; fails since we don't have `echo` available in the usual
;; Linux directories.
;; NB: the leading space is so we don't fail a tidy check
;; for trailing whitespace, and the newlines are to ensure
;; we don't exceed the 100 chars tidy check as well
((" Command::new\\(\"echo\"\\)")
(string-append "\nCommand::new(\"" coreutils "/bin/echo\")\n")))
#t)))
(add-after 'patch-tests 'patch-process-docs-rev-cmd
(lambda* _
;; Disable some doc tests which depend on the "rev" command
;; https://github.com/rust-lang/rust/pull/58746
(substitute* "src/libstd/process.rs"
(("```rust") "```rust,no_run"))
#t)))))))))