Skip to content

Commit b0f8b97

Browse files
committed
---
yaml --- r: 277806 b: refs/heads/try c: cf8a1b0 h: refs/heads/master
1 parent 7d2cf45 commit b0f8b97

File tree

117 files changed

+1671
-2555
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

117 files changed

+1671
-2555
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 6dbb0e86aec11050480beb76eade6fb805010ba7
33
refs/heads/snap-stage3: 235d77457d80b549dad3ac36d94f235208a1eafb
4-
refs/heads/try: 433f907050432af6396a317525f60579c604b3e0
4+
refs/heads/try: cf8a1b0998fb561e76acfe4b8269a4df5fb60bc8
55
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
66
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
77
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try/Makefile.in

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@
5959
# * check-stage$(stage)-$(crate) - Test a crate in a specific stage
6060
# * check-stage$(stage)-{rpass,rfail,cfail,rmake,...} - Run tests in src/test/
6161
# * check-stage1-T-$(target)-H-$(host) - Run cross-compiled-tests
62-
# * tidy - Basic style check, show highest rustc error code and
63-
# the status of language and lib features
62+
# * tidy-basic - show file / line stats
63+
# * tidy-errors - show the highest rustc error code
64+
# * tidy-features - show the status of language and lib features
6465
# * rustc-stage$(stage) - Only build up to a specific stage
6566
#
6667
# Then mix in some of these environment variables to harness the

branches/try/configure

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,6 @@ valopt build "${DEFAULT_BUILD}" "GNUs ./configure syntax LLVM build triple"
632632
valopt android-cross-path "" "Android NDK standalone path (deprecated)"
633633
valopt i686-linux-android-ndk "" "i686-linux-android NDK standalone path"
634634
valopt arm-linux-androideabi-ndk "" "arm-linux-androideabi NDK standalone path"
635-
valopt armv7-linux-androideabi-ndk "" "armv7-linux-androideabi NDK standalone path"
636635
valopt aarch64-linux-android-ndk "" "aarch64-linux-android NDK standalone path"
637636
valopt nacl-cross-path "" "NaCl SDK path (Pepper Canary is recommended). Must be absolute!"
638637
valopt release-channel "dev" "the name of the release channel to build"
@@ -1145,15 +1144,6 @@ do
11451144

11461145
case $i in
11471146
*android*)
1148-
case $i in
1149-
armv7-linux-androideabi)
1150-
cmd_prefix="arm-linux-androideabi"
1151-
;;
1152-
*)
1153-
cmd_prefix=$i
1154-
;;
1155-
esac
1156-
11571147
upper_snake_target=$(echo "$i" | tr '[:lower:]' '[:upper:]' | tr '\-' '\_')
11581148
eval ndk=\$"CFG_${upper_snake_target}_NDK"
11591149
if [ -z "$ndk" ]
@@ -1164,7 +1154,7 @@ do
11641154
fi
11651155

11661156
# Perform a basic sanity check of the NDK
1167-
for android_ndk_tool in "$ndk/bin/$cmd_prefix-gcc" "$ndk/bin/$cmd_prefix-g++" "$ndk/bin/$cmd_prefix-ar"
1157+
for android_ndk_tool in "$ndk/bin/$i-gcc" "$ndk/bin/$i-g++" "$ndk/bin/$i-ar"
11681158
do
11691159
if [ ! -f $android_ndk_tool ]
11701160
then
@@ -1796,7 +1786,6 @@ putvar CFG_LIBDIR_RELATIVE
17961786
putvar CFG_DISABLE_MANAGE_SUBMODULES
17971787
putvar CFG_AARCH64_LINUX_ANDROID_NDK
17981788
putvar CFG_ARM_LINUX_ANDROIDEABI_NDK
1799-
putvar CFG_ARMV7_LINUX_ANDROIDEABI_NDK
18001789
putvar CFG_I686_LINUX_ANDROID_NDK
18011790
putvar CFG_NACL_CROSS_PATH
18021791
putvar CFG_MANDIR

branches/try/mk/cfg/armv7-linux-androideabi.mk

Lines changed: 0 additions & 25 deletions
This file was deleted.

branches/try/src/bootstrap/README.md

