Merge pull request #396 from GuillaumeGomez/rustify-clean-all
Rustify `clean_all.sh`
This commit is contained in:
commit
7dad07a67c
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -103,7 +103,7 @@ jobs:
|
||||
./y.sh build --features master
|
||||
# TODO: remove --features master when it is back to the default.
|
||||
cargo test --features master
|
||||
./clean_all.sh
|
||||
./y.sh clean all
|
||||
|
||||
- name: Prepare dependencies
|
||||
run: |
|
||||
|
2
.github/workflows/gcc12.yml
vendored
2
.github/workflows/gcc12.yml
vendored
@ -86,7 +86,7 @@ jobs:
|
||||
./y.sh prepare --only-libcore --libgccjit12-patches
|
||||
./y.sh build --no-default-features --sysroot-panic-abort
|
||||
cargo test --no-default-features
|
||||
./clean_all.sh
|
||||
./y.sh clean all
|
||||
|
||||
- name: Prepare dependencies
|
||||
run: |
|
||||
|
2
.github/workflows/m68k.yml
vendored
2
.github/workflows/m68k.yml
vendored
@ -118,7 +118,7 @@ jobs:
|
||||
./y.sh build --target-triple m68k-unknown-linux-gnu --features master
|
||||
# TODO: remove --features master when it is back to the default.
|
||||
CG_GCC_TEST_TARGET=m68k-unknown-linux-gnu cargo test --features master
|
||||
./clean_all.sh
|
||||
./y.sh clean all
|
||||
|
||||
- name: Prepare dependencies
|
||||
run: |
|
||||
|
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@ -82,7 +82,7 @@ jobs:
|
||||
EMBED_LTO_BITCODE=1 ./y.sh build --release --release-sysroot --features master
|
||||
# TODO: remove --features master when it is back to the default.
|
||||
cargo test --features master
|
||||
./clean_all.sh
|
||||
./y.sh clean all
|
||||
|
||||
- name: Prepare dependencies
|
||||
run: |
|
||||
|
2
.github/workflows/stdarch.yml
vendored
2
.github/workflows/stdarch.yml
vendored
@ -100,7 +100,7 @@ jobs:
|
||||
- name: Clean
|
||||
if: ${{ !matrix.cargo_runner }}
|
||||
run: |
|
||||
./clean_all.sh
|
||||
./y.sh clean all
|
||||
|
||||
- name: Prepare dependencies
|
||||
run: |
|
||||
|
@ -1,34 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Requires the CHANNEL env var to be set to `debug` or `release.`
|
||||
|
||||
set -e
|
||||
cd $(dirname "$0")
|
||||
|
||||
pushd ../
|
||||
source ./config.sh
|
||||
popd
|
||||
|
||||
# Cleanup for previous run
|
||||
# v Clean target dir except for build scripts and incremental cache
|
||||
rm -r target/*/{debug,release}/{build,deps,examples,libsysroot*,native} 2>/dev/null || true
|
||||
rm Cargo.lock test_target/Cargo.lock 2>/dev/null || true
|
||||
rm -r sysroot/ 2>/dev/null || true
|
||||
|
||||
# Build libs
|
||||
export RUSTFLAGS="$RUSTFLAGS -Z force-unstable-if-unmarked"
|
||||
if [[ "$1" == "--release" ]]; then
|
||||
sysroot_channel='release'
|
||||
RUSTFLAGS="$RUSTFLAGS -Zmir-opt-level=3" cargo build --target $TARGET_TRIPLE --release
|
||||
else
|
||||
sysroot_channel='debug'
|
||||
cargo build --target $TARGET_TRIPLE
|
||||
fi
|
||||
|
||||
# Copy files to sysroot
|
||||
mkdir -p sysroot/lib/rustlib/$TARGET_TRIPLE/lib/
|
||||
cp -r target/$TARGET_TRIPLE/$sysroot_channel/deps/* sysroot/lib/rustlib/$TARGET_TRIPLE/lib/
|
||||
# Copy the source files to the sysroot (Rust for Linux needs this).
|
||||
source_dir=sysroot/lib/rustlib/src/rust
|
||||
mkdir -p $source_dir
|
||||
cp -r sysroot_src/library/ $source_dir
|
73
build_system/src/clean.rs
Normal file
73
build_system/src/clean.rs
Normal file
@ -0,0 +1,73 @@
|
||||
use crate::utils::remove_file;
|
||||
|
||||
use std::fs::remove_dir_all;
|
||||
|
||||
#[derive(Default)]
|
||||
struct CleanArg {
|
||||
all: bool,
|
||||
}
|
||||
|
||||
impl CleanArg {
|
||||
fn new() -> Result<Option<Self>, String> {
|
||||
let mut args = CleanArg::default();
|
||||
|
||||
// We skip the binary and the "clean" option.
|
||||
for arg in std::env::args().skip(2) {
|
||||
match arg.as_str() {
|
||||
"all" => args.all = true,
|
||||
"--help" => {
|
||||
Self::usage();
|
||||
return Ok(None);
|
||||
}
|
||||
a => return Err(format!("Unknown argument `{}`", a)),
|
||||
}
|
||||
}
|
||||
Ok(Some(args))
|
||||
}
|
||||
|
||||
fn usage() {
|
||||
println!(
|
||||
r#"
|
||||
`clean` command help:
|
||||
|
||||
all : Clean all data
|
||||
--help : Show this help
|
||||
"#
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fn clean_all() -> Result<(), String> {
|
||||
let dirs_to_remove = [
|
||||
"target",
|
||||
"build_sysroot/sysroot",
|
||||
"build_sysroot/sysroot_src",
|
||||
"build_sysroot/target",
|
||||
"regex",
|
||||
"simple-raytracer",
|
||||
];
|
||||
for dir in dirs_to_remove {
|
||||
let _ = remove_dir_all(dir);
|
||||
}
|
||||
|
||||
let files_to_remove = ["build_sysroot/Cargo.lock", "perf.data", "perf.data.old"];
|
||||
|
||||
for file in files_to_remove {
|
||||
let _ = remove_file(file);
|
||||
}
|
||||
|
||||
println!("Successfully ran `clean all`");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn run() -> Result<(), String> {
|
||||
let args = match CleanArg::new()? {
|
||||
Some(a) => a,
|
||||
None => return Ok(()),
|
||||
};
|
||||
|
||||
if args.all {
|
||||
clean_all()?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
@ -2,6 +2,7 @@ use std::env;
|
||||
use std::process;
|
||||
|
||||
mod build;
|
||||
mod clean;
|
||||
mod config;
|
||||
mod prepare;
|
||||
mod rustc_info;
|
||||
@ -22,6 +23,7 @@ fn usage() {
|
||||
"\
|
||||
Available commands for build_system:
|
||||
|
||||
clean : Run clean command
|
||||
prepare : Run prepare command
|
||||
build : Run build command
|
||||
test : Run test command
|
||||
@ -30,6 +32,7 @@ Available commands for build_system:
|
||||
}
|
||||
|
||||
pub enum Command {
|
||||
Clean,
|
||||
Prepare,
|
||||
Build,
|
||||
Test,
|
||||
@ -41,6 +44,7 @@ fn main() {
|
||||
}
|
||||
|
||||
let command = match env::args().nth(1).as_deref() {
|
||||
Some("clean") => Command::Clean,
|
||||
Some("prepare") => Command::Prepare,
|
||||
Some("build") => Command::Build,
|
||||
Some("test") => Command::Test,
|
||||
@ -57,6 +61,7 @@ fn main() {
|
||||
};
|
||||
|
||||
if let Err(e) = match command {
|
||||
Command::Clean => clean::run(),
|
||||
Command::Prepare => prepare::run(),
|
||||
Command::Build => build::run(),
|
||||
Command::Test => test::run(),
|
||||
|
@ -346,7 +346,7 @@ pub fn split_args(args: &str) -> Result<Vec<String>, String> {
|
||||
Ok(out)
|
||||
}
|
||||
|
||||
pub fn remove_file<P: AsRef<Path>>(file_path: &P) -> Result<(), String> {
|
||||
pub fn remove_file<P: AsRef<Path> + ?Sized>(file_path: &P) -> Result<(), String> {
|
||||
std::fs::remove_file(file_path).map_err(|error| {
|
||||
format!(
|
||||
"Failed to remove `{}`: {:?}",
|
||||
|
@ -1,6 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -v
|
||||
|
||||
rm -rf target/ build_sysroot/{sysroot/,sysroot_src/,target/,Cargo.lock} perf.data{,.old}
|
||||
rm -rf regex/ simple-raytracer/
|
Loading…
x
Reference in New Issue
Block a user