Merge pull request #396 from GuillaumeGomez/rustify-clean-all

Rustify `clean_all.sh`
This commit is contained in:
antoyo 2023-12-20 10:09:16 -05:00 committed by GitHub
commit 7dad07a67c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 85 additions and 47 deletions

View File

@ -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: |

View File

@ -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: |

View File

@ -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: |

View File

@ -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: |

View File

@ -100,7 +100,7 @@ jobs:
- name: Clean
if: ${{ !matrix.cargo_runner }}
run: |
./clean_all.sh
./y.sh clean all
- name: Prepare dependencies
run: |

View File

@ -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
View 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(())
}

View File

@ -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(),

View File

@ -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 `{}`: {:?}",

View File

@ -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/

View File

@ -15,7 +15,7 @@ case $1 in
rustup toolchain uninstall $nightly
done
./clean_all.sh
./y.sh clean all
./y.sh prepare
;;
"commit")