mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 00:14:32 +09:00
musl: ci: add build test and unit tests
This commit is contained in:
94
.github/workflows/build-test-musl.sh
vendored
Executable file
94
.github/workflows/build-test-musl.sh
vendored
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
set -eux
|
||||
|
||||
if ! command -v musl-gcc >/dev/null; then
|
||||
echo "musl-gcc is not installed, skipping the test."
|
||||
exit 77
|
||||
fi
|
||||
|
||||
TMPDIR=$(mktemp -d)
|
||||
|
||||
cleanup() (
|
||||
set +e
|
||||
|
||||
if [[ -d "$TMPDIR" ]]; then
|
||||
rm -rf "$TMPDIR"
|
||||
fi
|
||||
)
|
||||
|
||||
trap cleanup EXIT ERR INT TERM
|
||||
|
||||
mkdir -p "${TMPDIR}/build"
|
||||
mkdir -p "${TMPDIR}/usr/include"
|
||||
mkdir -p "${TMPDIR}/usr/lib64/pkgconfig"
|
||||
|
||||
CFLAGS="-idirafter ${TMPDIR}/usr/include"
|
||||
export PKG_CONFIG_PATH="${TMPDIR}"/usr/lib64/pkgconfig
|
||||
|
||||
LINKS=(
|
||||
acl
|
||||
archive.h
|
||||
archive_entry.h
|
||||
asm
|
||||
asm-generic
|
||||
audit-records.h
|
||||
audit_logging.h
|
||||
bpf
|
||||
bzlib.h
|
||||
curl
|
||||
dwarf.h
|
||||
elfutils
|
||||
fido.h
|
||||
gcrypt.h
|
||||
gelf.h
|
||||
gnutls
|
||||
gpg-error.h
|
||||
idn2.h
|
||||
libaudit.h
|
||||
libcryptsetup.h
|
||||
libelf.h
|
||||
libkmod.h
|
||||
linux
|
||||
lz4.h
|
||||
lz4frame.h
|
||||
lz4hc.h
|
||||
lzma
|
||||
lzma.h
|
||||
microhttpd.h
|
||||
mtd
|
||||
openssl
|
||||
pcre2.h
|
||||
pwquality.h
|
||||
qrencode.h
|
||||
seccomp-syscalls.h
|
||||
seccomp.h
|
||||
security
|
||||
selinux
|
||||
sys/acl.h
|
||||
sys/capability.h
|
||||
tss2
|
||||
xen
|
||||
xkbcommon
|
||||
zconf.h
|
||||
zlib.h
|
||||
zstd.h
|
||||
zstd_errors.h
|
||||
)
|
||||
|
||||
for t in "${LINKS[@]}"; do
|
||||
[[ -e /usr/include/"$t" ]]
|
||||
link="${TMPDIR}"/usr/include/"${t}"
|
||||
mkdir -p "${link%/*}"
|
||||
ln -s /usr/include/"$t" "$link"
|
||||
done
|
||||
|
||||
env \
|
||||
CC=musl-gcc \
|
||||
CXX=musl-gcc \
|
||||
CFLAGS="$CFLAGS" \
|
||||
CXXFLAGS="$CFLAGS" \
|
||||
meson setup --werror -Ddbus-interfaces-dir=no -Dlibc=musl "${TMPDIR}"/build
|
||||
|
||||
ninja -v -C "${TMPDIR}"/build
|
||||
7
.github/workflows/linter.yml
vendored
7
.github/workflows/linter.yml
vendored
@@ -49,6 +49,10 @@ jobs:
|
||||
[Build]
|
||||
ToolsTreeDistribution=fedora
|
||||
ToolsTreeRelease=rawhide
|
||||
ToolsTreePackages=
|
||||
libgcrypt-devel
|
||||
libgpg-error-devel
|
||||
musl-gcc
|
||||
EOF
|
||||
|
||||
mkosi -f box -- true
|
||||
@@ -77,3 +81,6 @@ jobs:
|
||||
|
||||
- name: Run clang-tidy
|
||||
run: mkosi box -- meson test -C build --suite=clang-tidy --print-errorlogs --no-stdsplit
|
||||
|
||||
- name: Build with musl
|
||||
run: mkosi box -- .github/workflows/build-test-musl.sh
|
||||
|
||||
59
.github/workflows/unit-tests-musl.sh
vendored
Executable file
59
.github/workflows/unit-tests-musl.sh
vendored
Executable file
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
# shellcheck disable=SC2206
|
||||
PHASES=(${@:-SETUP BUILD RUN CLEANUP})
|
||||
|
||||
function info() {
|
||||
echo -e "\033[33;1m$1\033[0m"
|
||||
}
|
||||
|
||||
function run_meson() {
|
||||
if ! meson "$@"; then
|
||||
find . -type f -name meson-log.txt -exec cat '{}' +
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
set -ex
|
||||
|
||||
for phase in "${PHASES[@]}"; do
|
||||
case $phase in
|
||||
SETUP)
|
||||
info "Setup phase"
|
||||
|
||||
# Alpine still uses split-usr.
|
||||
for i in /bin/* /sbin/*; do
|
||||
ln -rs "$i" "/usr/$i";
|
||||
done
|
||||
;;
|
||||
BUILD)
|
||||
info "Build systemd phase"
|
||||
|
||||
run_meson setup --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true -Dlibc=musl build
|
||||
ninja -v -C build
|
||||
;;
|
||||
RUN)
|
||||
info "Run phase"
|
||||
|
||||
# Create dummy machine ID.
|
||||
echo '052e58f661f94bd080e258b96aea3f7b' > /etc/machine-id
|
||||
|
||||
# Start dbus for several unit tests.
|
||||
mkdir -p /var/run/dbus
|
||||
/usr/bin/dbus-daemon --system || :
|
||||
|
||||
# Here, we explicitly set SYSTEMD_IN_CHROOT=yes as unfortunately runnin_in_chroot() does not
|
||||
# correctly detect the environment.
|
||||
env \
|
||||
SYSTEMD_IN_CHROOT=yes \
|
||||
meson test -C build --print-errorlogs
|
||||
;;
|
||||
CLEANUP)
|
||||
info "Cleanup phase"
|
||||
;;
|
||||
*)
|
||||
echo >&2 "Unknown phase '$phase'"
|
||||
exit 1
|
||||
esac
|
||||
done
|
||||
113
.github/workflows/unit-tests-musl.yml
vendored
Normal file
113
.github/workflows/unit-tests-musl.yml
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
---
|
||||
# vi: ts=2 sw=2 et:
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
#
|
||||
name: Unit tests (musl)
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- '**/meson.build'
|
||||
- '.github/workflows/**'
|
||||
- 'meson_options.txt'
|
||||
- 'src/**'
|
||||
- 'test/fuzz/**'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Repository checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
|
||||
- name: Install build dependencies
|
||||
uses: jirutka/setup-alpine@v1
|
||||
with:
|
||||
arch: x86_64
|
||||
branch: edge
|
||||
packages: >
|
||||
acl
|
||||
acl-dev
|
||||
audit-dev
|
||||
bash
|
||||
bash-completion-dev
|
||||
bpftool
|
||||
build-base
|
||||
bzip2-dev
|
||||
coreutils
|
||||
cryptsetup-dev
|
||||
curl-dev
|
||||
dbus
|
||||
dbus-dev
|
||||
elfutils-dev
|
||||
gettext-dev
|
||||
git
|
||||
glib-dev
|
||||
gnutls-dev
|
||||
gperf
|
||||
grep
|
||||
iproute2
|
||||
iptables-dev
|
||||
kbd
|
||||
kexec-tools
|
||||
kmod
|
||||
kmod-dev
|
||||
libapparmor-dev
|
||||
libarchive-dev
|
||||
libbpf-dev
|
||||
libcap-dev
|
||||
libcap-utils
|
||||
libfido2-dev
|
||||
libgcrypt-dev
|
||||
libidn2-dev
|
||||
libmicrohttpd-dev
|
||||
libpwquality-dev
|
||||
libqrencode-dev
|
||||
libseccomp-dev
|
||||
libselinux-dev
|
||||
libxkbcommon-dev
|
||||
linux-pam-dev
|
||||
lz4-dev
|
||||
meson
|
||||
openssl
|
||||
openssl-dev
|
||||
p11-kit-dev
|
||||
pcre2-dev
|
||||
pkgconf
|
||||
polkit-dev
|
||||
py3-elftools
|
||||
py3-jinja2
|
||||
py3-pefile
|
||||
py3-pytest
|
||||
py3-lxml
|
||||
quota-tools
|
||||
rsync
|
||||
sfdisk
|
||||
tpm2-tss-dev
|
||||
tpm2-tss-esys
|
||||
tpm2-tss-rc
|
||||
tpm2-tss-tcti-device
|
||||
tzdata
|
||||
util-linux-dev
|
||||
util-linux-login
|
||||
util-linux-misc
|
||||
utmps-dev
|
||||
valgrind-dev
|
||||
xen-dev
|
||||
zlib-dev
|
||||
zstd-dev
|
||||
|
||||
- name: Setup
|
||||
run: .github/workflows/unit-tests-musl.sh SETUP
|
||||
shell: alpine.sh --root {0}
|
||||
- name: Build
|
||||
run: .github/workflows/unit-tests-musl.sh BUILD
|
||||
shell: alpine.sh {0}
|
||||
- name: Run
|
||||
run: .github/workflows/unit-tests-musl.sh RUN
|
||||
shell: alpine.sh --root {0}
|
||||
- name: Cleanup
|
||||
run: .github/workflows/unit-tests-musl.sh CLEANUP
|
||||
shell: alpine.sh --root {0}
|
||||
Reference in New Issue
Block a user