From fd3f8035c94b31dbdbcce97864b1362ad254e4d1 Mon Sep 17 00:00:00 2001 From: Mehrdad Hessar Date: Tue, 24 Jan 2023 15:29:42 -0800 Subject: [PATCH] [docker][microTVM]Fix Zephyr 0.15.2 SDK installation and separate Zephyr python environment (#13829) This PR fixes the SDK installation and separates SDK installation from ZephyrProject installation. Also it separates the Zephyr python environment to 3.8 which is the required version and it is different than tvm virtual env. --- docker/Dockerfile.ci_cortexm | 7 +++-- docker/Dockerfile.ci_riscv | 8 ++++-- docker/install/ubuntu_install_zephyr.sh | 30 +++++++++++++++------ docker/install/ubuntu_install_zephyr_sdk.sh | 13 ++++++--- 4 files changed, 42 insertions(+), 16 deletions(-) diff --git a/docker/Dockerfile.ci_cortexm b/docker/Dockerfile.ci_cortexm index 50062d9dea35..a6ea27cf4181 100644 --- a/docker/Dockerfile.ci_cortexm +++ b/docker/Dockerfile.ci_cortexm @@ -76,12 +76,15 @@ COPY install/ubuntu_install_sccache.sh /install/ubuntu_install_sccache.sh RUN bash /install/ubuntu_install_sccache.sh ENV PATH /opt/sccache:$PATH -# Zephyr SDK deps +# Zephyr Project COPY install/ubuntu_install_zephyr.sh /install/ubuntu_install_zephyr.sh COPY install/ubuntu_init_zephyr_project.sh /install/ubuntu_init_zephyr_project.sh -COPY install/ubuntu_install_zephyr_sdk.sh /install/ubuntu_install_zephyr_sdk.sh RUN bash /install/ubuntu_install_zephyr.sh ENV ZEPHYR_BASE=/opt/zephyrproject/zephyr + +#Zephyr SDK +COPY install/ubuntu_install_zephyr_sdk.sh /install/ubuntu_install_zephyr_sdk.sh +RUN bash /install/ubuntu_install_zephyr_sdk.sh /opt/zephyr-sdk ENV PATH /opt/zephyr-sdk/sysroots/x86_64-pokysdk-linux/usr/bin:$PATH # NRF diff --git a/docker/Dockerfile.ci_riscv b/docker/Dockerfile.ci_riscv index a640e996c7be..c115df423fc3 100644 --- a/docker/Dockerfile.ci_riscv +++ b/docker/Dockerfile.ci_riscv @@ -80,13 +80,17 @@ COPY install/ubuntu_install_sccache.sh /install/ubuntu_install_sccache.sh RUN bash /install/ubuntu_install_sccache.sh ENV PATH /opt/sccache:$PATH -# Zephyr SDK deps +# Zephyr Project COPY install/ubuntu_install_zephyr.sh /install/ubuntu_install_zephyr.sh COPY install/ubuntu_init_zephyr_project.sh /install/ubuntu_init_zephyr_project.sh -COPY install/ubuntu_install_zephyr_sdk.sh /install/ubuntu_install_zephyr_sdk.sh RUN bash /install/ubuntu_install_zephyr.sh ENV ZEPHYR_BASE=/opt/zephyrproject/zephyr +#Zephyr SDK +COPY install/ubuntu_install_zephyr_sdk.sh /install/ubuntu_install_zephyr_sdk.sh +RUN bash /install/ubuntu_install_zephyr_sdk.sh /opt/zephyr-sdk +ENV PATH /opt/zephyr-sdk/sysroots/x86_64-pokysdk-linux/usr/bin:$PATH + # Download RISC-V gcc toolchain (linux) COPY install/ubuntu_download_xuantie_gcc_linux.sh /install/ubuntu_download_xuantie_gcc_linux.sh RUN bash /install/ubuntu_download_xuantie_gcc_linux.sh /opt/riscv/riscv64-unknown-linux-gnu diff --git a/docker/install/ubuntu_install_zephyr.sh b/docker/install/ubuntu_install_zephyr.sh index 6eaa5e5aa16c..8c36171f8d5a 100755 --- a/docker/install/ubuntu_install_zephyr.sh +++ b/docker/install/ubuntu_install_zephyr.sh @@ -38,7 +38,27 @@ sudo apt-get update sudo apt-install-and-clear -y cmake -pip3 install west +# Find release version +apt-get update +apt-install-and-clear -y \ + lsb-core + +release=$(lsb_release -sc) +if [ "${release}" == "bionic" ]; then + python_cmd="python3" +elif [ "${release}" == "focal" ]; then + python_cmd="python3.8" +else + echo "Don't know which version of python to use for Zephyr." + exit 2 +fi + +# Current Zephyr version is compatible with python3.8. +# We use a different python env for Zephyr to test the +# real world scenario where TVM and Zephyr could be in different +# python environments. +# TODO: use virtual env for Zephyr. +$python_cmd -m pip install west # Init ZephyrProject ZEPHYR_PROJECT_PATH=/opt/zephyrproject @@ -58,10 +78,4 @@ chmod -R o+w ${ZEPHYR_PROJECT_PATH} mkdir zephyr/.cache chmod o+rwx zephyr/.cache -pip3 install -r /opt/zephyrproject/zephyr/scripts/requirements.txt - -# the requirements above overwrite junintparser with an older version, but it is not -# used so overwrite it again with the correct version -pip3 install junitparser==2.4.2 - -bash /install/ubuntu_install_zephyr_sdk.sh /opt/zephyr-sdk +$python_cmd -m pip install -r /opt/zephyrproject/zephyr/scripts/requirements.txt diff --git a/docker/install/ubuntu_install_zephyr_sdk.sh b/docker/install/ubuntu_install_zephyr_sdk.sh index 228baf732120..2c1e926e68da 100755 --- a/docker/install/ubuntu_install_zephyr_sdk.sh +++ b/docker/install/ubuntu_install_zephyr_sdk.sh @@ -43,9 +43,14 @@ INSTALLATION_PATH=$1 shift ZEPHYR_SDK_FILE_SHA=8e3572fbca9f9ba18a4436c00d680af34a85e239f7fe66c7988da85571a0d23d +ZEPHYR_SDK_FILE_NAME=zephyr-sdk-0.15.2_linux-x86_64.tar.gz wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.15.2/zephyr-sdk-0.15.2_linux-x86_64.tar.gz -echo "$ZEPHYR_SDK_FILE_SHA zephyr-sdk-0.15.2_linux-x86_64.tar.gz" | sha256sum --check +echo "$ZEPHYR_SDK_FILE_SHA ${ZEPHYR_SDK_FILE_NAME}" | sha256sum --check -tar xvf zephyr-sdk-0.15.2_linux-x86_64.tar.gz -mv zephyr-sdk-0.15.2 zephyr-sdk -rm zephyr-sdk-0.15.2_linux-x86_64.tar.gz +mkdir ${INSTALLATION_PATH} +tar -xvf ${ZEPHYR_SDK_FILE_NAME} -C "${INSTALLATION_PATH}" --strip-components=1 +rm ${ZEPHYR_SDK_FILE_NAME} + +# Setup SDK +cd ${INSTALLATION_PATH} +./setup.sh -h