mirror of https://github.com/tracel-ai/burn.git
145 lines
3.2 KiB
Bash
Executable File
145 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This script is run before a PR is created.
|
|
# It is used to check that the code compiles and passes all tests.
|
|
# It is also used to check that the code is formatted correctly and passes clippy.
|
|
|
|
# Usage: ./run-checks.sh {all|no_std|std} (default: all)
|
|
|
|
# Exit immediately if a command exits with a non-zero status.
|
|
set -euo pipefail
|
|
|
|
# Function to handle errors
|
|
error_handler() {
|
|
local exit_status=$?
|
|
local line_number=$1
|
|
local command=$2
|
|
|
|
echo "Error on line $line_number"
|
|
echo "Command '$command' exited with status $exit_status"
|
|
}
|
|
|
|
# Signal trap to call error_handler when a command fails
|
|
trap 'error_handler $LINENO $BASH_COMMAND' ERR
|
|
|
|
# Function to build and test no_std
|
|
build_and_test_no_std() {
|
|
local dir=$1
|
|
|
|
echo "$dir"
|
|
cd $dir || exit
|
|
|
|
echo "Build without defaults"
|
|
cargo build --no-default-features
|
|
|
|
echo "Test without defaults"
|
|
cargo test --no-default-features
|
|
|
|
echo "Build for WebAssembly"
|
|
cargo build --no-default-features --target wasm32-unknown-unknown
|
|
|
|
echo "Build for ARM"
|
|
cargo build --no-default-features --target thumbv7m-none-eabi
|
|
|
|
cd .. || exit
|
|
}
|
|
|
|
# Function to build and test all features
|
|
build_and_test_all_features() {
|
|
local dir=$1
|
|
|
|
echo "$dir"
|
|
cd $dir || exit
|
|
|
|
echo "Build with all defaults"
|
|
cargo build --all-features
|
|
|
|
echo "Test with all features"
|
|
cargo test --all-features
|
|
|
|
echo "Check documentation with all features"
|
|
cargo doc --all-features
|
|
|
|
cd .. || exit
|
|
}
|
|
|
|
# Set RUSTDOCFLAGS to treat warnings as errors for the documentation build
|
|
export RUSTDOCFLAGS="-D warnings"
|
|
|
|
# Run the checks for std and all features with std
|
|
std_func() {
|
|
echo "Running std checks"
|
|
|
|
cargo build --workspace
|
|
cargo test --workspace
|
|
cargo fmt --check --all
|
|
cargo clippy -- -D warnings
|
|
cargo doc --workspace
|
|
|
|
# all features
|
|
echo "Running all-features checks"
|
|
build_and_test_all_features "burn-dataset"
|
|
|
|
cd burn-core || exit
|
|
|
|
echo "Test burn-core with tch backend"
|
|
cargo test --features test-tch
|
|
|
|
# echo "Test burn-core with wgpu backend"
|
|
# cargo test --features test-wgpu
|
|
|
|
cd .. || exit
|
|
}
|
|
|
|
# Run the checks for no_std
|
|
no_std_func() {
|
|
echo "Running no_std checks"
|
|
|
|
# Add wasm32 target for compiler.
|
|
rustup target add wasm32-unknown-unknown
|
|
rustup target add thumbv7m-none-eabi
|
|
|
|
build_and_test_no_std "burn"
|
|
build_and_test_no_std "burn-core"
|
|
build_and_test_no_std "burn-common"
|
|
build_and_test_no_std "burn-tensor"
|
|
build_and_test_no_std "burn-ndarray"
|
|
build_and_test_no_std "burn-no-std-tests"
|
|
}
|
|
|
|
# Save the script start time
|
|
start_time=$(date +%s)
|
|
|
|
# If no arguments were supplied or if it's empty, set the default as 'all'
|
|
if [ -z "${1-}" ]; then
|
|
arg="all"
|
|
else
|
|
arg=$1
|
|
fi
|
|
|
|
# Check the argument and call the appropriate functions
|
|
case $arg in
|
|
all)
|
|
no_std_func
|
|
std_func
|
|
;;
|
|
no_std)
|
|
no_std_func
|
|
;;
|
|
std)
|
|
std_func
|
|
;;
|
|
*)
|
|
echo "Error: Invalid argument"
|
|
echo "Usage: $0 {all|no_std|std}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Calculate and print the script execution time
|
|
end_time=$(date +%s)
|
|
execution_time=$((end_time - start_time))
|
|
echo "Script executed in $execution_time seconds."
|
|
|
|
exit 0
|