set -eu
+SKIP_OPENSSL3="${SKIP_OPENSSL3:-}"
+SKIP_MESON="${SKIP_MESON:-}"
+
deps_linux_alpine() {
apk upgrade
apk add \
- git binutils meson pkgconf gcc linux-headers shadow sudo libgcrypt-dev texinfo gzip \
+ git binutils ninja pkgconf gcc linux-headers shadow sudo libgcrypt-dev texinfo gzip \
openssl-dev zlib-dev lzo-dev ncurses-dev readline-dev musl-dev lz4-dev vde2-dev cmocka-dev
+
+ if [ -z "$SKIP_MESON" ]; then
+ apk add meson
+ fi
}
deps_linux_debian_mingw() {
apt-get update
apt-get upgrade -y
- apt-get install -y git pkgconf sudo texinfo
+ apt-get install -y git pkgconf sudo texinfo ninja-build
HOST=${HOST:-}
if [ "$HOST" = mingw ]; then
deps_linux_debian_linux "$@"
fi
+ if [ -n "$SKIP_MESON" ]; then
+ return
+ fi
+
. /etc/os-release
# Debian Buster ships an old version of meson (0.49).
fi
yum install -y \
- git binutils make meson pkgconf gcc sudo texinfo-tex systemd perl-IPC-Cmd \
+ git binutils make ninja-build pkgconf gcc sudo texinfo-tex systemd perl-IPC-Cmd \
lzo-devel zlib-devel lz4-devel ncurses-devel readline-devel libgcrypt-devel "$@"
+ if [ -z "$SKIP_MESON" ]; then
+ yum install -y meson
+ fi
+
if yum info openssl11-devel; then
yum install -y openssl11-devel
else
}
linux_openssl3() {
- if [ -n "${SKIP_OPENSSL3:-}" ]; then
+ if [ -n "$SKIP_OPENSSL3" ]; then
echo >&2 "skipping openssl3 installation in this job"
return
fi
}
deps_macos() {
- brew install lzo lz4 miniupnpc libgcrypt openssl meson "$@"
+ brew install lzo lz4 miniupnpc libgcrypt openssl "$@"
+
+ if [ -z "$SKIP_MESON" ]; then
+ brew install meson
+ fi
}
case "$(uname -s)" in
--- /dev/null
+#!/bin/bash
+
+# Fetch and build
+# muon (a C reimplementation of the meson build system),
+# samurai (a C reimplementation of the ninja build tool),
+# and then use both to build tinc.
+
+set -euo pipefail
+
+git_samurai=https://github.com/michaelforney/samurai
+git_muon=https://git.sr.ht/~lattis/muon
+prefix=/opt/tinc_muon
+
+header() {
+ echo >&2 '################################################################################'
+ echo >&2 "# $*"
+ echo >&2 '################################################################################'
+}
+
+header 'Try to make sure Python is missing'
+python --version && exit 1
+python3 --version && exit 1
+
+header 'Fetch and build samurai'
+
+git clone --depth=1 $git_samurai ~/samurai
+pushd ~/samurai
+make -j"$(nproc)"
+make install
+popd
+
+header 'Fetch and build muon'
+
+git clone --depth=1 $git_muon ~/muon
+pushd ~/muon
+./bootstrap.sh build
+./build/muon setup build
+samu -C build
+./build/muon -C build install
+popd
+
+header 'Setup build directory'
+muon setup -D prefix=$prefix -D systemd=disabled build_muon
+samu -C build_muon
+
+header 'Install tinc'
+muon -C build_muon install
+
+header 'Run smoke tests'
+$prefix/sbin/tinc --version
+$prefix/sbin/tincd --version
+$prefix/sbin/tinc -c /tmp/muon_node <<EOF
+init muon
+set DeviceType dummy
+set Address localhost
+set Port 0
+start
+EOF
path: /tmp/logs/tests.*.tar.gz
if: always()
+ muon:
+ runs-on: ubuntu-22.04
+ timeout-minutes: 20
+ container:
+ image: debian:bullseye-slim
+ env:
+ CI: 1
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v1
+
+ - name: Install dependencies
+ run: SKIP_OPENSSL3=1 SKIP_MESON=1 .ci/deps.sh libpkgconf-dev
+
+ - name: Compatibility with muon
+ run: ./.ci/muon/run.sh
+
analysis:
runs-on: ubuntu-22.04
timeout-minutes: 30