Commit Graph

109 Commits

Author SHA1 Message Date
Segev Finer
39d0b054ce Restore the download of rust-mingw
The build might otherwise break due to mixing MinGW object files from
rust-std and the local MinGW which might be newer/older than the version
used to build rust-std.

Fixes #48272
2018-03-01 15:20:07 +02:00
John Paul Adrian Glaubitz
a895d438c2 bootstrap: Add missing cputype matching for sparc 2018-02-23 11:18:29 +01:00
Alex Crichton
c6daea7c9a rustc: Split Emscripten to a separate codegen backend
This commit introduces a separately compiled backend for Emscripten, avoiding
compiling the `JSBackend` target in the main LLVM codegen backend. This builds
on the foundation provided by #47671 to create a new codegen backend dedicated
solely to Emscripten, removing the `JSBackend` of the main codegen backend in
the process.

A new field was added to each target for this commit which specifies the backend
to use for translation, the default being `llvm` which is the main backend that
we use. The Emscripten targets specify an `emscripten` backend instead of the
main `llvm` one.

There's a whole bunch of consequences of this change, but I'll try to enumerate
them here:

* A *second* LLVM submodule was added in this commit. The main LLVM submodule
  will soon start to drift from the Emscripten submodule, but currently they're
  both at the same revision.
* Logic was added to rustbuild to *not* build the Emscripten backend by default.
  This is gated behind a `--enable-emscripten` flag to the configure script. By
  default users should neither check out the emscripten submodule nor compile
  it.
* The `init_repo.sh` script was updated to fetch the Emscripten submodule from
  GitHub the same way we do the main LLVM submodule (a tarball fetch).
* The Emscripten backend, turned off by default, is still turned on for a number
  of targets on CI. We'll only be shipping an Emscripten backend with Tier 1
  platforms, though. All cross-compiled platforms will not be receiving an
  Emscripten backend yet.

This commit means that when you download the `rustc` package in Rustup for Tier
1 platforms you'll be receiving two trans backends, one for Emscripten and one
that's the general LLVM backend. If you never compile for Emscripten you'll
never use the Emscripten backend, so we may update this one day to only download
the Emscripten backend when you add the Emscripten target. For now though it's
just an extra 10MB gzip'd.

Closes #46819
2018-01-28 18:32:45 -08:00
Mark Simulacrum
6aeb1cfb64 Add ./x.py check src/{libstd,libtest,rustc}.
This currently only supports a limited subset of the full compilation,
but is likely 90% of what people will want and is possible without
building a full compiler (i.e., running LLVM). In theory, this means
that contributors who don't want to build LLVM now have an easy way to
compile locally, though running tests won't work.
2018-01-23 19:39:20 -07:00
Alex Crichton
80d6ed2d8b Update Cargo and its dependencies
This'll probably have a bunch of build errors, so let's try and head those off
and find them sooner rather than later!
2018-01-17 23:14:23 -08:00
John Paul Adrian Glaubitz
d7dec7c8d7 bootstrap: Add missing cputype matching for sparc64 2017-10-31 19:26:41 +01:00
topecongiro
0dde8cdd40 Allow passing a path with tilde 2017-10-19 06:22:32 +09:00
Tatsuyuki Ishi
cbe41168e0 bootstrap: Avoid fetching jemalloc if it's disabled
Fix #45300
2017-10-17 15:01:49 +09:00
johnthagen
bd8497884c Merge branch 'master' into future_imports 2017-10-16 17:56:12 -04:00
johnthagen
23a5fb811e Merge branch 'master' into pep8-bootstrap 2017-10-11 07:33:46 -04:00
johnthagen
49a73d0901 Add __future__ imports to increase compatibility with Python 3. Derive Option from object to make it a new-style class for Python 3 compatibility. 2017-10-09 08:16:18 -07:00
johnthagen
a263a78b28 Fix PEP8 style issues in bootstrap code 2017-10-08 20:08:11 -04:00
johnthagen
d9e6703834 Use identity operator is when comparing to None 2017-10-08 19:46:58 -04:00
Marcus Buffett
5463aa06b8 Catch IOError
If config.toml doesn't exist, then an IOError will be raised
on the `with open(...)` line. Prior to e788fa7, this was
caught because the `except` clause didn't specify what
exceptions it caught, so both IOError and OSError were
caught
2017-09-21 12:15:10 -07:00
Tamir Duberstein
e788fa7b6c bootstrap: plumb verbosity into submodule ops
Fix some lints while I'm here.
2017-09-17 13:15:06 -04:00
kennytm
4d06185688 Remove invalid doctest from bootstrap.py.
Make sure that if the test is failed, the CI will stop the build.
2017-09-02 22:11:25 +08:00
Alex Crichton
a9b0a7ba93 rustbuild: Rewrite the configure script in Python
This commit rewrites our ancient `./configure` script from shell into Python.
The impetus for this change is to remove `config.mk` which is just a vestige of
the old makefile build system at this point. Instead all configuration is now
solely done through `config.toml`.

