set -eu
+SKIP_OPENSSL3="${SKIP_OPENSSL3:-}"
+SKIP_MESON="${SKIP_MESON:-}"
+
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 \
- openssl-dev zlib-dev lzo-dev ncurses-dev readline-dev musl-dev lz4-dev vde2-dev
-}
+ 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
-deps_linux_debian() {
- export DEBIAN_FRONTEND=noninteractive
+ if [ -z "$SKIP_MESON" ]; then
+ apk add meson
+ fi
+}
- 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" \
libgcrypt-dev:"$HOST" \
libminiupnpc-dev:"$HOST" \
libvdeplug-dev:"$HOST" \
+ libcmocka-dev:"$HOST" \
"$@"
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 sudo texinfo ninja-build
+
+ HOST=${HOST:-}
+ if [ "$HOST" = mingw ]; then
+ deps_linux_debian_mingw "$@"
+ else
+ 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).
+ # 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
}
deps_linux_rhel() {
+ yum upgrade -y
+
if [ "$ID" != fedora ]; then
yum install -y epel-release
if type dnf; then
dnf install -y 'dnf-command(config-manager)'
- dnf config-manager --enable powertools
+ dnf config-manager --enable powertools || true
+ dnf config-manager --enable crb || true
fi
fi
- yum upgrade -y
-
yum install -y \
- git binutils make autoconf automake gcc diffutils sudo texinfo-tex netcat procps systemd \
- findutils socat lzo-devel zlib-devel lz4-devel ncurses-devel readline-devel libgcrypt-devel "$@"
+ 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
fi
}
+linux_openssl3() {
+ if [ -n "$SKIP_OPENSSL3" ]; then
+ echo >&2 "skipping openssl3 installation in this job"
+ return
+ fi
+
+ src=/usr/local/src/openssl
+ ssl3=/opt/ssl3
+
+ mkdir -p $src
+
+ git clone --depth 1 --branch openssl-3.0.2 https://github.com/openssl/openssl $src
+ cd $src
+
+ ./Configure --prefix=$ssl3 --openssldir=$ssl3
+ make -j"$(nproc)"
+ make install_sw
+
+ if [ -f /etc/ld.so.conf ]; then
+ echo $ssl3/lib64 >>/etc/ld.so.conf
+ ldconfig -v
+ else
+ ldconfig -v $ssl3/lib64
+ fi
+
+ cd -
+}
+
deps_linux() {
. /etc/os-release
deps_linux_debian "$@"
;;
- centos | almalinux | fedora)
+ fedora)
deps_linux_rhel "$@"
;;
+ centos | almalinux)
+ deps_linux_rhel "$@"
+
+ if [ "${PLATFORM_ID:-}" != platform:el9 ]; then
+ linux_openssl3
+ fi
+ ;;
+
*) exit 1 ;;
esac
}
deps_macos() {
- brew install coreutils netcat automake lzo lz4 miniupnpc libgcrypt openssl "$@"
- pip3 install --user compiledb
+ brew install lzo lz4 miniupnpc libgcrypt openssl "$@"
+
+ if [ -z "$SKIP_MESON" ]; then
+ brew install meson
+ fi
}
case "$(uname -s)" in