X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=.ci%2Fdeps.sh;h=17b49bbc523bd5f7a78f67de4a32a2bab79c9b59;hb=38a4eb4ebc730d805fcab9d64fe988be42a99122;hp=6fdd47f418727782adf7154cea21b885a7562d52;hpb=dcd4f779f4dc2c93c956407e7f70cc66d62fe0b0;p=tinc diff --git a/.ci/deps.sh b/.ci/deps.sh index 6fdd47f4..17b49bbc 100755 --- a/.ci/deps.sh +++ b/.ci/deps.sh @@ -2,29 +2,38 @@ 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 texinfo \ - procps socat shadow sudo libgcrypt-dev \ - 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 netcat-openbsd procps socat \ + binutils make gcc \ zlib1g-dev:"$HOST" \ libssl-dev:"$HOST" \ liblzo2-dev:"$HOST" \ @@ -34,28 +43,68 @@ deps_linux_debian() { libgcrypt-dev:"$HOST" \ libminiupnpc-dev:"$HOST" \ libvdeplug-dev:"$HOST" \ + libcmocka-dev:"$HOST" \ + libsystemd-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 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 systemd-devel "$@" + + if [ -z "$SKIP_MESON" ]; then + yum install -y meson + fi if yum info openssl11-devel; then yum install -y openssl11-devel @@ -68,6 +117,34 @@ deps_linux_rhel() { 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 @@ -80,17 +157,28 @@ deps_linux() { 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