diff --git a/install-rust-toolchain.sh b/install-rust-toolchain.sh index 5f022f9e..1108d6b7 100755 --- a/install-rust-toolchain.sh +++ b/install-rust-toolchain.sh @@ -50,86 +50,86 @@ POSITIONAL=() while [[ $# -gt 0 ]]; do key="$1" - case $key in - -h|--help) - display_help - exit 1 - ;; - -b|--build-target) - BUILD_TARGET="$2" - shift # past argument - shift # past value - ;; - -d|--toolchain-destination) - TOOLCHAIN_DESTINATION_DIR="$2" - shift # past argument - shift # past value - ;; - -e|--extra-crates) - EXTRA_CRATES="$2" - shift # past argument - shift # past value - ;; - -f|--export-file) - EXPORT_FILE="$2" - shift # past argument - shift # past value - ;; - -o|--cargo-home) - CARGO_HOME="$2" - shift # past argument - shift # past value - ;; - -i|--installation-mode) - INSTALLATION_MODE="$2" - shift # past argument - shift # past value - ;; - -l|--llvm-version) - LLVM_VERSION="$2" - shift # past argument - shift # past value - ;; - -m|--minified-esp-idf) - MINIFIED_ESP_IDF="$2" - shift # past argument - shift # past value - ;; - -n|--nightly-version) - NIGHTLY_VERSION="$2" - shift # past argument - shift # past value - ;; - -p|--system-packages) - SYSTEM_PACKAGES="$2" - shift # past argument - shift # past value - ;; - -r|--rustup-home) - RUSTUP_HOME="$2" - shift # past argument - shift # past value - ;; - -s|--esp-idf-version) - ESP_IDF_VERSION="$2" - shift # past argument - shift # past value - ;; - -t|--toolchain-version) - TOOLCHAIN_VERSION="$2" - shift # past argument - shift # past value - ;; - -x|--clear-cache) - CLEAR_DOWNLOAD_CACHE="$2" - shift # past argument - shift # past value - ;; - *) # unknown option - POSITIONAL+=("$1") # save it in an array for later - shift # past argument - ;; - esac + case $key in + -h | --help) + display_help + exit 1 + ;; + -b | --build-target) + BUILD_TARGET="$2" + shift # past argument + shift # past value + ;; + -d | --toolchain-destination) + TOOLCHAIN_DESTINATION_DIR="$2" + shift # past argument + shift # past value + ;; + -e | --extra-crates) + EXTRA_CRATES="$2" + shift # past argument + shift # past value + ;; + -f | --export-file) + EXPORT_FILE="$2" + shift # past argument + shift # past value + ;; + -o | --cargo-home) + CARGO_HOME="$2" + shift # past argument + shift # past value + ;; + -i | --installation-mode) + INSTALLATION_MODE="$2" + shift # past argument + shift # past value + ;; + -l | --llvm-version) + LLVM_VERSION="$2" + shift # past argument + shift # past value + ;; + -m | --minified-esp-idf) + MINIFIED_ESP_IDF="$2" + shift # past argument + shift # past value + ;; + -n | --nightly-version) + NIGHTLY_VERSION="$2" + shift # past argument + shift # past value + ;; + -p | --system-packages) + SYSTEM_PACKAGES="$2" + shift # past argument + shift # past value + ;; + -r | --rustup-home) + RUSTUP_HOME="$2" + shift # past argument + shift # past value + ;; + -s | --esp-idf-version) + ESP_IDF_VERSION="$2" + shift # past argument + shift # past value + ;; + -t | --toolchain-version) + TOOLCHAIN_VERSION="$2" + shift # past argument + shift # past value + ;; + -x | --clear-cache) + CLEAR_DOWNLOAD_CACHE="$2" + shift # past argument + shift # past value + ;; + *) # unknown option + POSITIONAL+=("$1") # save it in an array for later + shift # past argument + ;; + esac done set -- "${POSITIONAL[@]}" # restore positional parameters @@ -175,7 +175,7 @@ function source_cargo() { function install_esp_idf() { mkdir -p ${IDF_TOOLS_PATH}/frameworks/ - NORMALIZED_VERSION=`echo ${ESP_IDF_VERSION} | sed -e 's!/!-!g'` + NORMALIZED_VERSION=$(echo ${ESP_IDF_VERSION} | sed -e 's!/!-!g') export IDF_PATH="${IDF_TOOLS_PATH}/frameworks/esp-idf-${NORMALIZED_VERSION}" git clone --branch ${ESP_IDF_VERSION} --depth 1 --shallow-submodules \ --recursive https://github.com/espressif/esp-idf.git \ @@ -374,7 +374,7 @@ function install_extra_crates() { EXTRA_CRATES="${EXTRA_CRATES/espflash/}" fi - if [[ "${EXTRA_CRATES}" =~ "ldproxy" ]] && [ -n "${LDPROXY_URL}" ] && [ -n "${LDPROXY_BIN}" ]; then + if [[ "${EXTRA_CRATES}" =~ "ldproxy" ]] && [ -n "${LDPROXY_URL}" ] && [ -n "${LDPROXY_BIN}" ]; then install_crate_from_zip "${LDPROXY_URL}" "${LDPROXY_BIN}" EXTRA_CRATES="${EXTRA_CRATES/ldproxy/}" fi @@ -402,7 +402,7 @@ function install_extra_crates() { EXTRA_CRATES="${EXTRA_CRATES/wokwi-server/}" fi - if ! [[ -z "${EXTRA_CRATES// }" ]];then + if ! [[ -z "${EXTRA_CRATES// /}" ]]; then cargo install $EXTRA_CRATES fi } @@ -442,14 +442,14 @@ if [[ "${BUILD_TARGET}" =~ esp32c3 ]]; then fi # Check minimal rustc version -RUSTC_MINOR_VERSION=`rustc --version | sed -e 's/^rustc 1\.\([^.]*\).*/\1/'` +RUSTC_MINOR_VERSION=$(rustc --version | sed -e 's/^rustc 1\.\([^.]*\).*/\1/') if [ "${RUSTC_MINOR_VERSION}" -lt "${RUSTC_MINIMAL_MINOR_VERSION}" ]; then echo "rustc version is too low, requires 1.${RUSTC_MINIMAL_MINOR_VERSION}" echo "calling rustup" install_rustup fi -ARCH=`rustup show | grep "Default host" | sed -e 's/.* //'` +ARCH=$(rustup show | grep "Default host" | sed -e 's/.* //') # Possible values of ARCH #ARCH="aarch64-apple-darwin" #ARCH="aarch64-unknown-linux-gnu" @@ -471,7 +471,7 @@ WOKWI_SERVER_BIN="" WEB_FLASH_URL="" WEB_FLASH_BIN="" if [[ "${EXTRA_CRATES}" =~ "cargo-generate" ]]; then - GENERATE_VERSION=`git ls-remote --refs --sort="version:refname" --tags "https://github.com/cargo-generate/cargo-generate" | cut -d/ -f3-|tail -n1` + GENERATE_VERSION=$(git ls-remote --refs --sort="version:refname" --tags "https://github.com/cargo-generate/cargo-generate" | cut -d/ -f3- | tail -n1) fi # Configuration overrides for specific architectures @@ -548,7 +548,7 @@ 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_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}" @@ -561,7 +561,7 @@ IDF_TOOL_XTENSA_ELF_CLANG="${IDF_TOOLS_PATH}/tools/xtensa-esp32-elf-clang/${LLVM RUST_DIST_URL="https://github.com/esp-rs/rust-build/releases/download/v${TOOLCHAIN_VERSION}/${RUST_DIST}.tar.xz" -if [ "${INSTALLATION_MODE}" == "uninstall" ] || [ "${INSTALLATION_MODE}" == "reinstall" ] ; then +if [ "${INSTALLATION_MODE}" == "uninstall" ] || [ "${INSTALLATION_MODE}" == "reinstall" ]; then echo "Removing:" echo " - ${TOOLCHAIN_DESTINATION_DIR}" @@ -597,9 +597,9 @@ if [ "${CLEAR_DOWNLOAD_CACHE}" == "YES" ]; then fi PROFILE_NAME="your default shell" -if grep -q "zsh" <<< "$SHELL"; then +if grep -q "zsh" <<<"$SHELL"; then PROFILE_NAME=~/.zshrc -elif grep -q "bash" <<< "$SHELL"; then +elif grep -q "bash" <<<"$SHELL"; then PROFILE_NAME=~/.bashrc fi echo "Add following command to $PROFILE_NAME" diff --git a/test-rust-toolchain.sh b/test-rust-toolchain.sh index 49fa7fae..113f01f2 100755 --- a/test-rust-toolchain.sh +++ b/test-rust-toolchain.sh @@ -5,11 +5,11 @@ set -e # Default values TOOLCHAIN_VERSION="1.62.0.0" if [ -z "${RUSTUP_HOME}" ]; then - RUSTUP_HOME="${HOME}/.rustup" + RUSTUP_HOME="${HOME}/.rustup" fi TOOLCHAIN_PREFIX="esp" BUILD_TARGET="xtensa-esp32-espidf" # all, xtensa-esp32-espidf, xtensa-esp32s2-espidf, riscv32imc-esp-espidf -INSTALLATION_MODE="reinstall" # install, reinstall, uninstall, skip +INSTALLATION_MODE="reinstall" # install, reinstall, uninstall, skip LLVM_VERSION="esp-14.0.0-20220415" TEST_MODE="compile" # compile, flash, monitor TEST_PORT="/dev/ttyUSB0" @@ -27,79 +27,79 @@ while [[ $# -gt 0 ]]; do key="$1" case $key in - -c|--extra-crates) - EXTRA_CRATES="$2" - shift # past argument - shift # past value - ;; - -d|--test-port) - TEST_PORT="$2" - shift # past argument - shift # past value - ;; - -f|--features) - FEATURES="$2" - shift # past argument - shift # past value - ;; - -e|--esp-idf) - export ESP_IDF_VERSION="$2" - shift # past argument - shift # past value - ;; - -n|--toolchain-prefix) - TOOLCHAIN_PREFIX="$2" - shift # past argument - shift # past value - ;; - -b|--target) - BUILD_TARGET="$2" - shift # past argument - shift # past value - ;; - -i|--installation-mode) - INSTALLATION_MODE="$2" - shift # past argument - shift # past value - ;; - -l|--llvm-version) - LLVM_VERSION="$2" - shift # past argument - shift # past value - ;; - -m|--test-mode) - TEST_MODE="$2" - shift # past argument - shift # past value - ;; - -p|--project) - PROJECT="$2" - shift # past argument - shift # past value - ;; - -t|--toolchain-version) - TOOLCHAIN_VERSION="$2" - shift # past argument - shift # past value - ;; - -g|--project-repo) - PROJECT_REPO="$2" - shift # past argument - shift # past value - ;; - -u|--project-user) - PROJECT_USER="$2" - shift # past argument - shift # past value - ;; - -x|--clear-cache) - CLEAR_CACHE="YES" - shift - ;; - *) # unknown option - POSITIONAL+=("$1") # save it in an array for later - shift # past argument - ;; + -c | --extra-crates) + EXTRA_CRATES="$2" + shift # past argument + shift # past value + ;; + -d | --test-port) + TEST_PORT="$2" + shift # past argument + shift # past value + ;; + -f | --features) + FEATURES="$2" + shift # past argument + shift # past value + ;; + -e | --esp-idf) + export ESP_IDF_VERSION="$2" + shift # past argument + shift # past value + ;; + -n | --toolchain-prefix) + TOOLCHAIN_PREFIX="$2" + shift # past argument + shift # past value + ;; + -b | --target) + BUILD_TARGET="$2" + shift # past argument + shift # past value + ;; + -i | --installation-mode) + INSTALLATION_MODE="$2" + shift # past argument + shift # past value + ;; + -l | --llvm-version) + LLVM_VERSION="$2" + shift # past argument + shift # past value + ;; + -m | --test-mode) + TEST_MODE="$2" + shift # past argument + shift # past value + ;; + -p | --project) + PROJECT="$2" + shift # past argument + shift # past value + ;; + -t | --toolchain-version) + TOOLCHAIN_VERSION="$2" + shift # past argument + shift # past value + ;; + -g | --project-repo) + PROJECT_REPO="$2" + shift # past argument + shift # past value + ;; + -u | --project-user) + PROJECT_USER="$2" + shift # past argument + shift # past value + ;; + -x | --clear-cache) + CLEAR_CACHE="YES" + shift + ;; + *) # unknown option + POSITIONAL+=("$1") # save it in an array for later + shift # past argument + ;; esac done @@ -123,21 +123,21 @@ TOOLCHAIN_NAME="${TOOLCHAIN_PREFIX}-${TOOLCHAIN_VERSION}" EXPORT_FILE="export-rust-${TOOLCHAIN_NAME}.sh" function source_cargo() { - if [ ! -z "${CARGO_HOME}" ]; then - source ${CARGO_HOME}/env - else - source ${HOME}/.cargo/env - fi + if [ ! -z "${CARGO_HOME}" ]; then + source ${CARGO_HOME}/env + else + source ${HOME}/.cargo/env + fi } if [ "${INSTALLATION_MODE}" != "skip" ]; then - ./install-rust-toolchain.sh --installation-mode ${INSTALLATION_MODE} \ - --clear-cache "${CLEAR_CACHE}" \ - --extra-crates "${EXTRA_CRATES}" \ - --export-file "${EXPORT_FILE}" \ - --llvm-version "${LLVM_VERSION}" \ - --toolchain-destination "${RUSTUP_HOME}/toolchains/${TOOLCHAIN_NAME}" \ - --toolchain-version ${TOOLCHAIN_VERSION} + ./install-rust-toolchain.sh --installation-mode ${INSTALLATION_MODE} \ + --clear-cache "${CLEAR_CACHE}" \ + --extra-crates "${EXTRA_CRATES}" \ + --export-file "${EXPORT_FILE}" \ + --llvm-version "${LLVM_VERSION}" \ + --toolchain-destination "${RUSTUP_HOME}/toolchains/${TOOLCHAIN_NAME}" \ + --toolchain-version ${TOOLCHAIN_VERSION} fi source "./${EXPORT_FILE}" @@ -145,11 +145,11 @@ command -v cargo || source_cargo # Prepare project if [ "${CLEAR_CACHE}" == "YES" ]; then - rm -rf "${PROJECT}" + rm -rf "${PROJECT}" fi if [ ! -d "${PROJECT}" ]; then - git clone ${PROJECT_REPO} ${PROJECT} + git clone ${PROJECT_REPO} ${PROJECT} fi cd "${PROJECT}" @@ -159,27 +159,26 @@ cargo clean # Project specific setup case ${PROJECT} in - rust-esp32-std-demo) - if [ -z "${RUST_ESP32_STD_DEMO_WIFI_SSID}" ]; then - export RUST_ESP32_STD_DEMO_WIFI_SSID="rust" - export RUST_ESP32_STD_DEMO_WIFI_PASS="for-esp32" - fi - ;; +rust-esp32-std-demo) + if [ -z "${RUST_ESP32_STD_DEMO_WIFI_SSID}" ]; then + export RUST_ESP32_STD_DEMO_WIFI_SSID="rust" + export RUST_ESP32_STD_DEMO_WIFI_PASS="for-esp32" + fi + ;; esac if [ "${BUILD_TARGET}" == "all" ]; then - for TARGET in xtensa-esp32-espidf xtensa-esp32s2-espidf riscv32imc-esp-espidf; do - echo "Building target: ${TARGET}" - cargo +${TOOLCHAIN_NAME} build --target ${TARGET} --release --features "${FEATURES}" - done + for TARGET in xtensa-esp32-espidf xtensa-esp32s2-espidf riscv32imc-esp-espidf; do + echo "Building target: ${TARGET}" + cargo +${TOOLCHAIN_NAME} build --target ${TARGET} --release --features "${FEATURES}" + done else - echo "cargo +${TOOLCHAIN_NAME} build --target ${BUILD_TARGET}" --features "${FEATURES}" - cargo +${TOOLCHAIN_NAME} build --target "${BUILD_TARGET}" --release --features "${FEATURES}" - ELF_IMAGE="target/${BUILD_TARGET}/release/${RUST_STD_DEMO}" - if [ "${TEST_MODE}" == "flash" ]; then - cargo +${TOOLCHAIN_NAME} espflash --target "${BUILD_TARGET}" --release --features ${FEATURES} "${TEST_PORT}" - elif [ "${TEST_MODE}" == "monitor" ]; then - cargo +${TOOLCHAIN_NAME} espflash --monitor --target "${BUILD_TARGET}" --release --features "${FEATURES}" "${TEST_PORT}" - fi + echo "cargo +${TOOLCHAIN_NAME} build --target ${BUILD_TARGET}" --features "${FEATURES}" + cargo +${TOOLCHAIN_NAME} build --target "${BUILD_TARGET}" --release --features "${FEATURES}" + ELF_IMAGE="target/${BUILD_TARGET}/release/${RUST_STD_DEMO}" + if [ "${TEST_MODE}" == "flash" ]; then + cargo +${TOOLCHAIN_NAME} espflash --target "${BUILD_TARGET}" --release --features ${FEATURES} "${TEST_PORT}" + elif [ "${TEST_MODE}" == "monitor" ]; then + cargo +${TOOLCHAIN_NAME} espflash --monitor --target "${BUILD_TARGET}" --release --features "${FEATURES}" "${TEST_PORT}" + fi fi -