From 18d0c915172cdad0f2b2d3845a05be0d8f1b3a60 Mon Sep 17 00:00:00 2001 From: Arnaud Pouliquen Date: Fri, 3 May 2024 16:38:48 +0200 Subject: [PATCH] CI: Update for Ubuntu 24.04 Update CI to work with 24.04. * Lock to 24.04 so we control when to change * Update locale and timezone to work for 24.04 or 22.04 * 24.04 creates these files if not already there but 22.04 does not * Keep existing work around for 22.04 but make it work if already there * use venv * Breate a virtual environment isolated from the packages in the base environment * Inspired from zephyr build environment * Use pip3 everywhere removing global and --user installation * Add section to README about desktop testing * Also fix usage formatting in README Co-developed-by: Bill Mills Signed-off-by: Bill Mills Co-developed-by: Arnaud Pouliquen Signed-off-by: Arnaud Pouliquen --- .github/actions/build_ci/Dockerfile | 4 ++-- .github/actions/build_ci/README.md | 23 ++++++++++++++++++++++- .github/actions/build_ci/entrypoint.sh | 22 +++++++++++++--------- 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/.github/actions/build_ci/Dockerfile b/.github/actions/build_ci/Dockerfile index 42cf0807c..fd35c78ed 100644 --- a/.github/actions/build_ci/Dockerfile +++ b/.github/actions/build_ci/Dockerfile @@ -1,10 +1,10 @@ -FROM ubuntu:latest +FROM ubuntu:24.04 ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8 # Install prerequisites -RUN apt-get --quiet=2 update && apt-get install --quiet=2 --assume-yes sudo git python3 python3-pip wget +RUN apt-get --quiet=2 update && apt-get install --quiet=2 --assume-yes sudo git python3 python3-pip python3-venv wget # Copies your code file from your action repository to the filesystem path `/` of the container COPY entrypoint.sh /entrypoint.sh diff --git a/.github/actions/build_ci/README.md b/.github/actions/build_ci/README.md index d1cab214a..9cd53aabc 100644 --- a/.github/actions/build_ci/README.md +++ b/.github/actions/build_ci/README.md @@ -15,6 +15,27 @@ The supported targets are: ## Example usage +Inside a github action use: +``` uses: ./.github/actions/build_ci with: - target: linux \ No newline at end of file + target: linux +``` + +## Desktop testing + +Right now the directory expectations of the CI script are very messy. +This should be cleaned up in a future PR. + +Desktop testing is possible but is likewise messy right now. + +One time setup, starting in open-amp directory: +``` +$ git clone https://github.com/OpenAMP/libmetal.git +``` + +A sequence like below will work, change the "zephyr" at the end of the docker command line to "linux" or "generic" for the other working tests +``` +$ docker build -t openamp-ci .github/actions/build_ci/ && docker run -it --rm -v$PWD:/prj -w /prj openamp-ci zephyr +$ sudo rm -rf build* zephyr* +``` diff --git a/.github/actions/build_ci/entrypoint.sh b/.github/actions/build_ci/entrypoint.sh index fa3307aa9..1e81bb478 100755 --- a/.github/actions/build_ci/entrypoint.sh +++ b/.github/actions/build_ci/entrypoint.sh @@ -13,12 +13,19 @@ ZEPHYR_SDK_DOWNLOAD_URL=$ZEPHYR_SDK_DOWNLOAD_FOLDER/$ZEPHYR_SDK_SETUP_TAR FREERTOS_ZIP_URL=https://cfhcable.dl.sourceforge.net/project/freertos/FreeRTOS/V10.0.1/FreeRTOSv10.0.1.zip pre_build(){ - # fix issue related to tzdata install + # fix issue related to tzdata install, not needed for 24.04 but kept for 22.04 and earlier echo 'Etc/UTC' > /etc/timezone || exit 1 - ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime || exit 1 + ln -fs /usr/share/zoneinfo/Etc/UTC /etc/localtime || exit 1 + + #Create a new virtual environment + python3 -m venv ./.venv + source ./.venv/bin/activate + + # add make and cmake + # cmake from packages will work for 22.04 and later but use pip3 to get the latest on any distro apt update || exit 1 apt-get install -y make || exit 1 - sudo pip3 install cmake || exit 1 + pip3 install cmake || exit 1 } build_linux(){ @@ -77,13 +84,10 @@ build_zephyr(){ echo " Build for Zephyr OS " sudo apt-get install -y git cmake ninja-build gperf || exit 1 sudo apt-get install -y ccache dfu-util device-tree-compiler wget || exit 1 - sudo apt-get install -y python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file || exit 1 + sudo apt-get install -y python3-dev python3-setuptools python3-tk python3-wheel xz-utils file || exit 1 sudo apt-get install -y make gcc gcc-multilib g++-multilib libsdl2-dev || exit 1 sudo apt-get install -y libc6-dev-i386 gperf g++ python3-ply python3-yaml device-tree-compiler ncurses-dev uglifyjs -qq || exit 1 - sudo pip3 install pyelftools || exit 1 - pip3 install --user -U west - echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc - source ~/.bashrc + pip3 install west || exit 1 wget $ZEPHYR_SDK_DOWNLOAD_URL || exit 1 tar xvf $ZEPHYR_SDK_SETUP_TAR || exit 1 @@ -93,7 +97,7 @@ build_zephyr(){ cd ./zephyrproject || exit 1 west update || exit 1 west zephyr-export || exit 1 - pip3 install --user -r ./zephyr/scripts/requirements.txt || exit 1 + pip3 install -r ./zephyr/scripts/requirements.txt || exit 1 echo "Update zephyr OpenAMP repos" #Update zephyr OpenAMP repos cp -r ../lib modules/lib/open-amp/open-amp/ || exit 1