diff --git a/.ci/scripts/build_llama_android.sh b/.ci/scripts/build_llama_android.sh index a08fd5499fa..6b8f851d772 100644 --- a/.ci/scripts/build_llama_android.sh +++ b/.ci/scripts/build_llama_android.sh @@ -12,7 +12,8 @@ source "$(dirname "${BASH_SOURCE[0]}")/utils.sh" install_executorch_and_backend_lib() { echo "Installing executorch and xnnpack backend" - rm -rf cmake-android-out && mkdir cmake-android-out + clean_executorch_install_folders + mkdir cmake-android-out ANDROID_NDK=/opt/ndk BUCK2=buck2 ANDROID_ABI=arm64-v8a diff --git a/.ci/scripts/test_llama.sh b/.ci/scripts/test_llama.sh index 6d009ebad51..62b6f6cc088 100644 --- a/.ci/scripts/test_llama.sh +++ b/.ci/scripts/test_llama.sh @@ -149,7 +149,7 @@ which "${PYTHON_EXECUTABLE}" cmake_install_executorch_libraries() { echo "Installing libexecutorch.a, libextension_module.so, libportable_ops_lib.a" - rm -rf cmake-out + clean_executorch_install_folders retry cmake \ -DCMAKE_INSTALL_PREFIX=cmake-out \ -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" \ diff --git a/.ci/scripts/utils.sh b/.ci/scripts/utils.sh index 4c8cd086e4f..be927a3a3a8 100644 --- a/.ci/scripts/utils.sh +++ b/.ci/scripts/utils.sh @@ -16,6 +16,10 @@ retry () { "$@" || (sleep 30 && reset_buck && "$@") || (sleep 60 && reset_buck && "$@") } +clean_executorch_install_folders() { + ./install_requirements.sh --clean +} + install_executorch() { which pip # Install executorch, this assumes that Executorch is checked out in the @@ -74,7 +78,8 @@ build_executorch_runner_buck2() { build_executorch_runner_cmake() { CMAKE_OUTPUT_DIR=cmake-out # Build executorch runtime using cmake - rm -rf "${CMAKE_OUTPUT_DIR}" && mkdir "${CMAKE_OUTPUT_DIR}" + clean_executorch_install_folders + mkdir "${CMAKE_OUTPUT_DIR}" pushd "${CMAKE_OUTPUT_DIR}" || return # This command uses buck2 to gather source files and buck2 could crash flakily @@ -103,7 +108,7 @@ build_executorch_runner() { cmake_install_executorch_lib() { echo "Installing libexecutorch.a and libportable_kernels.a" - rm -rf cmake-out + clean_executorch_install_folders retry cmake -DBUCK2="$BUCK" \ -DCMAKE_INSTALL_PREFIX=cmake-out \ -DCMAKE_BUILD_TYPE=Release \ diff --git a/docs/source/getting-started-setup.md b/docs/source/getting-started-setup.md index f2f98d65638..66ef2233af8 100644 --- a/docs/source/getting-started-setup.md +++ b/docs/source/getting-started-setup.md @@ -113,7 +113,7 @@ to ExecuTorch. > > ```bash > # From the root of the executorch repo: -> rm -rf cmake-out pip-out +> ./install_requirements.sh --clean > git submodule sync > git submodule update --init > ``` @@ -196,7 +196,8 @@ The ExecuTorch repo uses CMake to build its C++ code. Here, we'll configure it t ```bash # Clean and configure the CMake build system. Compiled programs will # appear in the executorch/cmake-out directory we create here. - (rm -rf cmake-out && mkdir cmake-out && cd cmake-out && cmake ..) + ./install_requirements.sh --clean + (mkdir cmake-out && cd cmake-out && cmake ..) # Build the executor_runner target cmake --build cmake-out --target executor_runner -j9 @@ -213,7 +214,7 @@ The ExecuTorch repo uses CMake to build its C++ code. Here, we'll configure it t > > ```bash > # From the root of the executorch repo: -> rm -rf cmake-out pip-out +> ./install_requirements.sh --clean > git submodule sync > git submodule update --init > ``` diff --git a/docs/source/runtime-build-and-cross-compilation.md b/docs/source/runtime-build-and-cross-compilation.md index 4d42357618c..f30d2d28d1c 100644 --- a/docs/source/runtime-build-and-cross-compilation.md +++ b/docs/source/runtime-build-and-cross-compilation.md @@ -45,7 +45,8 @@ cd executorch # Clean and configure the CMake build system. It's good practice to do this # whenever cloning or pulling the upstream repo. -(rm -rf cmake-out && mkdir cmake-out && cd cmake-out && cmake ..) +./install_requirements.sh --clean +(mkdir cmake-out && cd cmake-out && cmake ..) ``` Once this is done, you don't need to do it again until you pull from the upstream repo again, or if you modify any CMake-related files. @@ -121,7 +122,8 @@ Following are instruction on how to perform cross compilation for Android and iO Assuming Android NDK is available, run: ```bash # Run the following lines from the `executorch/` folder -rm -rf cmake-android-out && mkdir cmake-android-out && cd cmake-android-out +./install_requirements.sh --clean +mkdir cmake-android-out && cd cmake-android-out # point -DCMAKE_TOOLCHAIN_FILE to the location where ndk is installed cmake -DCMAKE_TOOLCHAIN_FILE=/Users/{user_name}/Library/Android/sdk/ndk/25.2.9519653/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a .. diff --git a/examples/demo-apps/android/ExecuTorchDemo/README.md b/examples/demo-apps/android/ExecuTorchDemo/README.md index a60307dd90f..33107cbe5ee 100644 --- a/examples/demo-apps/android/ExecuTorchDemo/README.md +++ b/examples/demo-apps/android/ExecuTorchDemo/README.md @@ -69,7 +69,9 @@ We build the required ExecuTorch runtime library to run the model. export ANDROID_NDK= export ANDROID_ABI=arm64-v8a -rm -rf cmake-android-out && mkdir cmake-android-out +# Run the following lines from the `executorch/` folder +./install_requirements.sh --clean +mkdir cmake-android-out # Build the core executorch library cmake . -DCMAKE_INSTALL_PREFIX=cmake-android-out \ @@ -112,7 +114,8 @@ export ANDROID_NDK= export ANDROID_ABI=arm64-v8a export QNN_SDK_ROOT= -rm -rf cmake-android-out && mkdir cmake-android-out && cd cmake-android-out +./install_requirements.sh --clean +mkdir cmake-android-out && cd cmake-android-out cmake . -DCMAKE_INSTALL_PREFIX=cmake-android-out \ -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" \ -DANDROID_ABI="${ANDROID_ABI}" \ diff --git a/examples/devtools/build_example_runner.sh b/examples/devtools/build_example_runner.sh index 9f35abb1a35..693996940d5 100755 --- a/examples/devtools/build_example_runner.sh +++ b/examples/devtools/build_example_runner.sh @@ -37,7 +37,7 @@ done main() { cd "${EXECUTORCH_ROOT}" - rm -rf cmake-out + ./install_requirements.sh --clean if [[ "${BUILD_COREML}" == "ON" ]]; then cmake -DCMAKE_INSTALL_PREFIX=cmake-out \ diff --git a/examples/devtools/test_example_runner.sh b/examples/devtools/test_example_runner.sh index 9c9ed782cbe..b16d4f3e04a 100644 --- a/examples/devtools/test_example_runner.sh +++ b/examples/devtools/test_example_runner.sh @@ -16,7 +16,7 @@ source "$(dirname "${BASH_SOURCE[0]}")/../../.ci/scripts/utils.sh" cmake_install_executorch_devtools_lib() { echo "Installing libexecutorch.a, libportable_kernels.a, libetdump.a, libbundled_program.a" - rm -rf cmake-out + clean_executorch_install_folders retry cmake -DCMAKE_INSTALL_PREFIX=cmake-out \ -DCMAKE_BUILD_TYPE=Release \ diff --git a/examples/xnnpack/quantization/test_quantize.sh b/examples/xnnpack/quantization/test_quantize.sh index d870fb6fafd..d439fde6cbc 100644 --- a/examples/xnnpack/quantization/test_quantize.sh +++ b/examples/xnnpack/quantization/test_quantize.sh @@ -47,8 +47,9 @@ test_cmake_quantization() { SITE_PACKAGES="$(${PYTHON_EXECUTABLE} -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())')" CMAKE_PREFIX_PATH="${SITE_PACKAGES}/torch" - (rm -rf cmake-out \ - && mkdir cmake-out \ + clean_executorch_install_folders + + (mkdir cmake-out \ && cd cmake-out \ && retry cmake \ -DCMAKE_BUILD_TYPE=Release \ diff --git a/install_requirements.py b/install_requirements.py index 90e10373293..ace2f34b702 100644 --- a/install_requirements.py +++ b/install_requirements.py @@ -85,7 +85,7 @@ def python_is_compatible(): print("Cleaning build artifacts...") print("Cleaning pip-out/...") shutil.rmtree("pip-out/", ignore_errors=True) - dirs = glob.glob("cmake-out*/") + dirs = glob.glob("cmake-out*/") + glob.glob("cmake-android-out/") for d in dirs: print(f"Cleaning {d}...") shutil.rmtree(d, ignore_errors=True) diff --git a/test/build_size_test.sh b/test/build_size_test.sh index 428e351cf08..d970a023b5a 100644 --- a/test/build_size_test.sh +++ b/test/build_size_test.sh @@ -13,7 +13,7 @@ source "$(dirname "${BASH_SOURCE[0]}")/../.ci/scripts/utils.sh" cmake_install_executorch_lib() { echo "Installing libexecutorch.a" - rm -rf cmake-out + clean_executorch_install_folders retry cmake -DBUCK2="$BUCK2" \ -DCMAKE_CXX_STANDARD_REQUIRED=ON \