The python script allows us to more flexibly program (aka we can use loops
easily) and create a `config.toml` which is based off `config.toml.example`.
This way we can preserve comments and munge various values as we see fit.

It is intended that the configure script here is a drop-in replacement for the
previous configure script, no functional change is intended. Also note that the
rationale for this is also because our build system requires Python, so having a
python script a bit earlier shouldn't cause too many problems.

Closes #40730
2017-08-27 18:53:30 -07:00
Milton Mazzarri
f516765b94 bootstrap: Major refactoring
This commit includes the following:

* Fix syntax errors in Python 3
* Include more docstrings in classes, methods, and functions
* Include unit tests using `unittest`
* Merge implementation of `{rustc,cargo}_out_of_date`
* Merge implementation of `RustBuild.{cargo,rustc}`
* Remove unnecessary source code
* Move all the attributes defined outside of `__init__`
* Remove remaining `%s` from print function
* Remove `WindowsError` reference on non-windows systems
* Rename some variables to be more explicit avoid their meaning
* Run bootstrap tests in the CI process
* Remove non-pythonic getters
* Remove duplicate code in `download_stage0` method
* Reduce the number of branches in `build_bootstrap` method
* Re-raise exception when we cannot execute uname in non-windows systems
* Avoid long lines
2017-07-25 06:37:10 -05:00
Segev Finer
c41ac2e11a rustbuild: Fix the --build argument to bootstrap.py
This makes the --build argument also apply for the downloading of the
stage0 toolchain and building rustbuild.

Fixes #42116
2017-07-21 14:18:35 +03:00
Alex Crichton
7e6c9f3635 Switch to rust-lang-nursery/compiler-builtins
This commit migrates the in-tree `libcompiler_builtins` to the upstream version
at https://github.com/rust-lang-nursery/compiler-builtins. The upstream version
has a number of intrinsics written in Rust and serves as an in-progress rewrite
of compiler-rt into Rust. Additionally it also contains all the existing
intrinsics defined in `libcompiler_builtins` for 128-bit integers.

It's been the intention since the beginning to make this transition but
previously it just lacked the manpower to get done. As this PR likely shows it
wasn't a trivial integration! Some highlight changes are:

* The PR rust-lang-nursery/compiler-builtins#166 contains a number of fixes
  across platforms and also some refactorings to make the intrinsics easier to
  read. The additional testing added there also fixed a number of integration
  issues when pulling the repository into this tree.

* LTO with the compiler-builtins crate was fixed to link in the entire crate
  after the LTO process as these intrinsics are excluded from LTO.

* Treatment of hidden symbols was updated as previously the
  `#![compiler_builtins]` crate would mark all symbol *imports* as hidden
  whereas it was only intended to mark *exports* as hidden.
2017-07-05 07:08:36 -07:00
Milton Mazzarri
44c6781cef Simplify print arguments 2017-07-01 07:16:57 -05:00
Milton Mazzarri
ebf24ad3e9 bootstrap: Fix some PEP8 issues
This commit also adds a few missing docstrings
2017-06-30 23:24:35 -05:00
Stepan Koltsov
f441e07feb Pass path to python from bootstrap.py to bootstrap.rs
When bootstrap is executed with python not in `$PATH`, (e. g.
`c:\Python27\python.exe x.py test`) bootstrap cannot find python
and crashes.

This commit passes path to python in `BOOTSTRAP_PYTHON` env var.
2017-06-21 19:01:24 +03:00
Alex Crichton
be7ebdd512 Bump version and stage0 compiler 2017-06-19 22:25:05 -07:00
Tatsuyuki Ishi
15c26c92cc bootstrap.py: support verbose for submodules 2017-05-25 14:00:05 +09:00
Tatsuyuki Ishi
46ebd832e3 bootstrap.py: decode to str
Also, improve the split mechanism to address space in paths.
2017-05-25 13:58:10 +09:00
Tatsuyuki Ishi
5bcf06aa18 bootstrap.py: Filter instead of iteration 2017-05-25 13:57:51 +09:00
Tatsuyuki Ishi
1fea55ba51 Format bootstrap.py using autopep8 2017-05-25 13:57:23 +09:00
Tatsuyuki Ishi
d552e34e20 Use the improved submodule handling 2017-05-25 13:57:05 +09:00
Dennis Schridde
cd86a9ba4a bootstrap: Use common run() function to call cargo
This brings verbosity even to invocation of cargo itself
2017-05-24 10:52:57 +02:00
Dennis Schridde
604f716dbe bootstrap: Make bootstrap verbose if requested
Fixes: #42099
2017-05-24 10:52:57 +02:00
Dennis Schridde
2aa6700b25 bootstrap: Actually respect verbosity setting in config.toml 2017-05-24 10:52:52 +02:00
Simonas Kazlauskas
c5163aadc5 Fix x.py 2017-05-18 21:22:15 +03:00
Alex Crichton
db69d894e7 Reset submodule management to what master does
Basically just translate what's done on master in Rust to Python here.
2017-05-17 09:15:44 -07:00
Tatsuyuki Ishi
510d6b8afb Move submodule initialization to bootstrap.py 2017-05-18 00:30:55 +09:00
Titus Barik
04e4d426a1 Rename os variable in bootstrap.py to avoid shadowing os module. 2017-04-30 16:10:31 -04:00
Alex Crichton
5daf557a77 Update stage0 bootstrap compiler
We've got a freshly minted beta compiler, let's update to use that on nightly!
This has a few other changes associated with it as well

