diff options
author | Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> | 2021-07-10 08:31:52 +0200 |
---|---|---|
committer | Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> | 2021-08-02 14:45:57 +0200 |
commit | bb7c1aabd46309b44c30cf076377bcf373de6c8e (patch) | |
tree | 5aad9140590eef3a198678ed9a2e4ab01631a05e | |
parent | 4d22cd77aadb5c812e00e6d847aea541ccb552bb (diff) | |
download | neard-bb7c1aabd46309b44c30cf076377bcf373de6c8e.tar.gz |
ci: add more build configurations (Fedora, Alpine, Debian, cross-compile, i386)
The installation scripts were based on LTP project.
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
-rw-r--r-- | .github/workflows/ci.yml | 160 | ||||
-rwxr-xr-x | ci/alpine.sh | 35 | ||||
-rwxr-xr-x | ci/debian.cross-compile.sh | 41 | ||||
-rwxr-xr-x | ci/debian.i386.sh | 32 | ||||
-rwxr-xr-x | ci/debian.sh | 13 | ||||
-rwxr-xr-x | ci/fedora.sh | 33 | ||||
l--------- | ci/ubuntu.cross-compile.sh | 1 | ||||
l--------- | ci/ubuntu.i386.sh | 1 |
8 files changed, 309 insertions, 7 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 389c47d..c8e3fb8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,9 +20,140 @@ jobs: fail-fast: false matrix: include: - # Ubuntu gcc + # Debian builds + # 32bit build + - container: "debian:stable" + env: + ARCH: i386 + CC: gcc -m32 + CROSS_COMPILE: i686-linux-gnu + VARIANT: i386 + MODE: maintainer + + # Debian cross compilation builds + - container: "debian:stable" + env: + ARCH: armel + CC: arm-linux-gnueabi-gcc + CROSS_COMPILE: arm-linux-gnueabi + VARIANT: cross-compile + MODE: maintainer + + - container: "debian:stable" + env: + ARCH: arm64 + CC: aarch64-linux-gnu-gcc + CROSS_COMPILE: aarch64-linux-gnu + VARIANT: cross-compile + MODE: maintainer + + - container: "debian:stable" + env: + ARCH: ppc64el + CC: powerpc64le-linux-gnu-gcc + CROSS_COMPILE: powerpc64le-linux-gnu + VARIANT: cross-compile + MODE: maintainer + + - container: "debian:stable" + env: + ARCH: s390x + CC: s390x-linux-gnu-gcc + CROSS_COMPILE: s390x-linux-gnu + VARIANT: cross-compile + MODE: maintainer + + # Debian gcc + - container: "debian:stable" + env: + ARCH: x86-64 + CC: gcc + MODE: maintainer + + - container: "debian:stable" + env: + ARCH: x86-64 + CC: gcc + MODE: no-maintainer + + - container: "debian:testing" + env: + ARCH: x86-64 + CC: gcc + MODE: maintainer + + - container: "debian:testing" + env: + ARCH: x86-64 + CC: gcc + MODE: no-maintainer + + # Debian clang + - container: "debian:stable" + env: + ARCH: x86-64 + CC: clang + MODE: maintainer + + - container: "debian:stable" + env: + ARCH: x86-64 + CC: clang + MODE: no-maintainer + + - container: "debian:testing" + env: + ARCH: x86-64 + CC: clang + MODE: maintainer + + # musl (native) + - container: "alpine:latest" + env: + ARCH: x86-64 + CC: gcc + MODE: maintainer + + # Fedora + - container: "fedora:latest" + env: + ARCH: x86-64 + CC: gcc + MODE: maintainer + + - container: "fedora:latest" + env: + ARCH: x86-64 + CC: gcc + MODE: no-maintainer + + - container: "fedora:latest" + env: + ARCH: x86-64 + CC: clang + MODE: maintainer + + # Ubuntu 32bit builds: gcc and clang + - container: "ubuntu:hirsute" + env: + ARCH: i386 + CC: gcc -m32 + CROSS_COMPILE: i686-linux-gnu + VARIANT: i386 + MODE: maintainer + + - container: "ubuntu:focal" + env: + ARCH: i386 + CC: gcc -m32 + CROSS_COMPILE: i686-linux-gnu + VARIANT: i386 + MODE: maintainer + + # Ubuntu x86-64 gcc - container: "ubuntu:hirsute" env: + ARCH: x86-64 CC: gcc MODE: maintainer @@ -34,37 +165,44 @@ jobs: - container: "ubuntu:focal" env: + ARCH: x86-64 CC: gcc MODE: maintainer - container: "ubuntu:focal" env: + ARCH: x86-64 CC: gcc MODE: no-maintainer - container: "ubuntu:bionic" env: + ARCH: x86-64 CC: gcc MODE: maintainer - container: "ubuntu:xenial" env: + ARCH: x86-64 CC: gcc MODE: maintainer - # Ubuntu clang + # Ubuntu x86-64 clang - container: "ubuntu:hirsute" env: + ARCH: x86-64 CC: clang MODE: maintainer - container: "ubuntu:focal" env: + ARCH: x86-64 CC: clang MODE: maintainer - container: "ubuntu:focal" env: + ARCH: x86-64 CC: clang MODE: no-maintainer @@ -118,8 +256,26 @@ jobs: - name: Compile run: make -j$(nproc) + - name: Check final binary + run: | + file src/neard + ARCH_CHECK="$ARCH" + case "$ARCH" in + armel) ARCH_CHECK="ARM, EABI";; + arm64) ARCH_CHECK="aarch64";; + i386) ARCH_CHECK="Intel 80386";; + ppc64el) ARCH_CHECK="64-bit PowerPC";; + s390x) ARCH_CHECK="IBM S/390";; + *) ARCH_CHECK="x86-64";; + esac + echo "Checking for built matching architecture: $ARCH_CHECK" + file src/neard | grep "$ARCH_CHECK" + - name: Install run: make install - name: Distribution check run: make distcheck + # distcheck runs unit tests so no point for cross compile + # TODO: figure out how to re-configure during distcheck with --host for i386 (DISTCHECK_CONFIGURE_FLAGS) + if: ${{ (matrix.env['ARCH'] == 'x86-64')}} diff --git a/ci/alpine.sh b/ci/alpine.sh new file mode 100755 index 0000000..81b5c72 --- /dev/null +++ b/ci/alpine.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (c) 2019-2021 Petr Vorel <petr.vorel@gmail.com> +# Copyright (c) 2021 Canonical Ltd. +# Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> +# <krzk@kernel.org> +# + +set -ex + +apk update + +PKGS_CC="gcc" + +# gzip: for distcheck +apk add \ + autoconf \ + autoconf-archive \ + automake \ + gcc \ + gzip \ + dbus-dev \ + glib-dev \ + libnl3-dev \ + libtool \ + make \ + musl-dev \ + $PKGS_CC + +# Packages needed by CI +apk add \ + file + +echo "Install finished: $0" diff --git a/ci/debian.cross-compile.sh b/ci/debian.cross-compile.sh new file mode 100755 index 0000000..8d4c5bb --- /dev/null +++ b/ci/debian.cross-compile.sh @@ -0,0 +1,41 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (c) 2018-2020 Petr Vorel <pvorel@suse.cz> +# Copyright (c) 2021 Canonical Ltd. +# Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> +# <krzk@kernel.org> +# + +set -ex + +if [ -z "$ARCH" ]; then + echo "missing \$ARCH!" >&2 + exit 1 +fi + +case "$ARCH" in + armel) PKGS_CC="gcc-arm-linux-gnueabi libc6-dev-${ARCH}-cross";; + arm64) PKGS_CC="gcc-aarch64-linux-gnu libc6-dev-${ARCH}-cross";; + ppc64el) PKGS_CC="gcc-powerpc64le-linux-gnu libc6-dev-${ARCH}-cross";; + # TODO: libraries for riscv? + #riscv64) PKGS_CC="gcc-riscv64-linux-gnu libc6-dev-${ARCH}-cross";; + s390x) PKGS_CC="gcc-${ARCH}-linux-gnu libc6-dev-${ARCH}-cross";; + *) echo "unsupported arch: '$ARCH'!" >&2; exit 1;; +esac + +dpkg --add-architecture $ARCH +apt update + +apt install -y --no-install-recommends \ + autoconf:${ARCH} \ + autoconf-archive \ + automake:${ARCH} \ + libdbus-1-dev:${ARCH} \ + libglib2.0-dev:${ARCH} \ + libnl-3-dev:${ARCH} \ + libnl-genl-3-dev:${ARCH} \ + libtool:${ARCH} \ + $PKGS_CC + +echo "Install finished: $0" diff --git a/ci/debian.i386.sh b/ci/debian.i386.sh new file mode 100755 index 0000000..8d15441 --- /dev/null +++ b/ci/debian.i386.sh @@ -0,0 +1,32 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (c) 2018-2020 Petr Vorel <pvorel@suse.cz> +# Copyright (c) 2021 Canonical Ltd. +# Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> +# <krzk@kernel.org> +# + +set -ex + +dpkg --add-architecture i386 +apt update + +# gcc-multilib are also needed for clang 32-bit builds +PKGS_CC="gcc-multilib" + +apt install -y --no-install-recommends \ + linux-libc-dev:i386 + +apt install -y --no-install-recommends \ + autoconf:i386 \ + autoconf-archive \ + automake:i386 \ + libdbus-1-dev:i386 \ + libglib2.0-dev:i386 \ + libnl-3-dev:i386 \ + libnl-genl-3-dev:i386 \ + libtool:i386 \ + $PKGS_CC + +echo "Install finished: $0" diff --git a/ci/debian.sh b/ci/debian.sh index 8cc4d30..962e554 100755 --- a/ci/debian.sh +++ b/ci/debian.sh @@ -6,7 +6,7 @@ # <krzk@kernel.org> # -set -eEx +set -ex apt update @@ -20,10 +20,11 @@ tzdata tzdata/Zones/Europe select Berlin debconf-set-selections /tmp/tzdata-preseed.txt PKGS_CC="build-essential" -if [ "$CC" = "clang" ]; then - PKGS_CC="clang" -fi - +case $CC in + clang*) + PKGS_CC="clang" + ;; +esac apt install -y --no-install-recommends \ autoconf \ @@ -36,3 +37,5 @@ apt install -y --no-install-recommends \ libtool \ make \ $PKGS_CC + +echo "Install finished: $0" diff --git a/ci/fedora.sh b/ci/fedora.sh new file mode 100755 index 0000000..c5a67d2 --- /dev/null +++ b/ci/fedora.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (c) 2021 Canonical Ltd. +# Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> +# <krzk@kernel.org> +# + +set -ex + +PKGS_CC="gcc" +case $CC in + clang*) + PKGS_CC="clang" + ;; +esac + +yum -y install \ + autoconf \ + autoconf-archive \ + automake \ + dbus-devel \ + glib2-devel \ + libnl3-devel \ + libtool \ + make \ + $PKGS_CC + +# Packages needed by CI +yum -y install \ + file + +echo "Install finished: $0" diff --git a/ci/ubuntu.cross-compile.sh b/ci/ubuntu.cross-compile.sh new file mode 120000 index 0000000..18f77ad --- /dev/null +++ b/ci/ubuntu.cross-compile.sh @@ -0,0 +1 @@ +debian.cross-compile.sh
\ No newline at end of file diff --git a/ci/ubuntu.i386.sh b/ci/ubuntu.i386.sh new file mode 120000 index 0000000..813bdf9 --- /dev/null +++ b/ci/ubuntu.i386.sh @@ -0,0 +1 @@ +debian.i386.sh
\ No newline at end of file |