Page MenuHomeFreeBSD

lang/rust: Update to 1.35.0
ClosedPublic

Authored by tobik on May 21 2019, 10:53 AM.

Details

Summary
Test Plan

11.2/i386 ok
12.0/amd64 ok
12.0/i386 ok
13.0/amd64 ok
aarch64 ok (tested by @mikael.urankar_gmail.com)
powerpc64 ok (tested by @pkubaj)

@pkubaj @mikael.urankar_gmail.com Please let me now before release date if you want to do test builds on powerpc64, arm and need more time for it. Otherwise this will land on 2019-05-23 or 2019-05-24 assuming QA on amd64 and i386 is ok.

Diff Detail

Repository
rP FreeBSD ports repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

  • Remove upstreamed libc patches

Build failed:

   Compiling petgraph v0.4.13
error[E0428]: the name `c_char` is defined multiple times
  --> /usr/local/poudriere/ports/default/lang/rust/work/rustc-1.35.0-src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs:32:1
   |
1  | pub type c_char = u8;
   | --------------------- previous definition of the type `c_char` here
...
32 | pub type c_char = u8;
   | ^^^^^^^^^^^^^^^^^^^^^ `c_char` redefined here
   |
   = note: `c_char` must be defined only once in the type namespace of this module

error[E0428]: the name `c_long` is defined multiple times
  --> /usr/local/poudriere/ports/default/lang/rust/work/rustc-1.35.0-src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs:33:1
   |
2  | pub type c_long = i64;
   | ---------------------- previous definition of the type `c_long` here
...
33 | pub type c_long = i64;
   | ^^^^^^^^^^^^^^^^^^^^^^ `c_long` redefined here
   |
   = note: `c_long` must be defined only once in the type namespace of this module

error[E0428]: the name `c_ulong` is defined multiple times
  --> /usr/local/poudriere/ports/default/lang/rust/work/rustc-1.35.0-src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs:34:1
   |
3  | pub type c_ulong = u64;
   | ----------------------- previous definition of the type `c_ulong` here
...
34 | pub type c_ulong = u64;
   | ^^^^^^^^^^^^^^^^^^^^^^^ `c_ulong` redefined here
   |
   = note: `c_ulong` must be defined only once in the type namespace of this module

error[E0428]: the name `time_t` is defined multiple times
  --> /usr/local/poudriere/ports/default/lang/rust/work/rustc-1.35.0-src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs:35:1
   |
4  | pub type time_t = i64;
   | ---------------------- previous definition of the type `time_t` here
...
35 | pub type time_t = i64;
   | ^^^^^^^^^^^^^^^^^^^^^^ `time_t` redefined here
   |
   = note: `time_t` must be defined only once in the type namespace of this module

error[E0428]: the name `suseconds_t` is defined multiple times
  --> /usr/local/poudriere/ports/default/lang/rust/work/rustc-1.35.0-src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs:36:1
   |
5  | pub type suseconds_t = i64;
   | --------------------------- previous definition of the type `suseconds_t` here
...
36 | pub type suseconds_t = i64;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `suseconds_t` redefined here
   |
   = note: `suseconds_t` must be defined only once in the type namespace of this module

error[E0428]: the name `stat` is defined multiple times
  --> /usr/local/poudriere/ports/default/lang/rust/work/rustc-1.35.0-src/vendor/libc/src/macros.rs:78:13
   |
78 |               pub struct $i { $($field)* }
   |               -------------
   |               |
   |               `stat` redefined here
   |               previous definition of the type `stat` here
   |
  ::: /usr/local/poudriere/ports/default/lang/rust/work/rustc-1.35.0-src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs:7:1
   |
7  | / s! {
8  | |     pub struct stat {
9  | |         pub st_dev: ::dev_t,
10 | |         pub st_ino: ::ino_t,
...  |
30 | |     }
31 | | }
   | |_- in this macro invocation
   |
   = note: `stat` must be defined only once in the type namespace of this module

   Compiling cmake v0.1.33
error[E0119]: conflicting implementations of trait `core::marker::Copy` for type `unix::bsd::freebsdlike::freebsd::powerpc64::stat`:
  --> /usr/local/poudriere/ports/default/lang/rust/work/rustc-1.35.0-src/vendor/libc/src/macros.rs:80:9
   |
