Skip to content

Commit 646b98e

Browse files
committed
Add meson build system to the CI
1 parent 4cb4652 commit 646b98e

12 files changed

Lines changed: 651 additions & 0 deletions

.github/workflows/ci-meson.yml

Lines changed: 423 additions & 0 deletions
Large diffs are not rendered by default.

ci/alpine.meson.sh

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
#
4+
# Copyright (c) 2019-2021 Petr Vorel <petr.vorel@gmail.com>
5+
# Copyright (c) 2021 Canonical Ltd.
6+
# Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
7+
# <krzk@kernel.org>
8+
# Copyright (c) 2026 Krzysztof Kozlowski <krzk@kernel.org>
9+
#
10+
11+
set -ex
12+
13+
apk update
14+
15+
PKGS_CC="gcc"
16+
case $CC in
17+
clang*)
18+
# On Alpine v3.14 clang fails without gcc:
19+
# cannot find crtbeginS.o: No such file or directory
20+
PKGS_CC="clang gcc"
21+
;;
22+
esac
23+
24+
# Packages needed by CI
25+
PKGS_MORE="file"
26+
27+
apk add \
28+
binutils \
29+
dbus-dev \
30+
glib-dev \
31+
libnl3-dev \
32+
meson \
33+
musl-dev \
34+
ninja \
35+
pkgconfig \
36+
$PKGS_CC \
37+
$PKGS_MORE
38+
39+
echo "Install finished: $0"

ci/archlinux.meson.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
#
4+
# Copyright (c) 2021 Canonical Ltd.
5+
# Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
6+
# <krzk@kernel.org>
7+
#
8+
9+
set -ex
10+
11+
PKGS_CC="gcc"
12+
case $CC in
13+
clang*)
14+
PKGS_CC="clang"
15+
;;
16+
esac
17+
18+
pacman -Syu --noconfirm \
19+
dbus \
20+
glib2 \
21+
libnl \
22+
meson \
23+
ninja \
24+
pkg-config \
25+
$PKGS_CC
26+
27+
echo "Install finished: $0"

ci/debian.meson.cross-compile.sh

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
#
4+
# Copyright (c) 2018-2020 Petr Vorel <pvorel@suse.cz>
5+
# Copyright (c) 2021 Canonical Ltd.
6+
# Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
7+
# <krzk@kernel.org>
8+
# Copyright (c) 2025 Krzysztof Kozlowski <krzk@kernel.org>
9+
#
10+
11+
set -ex
12+
13+
if [ -z "$ARCH" ]; then
14+
echo "missing \$ARCH!" >&2
15+
exit 1
16+
fi
17+
18+
dpkg --add-architecture $ARCH
19+
apt update
20+
21+
apt install -y --no-install-recommends \
22+
libc6-dev-${ARCH}-cross
23+
24+
apt install -y --no-install-recommends \
25+
libdbus-1-dev:${ARCH} \
26+
libglib2.0-dev:${ARCH} \
27+
libnl-3-dev:${ARCH} \
28+
libnl-genl-3-dev:${ARCH} \
29+
gcc-`dpkg-architecture -a ${ARCH} -q DEB_TARGET_GNU_TYPE`
30+
31+
echo "Install finished: $0"

ci/debian.meson.i386.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
#
4+
# Copyright (c) 2021 Canonical Ltd.
5+
# Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
6+
# <krzk@kernel.org>
7+
#
8+
9+
set -ex
10+
11+
dpkg --add-architecture i386
12+
apt update
13+
14+
# gcc-multilib are also needed for clang 32-bit builds
15+
PKGS_CC="gcc-multilib"
16+
17+
apt install -y --no-install-recommends \
18+
linux-libc-dev:i386
19+
20+
apt install -y --no-install-recommends \
21+
libdbus-1-dev:i386 \
22+
libglib2.0-dev:i386 \
23+
libnl-3-dev:i386 \
24+
libnl-genl-3-dev:i386 \
25+
$PKGS_CC
26+
27+
echo "Install finished: $0"

ci/debian.meson.sanitizers.sh

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
#
4+
# Copyright (c) 2021 Canonical Ltd.
5+
# Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
6+
# <krzk@kernel.org>
7+
# Copyright (c) 2025 Krzysztof Kozlowski <krzk@kernel.org>
8+
#
9+
10+
set -ex
11+
12+
apt install -y --no-install-recommends \
13+
liblsan0 \
14+
libubsan1
15+
16+
apt install -y --no-install-recommends libasan8 || \
17+
apt install -y --no-install-recommends libasan6 || \
18+
apt install -y --no-install-recommends libasan5
19+
20+
echo "Install finished: $0"

ci/debian.meson.sh

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
#
4+
# Copyright (c) 2021 Canonical Ltd.
5+
# Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
6+
# <krzk@kernel.org>
7+
#
8+
9+
set -ex
10+
11+
apt update
12+
13+
# Some distros (e.g. Ubuntu Hirsute) might pull tzdata which asks questions
14+
export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
15+
16+
# Choose some random place in Europe
17+
echo "tzdata tzdata/Areas select Europe
18+
tzdata tzdata/Zones/Europe select Berlin
19+
" > /tmp/tzdata-preseed.txt
20+
debconf-set-selections /tmp/tzdata-preseed.txt
21+
22+
PKGS_CC="build-essential"
23+
case $CC in
24+
clang*)
25+
PKGS_CC="clang"
26+
;;
27+
esac
28+
29+
apt install -y --no-install-recommends \
30+
file \
31+
libdbus-1-dev \
32+
libglib2.0-dev \
33+
libnl-3-dev \
34+
libnl-genl-3-dev \
35+
meson \
36+
ninja-build \
37+
pkg-config \
38+
python3-pip \
39+
$PKGS_CC
40+
41+
# Meson >= 1.1 is required. If the packaged version is older, install via pip.
42+
MIN_MESON="1.1.0"
43+
MESON_VER=$(meson --version 2>/dev/null || echo "0.0.0")
44+
if dpkg --compare-versions "$MESON_VER" lt "$MIN_MESON"; then
45+
pip3 install "meson>=$MIN_MESON" 2>/dev/null || \
46+
pip3 install --break-system-packages "meson>=$MIN_MESON"
47+
fi
48+
49+
echo "Install finished: $0"

ci/fedora.meson.sh

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
#
4+
# Copyright (c) 2021 Canonical Ltd.
5+
# Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
6+
# <krzk@kernel.org>
7+
#
8+
9+
set -ex
10+
11+
PKGS_CC="gcc"
12+
case $CC in
13+
clang*)
14+
PKGS_CC="clang"
15+
;;
16+
esac
17+
18+
# Packages needed by CI
19+
PKGS_MORE="file"
20+
21+
dnf -y install \
22+
dbus-devel \
23+
glib2-devel \
24+
libnl3-devel \
25+
meson \
26+
ninja-build \
27+
pkg-config \
28+
$PKGS_CC \
29+
$PKGS_MORE
30+
31+
echo "Install finished: $0"

ci/ubuntu.meson.cross-compile.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
debian.meson.cross-compile.sh

ci/ubuntu.meson.i386.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
debian.meson.i386.sh

0 commit comments

Comments
 (0)