diff --git a/020_conda.sh b/020_conda.sh index 91b93c4..6a2f0aa 100644 --- a/020_conda.sh +++ b/020_conda.sh @@ -1,28 +1,31 @@ DEST=${1:-/etc/skel} # Install our public GPG key to trusted store -curl https://repo.anaconda.com/pkgs/misc/gpgkeys/anaconda.asc | gpg --dearmor > conda.gpg -install -o root -g root -m 644 conda.gpg /usr/share/keyrings/conda-archive-keyring.gpg +# KEY_DIR=/usr/share/keyrings +KEY_DIR=/etc/apt/trusted.gpg.d + +sudo curl https://repo.anaconda.com/pkgs/misc/gpgkeys/anaconda.asc | gpg --dearmor >conda.gpg +sudo install -o root -g root -m 644 conda.gpg ${KEY_DIR}/conda-archive-keyring.gpg # Check whether fingerprint is correct (will output an error message otherwise) -gpg --keyring /usr/share/keyrings/conda-archive-keyring.gpg --no-default-keyring --fingerprint 34161F5BF5EB1D4BFBBB8F0A8AEB4F8B29D82806 +sudo gpg --keyring ${KEY_DIR}/conda-archive-keyring.gpg --no-default-keyring --fingerprint 34161F5BF5EB1D4BFBBB8F0A8AEB4F8B29D82806 # Add our Debian repo +sudo echo "deb [arch=amd64 signed-by=${KEY_DIR}/conda-archive-keyring.gpg] https://repo.anaconda.com/pkgs/misc/debrepo/conda stable main" | sudo tee /etc/apt/sources.list-available/conda.list -echo "deb [arch=amd64 signed-by=/usr/share/keyrings/conda-archive-keyring.gpg] https://repo.anaconda.com/pkgs/misc/debrepo/conda stable main" | sudo tee /etc/apt/sources.list-available/conda.list - -ln -s /etc/apt/sources.list-available/conda.list /etc/apt/sources.list.d/conda.list - +sudo ln -sf /etc/apt/sources.list-available/conda.list /etc/apt/sources.list.d/conda.list # Install it! -apt update -apt install -y conda +sudo apt update +sudo apt install -y conda + +mkdir -p "${DEST}"/.zshrc.pre-plugins.d/ cat <<-EOF | sudo tee "${DEST}"/.zshrc.pre-plugins.d/008_conda.zsh >/dev/null # when using conda from the vim plugin it expects to be called from base conda environment. ## >>> conda initialize >>> ## !! Contents within this block are managed by 'conda init' !! - __conda_setup="$('/opt/conda/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" + __conda_setup="$('/opt/conda/bin/conda' 'shell.zsh' 'hook' 2>/dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else @@ -46,7 +49,6 @@ EOF # see: https://github.com/ubaldot/vim-conda-activate for vim support - # Check to see if the installation is successful: . /opt/conda/etc/profile.d/conda.sh conda -V diff --git a/020_zephyr.sh b/020_zephyr.sh index 1843db0..f86226e 100644 --- a/020_zephyr.sh +++ b/020_zephyr.sh @@ -3,12 +3,16 @@ # https://www.zephyrproject.org/zephyr-rtos-on-esp32/ # https://zmk.dev/docs/development/setup/ +## build basic blinky +# BOARD_NAME=esp32s3_devkitm +# cd ~/zephyrproject/zephyr +# west build -p always -b ${BOARD_NAME} samples/basic/blinky # Manual flash instructions https://github.com/seemoo-lab/openhaystack/wiki/Flashing-nRF-with-OpenOCD---ST-Link # $ openocd \ # -f ${ZEPHYR_SDK_INSTALL_DIR}/sysroots/${MACHINE}-pokysdk-linux/usr/share/openocd/scripts/interface/stlink.cfg \ # -f ${ZEPHYR_SDK_INSTALL_DIR}/sysroots/${MACHINE}-pokysdk-linux/usr/share/openocd/scripts/target/nrf51.cfg -# +# # $ telnet localhost 4444 # $ help # @@ -42,23 +46,33 @@ DEST=${1:-${HOME}} ARCH=$(dpkg --print-architecture) MACHINE=$(uname -m) +PYTHON_VERSION='3.12.4' +# zephyr version +# ZEPHYR_VERSION=$(lastversion --format tag zephyr) # 3.7.0 +ZEPHYR_VERSION='v3.5.0' # zmk lags https://zmk.dev/blog + +# sdk version USER=zephyrproject-rtos PROJECT=sdk-ng API_URL=https://api.github.com/repos/${USER}/${PROJECT}/releases/latest RELEASE=$(curl -s ${API_URL} | grep tarball_url | cut -d '"' -f 4 | awk -F "/" {'print $8'}) -SDK_FILENAME=zephyr-sdk-${RELEASE#v}_linux-${MACHINE}_minimal.tar.xz # 41.8 MB +SDK_FILENAME=zephyr-sdk-${RELEASE#v}_linux-${MACHINE}_minimal.tar.xz # 41.8 MB # SDK_FILENAME=zephyr-sdk-${RELEASE#v}_linux-${MACHINE}.tar.xz # 1.35 GB -SDK_URL=https://github.com/${USER}/${PROJECT}/releases/download/${RELEASE}/ +SDK_URL=https://github.com/${USER}/${PROJECT}/releases/download/${RELEASE} # fetch the sdk -# wget ${SDK_URL}/${SDK_FILENAME} -# wget -O - ${SDK_URL}/sha256.sum | shasum --check --ignore-missing - +wget -c ${SDK_URL}/${SDK_FILENAME} +wget -c -O - ${SDK_URL}/sha256.sum | shasum --check --ignore-missing SDK_DEST=${DEST}/zephyr-sdk-${RELEASE#v} PROJECT_DEST=${DEST}/zephyrproject +mkdir -p ${SDK_DEST} +mkdir -p ${PROJECT_DEST} + +# unpack the sdk +tar xvf ${SDK_FILENAME} # https://docs.zephyrproject.org/latest/develop/env_vars.html#env-vars-important ZEPHYR_ENV_FILE="${HOME}/.zshrc.d/001_zephyr.zsh" @@ -69,38 +83,23 @@ export ZEPHYR_SDK_INSTALL_DIR="${SDK_DEST}" EOF - -# use the sdk setup script to add the target toolchains and the host tools. -pushd ${ZEPHYR_SDK_INSTALL_DIR} - west update - # bash ./setup.sh -t x86_64-zephyr-elf - bash ./setup.sh -t arm-zephyr-eabi - bash ./setup.sh -t xtensa-espressif_esp32_zephyr-elf - bash ./setup.sh -t xtensa-espressif_esp32s3_zephyr-elf - bash ./setup.sh -h -popd - -# install udev rules -sudo cp ~/zephyr-sdk-${RELEASE#v}/sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d -sudo udevadm control --reload - RSS_FEED="https://github.com/${USER}/${PROJECT}/releases.atom" # xdg-open ${RSS_FEED} -cat ${RSS_FEED} +echo ${RSS_FEED} echo "*** Installing dependencies. ***" sudo apt-get update sudo apt install --no-install-recommends -y autoconf automake \ - build-essential bzip2 ccache coccinelle cmake device-tree-compiler dfu-util \ - git gperf gcc g++ gcc-multilib g++-multilib libsdl2-dev libtool python3-dev \ - python3-pip python3-setuptools python3-tk python3-wheel ninja-build file make \ - wget xz-utils + build-essential bzip2 ccache coccinelle cmake device-tree-compiler dfu-util \ + git gperf gcc g++ gcc-multilib g++-multilib libsdl2-dev libtool python3-dev \ + python3-pip python3-setuptools python3-tk python3-wheel ninja-build file make \ + wget xz-utils echo "*** Getting Zephyr and installing Python dependencies. ***" # Install west and ensure that ${HOME}/.local/bin is part of your PATH environment variable: -echo "*** Installing west with pip3 ***" +# echo "*** Installing west with pip3 ***" # pip3 install -U --user west # echo 'export PATH=${HOME}/.local/bin:”$PATH”' >>${HOME}/.bashrc @@ -109,20 +108,29 @@ echo "*** Installing west with pip3 ***" # fi # ensure a conda env exists for zephyr python requirements +if which conda >/dev/null 2>&1; then + echo "Conda is already installed." +else + echo "Conda is not installed. Installing..." + bash /var/tmp/automate/020_conda.sh ${HOME} +fi + +. /opt/conda/etc/profile.d/conda.sh + # https://www.nordicsemi.com/Products/Development-tools/nRF-Command-Line-Tools/Download?lang=en#infotabs # https://nsscprodmedia.blob.core.windows.net/prod/software-and-other-downloads/desktop-software/nrf-command-line-tools/sw/versions-10-x-x/10-24-2/nrf-command-line-tools_10.24.2_amd64.deb # py -3 -m pip install --pre -U git+https://github.com/makerdiary/uf2utils.git@main -if [[ ! -d ${HOME}/.conda/envs/zephyr ]]; - conda init -n zephyr python west pynrfjprog dtsh # pyocd pylink + +if [[ ! -d "${HOME}/.conda/envs/zephyr" ]]; then + echo "Creating the zephyr environment with conda." + conda create -n zephyr python=${PYTHON_VERSION} + conda activate zephyr + pip install --no-input west pynrfjprog dtsh + echo "Zephyr environment created successfully." +else + echo "Zephyr environment already exists." fi -conda activate zephyr - -# add 'west' completion to zsh - use /usr/share/when packaging for debian -COMPLETION_FILE="/usr/share/zsh/site-functions/_west" -COMPLETION_FILE="${HOME}/.zshrc.d/001_west-completion.zsh" -west completion zsh > ${COMPLETION_FILE} - # Create west configuation file. cat <.cenv +# sed -i '|\.venv|a|\.cenv' .gitignore +sed -i '/\.venv/a\.cenv' .gitignore + west update +conda deactivate +popd + +pushd ${ZEPHYR_SDK_INSTALL_DIR} + +# enable autoswitching with zsh-autoswitch-conda (use echo not mkcenv) +echo zephyr >.cenv +# sed -i '|\.venv|a|\.cenv' .gitignore +sed -i '/\.venv/a\.cenv' .gitignore conda activate zephyr +bash ./setup.sh +# bash ./setup.sh -t x86_64-zephyr-elf +bash ./setup.sh -t arm-zephyr-eabi +bash ./setup.sh -t xtensa-espressif_esp32_zephyr-elf +bash ./setup.sh -t xtensa-espressif_esp32s3_zephyr-elf +bash ./setup.sh -h +popd + +# install udev rules +sudo cp ~/zephyr-sdk-${RELEASE#v}/sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d +sudo udevadm control --reload + +# add 'west' completion to zsh - use /usr/share/when packaging for debian +COMPLETION_FILE="/usr/share/zsh/site-functions/_west" +COMPLETION_FILE="${HOME}/.zshrc.d/001_west-completion.zsh" +west completion zsh >${COMPLETION_FILE} echo "Exporting a Zephyr CMake package." west zephyr-export echo "Installing additional python dependencies via pip3." pip install -r \ - ${HOME}/zephyrproject/zephyr/scripts/requirements.txt + ${HOME}/zephyrproject/zephyr/scripts/requirements.txt -echo "Installing Zephyr's toolchain." -#Zephyr's SDK adds several additional tools for the host. Download the SDK installer: - -cd ${HOME} -wget -O /var/tmp/${SDK_FILENAME} ${SDK_URL}/{SDK_FILENAME} - -echo "Running the installer, this will install the SDK under the ${DEST}-${RELEASE:1} folder." -chmod +x /var/tmp/${SDK_FILENAME} -/var/tmp/${SDK_FILENAME} -- -d ${DEST}-${RELEASE:1} +conda deactivate