80 |           impl ::Copy for $i {}
   |           ^^^^^^^^^^^^^^^^^^
   |           |
   |           first implementation here
   |           conflicting implementation for `unix::bsd::freebsdlike::freebsd::powerpc64::stat`
   |
  ::: /usr/local/poudriere/ports/default/lang/rust/work/rustc-1.35.0-src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs:38:1
   |
38 | / s! {
39 | |     pub struct stat {
40 | |         pub st_dev: ::dev_t,
41 | |         pub st_ino: ::ino_t,
...  |
61 | |     }
62 | | }
   | |_- in this macro invocation

error[E0119]: conflicting implementations of trait `core::clone::Clone` for type `unix::bsd::freebsdlike::freebsd::powerpc64::stat`:
  --> /usr/local/poudriere/ports/default/lang/rust/work/rustc-1.35.0-src/vendor/libc/src/macros.rs:81:9
   |
81 |           impl ::Clone for $i {
   |           ^^^^^^^^^^^^^^^^^^^
   |           |
   |           first implementation here
   |           conflicting implementation for `unix::bsd::freebsdlike::freebsd::powerpc64::stat`
   |
  ::: /usr/local/poudriere/ports/default/lang/rust/work/rustc-1.35.0-src/vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs:38:1
   |
38 | / s! {
39 | |     pub struct stat {
40 | |         pub st_dev: ::dev_t,
41 | |         pub st_ino: ::ino_t,
...  |
61 | |     }
62 | | }
   | |_- in this macro invocation

error: aborting due to 8 previous errors

Some errors occurred: E0119, E0428.
For more information about an error, try `rustc --explain E0119`.
error: Could not compile `libc`.
warning: build failed, waiting for other jobs to finish...
  • Crank bootstraps

We need updated bootstraps for armv6, armv7, aarch64, powerpc64. rustc 1.34.2 (though probably 1.34.0 and 1.34.1 would also be ok) and cargo 0.35.0.

  • Rebase for dns/doh-proxy update

Build failed:

Sorry about that. I forgot to remove a bunch of patches. It builds
fine on 12.0/amd64 now so please retry. The distcache has probably also
caught up with my ~/public_distfiles for the tier 2 bootstraps now.

  • www/seamonkey needs PORTREVISION bump for RUST option
  • lang/rust fails check-plist due to orphaned files from bundled LLVM, see P260

Looks like there's some change in Altivec code:

error[E0432]: unresolved import `mem`
  --> src/libstd/../stdsimd/crates/std_detect/src/detect/os/freebsd/auxvec.rs:45:9
   |
45 |     use mem;
   |         ^^^ no `mem` external crate

error: aborting due to previous error

For more information about this error, try `rustc --explain E0432`.
error: Could not compile `std`.

Looks like there's some change in Altivec code:

error[E0432]: unresolved import `mem`
  --> src/libstd/../stdsimd/crates/std_detect/src/detect/os/freebsd/auxvec.rs:45:9
   |
45 |     use mem;
   |         ^^^ no `mem` external crate

error: aborting due to previous error

For more information about this error, try `rustc --explain E0432`.
error: Could not compile `std`.

Try changing use mem; to use crate::mem;.

  • Bump revision of www/seamonkey too
  • Attempt to fix build on powerpc64 (use mem -> use crate::mem)
  • Apply band-aid and avoid restarting the LLVM build during the install phase and staging it badly (fix check-plist)

@jbeich Thanks for pointing this out. It seems that Rust is now always assuming that it needs to rebuild LLVM during install when it is not being built from a Git checkout. And since we are passing DESTDIR=${STAGEDIR} explicitly in do-install it gets copied into STAGEDIR the second time around.

It's ok on aarch64, I won't have time to check the other arches.

OK for me, I successfully built on 12.0-RELEASE/powerpc64.

This revision was not accepted when it landed; it landed in state Needs Review.May 24 2019, 3:25 AM
Closed by commit rP502416: lang/rust: Update to 1.35.0 (authored by tobik). · Explain Why
This revision was automatically updated to reflect the committed changes.