GitHub CI: change build system to meson
[tinc] / .ci / deps.sh
index 2f0dab2..523e7aa 100755 (executable)
@@ -6,25 +6,28 @@ deps_linux_alpine() {
   apk upgrade
 
   apk add \
-    git binutils make autoconf automake gcc linux-headers diffutils \
-    procps socat shadow sudo libgcrypt-dev texinfo texlive gzip \
+    git binutils meson pkgconf gcc linux-headers diffutils \
+    procps socat shadow sudo libgcrypt-dev texinfo gzip \
     openssl-dev zlib-dev lzo-dev ncurses-dev readline-dev musl-dev lz4-dev vde2-dev
 }
 
-deps_linux_debian() {
-  export DEBIAN_FRONTEND=noninteractive
-
-  HOST=${HOST:-}
+deps_linux_debian_mingw() {
+  apt-get install -y \
+    mingw-w64 mingw-w64-tools \
+    wine wine-binfmt \
+    libgcrypt-mingw-w64-dev \
+    "$@"
+}
 
+deps_linux_debian_linux() {
   if [ -n "$HOST" ]; then
     dpkg --add-architecture "$HOST"
   fi
 
   apt-get update
-  apt-get upgrade -y
 
   apt-get install -y \
-    git binutils make autoconf automake gcc diffutils sudo texinfo texlive netcat-openbsd procps socat \
+    binutils make gcc \
     zlib1g-dev:"$HOST" \
     libssl-dev:"$HOST" \
     liblzo2-dev:"$HOST" \
@@ -38,6 +41,36 @@ deps_linux_debian() {
 
   if [ -n "$HOST" ]; then
     apt-get install -y crossbuild-essential-"$HOST" qemu-user
+  else
+    linux_openssl3
+  fi
+}
+
+deps_linux_debian() {
+  export DEBIAN_FRONTEND=noninteractive
+
+  apt-get update
+  apt-get upgrade -y
+  apt-get install -y git pkgconf diffutils sudo texinfo \
+    netcat-openbsd procps socat
+
+  HOST=${HOST:-}
+  if [ "$HOST" = mingw ]; then
+    deps_linux_debian_mingw "$@"
+  else
+    deps_linux_debian_linux "$@"
+  fi
+
+  . /etc/os-release
+
+  # Debian Buster ships an old version of meson (0.49).
+  # MinGW cross-compilation requires something newer than 0.55 that ships in Bullseye,
+  # or it fails when looking for dependencies in the OpenSSL wrap.
+  if [ "${ID:-}/${VERSION_CODENAME:-}" = debian/buster ] || [ "$HOST" = mingw ]; then
+    apt-get install -y python3 python3-pip ninja-build
+    pip3 install meson
+  else
+    apt-get install -y meson
   fi
 }
 
@@ -54,7 +87,7 @@ deps_linux_rhel() {
   yum upgrade -y
 
   yum install -y \
-    git binutils make autoconf automake gcc diffutils sudo texinfo-tex netcat procps systemd perl-IPC-Cmd \
+    git binutils make meson pkgconf gcc diffutils sudo texinfo-tex netcat procps systemd perl-IPC-Cmd \
     findutils socat lzo-devel zlib-devel lz4-devel ncurses-devel readline-devel libgcrypt-devel "$@"
 
   if yum info openssl11-devel; then
@@ -69,11 +102,6 @@ deps_linux_rhel() {
 }
 
 linux_openssl3() {
-  if [ -n "${HOST:-}" ]; then
-    echo >&2 "Not installing OpenSSL 3 to a cross-compilation job"
-    return
-  fi
-
   src=/usr/local/src/openssl
   ssl3=/opt/ssl3
 
@@ -86,7 +114,12 @@ linux_openssl3() {
   make -j"$(nproc)"
   make install_sw
 
-  ldconfig -v $ssl3/lib64
+  if [ -f /etc/ld.so.conf ]; then
+    echo $ssl3/lib64 >>/etc/ld.so.conf
+    ldconfig -v
+  else
+    ldconfig -v $ssl3/lib64
+  fi
 
   cd -
 }
@@ -101,7 +134,6 @@ deps_linux() {
 
   debian | ubuntu)
     deps_linux_debian "$@"
-    linux_openssl3
     ;;
 
   centos | almalinux | fedora)
@@ -114,7 +146,7 @@ deps_linux() {
 }
 
 deps_macos() {
-  brew install coreutils netcat automake lzo lz4 miniupnpc libgcrypt openssl "$@"
+  brew install coreutils netcat lzo lz4 miniupnpc libgcrypt openssl meson "$@"
   pip3 install --user compiledb
 }