about summary refs log tree commit diff
path: root/src/bootstrap/clean.rs
AgeCommit message (Collapse)AuthorLines
2023-10-17move bootstrap core implementation to bootstrap/src/core moduleonur-ozkan-237/+0
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-07-30remove stage-specific artifacts when `--stage` is usedozkanonur-22/+62
Signed-off-by: ozkanonur <work@onurozkan.dev>
2023-07-12Re-format let-else per rustfmt updateMark Rousskov-1/+3
2023-05-26bootstrap: Make `clean` respect `dry-run`clubby789-0/+4
2023-04-25Add a `sysroot` crate to represent the standard library cratesJohn Kåre Alsaker-1/+1
2023-02-28Fix `x clean` with specific pathsclubby789-0/+1
2022-12-30Use more consistent progress messages in bootstrapJoshua Nelson-2/+2
Before: ``` Testing ["rustc_interface"] stage0 (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu) ``` After: ``` Testing {rustc_interface} stage0 (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu) ``` Note there is a slight consistency between `build` and `test`: The former doesn't print "compiler artifacts". It would be annoying to fix and doesn't hurt anything, so I left it be. ``` ; x t rustc_interface --stage 0 --dry-run Testing {rustc_interface} stage0 (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu) ; x b rustc_interface --stage 0 --dry-run Building {rustc_interface} stage0 compiler artifacts (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu) ```
2022-12-29Support `x clean --stage 1 rustc_query_impl`Joshua Nelson-12/+10
Previously, clean only supported `--stage 0` for specific crates. The new `crate_description` function generates a string that looks like ``` : {rustc_query_impl} ```
2022-12-28Rollup merge of #105702 - albertlarsan68:x-fmt-opt, r=jyn514Matthias Krüger-0/+1
Format only modified files As discussed on #105688, this makes x fmt only format modified files. Fixes #105688
2022-12-27Make `x clean` also clean the stamp fileAlbert Larsan-0/+1
2022-12-26Allow cleaning individual cratesJoshua Nelson-2/+75
As a bonus, this stops special casing `clean` in `Builder`.
2022-03-05Merge build_helper into utilbjorn3-1/+1
2022-03-05Remove build_helperbjorn3-2/+1
The majority of the code is only used by either rustbuild or rustc_llvm's build script. Rust_build is compiled once for rustbuild and once for every stage. This means that the majority of the code in this crate is needlessly compiled multiple times. By moving only the code actually used by the respective crates to rustbuild and rustc_llvm's build script, this needless duplicate compilation is avoided.
2021-12-09Add reminder to match the error kind once ` DirectoryNotEmpty` is stabilizedChris Denton-0/+2
2021-12-08Remove the match on `ErrorKind::Other`Chris Denton-3/+1
It's a) superfluous and b) doesn't work any more.
2021-02-16Delete symlinked directoriesRyan Levick-5/+4
2021-02-16Work around various issues cleaning up bootstrap on WindowsRyan Levick-6/+36
2021-02-16Do not delete bootstrap.exe on Windows during cleanRyan Levick-0/+3
Windows does not allow deleting currently running executables
2021-01-01Clean bootstrap artifacts on `x.py clean`Joshua Nelson-0/+1
2020-07-17Teach bootstrap about target files vs target triplesJake Goulding-1/+1
`rustc` allows passing in predefined target triples as well as JSON target specification files. This change allows bootstrap to have the first inkling about those differences. This allows building a cross-compiler for an out-of-tree architecture (even though that compiler won't work for other reasons). Even if no one ever uses this functionality, I think the newtype around the `Interned<String>` improves the readability of the code.
2019-12-22Format the worldMark Rousskov-6/+6
2019-05-09remove unneeded `extern crate`s from build toolsAndy Russell-0/+2
2019-02-10rustc: doc commentsAlexander Regueiro-1/+1
2018-12-25Remove licensesMark Rousskov-10/+0
2018-12-10bootstrap: fix editionljedrz-1/+1
2017-09-20Add --all flag to ./x.py cleanTommy Ip-15/+20
This flag removes all build artifacts, including the LLVM build directory.
2017-08-13Unify flags into config.Mark Simulacrum-1/+1
This introduces a slight change in behavior, where we unilaterally respect the --host and --target parameters passed for all sanity checking and runtime configuration.
2017-04-02Handle symlinks in src/bootstrap/clean.rs (mostly) -- resolves #40860.Nathan Stocks-20/+22
The broken condition can be replicated with: ``shell export MYARCH=x86_64-apple-darwin && mkdir -p build/$MYARCH/subdir && touch build/$MYARCH/subdir/file && ln -s build/$MYARCH/subdir/file build/$MYARCH/subdir/symlink `` `src/bootstrap/clean.rs` has a custom implementation of removing a tree `fn rm_rf` that used `std::path::Path::{is_file, is_dir, exists}` while recursively deleting directories and files. Unfortunately, `Path`'s implementation of `is_file()` and `is_dir()` and `exists()` always unconditionally follow symlinks, which is the exact opposite of standard implementations of deleting file trees. It appears that this custom implementation is being used to workaround a behavior in Windows where the files often get marked as read-only, which prevents us from simply using something nice and simple like `std::fs::remove_dir_all`, which properly deletes links instead of following them. So it looks like the fix is to use `.symlink_metadata()` to figure out whether tree items are files/symlinks/directories. The one corner case this won't cover is if there is a broken symlink in the "root" `build/$MYARCH` directory, because those initial entries are run through `Path::canonicalize()`, which panics with broken symlinks. So lets just never use symlinks in that one directory. :-)
2017-03-15Remove unused param from bootstrap::clean::rm_rfMatt Brubeck-6/+6
2017-02-07rustbuild: Clean build/dist on `make clean`Alex Crichton-0/+1
Prevents stale artifacts from sticking around by accident!
2016-12-07mk: Switch rustbuild to the default build systemAlex Crichton-0/+3
This commit switches the default build system for Rust from the makefiles to rustbuild. The rustbuild build system has been in development for almost a year now and has become quite mature over time. This commit is an implementation of the proposal on [internals] which slates deletion of the makefiles on 2016-01-02. [internals]: https://internals.rust-lang.org/t/proposal-for-promoting-rustbuild-to-official-status/4368 This commit also updates various documentation in `README.md`, `CONTRIBUTING.md`, `src/bootstrap/README.md`, and throughout the source code of rustbuild itself. Closes #37858
2016-11-05Only test docs and such for the hostAlex Crichton-1/+2
2016-11-05Fix tests from the rollupAlex Crichton-4/+38
2016-11-02rustbuild: Rewrite user-facing interfaceAlex Crichton-11/+11
This commit is a rewrite of the user-facing interface to the rustbuild build system. The intention here is to make it much easier to compile/test the project without having to remember weird rule names and such. An overall view of the new interface is: # build everything ./x.py build # document everyting ./x.py doc # test everything ./x.py test # test libstd ./x.py test src/libstd # build libcore stage0 ./x.py build src/libcore --stage 0 # run stage1 run-pass tests ./x.py test src/test/run-pass --stage 1 The `src/bootstrap/bootstrap.py` script is now aliased as a top-level `x.py` script. This `x` was chosen to be both short and easily tab-completable (no collisions in that namespace!). The build system now accepts a "subcommand" of what to do next, the main ones being build/doc/test. Each subcommand then receives an optional list of arguments. These arguments are paths in the source repo of what to work with. That is, if you want to test a directory, you just pass that directory as an argument. The purpose of this rewrite is to do away with all of the arcane renames like "rpass" is the "run-pass" suite, "cfail" is the "compile-fail" suite, etc. By simply working with directories and files it's much more intuitive of how to run a test (just pass it as an argument). The rustbuild step/dependency management was also rewritten along the way to make this easy to work with and define, but that's largely just a refactoring of what was there before. The *intention* is that this support is extended for arbitrary files (e.g. `src/test/run-pass/my-test-case.rs`), but that isn't quite implemented just yet. Instead directories work for now but we can follow up with stricter path filtering logic to plumb through all the arguments.
2016-09-12crate-ify compiler-rt into compiler-builtinsJorge Aparicio-1/+0
libcompiler-rt.a is dead, long live libcompiler-builtins.rlib This commit moves the logic that used to build libcompiler-rt.a into a compiler-builtins crate on top of the core crate and below the std crate. This new crate still compiles the compiler-rt instrinsics using gcc-rs but produces an .rlib instead of a static library. Also, with this commit rustc no longer passes -lcompiler-rt to the linker. This effectively makes the "no-compiler-rt" field of target specifications a no-op. Users of `no_std` will have to explicitly add the compiler-builtins crate to their crate dependency graph *if* they need the compiler-rt intrinsics. Users of the `std` have to do nothing extra as the std crate depends on compiler-builtins. Finally, this a step towards lazy compilation of std with Cargo as the compiler-rt intrinsics can now be built by Cargo instead of having to be supplied by the user by some other method. closes #34400
2016-07-05rustbuild: Remove the `build` directoryAlex Crichton-0/+49
The organization in rustbuild was a little odd at the moment where the `lib.rs` was quite small but the binary `main.rs` was much larger. Unfortunately as well there was a `build/` directory with the implementation of the build system, but this directory was ignored by GitHub on the file-search prompt which was a little annoying. This commit reorganizes rustbuild slightly where all the library files (the build system) is located directly inside of `src/bootstrap` and all the binaries now live in `src/bootstrap/bin` (they're small). Hopefully this should allow GitHub to index and allow navigating all the files while maintaining a relatively similar layout to the other libraries in `src/`.