Lines changed: 6 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# rustbuild - Bootstrapping Rust
1+
# Bootstrapping Rust
22

33
This is an in-progress README which is targeted at helping to explain how Rust
44
is bootstrapped and in general some of the technical details of the build
@@ -8,64 +8,20 @@ system.
88
> intended to be the primarily used one just yet. The makefiles are currently
99
> the ones that are still "guaranteed to work" as much as possible at least.
1010
11-
## Using rustbuild
11+
## Using the new build system
1212

1313
When configuring Rust via `./configure`, pass the following to enable building
1414
via this build system:
1515

1616
```
1717
./configure --enable-rustbuild
18-
make
1918
```
2019

21-
Afterwards the `Makefile` which is generated will have a few commands like
22-
`make check`, `make tidy`, etc. For finer-grained control, the
23-
`bootstrap.py` entry point can be used:
24-
25-
```
26-
python src/bootstrap/bootstrap.py
27-
```
28-
29-
This accepts a number of options like `--stage` and `--step` which can configure
30-
what's actually being done.
31-
32-
## Configuring rustbuild
33-
34-
There are currently two primary methods for configuring the rustbuild build
35-
system. First, the `./configure` options serialized in `config.mk` will be
36-
parsed and read. That is, if any `./configure` options are passed, they'll be
37-
handled naturally.
38-
39-
Next, rustbuild offers a TOML-based configuration system with a `config.toml`
40-
file in the same location as `config.mk`. An example of this configuration can
41-
be found at `src/bootstrap/config.toml.example`, and the configuration file
42-
can also be passed as `--config path/to/config.toml` if the build system is
43-
being invoked manually (via the python script).
44-
45-
## Build stages
46-
47-
The rustbuild build system goes through a few phases to actually build the
48-
compiler. What actually happens when you invoke rustbuild is:
49-
50-
1. The entry point script, `src/bootstrap/bootstrap.py` is run. This script is
51-
responsible for downloading the stage0 compiler/Cargo binaries, and it then
52-
compiles the build system itself (this folder). Finally, it then invokes the
53-
actual `boostrap` binary build system.
54-
2. In Rust, `bootstrap` will slurp up all configuration, perform a number of
55-
sanity checks (compilers exist for example), and then start building the
56-
stage0 artifacts.
57-
3. The stage0 `cargo` downloaded earlier is used to build the standard library
58-
and the compiler, and then these binaries are then copied to the `stage1`
59-
directory. That compiler is then used to generate the stage1 artifacts which
60-
are then copied to the stage2 directory, and then finally the stage2
61-
artifacts are generated using that compiler.
62-
63-
The goal of each stage is to (a) leverage Cargo as much as possible and failing
64-
that (b) leverage Rust as much as possible!
20+
## ...
6521

6622
## Directory Layout
6723

68-
This build system houses all output under the `build` directory, which looks
24+
This build system houses all output under the `target` directory, which looks
6925
like this:
7026

