summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBiswapriyo Nath <nathbappai@gmail.com>2023-05-15 00:42:45 +0530
committerDavid Gibson <david@gibson.dropbear.id.au>2023-05-16 19:30:09 +1000
commite8364666d5acc985c434fb574e92c5206d9a8d6b (patch)
tree749e7923420e08b2745744c34df83b017041b0b6
parent3b02a94b486f998aa22d898b427820a805d0904f (diff)
downloaddevice-tree-compiler-master.tar.gz
CI: Add build matrix with multiple Linux distributionsHEADmastermain
set SETUPTOOLS_SCM_PRETEND_VERSION="0" variable because GitHub Actions does not copy the .git directory into the container. Without that, the build fails with the following error LookupError: setuptools-scm was unable to detect version for /__w/dtc/dtc. Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r--.github/workflows/build.yml28
-rwxr-xr-xscripts/install-deps.sh32
2 files changed, 48 insertions, 12 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6daaa8d..442d98b 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -12,22 +12,26 @@ jobs:
build:
runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ "alpine", "archlinux", "fedora", "ubuntu" ]
+
+ container:
+ image: ${{ matrix.os }}
+
steps:
- - uses: actions/checkout@v3
+ - name: Checkout
+ uses: actions/checkout@v3
- name: Install Dependencies
- run:
- sudo apt install
- flex
- libyaml-dev
- pkg-config
- python3-dev
- swig
- valgrind
- bison
+ run: |
+ ./scripts/install-deps.sh
- name: Build
- run: make
+ run: |
+ SETUPTOOLS_SCM_PRETEND_VERSION="0" make
- name: Run check
- run: make check
+ run: |
+ SETUPTOOLS_SCM_PRETEND_VERSION="0" make check
diff --git a/scripts/install-deps.sh b/scripts/install-deps.sh
new file mode 100755
index 0000000..4076310
--- /dev/null
+++ b/scripts/install-deps.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+if [ -f /etc/os-release ]
+then
+ . /etc/os-release
+else
+ echo "ERROR: OS name is not provided."
+ exit 1
+fi
+
+if [ "$NAME" = "Arch Linux" ]
+then
+ pacman -Syu --needed --noconfirm bison diffutils flex gcc git libyaml \
+ make pkgconf python python-setuptools-scm swig valgrind which
+elif [ "$NAME" = "Alpine Linux" ]
+then
+ apk add build-base bison coreutils flex git yaml yaml-dev python3-dev \
+ py3-setuptools_scm swig valgrind
+elif [ "$NAME" = "Fedora Linux" ]
+then
+ dnf install -y bison diffutils flex gcc git libyaml libyaml-devel \
+ make python3-devel python3-setuptools swig valgrind which
+elif [ "$NAME" = "Ubuntu" ]
+then
+ apt update
+ apt install -yq build-essential bison flex git libyaml-dev pkg-config \
+ python3-dev python3-setuptools python3-setuptools-scm swig valgrind
+else
+ echo "ERROR: OS name is not provided."
+ exit 1
+fi