From 9f43a1eb2684a4ab5676d93f88c6ab16d2ce3d13 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Tue, 19 Jul 2022 12:46:56 +0200 Subject: [PATCH 01/13] Add argument to select LLVM mode (minified or full) --- .github/workflows/installer-check.yaml | 16 +++++++++++++++- install-rust-toolchain.sh | 19 +++++++++++++++---- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/.github/workflows/installer-check.yaml b/.github/workflows/installer-check.yaml index b077784b..6226f67c 100644 --- a/.github/workflows/installer-check.yaml +++ b/.github/workflows/installer-check.yaml @@ -94,5 +94,19 @@ jobs: cargo generate --git https://github.com/esp-rs/esp-template --name test-${{ matrix.board }} --vcs none --silent -d mcu=${{ matrix.board }} -d devcontainer=false cd test-${{ matrix.board }} cargo build - + minified-llvm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + minified-llvm: ['YES', 'NO'] + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + ref: ${{ github.event.inputs.rust-build-branch }} + - name: Install toolchain + run: | + bash install-rust-toolchain.sh \ + --minified-llvm "${{ matrix.minified-llvm }}" diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index a627eb7b..75125e01 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -11,9 +11,10 @@ TOOLCHAIN_DESTINATION_DIR="${RUSTUP_HOME}/toolchains/esp" BUILD_TARGET="esp32,esp32s2,esp32s3" RUSTC_MINIMAL_MINOR_VERSION="55" INSTALLATION_MODE="install" # reinstall, uninstall -#LLVM_DIST_MIRROR="https://github.com/espressif/llvm-project/releases/download/${LLVM_VERSION}" -LLVM_DIST_MIRROR="https://github.com/esp-rs/rust-build/releases/download/llvm-project-14.0-minified" +LLVM_FULL_DIST_MIRROR="https://github.com/espressif/llvm-project/releases/download/${LLVM_VERSION}" +LLVM_MINIFIED_DIST_MIRROR="https://github.com/esp-rs/rust-build/releases/download/llvm-project-14.0-minified" LLVM_VERSION="esp-14.0.0-20220415" +MINIFIED_LLVM="NO" GCC_DIST_MIRROR="https://github.com/espressif/crosstool-NG/releases/download" GCC_PATCH="esp-2021r2-patch3" GCC_VERSION="8_4_0-esp-2021r2-patch3" @@ -34,6 +35,7 @@ display_help() { echo "-e|--extra-crates Extra crates to install. Defaults to: ldproxy cargo-espflash" echo "-f|--export-file Destination of the export file generated." echo "-i|--installation-mode Installation mode: [install, reinstall, uninstall]. Defaults to: install" + echo "-k|--minified-llvm Use minified LLVM. Possible values [YES, NO]" echo "-l|--llvm-version LLVM version" echo "-m|--minified-esp-idf [Only applies if using -s|--esp-idf-version]. Deletes some esp-idf folder to save space. Possible values [YES, NO]" echo "-n|--nightly-version Nightly Rust toolchain version" @@ -84,6 +86,11 @@ while [[ $# -gt 0 ]]; do shift # past argument shift # past value ;; + -k | --minified-llvm) + MINIFIED_LLVM="$2" + shift # past argument + shift # past value + ;; -l | --llvm-version) LLVM_VERSION="$2" shift # past argument @@ -143,6 +150,7 @@ echo "--extra-crates = ${EXTRA_CRATES}" echo "--installation-mode = ${INSTALLATION_MODE}" echo "--llvm-version = ${LLVM_VERSION}" echo "--minified-esp-idf = ${MINIFIED_ESP_IDF}" +echo "--minified-llvm = ${MINIFIED_LLVM}" echo "--nightly-version = ${NIGHTLY_VERSION}" echo "--rustup-home = ${RUSTUP_HOME}" echo "--system-packages = ${SYSTEM_PACKAGES}" @@ -556,8 +564,11 @@ RUST_DIST="rust-${TOOLCHAIN_VERSION}-${ARCH}" RUST_SRC_DIST="rust-src-${TOOLCHAIN_VERSION}" LLVM_ARTIFACT_VERSION=$(echo ${LLVM_VERSION} | sed -e 's/.*esp-//g' -e 's/-.*//g' -e 's/\./_/g') LLVM_FILE="xtensa-esp32-elf-llvm${LLVM_ARTIFACT_VERSION}-${LLVM_VERSION}-${ARCH}.tar.xz" -LLVM_DIST_URL="${LLVM_DIST_MIRROR}/${LLVM_FILE}" - +if [[ "${MINIFIED_LLVM}" == "NO" ]] + LLVM_DIST_URL="${LLVM_FULL_DIST_MIRROR}/${LLVM_FILE}" +else + LLVM_DIST_URL="${LLVM_MINIFIED_DIST_MIRROR}/${LLVM_FILE}" +fi IDF_TOOLS_PATH="${IDF_TOOLS_PATH:-${HOME}/.espressif}" IDF_TOOL_GCC_PATH="" IDF_TOOL_XTENSA_ELF_CLANG="${IDF_TOOLS_PATH}/tools/xtensa-esp32-elf-clang/${LLVM_VERSION}-${ARCH}" From 7c14f134f618b26a68c9ab2ba0cc049c6f89bf9d Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Tue, 19 Jul 2022 12:49:29 +0200 Subject: [PATCH 02/13] Update variable order --- install-rust-toolchain.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index 75125e01..2bc41403 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -11,9 +11,9 @@ TOOLCHAIN_DESTINATION_DIR="${RUSTUP_HOME}/toolchains/esp" BUILD_TARGET="esp32,esp32s2,esp32s3" RUSTC_MINIMAL_MINOR_VERSION="55" INSTALLATION_MODE="install" # reinstall, uninstall +LLVM_VERSION="esp-14.0.0-20220415" LLVM_FULL_DIST_MIRROR="https://github.com/espressif/llvm-project/releases/download/${LLVM_VERSION}" LLVM_MINIFIED_DIST_MIRROR="https://github.com/esp-rs/rust-build/releases/download/llvm-project-14.0-minified" -LLVM_VERSION="esp-14.0.0-20220415" MINIFIED_LLVM="NO" GCC_DIST_MIRROR="https://github.com/espressif/crosstool-NG/releases/download" GCC_PATCH="esp-2021r2-patch3" From 92f84f7299630748846d803cbe25f09dbbf2e183 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Tue, 19 Jul 2022 12:51:24 +0200 Subject: [PATCH 03/13] Fix typo --- install-rust-toolchain.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index 2bc41403..5545ac10 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -564,7 +564,7 @@ RUST_DIST="rust-${TOOLCHAIN_VERSION}-${ARCH}" RUST_SRC_DIST="rust-src-${TOOLCHAIN_VERSION}" LLVM_ARTIFACT_VERSION=$(echo ${LLVM_VERSION} | sed -e 's/.*esp-//g' -e 's/-.*//g' -e 's/\./_/g') LLVM_FILE="xtensa-esp32-elf-llvm${LLVM_ARTIFACT_VERSION}-${LLVM_VERSION}-${ARCH}.tar.xz" -if [[ "${MINIFIED_LLVM}" == "NO" ]] +if [[ "${MINIFIED_LLVM}" == "NO" ]]; then LLVM_DIST_URL="${LLVM_FULL_DIST_MIRROR}/${LLVM_FILE}" else LLVM_DIST_URL="${LLVM_MINIFIED_DIST_MIRROR}/${LLVM_FILE}" From 1df5dcff6e473a7912140bf6fb58868ea1ea2fdf Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Tue, 19 Jul 2022 13:17:14 +0200 Subject: [PATCH 04/13] Use `MINIFIED_LLVM` by default --- install-rust-toolchain.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index 5545ac10..8b4aa64a 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -14,7 +14,7 @@ INSTALLATION_MODE="install" # reinstall, uninstall LLVM_VERSION="esp-14.0.0-20220415" LLVM_FULL_DIST_MIRROR="https://github.com/espressif/llvm-project/releases/download/${LLVM_VERSION}" LLVM_MINIFIED_DIST_MIRROR="https://github.com/esp-rs/rust-build/releases/download/llvm-project-14.0-minified" -MINIFIED_LLVM="NO" +MINIFIED_LLVM="YES" GCC_DIST_MIRROR="https://github.com/espressif/crosstool-NG/releases/download" GCC_PATCH="esp-2021r2-patch3" GCC_VERSION="8_4_0-esp-2021r2-patch3" From e37a3695c7b462f96a47e7373e46a90dfa1b58bb Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Tue, 19 Jul 2022 15:16:07 +0200 Subject: [PATCH 05/13] Test also on for macos --- .github/workflows/installer-check.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/installer-check.yaml b/.github/workflows/installer-check.yaml index 6226f67c..1761b87e 100644 --- a/.github/workflows/installer-check.yaml +++ b/.github/workflows/installer-check.yaml @@ -95,11 +95,12 @@ jobs: cd test-${{ matrix.board }} cargo build minified-llvm: - runs-on: ubuntu-latest strategy: fail-fast: false matrix: + os: [ubuntu-latest, macos-latest] minified-llvm: ['YES', 'NO'] + runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v2 From b8d15576c62e18376ce754c6169cd2cc29638eee Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Tue, 19 Jul 2022 15:16:23 +0200 Subject: [PATCH 06/13] Add LLVM_ARC --- install-rust-toolchain.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index 8b4aa64a..4e6f6f97 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -483,6 +483,7 @@ fi # Configuration overrides for specific architectures if [[ ${ARCH} == "aarch64-apple-darwin" ]]; then GCC_ARCH="macos" + LLVM_ARCH="macos" CARGO_ESPFLASH_URL="https://github.com/esp-rs/espflash/releases/latest/download/cargo-espflash-${ARCH}.zip" CARGO_ESPFLASH_BIN="${CARGO_HOME}/bin/cargo-espflash" ESPFLASH_URL="https://github.com/esp-rs/espflash/releases/latest/download/espflash-${ARCH}.zip" @@ -495,6 +496,7 @@ if [[ ${ARCH} == "aarch64-apple-darwin" ]]; then WEB_FLASH_BIN="${CARGO_HOME}/bin/web-flash" elif [[ ${ARCH} == "x86_64-apple-darwin" ]]; then GCC_ARCH="macos" + LLVM_ARCH="macos" CARGO_ESPFLASH_URL="https://github.com/esp-rs/espflash/releases/latest/download/cargo-espflash-${ARCH}.zip" CARGO_ESPFLASH_BIN="${CARGO_HOME}/bin/cargo-espflash" ESPFLASH_URL="https://github.com/esp-rs/espflash/releases/latest/download/espflash-${ARCH}.zip" @@ -511,6 +513,7 @@ elif [[ ${ARCH} == "x86_64-apple-darwin" ]]; then WEB_FLASH_BIN="${CARGO_HOME}/bin/web-flash" elif [[ ${ARCH} == "x86_64-unknown-linux-gnu" ]]; then GCC_ARCH="linux-amd64" + LLVM_ARCH="linux-amd64" SYSTEM_PACKAGES="" CARGO_ESPFLASH_URL="https://github.com/esp-rs/espflash/releases/latest/download/cargo-espflash-${ARCH}.zip" CARGO_ESPFLASH_BIN="${CARGO_HOME}/bin/cargo-espflash" @@ -528,6 +531,7 @@ elif [[ ${ARCH} == "x86_64-unknown-linux-gnu" ]]; then WEB_FLASH_BIN="${CARGO_HOME}/bin/web-flash" elif [[ ${ARCH} == "aarch64-unknown-linux-gnu" ]]; then GCC_ARCH="linux-arm64" + LLVM_ARCH="${ARCH}" SYSTEM_PACKAGES="" if [[ "${EXTRA_CRATES}" =~ "cargo-generate" ]]; then GENERATE_URL="https://github.com/cargo-generate/cargo-generate/releases/latest/download/cargo-generate-${GENERATE_VERSION}-${ARCH}.tar.gz" @@ -539,6 +543,7 @@ elif [[ ${ARCH} == "aarch64-unknown-linux-gnu" ]]; then ESPFLASH_BIN="${CARGO_HOME}/bin/espflash" elif [[ ${ARCH} == "x86_64-pc-windows-msvc" ]]; then GCC_ARCH="win64" + LLVM_ARCH="win64" SYSTEM_PACKAGES="" CARGO_ESPFLASH_URL="https://github.com/esp-rs/espflash/releases/latest/download/cargo-espflash-${ARCH}.zip" CARGO_ESPFLASH_BIN="${CARGO_HOME}/bin/cargo-espflash.exe" @@ -563,10 +568,11 @@ install_system_packages RUST_DIST="rust-${TOOLCHAIN_VERSION}-${ARCH}" RUST_SRC_DIST="rust-src-${TOOLCHAIN_VERSION}" LLVM_ARTIFACT_VERSION=$(echo ${LLVM_VERSION} | sed -e 's/.*esp-//g' -e 's/-.*//g' -e 's/\./_/g') -LLVM_FILE="xtensa-esp32-elf-llvm${LLVM_ARTIFACT_VERSION}-${LLVM_VERSION}-${ARCH}.tar.xz" if [[ "${MINIFIED_LLVM}" == "NO" ]]; then + LLVM_FILE="xtensa-esp32-elf-llvm${LLVM_ARTIFACT_VERSION}-${LLVM_VERSION}-${LLVM_ARCH}.tar.xz" LLVM_DIST_URL="${LLVM_FULL_DIST_MIRROR}/${LLVM_FILE}" else + LLVM_FILE="xtensa-esp32-elf-llvm${LLVM_ARTIFACT_VERSION}-${LLVM_VERSION}-${ARCH}.tar.xz" LLVM_DIST_URL="${LLVM_MINIFIED_DIST_MIRROR}/${LLVM_FILE}" fi IDF_TOOLS_PATH="${IDF_TOOLS_PATH:-${HOME}/.espressif}" From eb258731924c492f335530f880c60aabef55f1b1 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Tue, 19 Jul 2022 15:53:18 +0200 Subject: [PATCH 07/13] Test removing set -u --- install-rust-toolchain.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index 4e6f6f97..3010b89a 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -set -eu +set -e #set -v # Default values From 0e35c922b180218f8a1b88312a633a7cfdf5b2f4 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Wed, 20 Jul 2022 09:49:21 +0200 Subject: [PATCH 08/13] Use minified llvm version for `aarch64-unknown-linux-gnu` --- install-rust-toolchain.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index 3010b89a..8112b937 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -531,7 +531,7 @@ elif [[ ${ARCH} == "x86_64-unknown-linux-gnu" ]]; then WEB_FLASH_BIN="${CARGO_HOME}/bin/web-flash" elif [[ ${ARCH} == "aarch64-unknown-linux-gnu" ]]; then GCC_ARCH="linux-arm64" - LLVM_ARCH="${ARCH}" + MINIFIED_LLVM="YES" SYSTEM_PACKAGES="" if [[ "${EXTRA_CRATES}" =~ "cargo-generate" ]]; then GENERATE_URL="https://github.com/cargo-generate/cargo-generate/releases/latest/download/cargo-generate-${GENERATE_VERSION}-${ARCH}.tar.gz" From 5bbedae7d9070f752e5aa11b8e7afe0892c98431 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Wed, 20 Jul 2022 10:29:10 +0200 Subject: [PATCH 09/13] Set `set -u` --- install-rust-toolchain.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index 95802d0a..6c411993 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -set -e +set -eu #set -v # Default values From 9edad00596ebe8f9df56f6318aa1b050eb032924 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Wed, 20 Jul 2022 13:08:57 +0200 Subject: [PATCH 10/13] Initialize `POSITIONAL` --- install-rust-toolchain.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index 6c411993..f1aaabbf 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -26,6 +26,7 @@ MINIFIED_ESP_IDF="NO" IS_XTENSA_INSTALLED=0 SYSTEM_PACKAGES="openssl@3" EXPORT_FILE="" +POSITIONAL="" display_help() { echo "Usage: install-rust-toolchain.sh " From 5659c2c62eec45617d6a857c348398a4eefa784e Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Wed, 20 Jul 2022 13:24:48 +0200 Subject: [PATCH 11/13] Revert `POSITIONAL`initialization --- install-rust-toolchain.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index f1aaabbf..6c411993 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -26,7 +26,6 @@ MINIFIED_ESP_IDF="NO" IS_XTENSA_INSTALLED=0 SYSTEM_PACKAGES="openssl@3" EXPORT_FILE="" -POSITIONAL="" display_help() { echo "Usage: install-rust-toolchain.sh " From ecd90d75cf92b22ac807a86ee8808efee24d27fc Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Wed, 20 Jul 2022 14:30:34 +0200 Subject: [PATCH 12/13] Update `POSITIONAL` initialization --- install-rust-toolchain.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index 6c411993..a6447b48 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -48,7 +48,7 @@ display_help() { } # Process positional arguments -POSITIONAL=() +POSITIONAL="" while [[ $# -gt 0 ]]; do key="$1" From a485954cd4ab6ca60834f9f58e49d700077b7088 Mon Sep 17 00:00:00 2001 From: Sergio Gasquez Date: Thu, 21 Jul 2022 12:22:41 +0200 Subject: [PATCH 13/13] Remove `POSITIONAL` --- install-rust-toolchain.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index a6447b48..2f51b003 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -47,8 +47,7 @@ display_help() { echo "-x|--clear-cache Removes cached distribution files. Possible values [YES, NO]" } -# Process positional arguments -POSITIONAL="" +# Process arguments while [[ $# -gt 0 ]]; do key="$1" @@ -132,15 +131,13 @@ while [[ $# -gt 0 ]]; do shift # past argument shift # past value ;; - *) # unknown option - POSITIONAL+=("$1") # save it in an array for later - shift # past argument + *) # unknown option + echo "Warning: Unknown argument: $2." + shift # past argument ;; esac done -set -- "${POSITIONAL[@]}" # restore positional parameters - echo "Processing configuration:" echo "--build-target = ${BUILD_TARGET}" echo "--cargo-home = ${CARGO_HOME}"