7127
```
@@ -86,12 +42,6 @@ build/
8642
debug/
8743
release/
8844
89-
# Output of the dist-related steps like dist-std, dist-rustc, and dist-docs
90-
dist/
91-
92-
# Temporary directory used for various input/output as part of various stages
93-
tmp/
94-
9545
# Each remaining directory is scoped by the "host" triple of compilation at
9646
# hand.
9747
x86_64-unknown-linux-gnu/
@@ -100,8 +50,7 @@ build/
10050
# folder is under. The exact layout here will likely depend on the platform,
10151
# and this is also built with CMake so the build system is also likely
10252
# different.
103-
compiler-rt/
104-
build/
53+
compiler-rt/build/
10554
10655
# Output folder for LLVM if it is compiled for this target
10756
llvm/
@@ -118,17 +67,6 @@ build/
11867
share/
11968
...
12069
121-
# Output folder for all documentation of this target. This is what's filled
122-
# in whenever the `doc` step is run.
123-
doc/
124-
125-
# Output for all compiletest-based test suites
126-
test/
127-
run-pass/
128-
compile-fail/
129-
debuginfo/
130-
...
131-
13270
# Location where the stage0 Cargo and Rust compiler are unpacked. This
13371
# directory is purely an extracted and overlaid tarball of these two (done
13472
# by the bootstrapy python script). In theory the build system does not
@@ -144,9 +82,7 @@ build/
14482
# invocation. The build system instruments calling Cargo in the right order
14583
# with the right variables to ensure these are filled in correctly.
14684
stageN-std/
147-
stageN-test/
14885
stageN-rustc/
149-
stageN-tools/
15086
15187
# This is a special case of the above directories, **not** filled in via
15288
# Cargo but rather the build system itself. The stage0 compiler already has
@@ -160,7 +96,7 @@ build/
16096
# Basically this directory is just a temporary artifact use to configure the
16197
# stage0 compiler to ensure that the libstd we just built is used to
16298
# compile the stage1 compiler.
163-
stage0-sysroot/lib/
99+
stage0-rustc/lib/
164100
165101
# These output directories are intended to be standalone working
166102
# implementations of the compiler (corresponding to each stage). The build
@@ -172,69 +108,3 @@ build/
172108
stage2/
173109
stage3/
174110
```
175-
176-
## Cargo projects
177-
178-
The current build is unfortunately not quite as simple as `cargo build` in a
179-
directory, but rather the compiler is split into three different Cargo projects:
180-
181-
* `src/rustc/std_shim` - a project which builds and compiles libstd
182-
* `src/rustc/test_shim` - a project which builds and compiles libtest
183-
* `src/rustc` - the actual compiler itself
184-
185-
Each "project" has a corresponding Cargo.lock file with all dependencies, and
186-
this means that building the compiler involves running Cargo three times. The
187-
structure here serves two goals:
188-
189-
1. Facilitating dependencies coming from crates.io. These dependencies don't
190-
depend on `std`, so libstd is a separate project compiled ahead of time
191-
before the actual compiler builds.
192-
2. Splitting "host artifacts" from "target artifacts". That is, when building
193-
code for an arbitrary target you don't need the entire compiler, but you'll
194-
end up needing libraries like libtest that depend on std but also want to use
195-
crates.io dependencies. Hence, libtest is split out as its own project that
196-
is sequenced after `std` but before `rustc`. This project is built for all
197-
targets.
198-
199-
There is some loss in build parallelism here because libtest can be compiled in
200-
parallel with a number of rustc artifacts, but in theory the loss isn't too bad!
201-
202-
## Build tools
203-
204-
We've actually got quite a few tools that we use in the compiler's build system
205-
and for testing. To organize these, each tool is a project in `src/tools` with a
206-
corresponding `Cargo.toml`. All tools are compiled with Cargo (currently having
207-
independent `Cargo.lock` files) and do not currently explicitly depend on the
208-
compiler or standard library. Compiling each tool is sequenced after the
209-
appropriate libstd/libtest/librustc compile above.
210-
211-
## Extending rustbuild
212-
213-
So you'd like to add a feature to the rustbuild build system or just fix a bug.
214-
Great! One of the major motivational factors for moving away from `make` is that
215-
Rust is in theory much easier to read, modify, and write. If you find anything
216-
excessively confusing, please open an issue on this and we'll try to get it
217-
documented or simplified pronto.
218-
219-
First up, you'll probably want to read over the documentation above as that'll
220-
give you a high level overview of what rustbuild is doing. You also probably
221-
want to play around a bit yourself by just getting it up and running before you
222-
dive too much into the actual build system itself.
223-
224-
After that, each module in rustbuild should have enough documentation to keep
225-
you up and running. Some general areas that you may be interested in modifying
226-
are:
227-
228-
* Adding a new build tool? Take a look at `build/step.rs` for examples of other
229-
tools, as well as `build/mod.rs`.
230-
* Adding a new compiler crate? Look no further! Adding crates can be done by
231-
adding a new directory with `Cargo.toml` followed by configuring all
232-
`Cargo.toml` files accordingly.
233-
* Adding a new dependency from crates.io? We're still working on that, so hold
234-
off on that for now.
235-
* Adding a new configuration option? Take a look at `build/config.rs` or perhaps
236-
`build/flags.rs` and then modify the build elsewhere to read that option.
237-
* Adding a sanity check? Take a look at `build/sanity.rs`.
238-
239-
If you have any questions feel free to reach out on `#rust-internals` on IRC or
240-
open an issue in the bug tracker!

