From 3cd8818219eab9bc77274e31ce98c5bb73a032c3 Mon Sep 17 00:00:00 2001 From: Philippe Coval Date: Wed, 22 Mar 2023 17:55:16 +0100 Subject: [PATCH 1/4] GH-14: build: Add helper.mk to setup system It has been tested on debian but might work elsewhere (ie: WSL2 users) Testing on cloud should be enabled in separate commit Bug-SiliconLabs: UIC-3082 Bug-GitHub: https://github.com/rzr/UnifySDK/issues/3 Forwarded: https://github.com/SiliconLabs/UnifySDK/pull/14 Signed-off-by: Philippe Coval --- helper.mk | 212 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100755 helper.mk diff --git a/helper.mk b/helper.mk new file mode 100755 index 0000000000..6487374ba0 --- /dev/null +++ b/helper.mk @@ -0,0 +1,212 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# ex: set tabstop=4 noexpandtab: +# -*- coding: utf-8 -* + +default: help zpc/default + @echo "$@: TODO: Support more than $^ by default" + @date -u + +SELF?=${CURDIR}/helper.mk + +project?=unifysdk + +CMAKE_GENERATOR?=Ninja +export CMAKE_GENERATOR + +build_dir?=build +sudo?=sudo + +debian_codename?=bullseye + +packages?=cmake ninja-build build-essential python3-full ruby clang +packages+=git-lfs unp time file +packages+=nlohmann-json3-dev +# TODO: remove for offline build +packages+=curl wget python3-pip +packages+=time + +RUST_VERSION?=1.65.0 +export PATH := ${HOME}/.cargo/bin:${PATH} + +zpc_exe?=${build_dir}/applications/zpc/zpc +exes+=${zpc_exe} + +zpc_cmake_options?=\ + -DBUILD_AOXPC=OFF \ + -DBUILD_CPCD=OFF \ + -DBUILD_DEV_GUI=OFF \ + -DBUILD_EMD=OFF \ + -DBUILD_EPC=OFF \ + -DBUILD_GMS=OFF \ + -DBUILD_IMAGE_PROVIDER=OFF \ + -DBUILD_NAL=OFF \ + -DBUILD_OTBR=OFF \ + -DBUILD_POSITIONING=OFF \ + -DBUILD_TESTING=ON \ + -DBUILD_UPTI_CAP=OFF \ + -DBUILD_UPTI_WRITER=OFF \ + -DBUILD_UPVL=OFF \ + -DBUILD_ZIGBEED=OFF \ + -DBUILD_ZIGPC=OFF + +help: README.md + @cat $< + @echo "" + @echo "# Available rules at your own risk:" + @grep -o '^[^ ]*:' ${SELF} | grep -v '\$$' | grep -v '^#' | grep -v '^\.' + @echo "" + @echo "# Environment:" + @echo "# PATH=${PATH}" + @echo "" + +setup/debian: ${CURDIR}/docker/target_dependencies.apt + cat /etc/debian_version + -${sudo} apt update + ${sudo} apt install -y $(shell cat $<) + ${sudo} apt install -y ${packages} + @echo "$@: TODO: Support debian stable rustc=1.63 https://tracker.debian.org/pkg/rustc" + +setup/rust: + @echo "$@: TODO: Support https://tracker.debian.org/pkg/rustup" + curl https://sh.rustup.rs -sSf | bash -s -- -y --default-toolchain ${RUST_VERSION} + cat $${HOME}/.cargo/env + @echo '$@: info: You might like to add ". $${HOME}/.cargo/env" to "$${HOME}/.bashrc"' + -which rustc + rustc --version + cargo --version + @echo "$@: TODO: Support stable version from https://releases.rs/ or older" + +setup/python: + @echo "$@: TODO: https://github.com/wbond/pybars3/issues/82" + pip3 --version || echo "warning: Please install pip" + pip3 install pybars3 + +cmake_url?=https://github.com/Kitware/CMake/releases/download/v3.21.6/cmake-3.21.6-Linux-x86_64.sh +cmake_filename?=$(shell basename -- "${cmake_url}") +cmake_sha256?=d460a33c42f248388a8f2249659ad2f5eab6854bebaf4f57c1df49ded404e593 + +setup/cmake: + @echo "$@: TODO: remove for debian-12+" + curl -O -L ${cmake_url} + sha256sum ${cmake_filename} \ + | grep "${cmake_sha256}" + ${SHELL} "${cmake_filename}" \ + --prefix=/usr/local \ + --skip-license + rm -v "${cmake_filename}" + cmake --version + +setup-cmake: setup/cmake + +setup/debian/bullseye: setup/debian setup/rust setup/python setup/cmake + date -u + +setup/debian/bookworm: setup/debian setup/rust setup/python + date -u + +setup: setup/debian/${debian_codename} + date -u + +git: .git/lfs + git lfs version || echo "$@: warning: Please install git-lfs" + git lfs status --porcelain || git lfs install + time git lfs pull + git lfs update || git lfs update --force + git lfs status --porcelain + +configure: ${build_dir}/CMakeCache.txt + file -E $< + +${build_dir}/CMakeCache.txt: CMakeLists.txt ${build_pre_list} + cmake -B ${build_dir} + +build: ${build_dir}/CMakeCache.txt + cmake --build ${ Date: Wed, 22 Mar 2023 17:55:10 +0100 Subject: [PATCH 2/4] GH-14: docker: Build into container using helper.mk To ensure reproductibility on host or cloud Bug-SiliconLabs: UIC-3082 Bug-GitHub: https://github.com/rzr/UnifySDK/issues/3 Forwarded: https://github.com/SiliconLabs/UnifySDK/pull/14 Signed-off-by: Philippe Coval --- Dockerfile | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..00ffad79d2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +FROM debian:bullseye + +ENV DEBIAN_FRONTEND noninteractive +ENV LC_ALL en_US.UTF-8 +ENV LANG ${LC_ALL} + +RUN echo "# log: Configuring locales" \ + && set -x \ + && apt-get update -y \ + && apt-get install -y locales \ + && echo "${LC_ALL} UTF-8" | tee /etc/locale.gen \ + && locale-gen ${LC_ALL} \ + && dpkg-reconfigure locales \ + && TZ=Etc/UTC apt-get -y install tzdata \ + && date -u + +ENV project unifysdk +ENV workdir /usr/local/opt/${project} +ADD . ${workdir} + +WORKDIR ${workdir} + +RUN echo "# log: Setup system" \ + && set -x \ + && apt-get install -y make sudo \ + && ./helper.mk help setup \ + && date -u + +RUN echo "# log: Build" \ + && set -x \ + && ./helper.mk \ + && date -u + +ENTRYPOINT [ "/usr/local/opt/unifysdk/helper.mk" ] +CMD [ "help" ] From 8700948288830a530046edc87cc43a134639c0e8 Mon Sep 17 00:00:00 2001 From: Philippe Coval Date: Mon, 30 Oct 2023 13:31:18 +0100 Subject: [PATCH 3/4] GH-14: Add github action support Note this is currently active in forked repos Bug-SiliconLabs: UIC-3082 Bug-GitHub: https://github.com/rzr/UnifySDK/issues/3 Forwarded: https://github.com/SiliconLabs/UnifySDK/pull/14 Signed-off-by: Philippe Coval --- .github/workflows/build.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000..7ceb54045b --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,17 @@ +name: Docker Image CI + +on: + push: + branches: [ '*' ] + pull_request: + branches: [ '*' ] + +jobs: + build: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4.1.1 + with: + fetch-depth: 0 + - name: Build Docker image from sources + run: docker build . From d0a7883ebc4f774ae2cdb85a21e23f40712f61e8 Mon Sep 17 00:00:00 2001 From: Philippe Coval Date: Thu, 23 Nov 2023 17:45:36 +0100 Subject: [PATCH 4/4] GH-14: build: Support debian bookworm (stable) Signed-off-by: Philippe Coval --- Dockerfile | 2 +- helper.mk | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 00ffad79d2..8e6339c2f8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:bullseye +FROM debian:bookworm ENV DEBIAN_FRONTEND noninteractive ENV LC_ALL en_US.UTF-8 diff --git a/helper.mk b/helper.mk index 6487374ba0..7abab88281 100755 --- a/helper.mk +++ b/helper.mk @@ -10,14 +10,13 @@ default: help zpc/default SELF?=${CURDIR}/helper.mk project?=unifysdk - CMAKE_GENERATOR?=Ninja export CMAKE_GENERATOR build_dir?=build sudo?=sudo -debian_codename?=bullseye +debian_codename?=bookworm packages?=cmake ninja-build build-essential python3-full ruby clang packages+=git-lfs unp time file @@ -80,7 +79,8 @@ setup/rust: setup/python: @echo "$@: TODO: https://github.com/wbond/pybars3/issues/82" pip3 --version || echo "warning: Please install pip" - pip3 install pybars3 + pip3 install pybars3 \ + || pip3 install --break-system-packages pybars3 cmake_url?=https://github.com/Kitware/CMake/releases/download/v3.21.6/cmake-3.21.6-Linux-x86_64.sh cmake_filename?=$(shell basename -- "${cmake_url}")