* A bump to the rustc version number (to 1.19.0)
* Movement of the `cargo` and `rls` submodules to their "proper" location in
  `src/tools/{cargo,rls}`. Now that Cargo workspaces support the `exclude`
  option this can work.
* Updates of the `cargo` and `rls` submodules to their master branches.
* Tweak to the `src/stage0.txt` format to be more amenable for Cargo version
  numbers. On the beta channel Cargo will bootstrap from a different version
  than rustc (e.g. the version numbers are different), so we need different
  configuration for this.
* Addition of `dev` as a readable key in the `src/stage0.txt` format. If present
  then stage0 compilers are downloaded from `dev-static.rust-lang.org` instead
  of `static.rust-lang.org`. This is added to accomodate our updated release
  process with Travis and AppVeyor.
2017-04-29 12:11:14 -07:00
Ariel Ben-Yehuda
639000ea2e Rollup merge of #41456 - jessicah:haiku-support, r=alexcrichton
Haiku: fix initial platform support
2017-04-26 22:11:03 +00:00
Ariel Ben-Yehuda
a3dde0b457 Rollup merge of #41370 - malbarbo:android-bootstrap, r=alexcrichton
Add bootstrap support for android
2017-04-26 22:11:02 +00:00
Jessica Hamilton
0d63f13378 Haiku: add missing cases of using LIBRARY_PATH 2017-04-24 14:29:39 +00:00
Marco A L Barbosa
a42c0257c7 Add bootstrap support for android 2017-04-18 13:50:29 -03:00
Richo Healey
1dbc72b28e bootstrap: Don't workaround uname -m on Darwin
This no longer manifests on any versions of OSX that I could find.
2017-04-17 19:30:18 -07:00
Tim Neumann
c04b39f1f8 Rollup merge of #41152 - cuviper:bootstrap-armv7, r=japaric
bootstrap.py: fix armv7 detection

This matches the logic that was in `./configure` before f8ca805422.
2017-04-08 08:55:10 +02:00
Josh Stone
5c0c3e803d bootstrap.py: fix armv7 detection
This matches the logic that was in `./configure` before f8ca805422.
2017-04-07 17:16:52 -07:00
bors
e5e92753cc Auto merge of #41102 - frewsxcv:rollup, r=frewsxcv
Rollup of 5 pull requests

- Successful merges: #40908, #41011, #41026, #41037, #41050
- Failed merges:
2017-04-06 06:07:42 +00:00
Nathan Stocks
aa4bd0ec0e Finish the improvements I planned.
- No more manual args manipulation -- getopts used for everything.
  As a result, options can be in any position, now, even before the
  subcommand.
- The additional options for test, bench, and dist now appear in the
  help output.
- No more single-letter variable bindings used internally for large
  scopes.
- Don't output the time measurement when just invoking 'x.py'
- Logic is now much more linear.  We build strings up, and then print
  them.
2017-04-02 12:57:08 -06:00
Nathan Stocks
e1c1e09867 Don't print build statistics if we explicitly asked for the help message. 2017-03-30 22:12:01 -06:00
Vadim Chugunov
3b1ba01095 Fix stage0->stage1 build when using "pthreads" mingw compiler. 2017-03-30 16:31:46 -07:00
Alex Crichton
c033942925 rustbuild: Update bootstrap compiler
Now that we've also updated cargo's release process this commit also changes the
download location of Cargo from Cargos archives back to the static.r-l.o
archives. This should ensure that the Cargo download is the exact Cargo paired
with the rustc that we release.
2017-03-29 08:55:15 -07:00
Alex Crichton
f8ca805422 configure: Remove --build detection
This commit removes detection of CFG_OSTYPE and CFG_CPUTYPE from the configure
script, which means that the default value of `--build` is no longer present in
the configure script. All this logic is now available in rustbuild itself, so
there's no need to duplicate it.
2017-03-11 08:41:36 -08:00