summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-12-10 20:08:00 +0100
committerThomas Haller <thaller@redhat.com>2020-12-11 18:14:10 +0100
commita1002bd93a64f89421e71bdb539377285ef2b47f (patch)
tree0fe9a7cb35b2812b625f186f3d873ea4b1570212
parenta6e234349cbfaa2931202850b2b5809473a77d90 (diff)
downloadNetworkManager-a1002bd93a64f89421e71bdb539377285ef2b47f.tar.gz
gitlab-ci: enable test build on alpine linux
Alpine is especially interesting because it uses musl as libc. The build does not yet succeed. There are several issues that need to be fixed. However, it will be simpler to fix things, if we have tests in place -- even if at the moment they are known to be broken. See-also: https://git.alpinelinux.org/aports/tree/community/networkmanager?h=master
-rw-r--r--.gitlab-ci.yml44
-rwxr-xr-x.gitlab-ci/alpine-install.sh7
-rwxr-xr-x.gitlab-ci/build.sh5
-rw-r--r--.gitlab-ci/config.yml5
-rwxr-xr-xcontrib/alpine/REQUIRED_PACKAGES49
-rwxr-xr-xcontrib/scripts/nm-ci-run.sh18
6 files changed, 122 insertions, 6 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b20d972996..3a35f64199 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -10,6 +10,10 @@
.templates_sha: &template_sha b18e53bf67b9ed493a006d83dbadd1ecc0daa61a # see https://docs.gitlab.com/ee/ci/yaml/#includefile
include:
+ # Alpine container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/alpine.yml'
# Centos container builder template
- project: 'freedesktop/ci-templates'
ref: *template_sha
@@ -40,15 +44,17 @@ variables:
# these tags should be updated each time the list of packages is updated
# changing these will force rebuilding the associated image
# Note: these tags have no meaning and are not tied to a particular NM version
- FEDORA_TAG: '2020-11-17.0-4422fd99fcf1'
- UBUNTU_TAG: '2020-11-17.0-7ba6b1ddf582'
- DEBIAN_TAG: '2020-11-17.0-7ba6b1ddf582'
- CENTOS_TAG: '2020-11-17.0-4422fd99fcf1'
+ FEDORA_TAG: '2020-11-17.0-cbb87607d569'
+ UBUNTU_TAG: '2020-11-17.0-45915bd6e380'
+ DEBIAN_TAG: '2020-11-17.0-45915bd6e380'
+ CENTOS_TAG: '2020-11-17.0-cbb87607d569'
+ ALPINE_TAG: '2020-11-17.0-8309a34970a3'
FEDORA_EXEC: 'bash .gitlab-ci/fedora-install.sh'
UBUNTU_EXEC: 'bash .gitlab-ci/debian-install.sh'
DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh'
CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh'
+ ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh'
.nm_artifacts:
variables:
@@ -305,6 +311,16 @@ centos:8.2.2004@container-prep:
FDO_DISTRIBUTION_TAG: $CENTOS_TAG
FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC
+alpine:latest@container-prep:
+ extends:
+ - .fdo.container-build@alpine
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: 'latest'
+ FDO_DISTRIBUTION_TAG: $ALPINE_TAG
+ FDO_DISTRIBUTION_EXEC: $ALPINE_EXEC
+
#################################################################
# #
# container clean stage #
@@ -546,6 +562,15 @@ centos:8.2.2004@container-clean:
FDO_DISTRIBUTION_VERSION: '8.2.2004'
FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+alpine:latest@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/alpine/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: 'latest'
+ FDO_DISTRIBUTION_TAG: $ALPINE_TAG
+
#################################################################
# #
@@ -819,6 +844,17 @@ t_centos:8.2.2004:
- "centos:8.2.2004@container-prep"
when: manual
+t_alpine:latest:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@alpine
+ variables:
+ FDO_DISTRIBUTION_VERSION: 'latest'
+ FDO_DISTRIBUTION_TAG: $ALPINE_TAG
+ needs:
+ - "alpine:latest@container-prep"
+ when: manual
+
#################################################################
# #
# specific jobs #
diff --git a/.gitlab-ci/alpine-install.sh b/.gitlab-ci/alpine-install.sh
new file mode 100755
index 0000000000..8df82ce1f1
--- /dev/null
+++ b/.gitlab-ci/alpine-install.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -ex
+
+./contrib/alpine/REQUIRED_PACKAGES
+
+ln -snf elogind/systemd /usr/include/systemd
diff --git a/.gitlab-ci/build.sh b/.gitlab-ci/build.sh
index fc118b8998..a183aa1f07 100755
--- a/.gitlab-ci/build.sh
+++ b/.gitlab-ci/build.sh
@@ -4,20 +4,23 @@ set -ex
IS_FEDORA=0
IS_CENTOS=0
+IS_ALPINE=0
grep -q '^NAME=.*\(CentOS\)' /etc/os-release && IS_CENTOS=1
grep -q '^NAME=.*\(Fedora\)' /etc/os-release && IS_FEDORA=1
+grep -q '^NAME=.*\(Alpine\)' /etc/os-release && IS_ALPINE=1
do_clean() {
git clean -fdx
}
uname -a
-locale -a
+! command -v locale &>/dev/null || locale -a
env
meson --version
! command -v dpkg &>/dev/null || dpkg -l
! command -v yum &>/dev/null || yum list installed
+! command -v apk &>/dev/null || apk -v info
# The formatting depends on the version of python black.
# We have a dedicated test that checks our formatting, which
diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml
index 201828379c..7efe1b6730 100644
--- a/.gitlab-ci/config.yml
+++ b/.gitlab-ci/config.yml
@@ -55,6 +55,11 @@ distributions:
- '7.9.2009'
- '8.1.1911'
- '8.2.2004'
+ - name: alpine
+ tag: *default_tag
+ base_type: alpine
+ versions:
+ - 'latest'
# specifies which of the above distros is used as source for pages
pages_build:
diff --git a/contrib/alpine/REQUIRED_PACKAGES b/contrib/alpine/REQUIRED_PACKAGES
new file mode 100755
index 0000000000..6c9ad8deba
--- /dev/null
+++ b/contrib/alpine/REQUIRED_PACKAGES
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+set -ex
+
+apk update
+
+apk add \
+ 'alpine-sdk' \
+ 'autoconf' \
+ 'automake' \
+ 'bash' \
+ 'clang' \
+ 'curl-dev' \
+ 'dbus' \
+ 'dbus-glib-dev' \
+ 'elogind-dev' \
+ 'eudev-dev' \
+ 'gcc' \
+ 'git' \
+ 'gnutls-dev' \
+ 'gobject-introspection-dev' \
+ 'gtk-doc' \
+ 'intltool' \
+ 'iptables' \
+ 'jansson-dev' \
+ 'libgudev-dev' \
+ 'libndp-dev' \
+ 'libnl3-dev' \
+ 'libpsl-dev' \
+ 'libsoup-dev' \
+ 'libteam-dev' \
+ 'libtool' \
+ 'linux-headers' \
+ 'make' \
+ 'meson' \
+ 'mobile-broadband-provider-info' \
+ 'modemmanager-dev' \
+ 'musl-dev' \
+ 'newt-dev' \
+ 'nss-dev' \
+ 'polkit-dev' \
+ 'ppp' \
+ 'ppp-dev' \
+ 'py3-gobject3' \
+ 'python3' \
+ 'readline-dev' \
+ 'util-linux-dev' \
+ 'vala' \
+ 'vim'
diff --git a/contrib/scripts/nm-ci-run.sh b/contrib/scripts/nm-ci-run.sh
index 10b731c46d..0a87beaa5f 100755
--- a/contrib/scripts/nm-ci-run.sh
+++ b/contrib/scripts/nm-ci-run.sh
@@ -7,7 +7,7 @@
# - CFLAGS
# - WITH_DOCS
-set -exv
+set -ex
die() {
printf "%s\n" "$@"
@@ -41,6 +41,13 @@ if command -v ccache &>/dev/null; then
export PATH="/usr/lib64/ccache:/usr/lib/ccache${PATH:+:${PATH}}"
fi
+IS_FEDORA=0
+IS_CENTOS=0
+IS_ALPINE=0
+grep -q '^NAME=.*\(CentOS\)' /etc/os-release && IS_CENTOS=1
+grep -q '^NAME=.*\(Fedora\)' /etc/os-release && IS_FEDORA=1
+grep -q '^NAME=.*\(Alpine\)' /etc/os-release && IS_ALPINE=1
+
###############################################################################
if [ "$BUILD_TYPE" == meson ]; then
@@ -58,6 +65,9 @@ _WITH_WERROR=1
_WITH_LIBTEAM="$_TRUE"
_WITH_DOCS="$_TRUE"
_WITH_SYSTEMD_LOGIND="$_TRUE"
+if [ $IS_ALPINE = 1 ]; then
+ _WITH_SYSTEMD_LOGIND="$_FALSE"
+fi
if [ "$NMTST_SEED_RAND" != "" ]; then
export NMTST_SEED_RAND=
@@ -133,9 +143,15 @@ run_autotools() {
else
_WITH_WERROR_VAL="yes"
fi
+ DISABLE_DEPENDENCY_TRACKING=
+ if [ $IS_ALPINE = 1 ]; then
+ DISABLE_DEPENDENCY_TRACKING='--disable-dependency-tracking'
+ fi
pushd ./build
../configure \
--prefix="$PWD/INST" \
+ $DISABLE_DEPENDENCY_TRACKING \
+ \
--enable-introspection=$_WITH_DOCS \
--enable-gtk-doc=$_WITH_DOCS \
--with-systemd-logind=$_WITH_SYSTEMD_LOGIND \