mirror of
https://git.proxmox.com/git/rustc
synced 2026-01-27 12:08:17 +00:00
New upstream version 1.33.0+dfsg1
This commit is contained in:
parent
69743fb678
commit
0731742a19
@ -39,7 +39,7 @@ don't know about, so please report liberally. If you're not sure if something
|
||||
is a bug or not, feel free to file a bug anyway.
|
||||
|
||||
**If you believe reporting your bug publicly represents a security risk to Rust users,
|
||||
please follow our [instructions for reporting security vulnerabilities](https://www.rust-lang.org/security.html)**.
|
||||
please follow our [instructions for reporting security vulnerabilities](https://www.rust-lang.org/policies/security)**.
|
||||
|
||||
If you have the chance, before reporting a bug, please [search existing
|
||||
issues](https://github.com/rust-lang/rust/search?q=&type=Issues&utf8=%E2%9C%93),
|
||||
|
||||
32
COPYRIGHT
32
COPYRIGHT
@ -229,35 +229,3 @@ their own copyright notices and license terms:
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
OF SUCH DAMAGE. */
|
||||
|
||||
* jemalloc, under src/jemalloc:
|
||||
|
||||
Copyright (C) 2002-2014 Jason Evans
|
||||
<jasone@canonware.com>. All rights reserved.
|
||||
Copyright (C) 2007-2012 Mozilla Foundation.
|
||||
All rights reserved.
|
||||
Copyright (C) 2009-2014 Facebook, Inc.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright notice(s),
|
||||
this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice(s),
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S)
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S)
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
OF SUCH DAMAGE.
|
||||
|
||||
1613
Cargo.lock
generated
1613
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -25,7 +25,6 @@ members = [
|
||||
"src/tools/rustdoc-themes",
|
||||
]
|
||||
exclude = [
|
||||
"src/tools/rls/test_data",
|
||||
"build",
|
||||
# HACK(eddyb) This hardcodes the fact that our CI uses `/checkout/obj`.
|
||||
"obj",
|
||||
@ -65,6 +64,9 @@ rustfmt-nightly = { path = "src/tools/rustfmt" }
|
||||
# here
|
||||
rustc-workspace-hack = { path = 'src/tools/rustc-workspace-hack' }
|
||||
|
||||
# See comments in `tools/rustc-std-workspace-core/README.md` for what's going on
|
||||
# here
|
||||
rustc-std-workspace-core = { path = 'src/tools/rustc-std-workspace-core' }
|
||||
|
||||
[patch."https://github.com/rust-lang/rust-clippy"]
|
||||
clippy_lints = { path = "src/tools/clippy/clippy_lints" }
|
||||
rustc_tools_util = { path = "src/tools/clippy/rustc_tools_util" }
|
||||
|
||||
16
README.md
16
README.md
@ -10,7 +10,7 @@ standard library, and documentation.
|
||||
|
||||
Read ["Installation"] from [The Book].
|
||||
|
||||
["Installation"]: https://doc.rust-lang.org/book/second-edition/ch01-01-installation.html
|
||||
["Installation"]: https://doc.rust-lang.org/book/ch01-01-installation.html
|
||||
[The Book]: https://doc.rust-lang.org/book/index.html
|
||||
|
||||
## Building from Source
|
||||
@ -38,7 +38,6 @@ Read ["Installation"] from [The Book].
|
||||
3. Build and install:
|
||||
|
||||
```sh
|
||||
$ git submodule update --init --recursive --progress
|
||||
$ ./x.py build && sudo ./x.py install
|
||||
```
|
||||
|
||||
@ -186,18 +185,15 @@ fetch snapshots, and an OS that can execute the available snapshot binaries.
|
||||
|
||||
Snapshot binaries are currently built and tested on several platforms:
|
||||
|
||||
| Platform / Architecture | x86 | x86_64 |
|
||||
|--------------------------------|-----|--------|
|
||||
| Windows (7, 8, Server 2008 R2) | ✓ | ✓ |
|
||||
| Linux (2.6.18 or later) | ✓ | ✓ |
|
||||
| OSX (10.7 Lion or later) | ✓ | ✓ |
|
||||
| Platform / Architecture | x86 | x86_64 |
|
||||
|--------------------------|-----|--------|
|
||||
| Windows (7, 8, 10, ...) | ✓ | ✓ |
|
||||
| Linux (2.6.18 or later) | ✓ | ✓ |
|
||||
| OSX (10.7 Lion or later) | ✓ | ✓ |
|
||||
|
||||
You may find that other platforms work, but these are our officially
|
||||
supported build environments that are most likely to work.
|
||||
|
||||
Rust currently needs between 600MiB and 1.5GiB of RAM to build, depending on platform.
|
||||
If it hits swap, it will take a very long time to build.
|
||||
|
||||
There is more advice about hacking on Rust in [CONTRIBUTING.md].
|
||||
|
||||
[CONTRIBUTING.md]: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md
|
||||
|
||||
154
RELEASES.md
154
RELEASES.md
@ -1,3 +1,153 @@
|
||||
Version 1.33.0 (2019-02-28)
|
||||
==========================
|
||||
|
||||
Language
|
||||
--------
|
||||
- [You can now use the `cfg(target_vendor)` attribute.][57465] E.g.
|
||||
`#[cfg(target_vendor="apple")] fn main() { println!("Hello Apple!"); }`
|
||||
- [Integer patterns such as in a match expression can now be exhaustive.][56362]
|
||||
E.g. You can have match statement on a `u8` that covers `0..=255` and
|
||||
you would no longer be required to have a `_ => unreachable!()` case.
|
||||
- [You can now have multiple patterns in `if let` and `while let`
|
||||
expressions.][57532] You can do this with the same syntax as a `match`
|
||||
expression. E.g.
|
||||
```rust
|
||||
enum Creature {
|
||||
Crab(String),
|
||||
Lobster(String),
|
||||
Person(String),
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let state = Creature::Crab("Ferris");
|
||||
|
||||
if let Creature::Crab(name) | Creature::Person(name) = state {
|
||||
println!("This creature's name is: {}", name);
|
||||
}
|
||||
}
|
||||
```
|
||||
- [You can now have irrefutable `if let` and `while let` patterns.][57535] Using
|
||||
this feature will by default produce a warning as this behaviour can be
|
||||
unintuitive. E.g. `if let _ = 5 {}`
|
||||
- [You can now use `let` bindings, assignments, expression statements,
|
||||
and irrefutable pattern destructuring in const functions.][57175]
|
||||
- [You can now call unsafe const functions.][57067] E.g.
|
||||
```rust
|
||||
const unsafe fn foo() -> i32 { 5 }
|
||||
const fn bar() -> i32 {
|
||||
unsafe { foo() }
|
||||
}
|
||||
```
|
||||
- [You can now specify multiple attributes in a `cfg_attr` attribute.][57332]
|
||||
E.g. `#[cfg_attr(all(), must_use, optimize)]`
|
||||
- [You can now specify a specific alignment with the `#[repr(packed)]`
|
||||
attribute.][57049] E.g. `#[repr(packed(2))] struct Foo(i16, i32);` is a struct
|
||||
with an alignment of 2 bytes and a size of 6 bytes.
|
||||
- [You can now import an item from a module as an `_`.][56303] This allows you to
|
||||
import a trait's impls, and not have the name in the namespace. E.g.
|
||||
```rust
|
||||
use std::io::Read as _;
|
||||
|
||||
// Allowed as there is only one `Read` in the module.
|
||||
pub trait Read {}
|
||||
```
|
||||
- [You may now use `Rc`, `Arc`, and `Pin` as method receivers][56805].
|
||||
|
||||
Compiler
|
||||
--------
|
||||
- [You can now set a linker flavor for `rustc` with the `-Clinker-flavor`
|
||||
command line argument.][56351]
|
||||
- [The mininum required LLVM version has been bumped to 6.0.][56642]
|
||||
- [Added support for the PowerPC64 architecture on FreeBSD.][57615]
|
||||
- [The `x86_64-fortanix-unknown-sgx` target support has been upgraded to
|
||||
tier 2 support.][57130] Visit the [platform support][platform-support] page for
|
||||
information on Rust's platform support.
|
||||
- [Added support for the `thumbv7neon-linux-androideabi` and
|
||||
`thumbv7neon-unknown-linux-gnueabihf` targets.][56947]
|
||||
- [Added support for the `x86_64-unknown-uefi` target.][56769]
|
||||
|
||||
Libraries
|
||||
---------
|
||||
- [The methods `overflowing_{add, sub, mul, shl, shr}` are now `const`
|
||||
functions for all numeric types.][57566]
|
||||
- [The methods `rotate_left`, `rotate_right`, and `wrapping_{add, sub, mul, shl, shr}`
|
||||
are now `const` functions for all numeric types.][57105]
|
||||
- [The methods `is_positive` and `is_negative` are now `const` functions for
|
||||
all signed numeric types.][57105]
|
||||
- [The `get` method for all `NonZero` types is now `const`.][57167]
|
||||
- [The methods `count_ones`, `count_zeros`, `leading_zeros`, `trailing_zeros`,
|
||||
`swap_bytes`, `from_be`, `from_le`, `to_be`, `to_le` are now `const` for all
|
||||
numeric types.][57234]
|
||||
- [`Ipv4Addr::new` is now a `const` function][57234]
|
||||
|
||||
Stabilized APIs
|
||||
---------------
|
||||
- [`unix::FileExt::read_exact_at`]
|
||||
- [`unix::FileExt::write_all_at`]
|
||||
- [`Option::transpose`]
|
||||
- [`Result::transpose`]
|
||||
- [`convert::identity`]
|
||||
- [`pin::Pin`]
|
||||
- [`marker::Unpin`]
|
||||
- [`marker::PhantomPinned`]
|
||||
- [`Vec::resize_with`]
|
||||
- [`VecDeque::resize_with`]
|
||||
- [`Duration::as_millis`]
|
||||
- [`Duration::as_micros`]
|
||||
- [`Duration::as_nanos`]
|
||||
|
||||
|
||||
Cargo
|
||||
-----
|
||||
- [Cargo should now rebuild a crate if a file was modified during the initial
|
||||
build.][cargo/6484]
|
||||
|
||||
Compatibility Notes
|
||||
-------------------
|
||||
- The methods `str::{trim_left, trim_right, trim_left_matches, trim_right_matches}`
|
||||
are now deprecated in the standard library, and their usage will now produce a warning.
|
||||
Please use the `str::{trim_start, trim_end, trim_start_matches, trim_end_matches}`
|
||||
methods instead.
|
||||
- The `Error::cause` method has been deprecated in favor of `Error::source` which supports
|
||||
downcasting.
|
||||
|
||||
[55982]: https://github.com/rust-lang/rust/pull/55982/
|
||||
[56303]: https://github.com/rust-lang/rust/pull/56303/
|
||||
[56351]: https://github.com/rust-lang/rust/pull/56351/
|
||||
[56362]: https://github.com/rust-lang/rust/pull/56362
|
||||
[56642]: https://github.com/rust-lang/rust/pull/56642/
|
||||
[56769]: https://github.com/rust-lang/rust/pull/56769/
|
||||
[56805]: https://github.com/rust-lang/rust/pull/56805
|
||||
[56947]: https://github.com/rust-lang/rust/pull/56947/
|
||||
[57049]: https://github.com/rust-lang/rust/pull/57049/
|
||||
[57067]: https://github.com/rust-lang/rust/pull/57067/
|
||||
[57105]: https://github.com/rust-lang/rust/pull/57105
|
||||
[57130]: https://github.com/rust-lang/rust/pull/57130/
|
||||
[57167]: https://github.com/rust-lang/rust/pull/57167/
|
||||
[57175]: https://github.com/rust-lang/rust/pull/57175/
|
||||
[57234]: https://github.com/rust-lang/rust/pull/57234/
|
||||
[57332]: https://github.com/rust-lang/rust/pull/57332/
|
||||
[57465]: https://github.com/rust-lang/rust/pull/57465/
|
||||
[57532]: https://github.com/rust-lang/rust/pull/57532/
|
||||
[57535]: https://github.com/rust-lang/rust/pull/57535/
|
||||
[57566]: https://github.com/rust-lang/rust/pull/57566/
|
||||
[57615]: https://github.com/rust-lang/rust/pull/57615/
|
||||
[cargo/6484]: https://github.com/rust-lang/cargo/pull/6484/
|
||||
[`unix::FileExt::read_exact_at`]: https://doc.rust-lang.org/std/os/unix/fs/trait.FileExt.html#method.read_exact_at
|
||||
[`unix::FileExt::write_all_at`]: https://doc.rust-lang.org/std/os/unix/fs/trait.FileExt.html#method.write_all_at
|
||||
[`Option::transpose`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.transpose
|
||||
[`Result::transpose`]: https://doc.rust-lang.org/std/result/enum.Result.html#method.transpose
|
||||
[`convert::identity`]: https://doc.rust-lang.org/std/convert/fn.identity.html
|
||||
[`pin::Pin`]: https://doc.rust-lang.org/std/pin/struct.Pin.html
|
||||
[`marker::Unpin`]: https://doc.rust-lang.org/stable/std/marker/trait.Unpin.html
|
||||
[`marker::PhantomPinned`]: https://doc.rust-lang.org/nightly/std/marker/struct.PhantomPinned.html
|
||||
[`Vec::resize_with`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.resize_with
|
||||
[`VecDeque::resize_with`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.resize_with
|
||||
[`Duration::as_millis`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.as_millis
|
||||
[`Duration::as_micros`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.as_micros
|
||||
[`Duration::as_nanos`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.as_nanos
|
||||
[platform-support]: https://forge.rust-lang.org/platform-support.html
|
||||
|
||||
Version 1.32.0 (2019-01-17)
|
||||
==========================
|
||||
|
||||
@ -22,7 +172,7 @@ Language
|
||||
- [You can now match against literals in macros with the `literal`
|
||||
specifier.][56072] This will match against a literal of any type.
|
||||
E.g. `1`, `'A'`, `"Hello World"`
|
||||
- [Self can now be used as a constructor and pattern for unit and tuple structs.][56365] E.g.
|
||||
- [Self can now be used as a constructor and pattern for unit and tuple structs.][56365] E.g.
|
||||
```rust
|
||||
struct Point(i32, i32);
|
||||
|
||||
@ -312,7 +462,7 @@ Version 1.31.0 (2018-12-06)
|
||||
|
||||
Language
|
||||
--------
|
||||
- 🎉 [This version marks the release of the 2018 edition of Rust.][54057] 🎉
|
||||
- 🎉 [This version marks the release of the 2018 edition of Rust.][54057] 🎉
|
||||
- [New lifetime elision rules now allow for eliding lifetimes in functions and
|
||||
impl headers.][54778] E.g. `impl<'a> Reader for BufReader<'a> {}` can now be
|
||||
`impl Reader for BufReader<'_> {}`. Lifetimes are still required to be defined
|
||||
|
||||
@ -90,6 +90,12 @@
|
||||
# with clang-cl, so this is special in that it only compiles LLVM with clang-cl
|
||||
#clang-cl = '/path/to/clang-cl.exe'
|
||||
|
||||
# Use libc++ when building LLVM instead of libstdc++. This is the default on
|
||||
# platforms already use libc++ as the default C++ library, but this option
|
||||
# allows you to use libc++ even on platforms when it's not. You need to ensure
|
||||
# that your host compiler ships with libc++.
|
||||
#use-libcxx = true
|
||||
|
||||
# =============================================================================
|
||||
# General build configuration options
|
||||
# =============================================================================
|
||||
@ -171,7 +177,7 @@
|
||||
|
||||
# Installs chosen set of extended tools if enables. By default builds all.
|
||||
# If chosen tool failed to build the installation fails.
|
||||
#tools = ["cargo", "rls", "rustfmt", "analysis", "src"]
|
||||
#tools = ["cargo", "rls", "clippy", "rustfmt", "analysis", "src"]
|
||||
|
||||
# Verbosity level: 0 == not verbose, 1 == verbose, 2 == very verbose
|
||||
#verbose = 0
|
||||
@ -282,7 +288,7 @@
|
||||
#codegen-units-std = 1
|
||||
|
||||
# Whether or not debug assertions are enabled for the compiler and standard
|
||||
# library. Also enables compilation of debug! and trace! logging macros.
|
||||
# library.
|
||||
#debug-assertions = false
|
||||
|
||||
# Whether or not debuginfo is emitted
|
||||
|
||||
@ -1 +1 @@
|
||||
9fda7c2237db910e41d6a712e9a2139b352e558b
|
||||
2aa4c46cfdd726e97360c2734835aa3515e8c858
|
||||
@ -2,6 +2,7 @@
|
||||
authors = ["The Rust Project Developers"]
|
||||
name = "bootstrap"
|
||||
version = "0.0.0"
|
||||
edition = "2018"
|
||||
|
||||
[lib]
|
||||
name = "bootstrap"
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// The sheer existence of this file is an awful hack. See the comments in
|
||||
// `src/bootstrap/native.rs` for why this is needed when compiling LLD.
|
||||
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! rustbuild, the Rust build system
|
||||
//!
|
||||
//! This is the entry point for the build system used to compile the `rustc`
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Shim which is passed to Cargo as "rustc" when running the bootstrap.
|
||||
//!
|
||||
//! This shim will take care of some various tasks that our build process
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Shim which is passed to Cargo as "rustdoc" when running the bootstrap.
|
||||
//!
|
||||
//! See comments in `src/bootstrap/rustc.rs` for more information.
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
extern crate cc;
|
||||
|
||||
use std::env;
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2015-2016 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
import argparse
|
||||
import contextlib
|
||||
@ -681,7 +671,7 @@ class RustBuild(object):
|
||||
run(["git", "submodule", "-q", "sync", module],
|
||||
cwd=self.rust_root, verbose=self.verbose)
|
||||
run(["git", "submodule", "update",
|
||||
"--init", "--recursive", module],
|
||||
"--init", "--recursive", "--progress", module],
|
||||
cwd=self.rust_root, verbose=self.verbose)
|
||||
run(["git", "reset", "-q", "--hard"],
|
||||
cwd=module_path, verbose=self.verbose)
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2015-2016 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
"""Bootstrap tests"""
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
use std::any::Any;
|
||||
use std::cell::{Cell, RefCell};
|
||||
use std::collections::BTreeSet;
|
||||
@ -21,20 +11,20 @@ use std::path::{Path, PathBuf};
|
||||
use std::process::Command;
|
||||
use std::time::{Duration, Instant};
|
||||
|
||||
use cache::{Cache, Interned, INTERNER};
|
||||
use check;
|
||||
use compile;
|
||||
use dist;
|
||||
use doc;
|
||||
use flags::Subcommand;
|
||||
use install;
|
||||
use native;
|
||||
use test;
|
||||
use tool;
|
||||
use util::{add_lib_path, exe, libdir};
|
||||
use {Build, DocTests, Mode, GitRepo};
|
||||
use crate::cache::{Cache, Interned, INTERNER};
|
||||
use crate::check;
|
||||
use crate::compile;
|
||||
use crate::dist;
|
||||
use crate::doc;
|
||||
use crate::flags::Subcommand;
|
||||
use crate::install;
|
||||
use crate::native;
|
||||
use crate::test;
|
||||
use crate::tool;
|
||||
use crate::util::{add_lib_path, exe, libdir};
|
||||
use crate::{Build, DocTests, Mode, GitRepo};
|
||||
|
||||
pub use Compiler;
|
||||
pub use crate::Compiler;
|
||||
|
||||
use petgraph::graph::NodeIndex;
|
||||
use petgraph::Graph;
|
||||
@ -389,7 +379,6 @@ impl<'a> Builder<'a> {
|
||||
test::UiFullDeps,
|
||||
test::RunPassFullDeps,
|
||||
test::RunFailFullDeps,
|
||||
test::CompileFailFullDeps,
|
||||
test::Rustdoc,
|
||||
test::Pretty,
|
||||
test::RunPassPretty,
|
||||
@ -417,6 +406,7 @@ impl<'a> Builder<'a> {
|
||||
test::Rustfmt,
|
||||
test::Miri,
|
||||
test::Clippy,
|
||||
test::CompiletestTest,
|
||||
test::RustdocJS,
|
||||
test::RustdocTheme,
|
||||
// Run bootstrap close to the end as it's unlikely to fail
|
||||
@ -459,6 +449,7 @@ impl<'a> Builder<'a> {
|
||||
dist::Rls,
|
||||
dist::Rustfmt,
|
||||
dist::Clippy,
|
||||
dist::Miri,
|
||||
dist::LlvmTools,
|
||||
dist::Lldb,
|
||||
dist::Extended,
|
||||
@ -471,6 +462,7 @@ impl<'a> Builder<'a> {
|
||||
install::Rls,
|
||||
install::Rustfmt,
|
||||
install::Clippy,
|
||||
install::Miri,
|
||||
install::Analysis,
|
||||
install::Src,
|
||||
install::Rustc
|
||||
@ -685,6 +677,11 @@ impl<'a> Builder<'a> {
|
||||
.env("RUSTDOC_REAL", self.rustdoc(host))
|
||||
.env("RUSTDOC_CRATE_VERSION", self.rust_version())
|
||||
.env("RUSTC_BOOTSTRAP", "1");
|
||||
|
||||
// Remove make-related flags that can cause jobserver problems.
|
||||
cmd.env_remove("MAKEFLAGS");
|
||||
cmd.env_remove("MFLAGS");
|
||||
|
||||
if let Some(linker) = self.linker(host) {
|
||||
cmd.env("RUSTC_TARGET_LINKER", linker);
|
||||
}
|
||||
@ -793,7 +790,7 @@ impl<'a> Builder<'a> {
|
||||
}
|
||||
|
||||
// Set a flag for `check` so that certain build scripts can do less work
|
||||
// (e.g. not building/requiring LLVM).
|
||||
// (e.g., not building/requiring LLVM).
|
||||
if cmd == "check" {
|
||||
cargo.env("RUST_CHECK", "1");
|
||||
}
|
||||
@ -923,12 +920,12 @@ impl<'a> Builder<'a> {
|
||||
cargo.env("RUSTC_FORCE_UNSTABLE", "1");
|
||||
|
||||
// Currently the compiler depends on crates from crates.io, and
|
||||
// then other crates can depend on the compiler (e.g. proc-macro
|
||||
// then other crates can depend on the compiler (e.g., proc-macro
|
||||
// crates). Let's say, for example that rustc itself depends on the
|
||||
// bitflags crate. If an external crate then depends on the
|
||||
// bitflags crate as well, we need to make sure they don't
|
||||
// conflict, even if they pick the same version of bitflags. We'll
|
||||
// want to make sure that e.g. a plugin and rustc each get their
|
||||
// want to make sure that e.g., a plugin and rustc each get their
|
||||
// own copy of bitflags.
|
||||
|
||||
// Cargo ensures that this works in general through the -C metadata
|
||||
@ -1247,7 +1244,7 @@ impl<'a> Builder<'a> {
|
||||
#[cfg(test)]
|
||||
mod __test {
|
||||
use super::*;
|
||||
use config::Config;
|
||||
use crate::config::Config;
|
||||
use std::thread;
|
||||
|
||||
fn configure(host: &[&str], target: &[&str]) -> Config {
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
use std::any::{Any, TypeId};
|
||||
use std::borrow::Borrow;
|
||||
use std::cell::RefCell;
|
||||
@ -23,7 +13,7 @@ use std::path::{Path, PathBuf};
|
||||
use std::sync::Mutex;
|
||||
use std::cmp::{PartialOrd, Ord, Ordering};
|
||||
|
||||
use builder::Step;
|
||||
use crate::builder::Step;
|
||||
|
||||
pub struct Interned<T>(usize, PhantomData<*const T>);
|
||||
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! C-compiler probing and detection.
|
||||
//!
|
||||
//! This module will fill out the `cc` and `cxx` maps of `Build` by looking for
|
||||
@ -39,9 +29,9 @@ use std::process::Command;
|
||||
use build_helper::output;
|
||||
use cc;
|
||||
|
||||
use {Build, GitRepo};
|
||||
use config::Target;
|
||||
use cache::Interned;
|
||||
use crate::{Build, GitRepo};
|
||||
use crate::config::Target;
|
||||
use crate::cache::Interned;
|
||||
|
||||
// The `cc` crate doesn't provide a way to obtain a path to the detected archiver,
|
||||
// so use some simplified logic here. First we respect the environment variable `AR`, then
|
||||
@ -143,7 +133,10 @@ fn set_compiler(cfg: &mut cc::Build,
|
||||
// compiler already takes into account the triple in question.
|
||||
t if t.contains("android") => {
|
||||
if let Some(ndk) = config.and_then(|c| c.ndk.as_ref()) {
|
||||
let target = target.replace("armv7", "arm");
|
||||
let target = target.replace("armv7neon", "arm")
|
||||
.replace("armv7", "arm")
|
||||
.replace("thumbv7neon", "arm")
|
||||
.replace("thumbv7", "arm");
|
||||
let compiler = format!("{}-{}", target, compiler.clang());
|
||||
cfg.compiler(ndk.join("bin").join(compiler));
|
||||
}
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Build configuration for Rust's release channels.
|
||||
//!
|
||||
//! Implements the stable/beta/nightly channel distinctions by setting various
|
||||
@ -20,11 +10,11 @@ use std::process::Command;
|
||||
|
||||
use build_helper::output;
|
||||
|
||||
use Build;
|
||||
use config::Config;
|
||||
use crate::Build;
|
||||
use crate::config::Config;
|
||||
|
||||
// The version number
|
||||
pub const CFG_RELEASE_NUM: &str = "1.32.0";
|
||||
pub const CFG_RELEASE_NUM: &str = "1.33.0";
|
||||
|
||||
pub struct GitInfo {
|
||||
inner: Option<Info>,
|
||||
|
||||
@ -1,20 +1,11 @@
|
||||
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Implementation of compiling the compiler and standard library, in "check" mode.
|
||||
|
||||
use compile::{run_cargo, std_cargo, test_cargo, rustc_cargo, rustc_cargo_env, add_to_sysroot};
|
||||
use builder::{RunConfig, Builder, ShouldRun, Step};
|
||||
use tool::{prepare_tool_cargo, SourceType};
|
||||
use {Compiler, Mode};
|
||||
use cache::{INTERNER, Interned};
|
||||
use crate::compile::{run_cargo, std_cargo, test_cargo, rustc_cargo, rustc_cargo_env,
|
||||
add_to_sysroot};
|
||||
use crate::builder::{RunConfig, Builder, ShouldRun, Step};
|
||||
use crate::tool::{prepare_tool_cargo, SourceType};
|
||||
use crate::{Compiler, Mode};
|
||||
use crate::cache::{INTERNER, Interned};
|
||||
use std::path::PathBuf;
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
||||
@ -47,7 +38,6 @@ impl Step for Std {
|
||||
builder.info(&format!("Checking std artifacts ({} -> {})", &compiler.host, target));
|
||||
run_cargo(builder,
|
||||
&mut cargo,
|
||||
vec![],
|
||||
&libstd_stamp(builder, compiler, target),
|
||||
true);
|
||||
|
||||
@ -94,7 +84,6 @@ impl Step for Rustc {
|
||||
builder.info(&format!("Checking compiler artifacts ({} -> {})", &compiler.host, target));
|
||||
run_cargo(builder,
|
||||
&mut cargo,
|
||||
vec![],
|
||||
&librustc_stamp(builder, compiler, target),
|
||||
true);
|
||||
|
||||
@ -145,7 +134,6 @@ impl Step for CodegenBackend {
|
||||
let _folder = builder.fold_output(|| format!("stage{}-rustc_codegen_llvm", compiler.stage));
|
||||
run_cargo(builder,
|
||||
&mut cargo,
|
||||
vec![],
|
||||
&codegen_backend_stamp(builder, compiler, target, backend),
|
||||
true);
|
||||
}
|
||||
@ -183,7 +171,6 @@ impl Step for Test {
|
||||
builder.info(&format!("Checking test artifacts ({} -> {})", &compiler.host, target));
|
||||
run_cargo(builder,
|
||||
&mut cargo,
|
||||
vec![],
|
||||
&libtest_stamp(builder, compiler, target),
|
||||
true);
|
||||
|
||||
@ -231,7 +218,6 @@ impl Step for Rustdoc {
|
||||
println!("Checking rustdoc artifacts ({} -> {})", &compiler.host, target);
|
||||
run_cargo(builder,
|
||||
&mut cargo,
|
||||
vec![],
|
||||
&rustdoc_stamp(builder, compiler, target),
|
||||
true);
|
||||
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Implementation of `make clean` in rustbuild.
|
||||
//!
|
||||
//! Responsible for cleaning out a build directory of all old and stale
|
||||
@ -19,7 +9,7 @@ use std::fs;
|
||||
use std::io::{self, ErrorKind};
|
||||
use std::path::Path;
|
||||
|
||||
use Build;
|
||||
use crate::Build;
|
||||
|
||||
pub fn clean(build: &Build, all: bool) {
|
||||
rm_rf("tmp".as_ref());
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Implementation of compiling various phases of the compiler and standard
|
||||
//! library.
|
||||
//!
|
||||
@ -18,7 +8,7 @@
|
||||
|
||||
use std::borrow::Cow;
|
||||
use std::env;
|
||||
use std::fs::{self, File};
|
||||
use std::fs;
|
||||
use std::io::BufReader;
|
||||
use std::io::prelude::*;
|
||||
use std::path::{Path, PathBuf};
|
||||
@ -29,12 +19,13 @@ use build_helper::{output, mtime, up_to_date};
|
||||
use filetime::FileTime;
|
||||
use serde_json;
|
||||
|
||||
use util::{exe, libdir, is_dylib};
|
||||
use {Compiler, Mode, GitRepo};
|
||||
use native;
|
||||
use crate::dist;
|
||||
use crate::util::{exe, libdir, is_dylib};
|
||||
use crate::{Compiler, Mode, GitRepo};
|
||||
use crate::native;
|
||||
|
||||
use cache::{INTERNER, Interned};
|
||||
use builder::{Step, RunConfig, ShouldRun, Builder};
|
||||
use crate::cache::{INTERNER, Interned};
|
||||
use crate::builder::{Step, RunConfig, ShouldRun, Builder};
|
||||
|
||||
#[derive(Debug, PartialOrd, Ord, Copy, Clone, PartialEq, Eq, Hash)]
|
||||
pub struct Std {
|
||||
@ -87,11 +78,8 @@ impl Step for Std {
|
||||
builder.info(&format!("Uplifting stage1 std ({} -> {})", from.host, target));
|
||||
|
||||
// Even if we're not building std this stage, the new sysroot must
|
||||
// still contain the musl startup objects.
|
||||
if target.contains("musl") {
|
||||
let libdir = builder.sysroot_libdir(compiler, target);
|
||||
copy_musl_third_party_objects(builder, target, &libdir);
|
||||
}
|
||||
// still contain the third party objects needed by various targets.
|
||||
copy_third_party_objects(builder, &compiler, target);
|
||||
|
||||
builder.ensure(StdLink {
|
||||
compiler: from,
|
||||
@ -101,10 +89,7 @@ impl Step for Std {
|
||||
return;
|
||||
}
|
||||
|
||||
if target.contains("musl") {
|
||||
let libdir = builder.sysroot_libdir(compiler, target);
|
||||
copy_musl_third_party_objects(builder, target, &libdir);
|
||||
}
|
||||
copy_third_party_objects(builder, &compiler, target);
|
||||
|
||||
let mut cargo = builder.cargo(compiler, Mode::Std, target, "build");
|
||||
std_cargo(builder, &compiler, target, &mut cargo);
|
||||
@ -114,7 +99,6 @@ impl Step for Std {
|
||||
&compiler.host, target));
|
||||
run_cargo(builder,
|
||||
&mut cargo,
|
||||
vec![],
|
||||
&libstd_stamp(builder, compiler, target),
|
||||
false);
|
||||
|
||||
@ -126,17 +110,36 @@ impl Step for Std {
|
||||
}
|
||||
}
|
||||
|
||||
/// Copies the crt(1,i,n).o startup objects
|
||||
///
|
||||
/// Since musl supports fully static linking, we can cross link for it even
|
||||
/// with a glibc-targeting toolchain, given we have the appropriate startup
|
||||
/// files. As those shipped with glibc won't work, copy the ones provided by
|
||||
/// musl so we have them on linux-gnu hosts.
|
||||
fn copy_musl_third_party_objects(builder: &Builder,
|
||||
target: Interned<String>,
|
||||
into: &Path) {
|
||||
for &obj in &["crt1.o", "crti.o", "crtn.o"] {
|
||||
builder.copy(&builder.musl_root(target).unwrap().join("lib").join(obj), &into.join(obj));
|
||||
/// Copies third pary objects needed by various targets.
|
||||
fn copy_third_party_objects(builder: &Builder, compiler: &Compiler, target: Interned<String>) {
|
||||
let libdir = builder.sysroot_libdir(*compiler, target);
|
||||
|
||||
// Copies the crt(1,i,n).o startup objects
|
||||
//
|
||||
// Since musl supports fully static linking, we can cross link for it even
|
||||
// with a glibc-targeting toolchain, given we have the appropriate startup
|
||||
// files. As those shipped with glibc won't work, copy the ones provided by
|
||||
// musl so we have them on linux-gnu hosts.
|
||||
if target.contains("musl") {
|
||||
for &obj in &["crt1.o", "crti.o", "crtn.o"] {
|
||||
builder.copy(
|
||||
&builder.musl_root(target).unwrap().join("lib").join(obj),
|
||||
&libdir.join(obj),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Copies libunwind.a compiled to be linked wit x86_64-fortanix-unknown-sgx.
|
||||
//
|
||||
// This target needs to be linked to Fortanix's port of llvm's libunwind.
|
||||
// libunwind requires support for rwlock and printing to stderr,
|
||||
// which is provided by std for this target.
|
||||
if target == "x86_64-fortanix-unknown-sgx" {
|
||||
let src_path_env = "X86_FORTANIX_SGX_LIBS";
|
||||
let obj = "libunwind.a";
|
||||
let src = env::var(src_path_env).expect(&format!("{} not found in env", src_path_env));
|
||||
let src = Path::new(&src).join(obj);
|
||||
builder.copy(&src, &libdir.join(obj));
|
||||
}
|
||||
}
|
||||
|
||||
@ -152,11 +155,12 @@ pub fn std_cargo(builder: &Builder,
|
||||
|
||||
if builder.no_std(target) == Some(true) {
|
||||
// for no-std targets we only compile a few no_std crates
|
||||
cargo.arg("--features").arg("c mem")
|
||||
cargo
|
||||
.args(&["-p", "alloc"])
|
||||
.args(&["-p", "compiler_builtins"])
|
||||
.arg("--manifest-path")
|
||||
.arg(builder.src.join("src/rustc/compiler_builtins_shim/Cargo.toml"));
|
||||
.arg(builder.src.join("src/liballoc/Cargo.toml"))
|
||||
.arg("--features")
|
||||
.arg("compiler-builtins-mem");
|
||||
} else {
|
||||
let features = builder.std_features();
|
||||
|
||||
@ -374,7 +378,6 @@ impl Step for Test {
|
||||
&compiler.host, target));
|
||||
run_cargo(builder,
|
||||
&mut cargo,
|
||||
vec![],
|
||||
&libtest_stamp(builder, compiler, target),
|
||||
false);
|
||||
|
||||
@ -502,7 +505,6 @@ impl Step for Rustc {
|
||||
compiler.stage, &compiler.host, target));
|
||||
run_cargo(builder,
|
||||
&mut cargo,
|
||||
vec![],
|
||||
&librustc_stamp(builder, compiler, target),
|
||||
false);
|
||||
|
||||
@ -645,47 +647,18 @@ impl Step for CodegenBackend {
|
||||
|
||||
let out_dir = builder.cargo_out(compiler, Mode::Codegen, target);
|
||||
|
||||
let mut cargo = builder.cargo(compiler, Mode::Codegen, target, "rustc");
|
||||
let mut cargo = builder.cargo(compiler, Mode::Codegen, target, "build");
|
||||
cargo.arg("--manifest-path")
|
||||
.arg(builder.src.join("src/librustc_codegen_llvm/Cargo.toml"));
|
||||
rustc_cargo_env(builder, &mut cargo);
|
||||
|
||||
let features = build_codegen_backend(&builder, &mut cargo, &compiler, target, backend);
|
||||
|
||||
let mut cargo_tails_args = vec![];
|
||||
|
||||
if builder.config.llvm_thin_lto {
|
||||
cargo_tails_args.push("--".to_string());
|
||||
|
||||
let num_jobs = builder.jobs();
|
||||
|
||||
if !target.contains("msvc") {
|
||||
// Here we assume that the linker is clang. If it's not, there'll
|
||||
// be linker errors.
|
||||
cargo_tails_args.push("-Clink-arg=-fuse-ld=lld".to_string());
|
||||
cargo_tails_args.push("-Clink-arg=-flto=thin".to_string());
|
||||
|
||||
if builder.config.llvm_optimize {
|
||||
cargo_tails_args.push("-Clink-arg=-O2".to_string());
|
||||
}
|
||||
|
||||
// Let's make LLD respect the `-j` option.
|
||||
let num_jobs_arg = format!("-Clink-arg=-Wl,--thinlto-jobs={}", num_jobs);
|
||||
cargo_tails_args.push(num_jobs_arg);
|
||||
} else {
|
||||
// Here we assume that the linker is lld-link.exe. lld-link.exe
|
||||
// does not need the extra arguments except for num_jobs
|
||||
let num_jobs_arg = format!("-Clink-arg=/opt:lldltojobs={}", num_jobs);
|
||||
cargo_tails_args.push(num_jobs_arg);
|
||||
}
|
||||
}
|
||||
|
||||
let tmp_stamp = out_dir.join(".tmp.stamp");
|
||||
|
||||
let _folder = builder.fold_output(|| format!("stage{}-rustc_codegen_llvm", compiler.stage));
|
||||
let files = run_cargo(builder,
|
||||
cargo.arg("--features").arg(features),
|
||||
cargo_tails_args,
|
||||
&tmp_stamp,
|
||||
false);
|
||||
if builder.config.dry_run {
|
||||
@ -707,7 +680,7 @@ impl Step for CodegenBackend {
|
||||
}
|
||||
let stamp = codegen_backend_stamp(builder, compiler, target, backend);
|
||||
let codegen_backend = codegen_backend.to_str().unwrap();
|
||||
t!(t!(File::create(&stamp)).write_all(codegen_backend.as_bytes()));
|
||||
t!(fs::write(&stamp, &codegen_backend));
|
||||
}
|
||||
}
|
||||
|
||||
@ -758,9 +731,14 @@ pub fn build_codegen_backend(builder: &Builder,
|
||||
"libstdc++.a");
|
||||
cargo.env("LLVM_STATIC_STDCPP", file);
|
||||
}
|
||||
if builder.config.llvm_link_shared {
|
||||
if builder.config.llvm_link_shared ||
|
||||
(builder.config.llvm_thin_lto && backend != "emscripten")
|
||||
{
|
||||
cargo.env("LLVM_LINK_SHARED", "1");
|
||||
}
|
||||
if builder.config.llvm_use_libcxx {
|
||||
cargo.env("LLVM_USE_LIBCXX", "1");
|
||||
}
|
||||
}
|
||||
_ => panic!("unknown backend: {}", backend),
|
||||
}
|
||||
@ -796,8 +774,7 @@ fn copy_codegen_backends_to_sysroot(builder: &Builder,
|
||||
|
||||
for backend in builder.config.rust_codegen_backends.iter() {
|
||||
let stamp = codegen_backend_stamp(builder, compiler, target, *backend);
|
||||
let mut dylib = String::new();
|
||||
t!(t!(File::open(&stamp)).read_to_string(&mut dylib));
|
||||
let dylib = t!(fs::read_to_string(&stamp));
|
||||
let file = Path::new(&dylib);
|
||||
let filename = file.file_name().unwrap().to_str().unwrap();
|
||||
// change `librustc_codegen_llvm-xxxxxx.so` to `librustc_codegen_llvm-llvm.so`
|
||||
@ -999,6 +976,8 @@ impl Step for Assemble {
|
||||
copy_lld_to_sysroot(builder, target_compiler, &lld_install);
|
||||
}
|
||||
|
||||
dist::maybe_install_llvm_dylib(builder, target_compiler.host, &sysroot);
|
||||
|
||||
// Link the compiler binary itself into place
|
||||
let out_dir = builder.cargo_out(build_compiler, Mode::Rustc, host);
|
||||
let rustc = out_dir.join(exe("rustc_binary", &*host));
|
||||
@ -1025,7 +1004,6 @@ pub fn add_to_sysroot(builder: &Builder, sysroot_dst: &Path, stamp: &Path) {
|
||||
|
||||
pub fn run_cargo(builder: &Builder,
|
||||
cargo: &mut Command,
|
||||
tail_args: Vec<String>,
|
||||
stamp: &Path,
|
||||
is_check: bool)
|
||||
-> Vec<PathBuf>
|
||||
@ -1048,7 +1026,7 @@ pub fn run_cargo(builder: &Builder,
|
||||
// files we need to probe for later.
|
||||
let mut deps = Vec::new();
|
||||
let mut toplevel = Vec::new();
|
||||
let ok = stream_cargo(builder, cargo, tail_args, &mut |msg| {
|
||||
let ok = stream_cargo(builder, cargo, &mut |msg| {
|
||||
let filenames = match msg {
|
||||
CargoMessage::CompilerArtifact { filenames, .. } => filenames,
|
||||
_ => return,
|
||||
@ -1137,10 +1115,7 @@ pub fn run_cargo(builder: &Builder,
|
||||
// contents (the list of files to copy) is different or if any dep's mtime
|
||||
// is newer then we rewrite the stamp file.
|
||||
deps.sort();
|
||||
let mut stamp_contents = Vec::new();
|
||||
if let Ok(mut f) = File::open(stamp) {
|
||||
t!(f.read_to_end(&mut stamp_contents));
|
||||
}
|
||||
let stamp_contents = fs::read(stamp);
|
||||
let stamp_mtime = mtime(&stamp);
|
||||
let mut new_contents = Vec::new();
|
||||
let mut max = None;
|
||||
@ -1156,7 +1131,10 @@ pub fn run_cargo(builder: &Builder,
|
||||
}
|
||||
let max = max.unwrap();
|
||||
let max_path = max_path.unwrap();
|
||||
if stamp_contents == new_contents && max <= stamp_mtime {
|
||||
let contents_equal = stamp_contents
|
||||
.map(|contents| contents == new_contents)
|
||||
.unwrap_or_default();
|
||||
if contents_equal && max <= stamp_mtime {
|
||||
builder.verbose(&format!("not updating {:?}; contents equal and {:?} <= {:?}",
|
||||
stamp, max, stamp_mtime));
|
||||
return deps
|
||||
@ -1166,14 +1144,13 @@ pub fn run_cargo(builder: &Builder,
|
||||
} else {
|
||||
builder.verbose(&format!("updating {:?} as deps changed", stamp));
|
||||
}
|
||||
t!(t!(File::create(stamp)).write_all(&new_contents));
|
||||
t!(fs::write(&stamp, &new_contents));
|
||||
deps
|
||||
}
|
||||
|
||||
pub fn stream_cargo(
|
||||
builder: &Builder,
|
||||
cargo: &mut Command,
|
||||
tail_args: Vec<String>,
|
||||
cb: &mut dyn FnMut(CargoMessage),
|
||||
) -> bool {
|
||||
if builder.config.dry_run {
|
||||
@ -1184,10 +1161,6 @@ pub fn stream_cargo(
|
||||
cargo.arg("--message-format").arg("json")
|
||||
.stdout(Stdio::piped());
|
||||
|
||||
for arg in tail_args {
|
||||
cargo.arg(arg);
|
||||
}
|
||||
|
||||
builder.verbose(&format!("running: {:?}", cargo));
|
||||
let mut child = match cargo.spawn() {
|
||||
Ok(child) => child,
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Serialized configuration of a build.
|
||||
//!
|
||||
//! This module implements parsing `config.toml` configuration files to tweak
|
||||
@ -15,17 +5,16 @@
|
||||
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::env;
|
||||
use std::fs::{self, File};
|
||||
use std::io::prelude::*;
|
||||
use std::fs;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::process;
|
||||
use std::cmp;
|
||||
|
||||
use num_cpus;
|
||||
use toml;
|
||||
use cache::{INTERNER, Interned};
|
||||
use flags::Flags;
|
||||
pub use flags::Subcommand;
|
||||
use crate::cache::{INTERNER, Interned};
|
||||
use crate::flags::Flags;
|
||||
pub use crate::flags::Subcommand;
|
||||
|
||||
/// Global configuration for the entire build and/or bootstrap.
|
||||
///
|
||||
@ -93,6 +82,8 @@ pub struct Config {
|
||||
pub lldb_enabled: bool,
|
||||
pub llvm_tools_enabled: bool,
|
||||
|
||||
pub llvm_use_libcxx: bool,
|
||||
|
||||
// rust codegen options
|
||||
pub rust_optimize: bool,
|
||||
pub rust_codegen_units: Option<u32>,
|
||||
@ -263,6 +254,7 @@ struct Llvm {
|
||||
link_shared: Option<bool>,
|
||||
version_suffix: Option<String>,
|
||||
clang_cl: Option<String>,
|
||||
use_libcxx: Option<bool>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Default, Clone)]
|
||||
@ -416,9 +408,7 @@ impl Config {
|
||||
config.run_host_only = !(flags.host.is_empty() && !flags.target.is_empty());
|
||||
|
||||
let toml = file.map(|file| {
|
||||
let mut f = t!(File::open(&file));
|
||||
let mut contents = String::new();
|
||||
t!(f.read_to_string(&mut contents));
|
||||
let contents = t!(fs::read_to_string(&file));
|
||||
match toml::from_str(&contents) {
|
||||
Ok(table) => table,
|
||||
Err(err) => {
|
||||
@ -526,6 +516,7 @@ impl Config {
|
||||
config.llvm_link_jobs = llvm.link_jobs;
|
||||
config.llvm_version_suffix = llvm.version_suffix.clone();
|
||||
config.llvm_clang_cl = llvm.clang_cl.clone();
|
||||
set(&mut config.llvm_use_libcxx, llvm.use_libcxx);
|
||||
}
|
||||
|
||||
if let Some(ref rust) = toml.rust {
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# ignore-tidy-linelength
|
||||
|
||||
@ -71,6 +62,7 @@ o("full-tools", None, "enable all tools")
|
||||
o("lld", "rust.lld", "build lld")
|
||||
o("lldb", "rust.lldb", "build lldb")
|
||||
o("missing-tools", "dist.missing-tools", "allow failures when building tools")
|
||||
o("use-libcxx", "llvm.use_libcxx", "build LLVM with libc++")
|
||||
|
||||
# Optimization and debugging options. These may be overridden by the release
|
||||
# channel, etc.
|
||||
@ -107,6 +99,8 @@ v("arm-linux-androideabi-ndk", "target.arm-linux-androideabi.android-ndk",
|
||||
"arm-linux-androideabi NDK standalone path")
|
||||
v("armv7-linux-androideabi-ndk", "target.armv7-linux-androideabi.android-ndk",
|
||||
"armv7-linux-androideabi NDK standalone path")
|
||||
v("thumbv7neon-linux-androideabi-ndk", "target.thumbv7neon-linux-androideabi.android-ndk",
|
||||
"thumbv7neon-linux-androideabi NDK standalone path")
|
||||
v("aarch64-linux-android-ndk", "target.aarch64-linux-android.android-ndk",
|
||||
"aarch64-linux-android NDK standalone path")
|
||||
v("x86_64-linux-android-ndk", "target.x86_64-linux-android.android-ndk",
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Implementation of the various distribution aspects of the compiler.
|
||||
//!
|
||||
//! This module is responsible for creating tarballs of the standard library,
|
||||
@ -19,20 +9,20 @@
|
||||
//! pieces of `rustup.rs`!
|
||||
|
||||
use std::env;
|
||||
use std::fs::{self, File};
|
||||
use std::io::{Read, Write};
|
||||
use std::fs;
|
||||
use std::io::Write;
|
||||
use std::path::{PathBuf, Path};
|
||||
use std::process::{Command, Stdio};
|
||||
|
||||
use build_helper::output;
|
||||
|
||||
use {Compiler, Mode, LLVM_TOOLS};
|
||||
use channel;
|
||||
use util::{libdir, is_dylib, exe};
|
||||
use builder::{Builder, RunConfig, ShouldRun, Step};
|
||||
use compile;
|
||||
use tool::{self, Tool};
|
||||
use cache::{INTERNER, Interned};
|
||||
use crate::{Compiler, Mode, LLVM_TOOLS};
|
||||
use crate::channel;
|
||||
use crate::util::{libdir, is_dylib, exe};
|
||||
use crate::builder::{Builder, RunConfig, ShouldRun, Step};
|
||||
use crate::compile;
|
||||
use crate::tool::{self, Tool};
|
||||
use crate::cache::{INTERNER, Interned};
|
||||
use time;
|
||||
|
||||
pub fn pkgname(builder: &Builder, component: &str) -> String {
|
||||
@ -42,6 +32,8 @@ pub fn pkgname(builder: &Builder, component: &str) -> String {
|
||||
format!("{}-{}", component, builder.rls_package_vers())
|
||||
} else if component == "clippy" {
|
||||
format!("{}-{}", component, builder.clippy_package_vers())
|
||||
} else if component == "miri" {
|
||||
format!("{}-{}", component, builder.miri_package_vers())
|
||||
} else if component == "rustfmt" {
|
||||
format!("{}-{}", component, builder.rustfmt_package_vers())
|
||||
} else if component == "llvm-tools" {
|
||||
@ -234,7 +226,7 @@ fn make_win_dist(
|
||||
let trim_chars: &[_] = &[' ', '='];
|
||||
let value =
|
||||
line[(idx + 1)..]
|
||||
.trim_left_matches(trim_chars)
|
||||
.trim_start_matches(trim_chars)
|
||||
.split(';')
|
||||
.map(PathBuf::from);
|
||||
|
||||
@ -353,7 +345,7 @@ impl Step for Mingw {
|
||||
/// Build the `rust-mingw` installer component.
|
||||
///
|
||||
/// This contains all the bits and pieces to run the MinGW Windows targets
|
||||
/// without any extra installed software (e.g. we bundle gcc, libraries, etc).
|
||||
/// without any extra installed software (e.g., we bundle gcc, libraries, etc).
|
||||
fn run(self, builder: &Builder) -> Option<PathBuf> {
|
||||
let host = self.host;
|
||||
|
||||
@ -681,10 +673,18 @@ impl Step for Std {
|
||||
let mut src = builder.sysroot_libdir(compiler, target).to_path_buf();
|
||||
src.pop(); // Remove the trailing /lib folder from the sysroot_libdir
|
||||
builder.cp_filtered(&src, &dst, &|path| {
|
||||
let name = path.file_name().and_then(|s| s.to_str());
|
||||
name != Some(builder.config.rust_codegen_backends_dir.as_str()) &&
|
||||
name != Some("bin")
|
||||
|
||||
if let Some(name) = path.file_name().and_then(|s| s.to_str()) {
|
||||
if name == builder.config.rust_codegen_backends_dir.as_str() {
|
||||
return false
|
||||
}
|
||||
if name == "bin" {
|
||||
return false
|
||||
}
|
||||
if name.contains("LLVM") {
|
||||
return false
|
||||
}
|
||||
}
|
||||
true
|
||||
});
|
||||
|
||||
let mut cmd = rust_installer(builder);
|
||||
@ -857,12 +857,8 @@ impl Step for Src {
|
||||
// (essentially libstd and all of its path dependencies)
|
||||
let std_src_dirs = [
|
||||
"src/build_helper",
|
||||
"src/dlmalloc",
|
||||
"src/liballoc",
|
||||
"src/libbacktrace",
|
||||
"src/libcompiler_builtins",
|
||||
"src/libcore",
|
||||
"src/liblibc",
|
||||
"src/libpanic_abort",
|
||||
"src/libpanic_unwind",
|
||||
"src/librustc_asan",
|
||||
@ -871,20 +867,15 @@ impl Step for Src {
|
||||
"src/librustc_tsan",
|
||||
"src/libstd",
|
||||
"src/libunwind",
|
||||
"src/rustc/compiler_builtins_shim",
|
||||
"src/rustc/libc_shim",
|
||||
"src/rustc/dlmalloc_shim",
|
||||
"src/libtest",
|
||||
"src/libterm",
|
||||
"src/libprofiler_builtins",
|
||||
"src/stdsimd",
|
||||
"src/libproc_macro",
|
||||
];
|
||||
let std_src_dirs_exclude = [
|
||||
"src/libcompiler_builtins/compiler-rt/test",
|
||||
"src/tools/rustc-std-workspace-core",
|
||||
];
|
||||
|
||||
copy_src_dirs(builder, &std_src_dirs[..], &std_src_dirs_exclude[..], &dst_src);
|
||||
copy_src_dirs(builder, &std_src_dirs[..], &[], &dst_src);
|
||||
for file in src_files.iter() {
|
||||
builder.copy(&builder.src.join(file), &dst_src.join(file));
|
||||
}
|
||||
@ -908,7 +899,7 @@ impl Step for Src {
|
||||
}
|
||||
}
|
||||
|
||||
const CARGO_VENDOR_VERSION: &str = "0.1.19";
|
||||
const CARGO_VENDOR_VERSION: &str = "0.1.22";
|
||||
|
||||
#[derive(Debug, PartialOrd, Ord, Copy, Clone, Hash, PartialEq, Eq)]
|
||||
pub struct PlainSourceTarball;
|
||||
@ -1286,6 +1277,90 @@ impl Step for Clippy {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialOrd, Ord, Copy, Clone, Hash, PartialEq, Eq)]
|
||||
pub struct Miri {
|
||||
pub stage: u32,
|
||||
pub target: Interned<String>,
|
||||
}
|
||||
|
||||
impl Step for Miri {
|
||||
type Output = Option<PathBuf>;
|
||||
const ONLY_HOSTS: bool = true;
|
||||
|
||||
fn should_run(run: ShouldRun) -> ShouldRun {
|
||||
run.path("miri")
|
||||
}
|
||||
|
||||
fn make_run(run: RunConfig) {
|
||||
run.builder.ensure(Miri {
|
||||
stage: run.builder.top_stage,
|
||||
target: run.target,
|
||||
});
|
||||
}
|
||||
|
||||
fn run(self, builder: &Builder) -> Option<PathBuf> {
|
||||
let stage = self.stage;
|
||||
let target = self.target;
|
||||
assert!(builder.config.extended);
|
||||
|
||||
builder.info(&format!("Dist miri stage{} ({})", stage, target));
|
||||
let src = builder.src.join("src/tools/miri");
|
||||
let release_num = builder.release_num("miri");
|
||||
let name = pkgname(builder, "miri");
|
||||
let version = builder.miri_info.version(builder, &release_num);
|
||||
|
||||
let tmp = tmpdir(builder);
|
||||
let image = tmp.join("miri-image");
|
||||
drop(fs::remove_dir_all(&image));
|
||||
builder.create_dir(&image);
|
||||
|
||||
// Prepare the image directory
|
||||
// We expect miri to build, because we've exited this step above if tool
|
||||
// state for miri isn't testing.
|
||||
let miri = builder.ensure(tool::Miri {
|
||||
compiler: builder.compiler(stage, builder.config.build),
|
||||
target, extra_features: Vec::new()
|
||||
}).or_else(|| { missing_tool("miri", builder.build.config.missing_tools); None })?;
|
||||
let cargomiri = builder.ensure(tool::CargoMiri {
|
||||
compiler: builder.compiler(stage, builder.config.build),
|
||||
target, extra_features: Vec::new()
|
||||
}).or_else(|| { missing_tool("cargo miri", builder.build.config.missing_tools); None })?;
|
||||
|
||||
builder.install(&miri, &image.join("bin"), 0o755);
|
||||
builder.install(&cargomiri, &image.join("bin"), 0o755);
|
||||
let doc = image.join("share/doc/miri");
|
||||
builder.install(&src.join("README.md"), &doc, 0o644);
|
||||
builder.install(&src.join("LICENSE-APACHE"), &doc, 0o644);
|
||||
builder.install(&src.join("LICENSE-MIT"), &doc, 0o644);
|
||||
|
||||
// Prepare the overlay
|
||||
let overlay = tmp.join("miri-overlay");
|
||||
drop(fs::remove_dir_all(&overlay));
|
||||
t!(fs::create_dir_all(&overlay));
|
||||
builder.install(&src.join("README.md"), &overlay, 0o644);
|
||||
builder.install(&src.join("LICENSE-APACHE"), &doc, 0o644);
|
||||
builder.install(&src.join("LICENSE-MIT"), &doc, 0o644);
|
||||
builder.create(&overlay.join("version"), &version);
|
||||
|
||||
// Generate the installer tarball
|
||||
let mut cmd = rust_installer(builder);
|
||||
cmd.arg("generate")
|
||||
.arg("--product-name=Rust")
|
||||
.arg("--rel-manifest-dir=rustlib")
|
||||
.arg("--success-message=miri-ready-to-serve.")
|
||||
.arg("--image-dir").arg(&image)
|
||||
.arg("--work-dir").arg(&tmpdir(builder))
|
||||
.arg("--output-dir").arg(&distdir(builder))
|
||||
.arg("--non-installed-overlay").arg(&overlay)
|
||||
.arg(format!("--package-name={}-{}", name, target))
|
||||
.arg("--legacy-manifest-dirs=rustlib,cargo")
|
||||
.arg("--component-name=miri-preview");
|
||||
|
||||
builder.run(&mut cmd);
|
||||
Some(distdir(builder).join(format!("{}-{}.tar.gz", name, target)))
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialOrd, Ord, Copy, Clone, Hash, PartialEq, Eq)]
|
||||
pub struct Rustfmt {
|
||||
pub stage: u32,
|
||||
@ -1407,6 +1482,7 @@ impl Step for Extended {
|
||||
let rls_installer = builder.ensure(Rls { stage, target });
|
||||
let llvm_tools_installer = builder.ensure(LlvmTools { stage, target });
|
||||
let clippy_installer = builder.ensure(Clippy { stage, target });
|
||||
let miri_installer = builder.ensure(Miri { stage, target });
|
||||
let lldb_installer = builder.ensure(Lldb { target });
|
||||
let mingw_installer = builder.ensure(Mingw { host: target });
|
||||
let analysis_installer = builder.ensure(Analysis {
|
||||
@ -1445,6 +1521,7 @@ impl Step for Extended {
|
||||
tarballs.push(cargo_installer);
|
||||
tarballs.extend(rls_installer.clone());
|
||||
tarballs.extend(clippy_installer.clone());
|
||||
tarballs.extend(miri_installer.clone());
|
||||
tarballs.extend(rustfmt_installer.clone());
|
||||
tarballs.extend(llvm_tools_installer);
|
||||
tarballs.extend(lldb_installer);
|
||||
@ -1510,20 +1587,22 @@ impl Step for Extended {
|
||||
}
|
||||
|
||||
let xform = |p: &Path| {
|
||||
let mut contents = String::new();
|
||||
t!(t!(File::open(p)).read_to_string(&mut contents));
|
||||
let mut contents = t!(fs::read_to_string(p));
|
||||
if rls_installer.is_none() {
|
||||
contents = filter(&contents, "rls");
|
||||
}
|
||||
if clippy_installer.is_none() {
|
||||
contents = filter(&contents, "clippy");
|
||||
}
|
||||
if miri_installer.is_none() {
|
||||
contents = filter(&contents, "miri");
|
||||
}
|
||||
if rustfmt_installer.is_none() {
|
||||
contents = filter(&contents, "rustfmt");
|
||||
}
|
||||
let ret = tmp.join(p.file_name().unwrap());
|
||||
t!(t!(File::create(&ret)).write_all(contents.as_bytes()));
|
||||
return ret
|
||||
t!(fs::write(&ret, &contents));
|
||||
ret
|
||||
};
|
||||
|
||||
if target.contains("apple-darwin") {
|
||||
@ -1558,6 +1637,9 @@ impl Step for Extended {
|
||||
if clippy_installer.is_some() {
|
||||
prepare("clippy");
|
||||
}
|
||||
if miri_installer.is_some() {
|
||||
prepare("miri");
|
||||
}
|
||||
|
||||
// create an 'uninstall' package
|
||||
builder.install(&etc.join("pkg/postinstall"), &pkg.join("uninstall"), 0o755);
|
||||
@ -1588,6 +1670,8 @@ impl Step for Extended {
|
||||
"rls-preview".to_string()
|
||||
} else if name == "clippy" {
|
||||
"clippy-preview".to_string()
|
||||
} else if name == "miri" {
|
||||
"miri-preview".to_string()
|
||||
} else {
|
||||
name.to_string()
|
||||
};
|
||||
@ -1607,6 +1691,9 @@ impl Step for Extended {
|
||||
if clippy_installer.is_some() {
|
||||
prepare("clippy");
|
||||
}
|
||||
if miri_installer.is_some() {
|
||||
prepare("miri");
|
||||
}
|
||||
if target.contains("windows-gnu") {
|
||||
prepare("rust-mingw");
|
||||
}
|
||||
@ -1699,6 +1786,18 @@ impl Step for Extended {
|
||||
.arg("-out").arg(exe.join("ClippyGroup.wxs"))
|
||||
.arg("-t").arg(etc.join("msi/remove-duplicates.xsl")));
|
||||
}
|
||||
if miri_installer.is_some() {
|
||||
builder.run(Command::new(&heat)
|
||||
.current_dir(&exe)
|
||||
.arg("dir")
|
||||
.arg("miri")
|
||||
.args(&heat_flags)
|
||||
.arg("-cg").arg("MiriGroup")
|
||||
.arg("-dr").arg("Miri")
|
||||
.arg("-var").arg("var.MiriDir")
|
||||
.arg("-out").arg(exe.join("MiriGroup.wxs"))
|
||||
.arg("-t").arg(etc.join("msi/remove-duplicates.xsl")));
|
||||
}
|
||||
builder.run(Command::new(&heat)
|
||||
.current_dir(&exe)
|
||||
.arg("dir")
|
||||
@ -1744,6 +1843,9 @@ impl Step for Extended {
|
||||
if clippy_installer.is_some() {
|
||||
cmd.arg("-dClippyDir=clippy");
|
||||
}
|
||||
if miri_installer.is_some() {
|
||||
cmd.arg("-dMiriDir=miri");
|
||||
}
|
||||
if target.contains("windows-gnu") {
|
||||
cmd.arg("-dGccDir=rust-mingw");
|
||||
}
|
||||
@ -1762,6 +1864,9 @@ impl Step for Extended {
|
||||
if clippy_installer.is_some() {
|
||||
candle("ClippyGroup.wxs".as_ref());
|
||||
}
|
||||
if miri_installer.is_some() {
|
||||
candle("MiriGroup.wxs".as_ref());
|
||||
}
|
||||
candle("AnalysisGroup.wxs".as_ref());
|
||||
|
||||
if target.contains("windows-gnu") {
|
||||
@ -1794,6 +1899,9 @@ impl Step for Extended {
|
||||
if clippy_installer.is_some() {
|
||||
cmd.arg("ClippyGroup.wixobj");
|
||||
}
|
||||
if miri_installer.is_some() {
|
||||
cmd.arg("MiriGroup.wixobj");
|
||||
}
|
||||
|
||||
if target.contains("windows-gnu") {
|
||||
cmd.arg("GccGroup.wixobj");
|
||||
@ -1868,8 +1976,7 @@ impl Step for HashSign {
|
||||
let file = builder.config.dist_gpg_password_file.as_ref().unwrap_or_else(|| {
|
||||
panic!("\n\nfailed to specify `dist.gpg-password-file` in `config.toml`\n\n")
|
||||
});
|
||||
let mut pass = String::new();
|
||||
t!(t!(File::open(&file)).read_to_string(&mut pass));
|
||||
let pass = t!(fs::read_to_string(&file));
|
||||
|
||||
let today = output(Command::new("date").arg("+%Y-%m-%d"));
|
||||
|
||||
@ -1877,13 +1984,14 @@ impl Step for HashSign {
|
||||
cmd.arg(distdir(builder));
|
||||
cmd.arg(today.trim());
|
||||
cmd.arg(builder.rust_package_vers());
|
||||
cmd.arg(addr);
|
||||
cmd.arg(builder.package_vers(&builder.release_num("cargo")));
|
||||
cmd.arg(builder.package_vers(&builder.release_num("rls")));
|
||||
cmd.arg(builder.package_vers(&builder.release_num("clippy")));
|
||||
cmd.arg(builder.package_vers(&builder.release_num("miri")));
|
||||
cmd.arg(builder.package_vers(&builder.release_num("rustfmt")));
|
||||
cmd.arg(builder.llvm_tools_package_vers());
|
||||
cmd.arg(builder.lldb_package_vers());
|
||||
cmd.arg(addr);
|
||||
|
||||
builder.create_dir(&distdir(builder));
|
||||
|
||||
@ -1898,13 +2006,13 @@ impl Step for HashSign {
|
||||
// LLVM tools are linked dynamically.
|
||||
// Note: This function does no yet support Windows but we also don't support
|
||||
// linking LLVM tools dynamically on Windows yet.
|
||||
fn maybe_install_llvm_dylib(builder: &Builder,
|
||||
target: Interned<String>,
|
||||
image: &Path) {
|
||||
pub fn maybe_install_llvm_dylib(builder: &Builder,
|
||||
target: Interned<String>,
|
||||
sysroot: &Path) {
|
||||
let src_libdir = builder
|
||||
.llvm_out(target)
|
||||
.join("lib");
|
||||
let dst_libdir = image.join("lib/rustlib").join(&*target).join("lib");
|
||||
let dst_libdir = sysroot.join("lib/rustlib").join(&*target).join("lib");
|
||||
t!(fs::create_dir_all(&dst_libdir));
|
||||
|
||||
if target.contains("apple-darwin") {
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Documentation generation for rustbuilder.
|
||||
//!
|
||||
//! This module implements generation for all bits and pieces of documentation
|
||||
@ -18,20 +8,19 @@
|
||||
//! `rustdoc`.
|
||||
|
||||
use std::collections::HashSet;
|
||||
use std::fs::{self, File};
|
||||
use std::io::prelude::*;
|
||||
use std::fs;
|
||||
use std::io;
|
||||
use std::path::{PathBuf, Path};
|
||||
|
||||
use Mode;
|
||||
use crate::Mode;
|
||||
use build_helper::up_to_date;
|
||||
|
||||
use util::symlink_dir;
|
||||
use builder::{Builder, Compiler, RunConfig, ShouldRun, Step};
|
||||
use tool::{self, prepare_tool_cargo, Tool, SourceType};
|
||||
use compile;
|
||||
use cache::{INTERNER, Interned};
|
||||
use config::Config;
|
||||
use crate::util::symlink_dir;
|
||||
use crate::builder::{Builder, Compiler, RunConfig, ShouldRun, Step};
|
||||
use crate::tool::{self, prepare_tool_cargo, Tool, SourceType};
|
||||
use crate::compile;
|
||||
use crate::cache::{INTERNER, Interned};
|
||||
use crate::config::Config;
|
||||
|
||||
macro_rules! book {
|
||||
($($name:ident, $path:expr, $book_name:expr;)+) => {
|
||||
@ -379,12 +368,11 @@ impl Step for Standalone {
|
||||
let version_info = out.join("version_info.html");
|
||||
|
||||
if !builder.config.dry_run && !up_to_date(&version_input, &version_info) {
|
||||
let mut info = String::new();
|
||||
t!(t!(File::open(&version_input)).read_to_string(&mut info));
|
||||
let info = info.replace("VERSION", &builder.rust_release())
|
||||
.replace("SHORT_HASH", builder.rust_info.sha_short().unwrap_or(""))
|
||||
.replace("STAMP", builder.rust_info.sha().unwrap_or(""));
|
||||
t!(t!(File::create(&version_info)).write_all(info.as_bytes()));
|
||||
let info = t!(fs::read_to_string(&version_input))
|
||||
.replace("VERSION", &builder.rust_release())
|
||||
.replace("SHORT_HASH", builder.rust_info.sha_short().unwrap_or(""))
|
||||
.replace("STAMP", builder.rust_info.sha().unwrap_or(""));
|
||||
t!(fs::write(&version_info, &info));
|
||||
}
|
||||
|
||||
for file in t!(fs::read_dir(builder.src.join("src/doc"))) {
|
||||
@ -697,9 +685,6 @@ impl Step for Rustc {
|
||||
return;
|
||||
}
|
||||
|
||||
// Build libstd docs so that we generate relative links.
|
||||
builder.ensure(Std { stage, target });
|
||||
|
||||
// Build rustc.
|
||||
builder.ensure(compile::Rustc { compiler, target });
|
||||
|
||||
@ -718,12 +703,16 @@ impl Step for Rustc {
|
||||
|
||||
// Find dependencies for top level crates.
|
||||
let mut compiler_crates = HashSet::new();
|
||||
for root_crate in &["rustc", "rustc_driver", "rustc_codegen_llvm"] {
|
||||
for root_crate in &["rustc_driver", "rustc_codegen_llvm", "rustc_codegen_ssa"] {
|
||||
let interned_root_crate = INTERNER.intern_str(root_crate);
|
||||
find_compiler_crates(builder, &interned_root_crate, &mut compiler_crates);
|
||||
}
|
||||
|
||||
for krate in &compiler_crates {
|
||||
// Create all crate output directories first to make sure rustdoc uses
|
||||
// relative links.
|
||||
// FIXME: Cargo should probably do this itself.
|
||||
t!(fs::create_dir_all(out_dir.join(krate)));
|
||||
cargo.arg("-p").arg(krate);
|
||||
}
|
||||
|
||||
@ -797,8 +786,8 @@ impl Step for Rustdoc {
|
||||
return;
|
||||
}
|
||||
|
||||
// Build libstd docs so that we generate relative links.
|
||||
builder.ensure(Std { stage, target });
|
||||
// Build rustc docs so that we generate relative links.
|
||||
builder.ensure(Rustc { stage, target });
|
||||
|
||||
// Build rustdoc.
|
||||
builder.ensure(tool::Rustdoc { host: compiler.host });
|
||||
@ -822,6 +811,10 @@ impl Step for Rustdoc {
|
||||
&[]
|
||||
);
|
||||
|
||||
// Only include compiler crates, no dependencies of those, such as `libc`.
|
||||
cargo.arg("--no-deps");
|
||||
cargo.arg("-p").arg("rustdoc");
|
||||
|
||||
cargo.env("RUSTDOCFLAGS", "--document-private-items");
|
||||
builder.run(&mut cargo);
|
||||
}
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Command-line interface of the rustbuild build system.
|
||||
//!
|
||||
//! This module implements the command-line parsing of the build system which
|
||||
@ -19,12 +9,12 @@ use std::process;
|
||||
|
||||
use getopts::Options;
|
||||
|
||||
use builder::Builder;
|
||||
use config::Config;
|
||||
use metadata;
|
||||
use {Build, DocTests};
|
||||
use crate::builder::Builder;
|
||||
use crate::config::Config;
|
||||
use crate::metadata;
|
||||
use crate::{Build, DocTests};
|
||||
|
||||
use cache::{Interned, INTERNER};
|
||||
use crate::cache::{Interned, INTERNER};
|
||||
|
||||
/// Deserialized version of all flags for this compile.
|
||||
pub struct Flags {
|
||||
@ -121,11 +111,11 @@ To learn more about a subcommand, run `./x.py <subcommand> -h`"
|
||||
opts.optopt("", "on-fail", "command to run on failure", "CMD");
|
||||
opts.optflag("", "dry-run", "dry run; don't build anything");
|
||||
opts.optopt("", "stage",
|
||||
"stage to build (indicates compiler to use/test, e.g. stage 0 uses the \
|
||||
"stage to build (indicates compiler to use/test, e.g., stage 0 uses the \
|
||||
bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)",
|
||||
"N");
|
||||
opts.optmulti("", "keep-stage", "stage(s) to keep without recompiling \
|
||||
(pass multiple times to keep e.g. both stages 0 and 1)", "N");
|
||||
(pass multiple times to keep e.g., both stages 0 and 1)", "N");
|
||||
opts.optopt("", "src", "path to the root of the rust checkout", "DIR");
|
||||
opts.optopt("j", "jobs", "number of jobs to run in parallel", "JOBS");
|
||||
opts.optflag("h", "help", "print this help message");
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Implementation of the install aspects of the compiler.
|
||||
//!
|
||||
//! This module is responsible for installing the standard library,
|
||||
@ -18,11 +8,11 @@ use std::fs;
|
||||
use std::path::{Path, PathBuf, Component};
|
||||
use std::process::Command;
|
||||
|
||||
use dist::{self, pkgname, sanitize_sh, tmpdir};
|
||||
use crate::dist::{self, pkgname, sanitize_sh, tmpdir};
|
||||
|
||||
use builder::{Builder, RunConfig, ShouldRun, Step};
|
||||
use cache::Interned;
|
||||
use config::Config;
|
||||
use crate::builder::{Builder, RunConfig, ShouldRun, Step};
|
||||
use crate::cache::Interned;
|
||||
use crate::config::Config;
|
||||
|
||||
pub fn install_docs(builder: &Builder, stage: u32, host: Interned<String>) {
|
||||
install_sh(builder, "docs", "rust-docs", stage, Some(host));
|
||||
@ -42,6 +32,9 @@ pub fn install_rls(builder: &Builder, stage: u32, host: Interned<String>) {
|
||||
pub fn install_clippy(builder: &Builder, stage: u32, host: Interned<String>) {
|
||||
install_sh(builder, "clippy", "clippy", stage, Some(host));
|
||||
}
|
||||
pub fn install_miri(builder: &Builder, stage: u32, host: Interned<String>) {
|
||||
install_sh(builder, "miri", "miri", stage, Some(host));
|
||||
}
|
||||
|
||||
pub fn install_rustfmt(builder: &Builder, stage: u32, host: Interned<String>) {
|
||||
install_sh(builder, "rustfmt", "rustfmt", stage, Some(host));
|
||||
@ -227,6 +220,14 @@ install!((self, builder, _config),
|
||||
builder.info(&format!("skipping Install clippy stage{} ({})", self.stage, self.target));
|
||||
}
|
||||
};
|
||||
Miri, "miri", Self::should_build(_config), only_hosts: true, {
|
||||
if builder.ensure(dist::Miri { stage: self.stage, target: self.target }).is_some() ||
|
||||
Self::should_install(builder) {
|
||||
install_miri(builder, self.stage, self.target);
|
||||
} else {
|
||||
builder.info(&format!("skipping Install miri stage{} ({})", self.stage, self.target));
|
||||
}
|
||||
};
|
||||
Rustfmt, "rustfmt", Self::should_build(_config), only_hosts: true, {
|
||||
if builder.ensure(dist::Rustfmt { stage: self.stage, target: self.target }).is_some() ||
|
||||
Self::should_install(builder) {
|
||||
|
||||
@ -1,16 +1,6 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Job management on Windows for bootstrapping
|
||||
//!
|
||||
//! Most of the time when you're running a build system (e.g. make) you expect
|
||||
//! Most of the time when you're running a build system (e.g., make) you expect
|
||||
//! Ctrl-C or abnormal termination to actually terminate the entire tree of
|
||||
//! process in play, not just the one at the top. This currently works "by
|
||||
//! default" on Unix platforms because Ctrl-C actually sends a signal to the
|
||||
@ -42,7 +32,7 @@
|
||||
use std::env;
|
||||
use std::io;
|
||||
use std::mem;
|
||||
use Build;
|
||||
use crate::Build;
|
||||
|
||||
type HANDLE = *mut u8;
|
||||
type BOOL = i32;
|
||||
@ -162,11 +152,11 @@ pub unsafe fn setup(build: &mut Build) {
|
||||
return
|
||||
}
|
||||
|
||||
// If we've got a parent process (e.g. the python script that called us)
|
||||
// If we've got a parent process (e.g., the python script that called us)
|
||||
// then move ownership of this job object up to them. That way if the python
|
||||
// script is killed (e.g. via ctrl-c) then we'll all be torn down.
|
||||
// script is killed (e.g., via ctrl-c) then we'll all be torn down.
|
||||
//
|
||||
// If we don't have a parent (e.g. this was run directly) then we
|
||||
// If we don't have a parent (e.g., this was run directly) then we
|
||||
// intentionally leak the job object handle. When our process exits
|
||||
// (normally or abnormally) it will close the handle implicitly, causing all
|
||||
// processes in the job to be cleaned up.
|
||||
@ -184,7 +174,7 @@ pub unsafe fn setup(build: &mut Build) {
|
||||
|
||||
// If this failed, well at least we tried! An example of DuplicateHandle
|
||||
// failing in the past has been when the wrong python2 package spawned this
|
||||
// build system (e.g. the `python2` package in MSYS instead of
|
||||
// build system (e.g., the `python2` package in MSYS instead of
|
||||
// `mingw-w64-x86_64-python2`. Not sure why it failed, but the "failure
|
||||
// mode" here is that we only clean everything up when the build system
|
||||
// dies, not when the python parent does, so not too bad.
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Implementation of rustbuild, the Rust build system.
|
||||
//!
|
||||
//! This module, and its descendants, are the implementation of the Rust build
|
||||
@ -38,7 +28,7 @@
|
||||
//! However, compiletest itself tries to avoid running tests when the artifacts
|
||||
//! that are involved (mainly the compiler) haven't changed.
|
||||
//!
|
||||
//! When you execute `x.py build`, the steps which are executed are:
|
||||
//! When you execute `x.py build`, the steps executed are:
|
||||
//!
|
||||
//! * First, the python script is run. This will automatically download the
|
||||
//! stage0 rustc and cargo according to `src/stage0.txt`, or use the cached
|
||||
@ -159,7 +149,7 @@ use std::os::windows::fs::symlink_file;
|
||||
use build_helper::{run_silent, run_suppressed, try_run_silent, try_run_suppressed, output, mtime};
|
||||
use filetime::FileTime;
|
||||
|
||||
use util::{exe, libdir, OutputFolder, CiEnv};
|
||||
use crate::util::{exe, libdir, OutputFolder, CiEnv};
|
||||
|
||||
mod cc_detect;
|
||||
mod channel;
|
||||
@ -188,7 +178,7 @@ mod job;
|
||||
mod job {
|
||||
use libc;
|
||||
|
||||
pub unsafe fn setup(build: &mut ::Build) {
|
||||
pub unsafe fn setup(build: &mut crate::Build) {
|
||||
if build.config.low_priority {
|
||||
libc::setpriority(libc::PRIO_PGRP as _, 0, 10);
|
||||
}
|
||||
@ -197,14 +187,14 @@ mod job {
|
||||
|
||||
#[cfg(any(target_os = "haiku", not(any(unix, windows))))]
|
||||
mod job {
|
||||
pub unsafe fn setup(_build: &mut ::Build) {
|
||||
pub unsafe fn setup(_build: &mut crate::Build) {
|
||||
}
|
||||
}
|
||||
|
||||
pub use config::Config;
|
||||
use flags::Subcommand;
|
||||
use cache::{Interned, INTERNER};
|
||||
use toolstate::ToolState;
|
||||
pub use crate::config::Config;
|
||||
use crate::flags::Subcommand;
|
||||
use crate::cache::{Interned, INTERNER};
|
||||
use crate::toolstate::ToolState;
|
||||
|
||||
const LLVM_TOOLS: &[&str] = &[
|
||||
"llvm-nm", // used to inspect binaries; it shows symbol names, their sizes and visibility
|
||||
@ -263,6 +253,7 @@ pub struct Build {
|
||||
cargo_info: channel::GitInfo,
|
||||
rls_info: channel::GitInfo,
|
||||
clippy_info: channel::GitInfo,
|
||||
miri_info: channel::GitInfo,
|
||||
rustfmt_info: channel::GitInfo,
|
||||
local_rebuild: bool,
|
||||
fail_fast: bool,
|
||||
@ -384,6 +375,7 @@ impl Build {
|
||||
let cargo_info = channel::GitInfo::new(&config, &src.join("src/tools/cargo"));
|
||||
let rls_info = channel::GitInfo::new(&config, &src.join("src/tools/rls"));
|
||||
let clippy_info = channel::GitInfo::new(&config, &src.join("src/tools/clippy"));
|
||||
let miri_info = channel::GitInfo::new(&config, &src.join("src/tools/miri"));
|
||||
let rustfmt_info = channel::GitInfo::new(&config, &src.join("src/tools/rustfmt"));
|
||||
|
||||
let mut build = Build {
|
||||
@ -406,6 +398,7 @@ impl Build {
|
||||
cargo_info,
|
||||
rls_info,
|
||||
clippy_info,
|
||||
miri_info,
|
||||
rustfmt_info,
|
||||
cc: HashMap::new(),
|
||||
cxx: HashMap::new(),
|
||||
@ -430,7 +423,7 @@ impl Build {
|
||||
Command::new(&build.initial_rustc).arg("--version").arg("--verbose"));
|
||||
let local_release = local_version_verbose
|
||||
.lines().filter(|x| x.starts_with("release:"))
|
||||
.next().unwrap().trim_left_matches("release:").trim();
|
||||
.next().unwrap().trim_start_matches("release:").trim();
|
||||
let my_version = channel::CFG_RELEASE_NUM;
|
||||
if local_release.split('.').take(2).eq(my_version.split('.').take(2)) {
|
||||
build.verbose(&format!("auto-detected local-rebuild {}", local_release));
|
||||
@ -1026,6 +1019,11 @@ impl Build {
|
||||
self.package_vers(&self.release_num("clippy"))
|
||||
}
|
||||
|
||||
/// Returns the value of `package_vers` above for miri
|
||||
fn miri_package_vers(&self) -> String {
|
||||
self.package_vers(&self.release_num("miri"))
|
||||
}
|
||||
|
||||
/// Returns the value of `package_vers` above for rustfmt
|
||||
fn rustfmt_package_vers(&self) -> String {
|
||||
self.package_vers(&self.release_num("rustfmt"))
|
||||
@ -1067,9 +1065,8 @@ impl Build {
|
||||
|
||||
/// Returns the `a.b.c` version that the given package is at.
|
||||
fn release_num(&self, package: &str) -> String {
|
||||
let mut toml = String::new();
|
||||
let toml_file_name = self.src.join(&format!("src/tools/{}/Cargo.toml", package));
|
||||
t!(t!(File::open(toml_file_name)).read_to_string(&mut toml));
|
||||
let toml = t!(fs::read_to_string(&toml_file_name));
|
||||
for line in toml.lines() {
|
||||
let prefix = "version = \"";
|
||||
let suffix = "\"";
|
||||
@ -1135,10 +1132,10 @@ impl Build {
|
||||
let krate = &self.crates[&krate];
|
||||
if krate.is_local(self) {
|
||||
ret.push(krate);
|
||||
for dep in &krate.deps {
|
||||
if visited.insert(dep) && dep != "build_helper" {
|
||||
list.push(*dep);
|
||||
}
|
||||
}
|
||||
for dep in &krate.deps {
|
||||
if visited.insert(dep) && dep != "build_helper" {
|
||||
list.push(*dep);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1151,8 +1148,7 @@ impl Build {
|
||||
}
|
||||
|
||||
let mut paths = Vec::new();
|
||||
let mut contents = Vec::new();
|
||||
t!(t!(File::open(stamp)).read_to_end(&mut contents));
|
||||
let contents = t!(fs::read(stamp));
|
||||
// This is the method we use for extracting paths from the stamp file passed to us. See
|
||||
// run_cargo for more information (in compile.rs).
|
||||
for part in contents.split(|b| *b == 0) {
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
use std::collections::HashMap;
|
||||
use std::process::Command;
|
||||
use std::path::PathBuf;
|
||||
@ -16,8 +6,8 @@ use std::collections::HashSet;
|
||||
use build_helper::output;
|
||||
use serde_json;
|
||||
|
||||
use {Build, Crate};
|
||||
use cache::INTERNER;
|
||||
use crate::{Build, Crate};
|
||||
use crate::cache::INTERNER;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct Output {
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
ifdef VERBOSE
|
||||
Q :=
|
||||
BOOTSTRAP_ARGS := -v
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Compilation of native dependencies like LLVM.
|
||||
//!
|
||||
//! Native projects like LLVM unfortunately aren't suited just yet for
|
||||
@ -21,7 +11,6 @@
|
||||
use std::env;
|
||||
use std::ffi::OsString;
|
||||
use std::fs::{self, File};
|
||||
use std::io::{Read, Write};
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::process::Command;
|
||||
|
||||
@ -29,11 +18,11 @@ use build_helper::output;
|
||||
use cmake;
|
||||
use cc;
|
||||
|
||||
use util::{self, exe};
|
||||
use crate::util::{self, exe};
|
||||
use build_helper::up_to_date;
|
||||
use builder::{Builder, RunConfig, ShouldRun, Step};
|
||||
use cache::Interned;
|
||||
use GitRepo;
|
||||
use crate::builder::{Builder, RunConfig, ShouldRun, Step};
|
||||
use crate::cache::Interned;
|
||||
use crate::GitRepo;
|
||||
|
||||
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
|
||||
pub struct Llvm {
|
||||
@ -75,8 +64,7 @@ impl Step for Llvm {
|
||||
}
|
||||
|
||||
let rebuild_trigger = builder.src.join("src/rustllvm/llvm-rebuild-trigger");
|
||||
let mut rebuild_trigger_contents = String::new();
|
||||
t!(t!(File::open(&rebuild_trigger)).read_to_string(&mut rebuild_trigger_contents));
|
||||
let rebuild_trigger_contents = t!(fs::read_to_string(&rebuild_trigger));
|
||||
|
||||
let (out_dir, llvm_config_ret_dir) = if emscripten {
|
||||
let dir = builder.emscripten_llvm_out(target);
|
||||
@ -93,8 +81,7 @@ impl Step for Llvm {
|
||||
let build_llvm_config = llvm_config_ret_dir
|
||||
.join(exe("llvm-config", &*builder.config.build));
|
||||
if done_stamp.exists() {
|
||||
let mut done_contents = String::new();
|
||||
t!(t!(File::open(&done_stamp)).read_to_string(&mut done_contents));
|
||||
let done_contents = t!(fs::read_to_string(&done_stamp));
|
||||
|
||||
// If LLVM was already built previously and contents of the rebuild-trigger file
|
||||
// didn't change from the previous build, then no action is required.
|
||||
@ -248,10 +235,10 @@ impl Step for Llvm {
|
||||
cfg.define("PYTHON_EXECUTABLE", python);
|
||||
}
|
||||
|
||||
configure_cmake(builder, target, &mut cfg, false);
|
||||
configure_cmake(builder, target, &mut cfg);
|
||||
|
||||
// FIXME: we don't actually need to build all LLVM tools and all LLVM
|
||||
// libraries here, e.g. we just want a few components and a few
|
||||
// libraries here, e.g., we just want a few components and a few
|
||||
// tools. Figure out how to filter them down and only build the right
|
||||
// tools and libs on all platforms.
|
||||
|
||||
@ -261,7 +248,7 @@ impl Step for Llvm {
|
||||
|
||||
cfg.build();
|
||||
|
||||
t!(t!(File::create(&done_stamp)).write_all(rebuild_trigger_contents.as_bytes()));
|
||||
t!(fs::write(&done_stamp, &rebuild_trigger_contents));
|
||||
|
||||
build_llvm_config
|
||||
}
|
||||
@ -281,17 +268,16 @@ fn check_llvm_version(builder: &Builder, llvm_config: &Path) {
|
||||
let mut parts = version.split('.').take(2)
|
||||
.filter_map(|s| s.parse::<u32>().ok());
|
||||
if let (Some(major), Some(_minor)) = (parts.next(), parts.next()) {
|
||||
if major >= 5 {
|
||||
if major >= 6 {
|
||||
return
|
||||
}
|
||||
}
|
||||
panic!("\n\nbad LLVM version: {}, need >=5.0\n\n", version)
|
||||
panic!("\n\nbad LLVM version: {}, need >=6.0\n\n", version)
|
||||
}
|
||||
|
||||
fn configure_cmake(builder: &Builder,
|
||||
target: Interned<String>,
|
||||
cfg: &mut cmake::Config,
|
||||
building_dist_binaries: bool) {
|
||||
cfg: &mut cmake::Config) {
|
||||
if builder.config.ninja {
|
||||
cfg.generator("Ninja");
|
||||
}
|
||||
@ -360,15 +346,13 @@ fn configure_cmake(builder: &Builder,
|
||||
if builder.config.llvm_clang_cl.is_some() && target.contains("i686") {
|
||||
cfg.env("SCCACHE_EXTRA_ARGS", "-m32");
|
||||
}
|
||||
|
||||
// If ccache is configured we inform the build a little differently how
|
||||
// to invoke ccache while also invoking our compilers.
|
||||
} else if let Some(ref ccache) = builder.config.ccache {
|
||||
cfg.define("CMAKE_C_COMPILER", ccache)
|
||||
.define("CMAKE_C_COMPILER_ARG1", sanitize_cc(cc))
|
||||
.define("CMAKE_CXX_COMPILER", ccache)
|
||||
.define("CMAKE_CXX_COMPILER_ARG1", sanitize_cc(cxx));
|
||||
} else {
|
||||
// If ccache is configured we inform the build a little differently how
|
||||
// to invoke ccache while also invoking our compilers.
|
||||
if let Some(ref ccache) = builder.config.ccache {
|
||||
cfg.define("CMAKE_C_COMPILER_LAUNCHER", ccache)
|
||||
.define("CMAKE_CXX_COMPILER_LAUNCHER", ccache);
|
||||
}
|
||||
cfg.define("CMAKE_C_COMPILER", sanitize_cc(cc))
|
||||
.define("CMAKE_CXX_COMPILER", sanitize_cc(cxx));
|
||||
}
|
||||
@ -376,10 +360,11 @@ fn configure_cmake(builder: &Builder,
|
||||
cfg.build_arg("-j").build_arg(builder.jobs().to_string());
|
||||
cfg.define("CMAKE_C_FLAGS", builder.cflags(target, GitRepo::Llvm).join(" "));
|
||||
let mut cxxflags = builder.cflags(target, GitRepo::Llvm).join(" ");
|
||||
if building_dist_binaries {
|
||||
if builder.config.llvm_static_stdcpp && !target.contains("windows") {
|
||||
cxxflags.push_str(" -static-libstdc++");
|
||||
}
|
||||
if builder.config.llvm_static_stdcpp &&
|
||||
!target.contains("windows") &&
|
||||
!target.contains("netbsd")
|
||||
{
|
||||
cxxflags.push_str(" -static-libstdc++");
|
||||
}
|
||||
cfg.define("CMAKE_CXX_FLAGS", cxxflags);
|
||||
if let Some(ar) = builder.ar(target) {
|
||||
@ -444,7 +429,7 @@ impl Step for Lld {
|
||||
t!(fs::create_dir_all(&out_dir));
|
||||
|
||||
let mut cfg = cmake::Config::new(builder.src.join("src/tools/lld"));
|
||||
configure_cmake(builder, target, &mut cfg, true);
|
||||
configure_cmake(builder, target, &mut cfg);
|
||||
|
||||
// This is an awful, awful hack. Discovered when we migrated to using
|
||||
// clang-cl to compile LLVM/LLD it turns out that LLD, when built out of
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Sanity checking performed by rustbuild before actually executing anything.
|
||||
//!
|
||||
//! This module contains the implementation of ensuring that the build
|
||||
@ -21,14 +11,13 @@
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::ffi::{OsString, OsStr};
|
||||
use std::fs::{self, File};
|
||||
use std::io::Read;
|
||||
use std::fs;
|
||||
use std::path::PathBuf;
|
||||
use std::process::Command;
|
||||
|
||||
use build_helper::output;
|
||||
|
||||
use Build;
|
||||
use crate::Build;
|
||||
|
||||
struct Finder {
|
||||
cache: HashMap<OsString, Option<PathBuf>>,
|
||||
@ -235,9 +224,7 @@ $ pacman -R cmake && pacman -S mingw-w64-x86_64-cmake
|
||||
}
|
||||
|
||||
if build.config.channel == "stable" {
|
||||
let mut stage0 = String::new();
|
||||
t!(t!(File::open(build.src.join("src/stage0.txt")))
|
||||
.read_to_string(&mut stage0));
|
||||
let stage0 = t!(fs::read_to_string(build.src.join("src/stage0.txt")));
|
||||
if stage0.contains("\ndev:") {
|
||||
panic!("bootstrapping from a dev compiler in a stable release, but \
|
||||
should only be bootstrapping from a released compiler!");
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Implementation of the test-related targets of the build system.
|
||||
//!
|
||||
//! This file implements the various regression test suites that we execute on
|
||||
@ -16,25 +6,24 @@
|
||||
use std::env;
|
||||
use std::ffi::OsString;
|
||||
use std::fmt;
|
||||
use std::fs::{self, File};
|
||||
use std::io::Read;
|
||||
use std::fs;
|
||||
use std::iter;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::process::Command;
|
||||
|
||||
use build_helper::{self, output};
|
||||
|
||||
use builder::{Builder, Compiler, Kind, RunConfig, ShouldRun, Step};
|
||||
use cache::{Interned, INTERNER};
|
||||
use compile;
|
||||
use dist;
|
||||
use flags::Subcommand;
|
||||
use native;
|
||||
use tool::{self, Tool, SourceType};
|
||||
use toolstate::ToolState;
|
||||
use util::{self, dylib_path, dylib_path_var};
|
||||
use Crate as CargoCrate;
|
||||
use {DocTests, Mode, GitRepo};
|
||||
use crate::builder::{Builder, Compiler, Kind, RunConfig, ShouldRun, Step};
|
||||
use crate::cache::{Interned, INTERNER};
|
||||
use crate::compile;
|
||||
use crate::dist;
|
||||
use crate::flags::Subcommand;
|
||||
use crate::native;
|
||||
use crate::tool::{self, Tool, SourceType};
|
||||
use crate::toolstate::ToolState;
|
||||
use crate::util::{self, dylib_path, dylib_path_var};
|
||||
use crate::Crate as CargoCrate;
|
||||
use crate::{DocTests, Mode, GitRepo};
|
||||
|
||||
const ADB_TEST_DIR: &str = "/data/tmp/work";
|
||||
|
||||
@ -294,13 +283,6 @@ impl Step for Rls {
|
||||
SourceType::Submodule,
|
||||
&[]);
|
||||
|
||||
// Copy `src/tools/rls/test_data` to a writable drive.
|
||||
let test_workspace_path = builder.out.join("rls-test-data");
|
||||
let test_data_path = test_workspace_path.join("test_data");
|
||||
builder.create_dir(&test_data_path);
|
||||
builder.cp_r(&builder.src.join("src/tools/rls/test_data"), &test_data_path);
|
||||
cargo.env("RLS_TEST_WORKSPACE_DIR", test_workspace_path);
|
||||
|
||||
builder.add_rustc_lib_path(compiler, &mut cargo);
|
||||
cargo.arg("--")
|
||||
.args(builder.config.cmd.test_args());
|
||||
@ -430,6 +412,45 @@ impl Step for Miri {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
||||
pub struct CompiletestTest {
|
||||
stage: u32,
|
||||
host: Interned<String>,
|
||||
}
|
||||
|
||||
impl Step for CompiletestTest {
|
||||
type Output = ();
|
||||
|
||||
fn should_run(run: ShouldRun) -> ShouldRun {
|
||||
run.path("src/tools/compiletest")
|
||||
}
|
||||
|
||||
fn make_run(run: RunConfig) {
|
||||
run.builder.ensure(CompiletestTest {
|
||||
stage: run.builder.top_stage,
|
||||
host: run.target,
|
||||
});
|
||||
}
|
||||
|
||||
/// Runs `cargo test` for compiletest.
|
||||
fn run(self, builder: &Builder) {
|
||||
let stage = self.stage;
|
||||
let host = self.host;
|
||||
let compiler = builder.compiler(stage, host);
|
||||
|
||||
let mut cargo = tool::prepare_tool_cargo(builder,
|
||||
compiler,
|
||||
Mode::ToolBootstrap,
|
||||
host,
|
||||
"test",
|
||||
"src/tools/compiletest",
|
||||
SourceType::InTree,
|
||||
&[]);
|
||||
|
||||
try_run(builder, &mut cargo);
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
||||
pub struct Clippy {
|
||||
stage: u32,
|
||||
@ -578,7 +599,7 @@ impl Step for RustdocJS {
|
||||
if let Some(ref nodejs) = builder.config.nodejs {
|
||||
let mut command = Command::new(nodejs);
|
||||
command.args(&["src/tools/rustdoc-js/tester.js", &*self.host]);
|
||||
builder.ensure(::doc::Std {
|
||||
builder.ensure(crate::doc::Std {
|
||||
target: self.target,
|
||||
stage: builder.top_stage,
|
||||
});
|
||||
@ -833,12 +854,6 @@ host_test!(RunFailFullDeps {
|
||||
suite: "run-fail-fulldeps"
|
||||
});
|
||||
|
||||
host_test!(CompileFailFullDeps {
|
||||
path: "src/test/compile-fail-fulldeps",
|
||||
mode: "compile-fail",
|
||||
suite: "compile-fail-fulldeps"
|
||||
});
|
||||
|
||||
host_test!(Rustdoc {
|
||||
path: "src/test/rustdoc",
|
||||
mode: "rustdoc",
|
||||
@ -971,7 +986,7 @@ impl Step for Compiletest {
|
||||
}
|
||||
|
||||
if builder.no_std(target) == Some(true) {
|
||||
// for no_std run-make (e.g. thumb*),
|
||||
// for no_std run-make (e.g., thumb*),
|
||||
// we need a host compiler which is called by cargo.
|
||||
builder.ensure(compile::Std { compiler, target: compiler.host });
|
||||
}
|
||||
@ -1277,7 +1292,7 @@ impl Step for DocTest {
|
||||
|
||||
/// Run `rustdoc --test` for all documentation in `src/doc`.
|
||||
///
|
||||
/// This will run all tests in our markdown documentation (e.g. the book)
|
||||
/// This will run all tests in our markdown documentation (e.g., the book)
|
||||
/// located in `src/doc`. The `rustdoc` that's run is the one that sits next to
|
||||
/// `compiler`.
|
||||
fn run(self, builder: &Builder) {
|
||||
@ -1427,10 +1442,8 @@ impl Step for ErrorIndex {
|
||||
}
|
||||
|
||||
fn markdown_test(builder: &Builder, compiler: Compiler, markdown: &Path) -> bool {
|
||||
match File::open(markdown) {
|
||||
Ok(mut file) => {
|
||||
let mut contents = String::new();
|
||||
t!(file.read_to_string(&mut contents));
|
||||
match fs::read_to_string(markdown) {
|
||||
Ok(contents) => {
|
||||
if !contents.contains("```") {
|
||||
return true;
|
||||
}
|
||||
@ -1567,10 +1580,7 @@ impl Step for Crate {
|
||||
let builder = run.builder;
|
||||
run = run.krate("test");
|
||||
for krate in run.builder.in_tree_crates("std") {
|
||||
if krate.is_local(&run.builder)
|
||||
&& !(krate.name.starts_with("rustc_") && krate.name.ends_with("san"))
|
||||
&& krate.name != "dlmalloc"
|
||||
{
|
||||
if !(krate.name.starts_with("rustc_") && krate.name.ends_with("san")) {
|
||||
run = run.path(krate.local_path(&builder).to_str().unwrap());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
use std::fs;
|
||||
use std::env;
|
||||
use std::iter;
|
||||
@ -15,16 +5,16 @@ use std::path::PathBuf;
|
||||
use std::process::{Command, exit};
|
||||
use std::collections::HashSet;
|
||||
|
||||
use Mode;
|
||||
use Compiler;
|
||||
use builder::{Step, RunConfig, ShouldRun, Builder};
|
||||
use util::{exe, add_lib_path};
|
||||
use compile;
|
||||
use native;
|
||||
use channel::GitInfo;
|
||||
use channel;
|
||||
use cache::Interned;
|
||||
use toolstate::ToolState;
|
||||
use crate::Mode;
|
||||
use crate::Compiler;
|
||||
use crate::builder::{Step, RunConfig, ShouldRun, Builder};
|
||||
use crate::util::{exe, add_lib_path};
|
||||
use crate::compile;
|
||||
use crate::native;
|
||||
use crate::channel::GitInfo;
|
||||
use crate::channel;
|
||||
use crate::cache::Interned;
|
||||
use crate::toolstate::ToolState;
|
||||
|
||||
#[derive(Debug, Clone, Hash, PartialEq, Eq)]
|
||||
pub enum SourceType {
|
||||
@ -87,12 +77,13 @@ impl Step for ToolBuild {
|
||||
let _folder = builder.fold_output(|| format!("stage{}-{}", compiler.stage, tool));
|
||||
builder.info(&format!("Building stage{} tool {} ({})", compiler.stage, tool, target));
|
||||
let mut duplicates = Vec::new();
|
||||
let is_expected = compile::stream_cargo(builder, &mut cargo, vec![], &mut |msg| {
|
||||
let is_expected = compile::stream_cargo(builder, &mut cargo, &mut |msg| {
|
||||
// Only care about big things like the RLS/Cargo for now
|
||||
match tool {
|
||||
| "rls"
|
||||
| "cargo"
|
||||
| "clippy-driver"
|
||||
| "miri"
|
||||
=> {}
|
||||
|
||||
_ => return,
|
||||
@ -150,7 +141,7 @@ impl Step for ToolBuild {
|
||||
});
|
||||
|
||||
if is_expected && !duplicates.is_empty() {
|
||||
println!("duplicate artfacts found when compiling a tool, this \
|
||||
println!("duplicate artifacts found when compiling a tool, this \
|
||||
typically means that something was recompiled because \
|
||||
a transitive dependency has different features activated \
|
||||
than in a previous build:\n");
|
||||
@ -228,6 +219,7 @@ pub fn prepare_tool_cargo(
|
||||
if path.ends_with("cargo") ||
|
||||
path.ends_with("rls") ||
|
||||
path.ends_with("clippy") ||
|
||||
path.ends_with("miri") ||
|
||||
path.ends_with("rustfmt")
|
||||
{
|
||||
cargo.env("LIBZ_SYS_STATIC", "1");
|
||||
@ -602,6 +594,14 @@ tool_extended!((self, builder),
|
||||
});
|
||||
};
|
||||
Miri, miri, "src/tools/miri", "miri", {};
|
||||
CargoMiri, miri, "src/tools/miri", "cargo-miri", {
|
||||
// Miri depends on procedural macros (serde), which requires a full host
|
||||
// compiler to be available, so we need to depend on that.
|
||||
builder.ensure(compile::Rustc {
|
||||
compiler: self.compiler,
|
||||
target: builder.config.build,
|
||||
});
|
||||
};
|
||||
Rls, rls, "src/tools/rls", "rls", {
|
||||
let clippy = builder.ensure(Clippy {
|
||||
compiler: self.compiler,
|
||||
@ -646,7 +646,7 @@ impl<'a> Builder<'a> {
|
||||
self.cargo_out(compiler, tool.get_mode(), *host).join("deps"),
|
||||
];
|
||||
|
||||
// On MSVC a tool may invoke a C compiler (e.g. compiletest in run-make
|
||||
// On MSVC a tool may invoke a C compiler (e.g., compiletest in run-make
|
||||
// mode) and that C compiler may need some extra PATH modification. Do
|
||||
// so here.
|
||||
if compiler.host.contains("msvc") {
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "kebab-case")]
|
||||
/// Whether a tool can be compiled, tested or neither
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! Various utility functions used throughout rustbuild.
|
||||
//!
|
||||
//! Simple things like testing the various filesystem operations here and there,
|
||||
@ -21,8 +11,8 @@ use std::path::{Path, PathBuf};
|
||||
use std::process::Command;
|
||||
use std::time::{SystemTime, Instant};
|
||||
|
||||
use config::Config;
|
||||
use builder::Builder;
|
||||
use crate::config::Config;
|
||||
use crate::builder::Builder;
|
||||
|
||||
/// Returns the `name` as the filename of a static library for `target`.
|
||||
pub fn staticlib(name: &str, target: &str) -> String {
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
use std::fs::File;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::process::{Command, Stdio};
|
||||
@ -224,14 +214,12 @@ impl Drop for NativeLibBoilerplate {
|
||||
// Timestamps are created automatically when the result of `native_lib_boilerplate` goes out
|
||||
// of scope, so all the build actions should be completed until then.
|
||||
pub fn native_lib_boilerplate(
|
||||
src_name: &str,
|
||||
src_dir: &Path,
|
||||
out_name: &str,
|
||||
link_name: &str,
|
||||
search_subdir: &str,
|
||||
) -> Result<NativeLibBoilerplate, ()> {
|
||||
let current_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
|
||||
let src_dir = current_dir.join("..").join(src_name);
|
||||
rerun_if_changed_anything_in_dir(&src_dir);
|
||||
rerun_if_changed_anything_in_dir(src_dir);
|
||||
|
||||
let out_dir = env::var_os("RUSTBUILD_NATIVE_DIR").unwrap_or_else(||
|
||||
env::var_os("OUT_DIR").unwrap());
|
||||
@ -248,9 +236,9 @@ pub fn native_lib_boilerplate(
|
||||
);
|
||||
|
||||
let timestamp = out_dir.join("rustbuild.timestamp");
|
||||
if !up_to_date(Path::new("build.rs"), ×tamp) || !up_to_date(&src_dir, ×tamp) {
|
||||
if !up_to_date(Path::new("build.rs"), ×tamp) || !up_to_date(src_dir, ×tamp) {
|
||||
Ok(NativeLibBoilerplate {
|
||||
src_dir: src_dir,
|
||||
src_dir: src_dir.to_path_buf(),
|
||||
out_dir: out_dir,
|
||||
})
|
||||
} else {
|
||||
@ -279,8 +267,11 @@ pub fn sanitizer_lib_boilerplate(sanitizer_name: &str)
|
||||
} else {
|
||||
format!("static={}", link_name)
|
||||
};
|
||||
// The source for `compiler-rt` comes from the `compiler-builtins` crate, so
|
||||
// load our env var set by cargo to find the source code.
|
||||
let dir = env::var_os("DEP_COMPILER_RT_COMPILER_RT").unwrap();
|
||||
let lib = native_lib_boilerplate(
|
||||
"libcompiler_builtins/compiler-rt",
|
||||
dir.as_ref(),
|
||||
sanitizer_name,
|
||||
&to_link,
|
||||
search_path,
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
wget http://packages.haiku-os.org/haikuports/master/hpkg/llvm-4.0.1-2-x86_64.hpkg
|
||||
wget http://packages.haiku-os.org/haikuports/master/hpkg/llvm_libs-4.0.1-2-x86_64.hpkg
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/bin/sh
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
case $1 in
|
||||
--version) echo 4.0.1;;
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
path="$(dirname $1)"
|
||||
file="$(basename $1)"
|
||||
|
||||
@ -1,14 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
hide_output() {
|
||||
|
||||
@ -16,6 +16,7 @@ RUN . /scripts/android-ndk.sh && \
|
||||
# env
|
||||
ENV TARGETS=arm-linux-androideabi
|
||||
ENV TARGETS=$TARGETS,armv7-linux-androideabi
|
||||
ENV TARGETS=$TARGETS,thumbv7neon-linux-androideabi
|
||||
ENV TARGETS=$TARGETS,i686-linux-android
|
||||
ENV TARGETS=$TARGETS,aarch64-linux-android
|
||||
ENV TARGETS=$TARGETS,x86_64-linux-android
|
||||
@ -24,6 +25,7 @@ ENV RUST_CONFIGURE_ARGS \
|
||||
--enable-extended \
|
||||
--arm-linux-androideabi-ndk=/android/ndk/arm-14 \
|
||||
--armv7-linux-androideabi-ndk=/android/ndk/arm-14 \
|
||||
--thumbv7neon-linux-androideabi-ndk=/android/ndk/arm-14 \
|
||||
--i686-linux-android-ndk=/android/ndk/x86-14 \
|
||||
--aarch64-linux-android-ndk=/android/ndk/arm64-21 \
|
||||
--x86_64-linux-android-ndk=/android/ndk/x86_64-21 \
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
|
||||
@ -67,7 +67,7 @@ RUN ./build-gcc.sh
|
||||
COPY dist-x86_64-linux/build-python.sh /tmp/
|
||||
RUN ./build-python.sh
|
||||
|
||||
# Now build LLVM+Clang 6, afterwards configuring further compilations to use the
|
||||
# Now build LLVM+Clang 7, afterwards configuring further compilations to use the
|
||||
# clang/clang++ compilers.
|
||||
COPY dist-x86_64-linux/build-clang.sh /tmp/
|
||||
RUN ./build-clang.sh
|
||||
|
||||
@ -1,14 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
hide_output() {
|
||||
|
||||
@ -1,14 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
source shared.sh
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
hide_output() {
|
||||
set +x
|
||||
on_err="
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
hide_output() {
|
||||
set +x
|
||||
on_err="
|
||||
|
||||
@ -1,14 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
hide_output() {
|
||||
|
||||
@ -21,12 +21,18 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
patch \
|
||||
libssl-dev \
|
||||
pkg-config \
|
||||
gcc-arm-none-eabi \
|
||||
libnewlib-arm-none-eabi \
|
||||
qemu-system-arm
|
||||
qemu-system-arm \
|
||||
# software-properties-common for the add-apt-repository command
|
||||
software-properties-common
|
||||
|
||||
WORKDIR /build
|
||||
|
||||
# Use the team-gcc-arm-embedded PPA for a newer version of Arm GCC
|
||||
RUN add-apt-repository ppa:team-gcc-arm-embedded/ppa && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends gcc-arm-embedded
|
||||
|
||||
COPY dist-various-1/build-rumprun.sh /build
|
||||
RUN ./build-rumprun.sh
|
||||
|
||||
@ -52,8 +58,8 @@ RUN env \
|
||||
CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv6 -marm" \
|
||||
bash musl.sh arm && \
|
||||
env \
|
||||
CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv6 -marm" \
|
||||
CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv6 -marm" \
|
||||
CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv6 -marm -mfpu=vfp" \
|
||||
CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv6 -marm -mfpu=vfp" \
|
||||
bash musl.sh armhf && \
|
||||
env \
|
||||
CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv7-a" \
|
||||
@ -103,19 +109,24 @@ ENV TARGETS=$TARGETS,thumbv6m-none-eabi
|
||||
ENV TARGETS=$TARGETS,thumbv7m-none-eabi
|
||||
ENV TARGETS=$TARGETS,thumbv7em-none-eabi
|
||||
ENV TARGETS=$TARGETS,thumbv7em-none-eabihf
|
||||
ENV TARGETS=$TARGETS,thumbv8m.main-none-eabi
|
||||
ENV TARGETS=$TARGETS,riscv32imc-unknown-none-elf
|
||||
ENV TARGETS=$TARGETS,riscv32imac-unknown-none-elf
|
||||
ENV TARGETS=$TARGETS,armebv7r-none-eabi
|
||||
ENV TARGETS=$TARGETS,armebv7r-none-eabihf
|
||||
ENV TARGETS=$TARGETS,armv7r-none-eabi
|
||||
ENV TARGETS=$TARGETS,armv7r-none-eabihf
|
||||
ENV TARGETS=$TARGETS,thumbv7neon-unknown-linux-gnueabihf
|
||||
|
||||
ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
|
||||
CC_mips_unknown_linux_musl=mips-openwrt-linux-gcc \
|
||||
CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \
|
||||
CC_x86_64_unknown_redox=x86_64-unknown-redox-gcc \
|
||||
CC_armebv7r_none_eabi=arm-none-eabi-gcc
|
||||
|
||||
CC_armebv7r_none_eabi=arm-none-eabi-gcc \
|
||||
CC_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-gcc \
|
||||
AR_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-ar \
|
||||
CXX_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++
|
||||
|
||||
ENV RUST_CONFIGURE_ARGS \
|
||||
--musl-root-armv5te=/musl-armv5te \
|
||||
--musl-root-arm=/musl-arm \
|
||||
|
||||
@ -1,14 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
hide_output() {
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
mkdir /usr/local/mips-linux-musl
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
mkdir /usr/local/mipsel-linux-musl
|
||||
|
||||
@ -1,14 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# ignore-tidy-linelength
|
||||
|
||||
set -ex
|
||||
|
||||
@ -29,6 +29,10 @@ RUN /tmp/build-fuchsia-toolchain.sh
|
||||
COPY dist-various-2/build-solaris-toolchain.sh /tmp/
|
||||
RUN /tmp/build-solaris-toolchain.sh x86_64 amd64 solaris-i386
|
||||
RUN /tmp/build-solaris-toolchain.sh sparcv9 sparcv9 solaris-sparc
|
||||
COPY dist-various-2/build-x86_64-fortanix-unknown-sgx-toolchain.sh /tmp/
|
||||
# We pass the commit id of the port of LLVM's libunwind to the build script.
|
||||
# Any update to the commit id here, should cause the container image to be re-built from this point on.
|
||||
RUN /tmp/build-x86_64-fortanix-unknown-sgx-toolchain.sh "bbe23902411be88d7388f381becefadd6e3ef819"
|
||||
|
||||
COPY scripts/sccache.sh /scripts/
|
||||
RUN sh /scripts/sccache.sh
|
||||
@ -65,6 +69,9 @@ ENV TARGETS=$TARGETS,wasm32-unknown-unknown
|
||||
ENV TARGETS=$TARGETS,x86_64-sun-solaris
|
||||
ENV TARGETS=$TARGETS,x86_64-unknown-linux-gnux32
|
||||
ENV TARGETS=$TARGETS,x86_64-unknown-cloudabi
|
||||
ENV TARGETS=$TARGETS,x86_64-fortanix-unknown-sgx
|
||||
|
||||
ENV X86_FORTANIX_SGX_LIBS="/x86_64-fortanix-unknown-sgx/lib/"
|
||||
|
||||
ENV RUST_CONFIGURE_ARGS --enable-extended --enable-lld --disable-docs
|
||||
ENV SCRIPT python2.7 ../x.py dist --target $TARGETS
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -eux
|
||||
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# ignore-tidy-linelength
|
||||
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
source shared.sh
|
||||
|
||||
57
src/ci/docker/dist-various-2/build-x86_64-fortanix-unknown-sgx-toolchain.sh
Executable file
57
src/ci/docker/dist-various-2/build-x86_64-fortanix-unknown-sgx-toolchain.sh
Executable file
@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
source shared.sh
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: ${0} <commit_id>"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
target="x86_64-fortanix-unknown-sgx"
|
||||
url="https://github.com/fortanix/llvm-project/archive/${1}.tar.gz"
|
||||
repo_name="llvm-project"
|
||||
|
||||
install_prereq()
|
||||
{
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
git
|
||||
}
|
||||
|
||||
# Clone Fortanix's port of llvm-project to build libunwind that would link with this target.
|
||||
# The below method to download a single commit from llvm-project is based on fetch_submodule
|
||||
# from init_repo.sh
|
||||
fetch_llvm_commit()
|
||||
{
|
||||
cached="download-${repo_name}.tar.gz"
|
||||
curl -f -sSL -o ${cached} ${url}
|
||||
tar -xvzf ${cached}
|
||||
mkdir "./${repo_name}" && tar -xf ${cached} -C ${repo_name} --strip-components 1
|
||||
}
|
||||
|
||||
build_unwind()
|
||||
{
|
||||
dir_name="${target}_temp"
|
||||
rm -rf "./${dir_name}"
|
||||
mkdir -p ${dir_name}
|
||||
cd ${dir_name}
|
||||
|
||||
retry fetch_llvm_commit
|
||||
cd "${repo_name}/libunwind"
|
||||
|
||||
# Build libunwind
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE="RELEASE" -DRUST_SGX=1 -G "Unix Makefiles" -DLLVM_PATH=../../llvm/ ../
|
||||
make unwind_static
|
||||
install -D "lib/libunwind.a" "/${target}/lib/libunwind.a"
|
||||
rm -rf ${dir_name}
|
||||
}
|
||||
|
||||
set -x
|
||||
hide_output install_prereq
|
||||
hide_output build_unwind
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
hide_output() {
|
||||
set +x
|
||||
on_err="
|
||||
@ -23,3 +13,21 @@ exit 1
|
||||
kill $PING_LOOP_PID
|
||||
set -x
|
||||
}
|
||||
|
||||
function retry {
|
||||
echo "Attempting with retry:" "$@"
|
||||
local n=1
|
||||
local max=5
|
||||
while true; do
|
||||
"$@" && break || {
|
||||
if [[ $n -lt $max ]]; then
|
||||
sleep $n # don't retry immediately
|
||||
((n++))
|
||||
echo "Command failed. Attempt $n/$max:"
|
||||
else
|
||||
echo "The command has failed after $n attempts."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
done
|
||||
}
|
||||
|
||||
@ -67,7 +67,7 @@ RUN ./build-gcc.sh
|
||||
COPY dist-x86_64-linux/build-python.sh /tmp/
|
||||
RUN ./build-python.sh
|
||||
|
||||
# Now build LLVM+Clang 6, afterwards configuring further compilations to use the
|
||||
# Now build LLVM+Clang 7, afterwards configuring further compilations to use the
|
||||
# clang/clang++ compilers.
|
||||
COPY dist-x86_64-linux/build-clang.sh /tmp/
|
||||
RUN ./build-clang.sh
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
|
||||
@ -1,43 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
source shared.sh
|
||||
|
||||
LLVM=6.0.0
|
||||
# Currently these commits are all tip-of-tree as of 2018-12-16, used to pick up
|
||||
# a fix for rust-lang/rust#56849
|
||||
LLVM=032b00a5404865765cda7db3039f39d54964d8b0
|
||||
LLD=3e4aa4e8671523321af51449e0569f455ef3ad43
|
||||
CLANG=a6b9739069763243020f4ea6fe586bc135fde1f9
|
||||
|
||||
mkdir clang
|
||||
cd clang
|
||||
|
||||
curl https://releases.llvm.org/$LLVM/llvm-$LLVM.src.tar.xz | \
|
||||
xz -d | \
|
||||
tar xf -
|
||||
|
||||
cd llvm-$LLVM.src
|
||||
curl -L https://github.com/llvm-mirror/llvm/archive/$LLVM.tar.gz | \
|
||||
tar xzf - --strip-components=1
|
||||
|
||||
mkdir -p tools/clang
|
||||
|
||||
curl https://releases.llvm.org/$LLVM/cfe-$LLVM.src.tar.xz | \
|
||||
xz -d | \
|
||||
tar xf - -C tools/clang --strip-components=1
|
||||
curl -L https://github.com/llvm-mirror/clang/archive/$CLANG.tar.gz | \
|
||||
tar xzf - --strip-components=1 -C tools/clang
|
||||
|
||||
mkdir -p tools/lld
|
||||
curl -L https://github.com/llvm-mirror/lld/archive/$LLD.tar.gz | \
|
||||
tar zxf - --strip-components=1 -C tools/lld
|
||||
|
||||
curl https://releases.llvm.org/$LLVM/lld-$LLVM.src.tar.xz | \
|
||||
xz -d | \
|
||||
tar xf - -C tools/lld --strip-components=1
|
||||
|
||||
mkdir ../clang-build
|
||||
cd ../clang-build
|
||||
mkdir clang-build
|
||||
cd clang-build
|
||||
|
||||
# For whatever reason the default set of include paths for clang is different
|
||||
# than that of gcc. As a result we need to manually include our sysroot's
|
||||
@ -55,7 +43,7 @@ INC="$INC:/rustroot/lib/gcc/x86_64-unknown-linux-gnu/4.8.5/include-fixed"
|
||||
INC="$INC:/usr/include"
|
||||
|
||||
hide_output \
|
||||
cmake ../llvm-$LLVM.src \
|
||||
cmake .. \
|
||||
-DCMAKE_C_COMPILER=/rustroot/bin/gcc \
|
||||
-DCMAKE_CXX_COMPILER=/rustroot/bin/g++ \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
source shared.sh
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
source shared.sh
|
||||
|
||||
@ -1,14 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
source shared.sh
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
source shared.sh
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
source shared.sh
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
source shared.sh
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
source shared.sh
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
source shared.sh
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
hide_output() {
|
||||
set +x
|
||||
on_err="
|
||||
|
||||
@ -1,14 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# ignore-tidy-linelength
|
||||
|
||||
set -ex
|
||||
|
||||
@ -21,4 +21,5 @@ RUN sh /scripts/sccache.sh
|
||||
|
||||
ENV RUN_CHECK_WITH_PARALLEL_QUERIES 1
|
||||
ENV SCRIPT python2.7 ../x.py check --target=i686-pc-windows-gnu --host=i686-pc-windows-gnu && \
|
||||
python2.7 ../x.py build --stage 0 src/tools/build-manifest
|
||||
python2.7 ../x.py build --stage 0 src/tools/build-manifest && \
|
||||
python2.7 ../x.py test --stage 0 src/tools/compiletest
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -e
|
||||
|
||||
@ -28,10 +19,12 @@ travis_time_start
|
||||
|
||||
if [ -f "$docker_dir/$image/Dockerfile" ]; then
|
||||
if [ "$CI" != "" ]; then
|
||||
cksum=$(find $docker_dir/$image $docker_dir/scripts -type f | \
|
||||
hash_key=/tmp/.docker-hash-key.txt
|
||||
find $docker_dir/$image $docker_dir/scripts -type f | \
|
||||
sort | \
|
||||
xargs cat | \
|
||||
sha512sum | \
|
||||
xargs cat >> $hash_key
|
||||
docker --version >> $hash_key
|
||||
cksum=$(sha512sum $hash_key | \
|
||||
awk '{print $1}')
|
||||
s3url="s3://$SCCACHE_BUCKET/docker/$cksum"
|
||||
url="https://s3-us-west-1.amazonaws.com/$SCCACHE_BUCKET/docker/$cksum"
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
apt-get update
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
URL=https://dl.google.com/android/repository
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
export ANDROID_HOME=/android/sdk
|
||||
@ -30,7 +20,7 @@ download_sysimage() {
|
||||
# The output from sdkmanager is so noisy that it will occupy all of the 4 MB
|
||||
# log extremely quickly. Thus we must silence all output.
|
||||
yes | sdkmanager --licenses > /dev/null
|
||||
sdkmanager platform-tools emulator \
|
||||
yes | sdkmanager platform-tools emulator \
|
||||
"platforms;android-$api" \
|
||||
"system-images;android-$api;default;$abi" > /dev/null
|
||||
}
|
||||
|
||||
@ -1,13 +1,4 @@
|
||||
#!/bin/sh
|
||||
# Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
apt-get update && apt-get install -y --no-install-recommends \
|
||||
automake \
|
||||
bison \
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
url="https://github.com/crosstool-ng/crosstool-ng/archive/crosstool-ng-1.22.0.tar.gz"
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
hide_output() {
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
hide_output() {
|
||||
|
||||
@ -1,14 +1,4 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2016-2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -eux
|
||||
|
||||
arch=$1
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
curl -f https://ftp.gnu.org/gnu/make/make-3.81.tar.gz | tar xzf -
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
hide_output() {
|
||||
@ -51,7 +41,7 @@ hide_output make clean
|
||||
|
||||
cd ..
|
||||
|
||||
LLVM=60
|
||||
LLVM=70
|
||||
|
||||
# may have been downloaded in a previous run
|
||||
if [ ! -d libunwind-release_$LLVM ]; then
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -ex
|
||||
|
||||
groupadd -r rustbuild && useradd -m -r -g rustbuild rustbuild
|
||||
|
||||
@ -1,13 +1,3 @@
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# ignore-tidy-linelength
|
||||
|
||||
set -ex
|
||||
|
||||
@ -11,7 +11,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
cmake \
|
||||
sudo \
|
||||
gdb \
|
||||
llvm-5.0-tools \
|
||||
llvm-6.0-tools \
|
||||
libedit-dev \
|
||||
zlib1g-dev \
|
||||
xz-utils
|
||||
@ -22,6 +22,6 @@ RUN sh /scripts/sccache.sh
|
||||
# using llvm-link-shared due to libffi issues -- see #34486
|
||||
ENV RUST_CONFIGURE_ARGS \
|
||||
--build=x86_64-unknown-linux-gnu \
|
||||
--llvm-root=/usr/lib/llvm-5.0 \
|
||||
--llvm-root=/usr/lib/llvm-6.0 \
|
||||
--enable-llvm-link-shared
|
||||
ENV RUST_CHECK_TARGET check
|
||||
@ -1,16 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
import sys
|
||||
import json
|
||||
|
||||
|
||||
@ -1,15 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
set -eu
|
||||
|
||||
X_PY="$1"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user