branches/try/src/bootstrap/bootstrap.py

Lines changed: 11 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -16,46 +16,20 @@
1616
import subprocess
1717
import sys
1818
import tarfile
19-
import tempfile
20-
2119

2220
def get(url, path, verbose=False):
21+
print("downloading " + url)
2322
sha_url = url + ".sha256"
24-
with tempfile.NamedTemporaryFile(delete=False) as temp_file:
25-
temp_path = temp_file.name
26-
with tempfile.NamedTemporaryFile(suffix=".sha256", delete=False) as sha_file:
27-
sha_path = sha_file.name
28-
29-
try:
30-
download(sha_path, sha_url, verbose)
31-
download(temp_path, url, verbose)
32-
verify(temp_path, sha_path, verbose)
33-
print("moving " + temp_path + " to " + path)
34-
shutil.move(temp_path, path)
35-
finally:
36-
delete_if_present(sha_path)
37-
delete_if_present(temp_path)
38-
39-
40-
def delete_if_present(path):
41-
if os.path.isfile(path):
42-
print("removing " + path)
43-
os.unlink(path)
44-
45-
46-
def download(path, url, verbose):
47-
print("downloading " + url + " to " + path)
48-
# see http://serverfault.com/questions/301128/how-to-download
49-
if sys.platform == 'win32':
50-
run(["PowerShell.exe", "/nologo", "-Command",
51-
"(New-Object System.Net.WebClient)"
52-
".DownloadFile('{}', '{}')".format(url, path)],
53-
verbose=verbose)
54-
else:
55-
run(["curl", "-o", path, url], verbose=verbose)
56-
57-
58-
def verify(path, sha_path, verbose):
23+
sha_path = path + ".sha256"
24+
for _url, _path in ((url, path), (sha_url, sha_path)):
25+
# see http://serverfault.com/questions/301128/how-to-download
26+
if sys.platform == 'win32':
27+
run(["PowerShell.exe", "/nologo", "-Command",
28+
"(New-Object System.Net.WebClient)"
29+
".DownloadFile('{}', '{}')".format(_url, _path)],
30+
verbose=verbose)
31+
else:
32+
run(["curl", "-o", _path, _url], verbose=verbose)
5933
print("verifying " + path)
6034
with open(path, "rb") as f:
6135
found = hashlib.sha256(f.read()).hexdigest()
@@ -69,7 +43,6 @@ def verify(path, sha_path, verbose):
6943
raise RuntimeError(err)
7044
sys.exit(err)
7145

72-
7346
def unpack(tarball, dst, verbose=False, match=None):
7447
print("extracting " + tarball)
7548
fname = os.path.basename(tarball).replace(".tar.gz", "")

branches/try/src/bootstrap/build/cc.rs

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,6 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
//! C-compiler probing and detection.
12-
//!
13-
//! This module will fill out the `cc` and `cxx` maps of `Build` by looking for
14-
//! C and C++ compilers for each target configured. A compiler is found through
15-
//! a number of vectors (in order of precedence)
16-
//!
17-
//! 1. Configuration via `target.$target.cc` in `config.toml`.
18-
//! 2. Configuration via `target.$target.android-ndk` in `config.toml`, if
19-
//! applicable
20-
//! 3. Special logic to probe on OpenBSD
21-
//! 4. The `CC_$target` environment variable.
22-
//! 5. The `CC` environment variable.
23-
//! 6. "cc"
24-
//!
25-
//! Some of this logic is implemented here, but much of it is farmed out to the
26-
//! `gcc` crate itself, so we end up having the same fallbacks as there.
27-
//! Similar logic is then used to find a C++ compiler, just some s/cc/c++/ is
28-
//! used.
29-
//!
30-
//! It is intended that after this module has run no C/C++ compiler will
31-
//! ever be probed for. Instead the compilers found here will be used for
32-
//! everything.
33-
3411
use std::process::Command;
3512

3613
use build_helper::{cc2ar, output};

0 commit comments

Comments
 (0)