[Openvpn-devel,v3] GHA: Add OpenSSL 4.0 build
Commit Message
From: Arne Schwabe <arne@rfc2549.org>
Change-Id: Ic9c993cb8dcfedfd6f99f416c286e0968eb45255
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Frank Lichtenheld <frank@lichtenheld.com>
Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1601
---
This change was reviewed on Gerrit and approved by at least one
developer. I request to merge it to master.
Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1601
This mail reflects revision 3 of this Change.
Acked-by according to Gerrit (reflected above):
Frank Lichtenheld <frank@lichtenheld.com>
Comments
If we claim OpenSSL 4.0 support, we must CI test it... here we go :-)
Tested in my private GH repo.
Your patch has been applied to the master branch.
commit 36174520e9e98eb2298ed29b71d0b8d00544e24e (master)
commit e57d16c82072282f2e584e6ba3b272a3007ec9a7 (release/2.7)
Author: Arne Schwabe
Date: Fri Apr 17 13:09:36 2026 +0200
GHA: Add OpenSSL 4.0 build
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Frank Lichtenheld <frank@lichtenheld.com>
Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1601
Message-Id: <20260417110942.16538-1-gert@greenie.muc.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg36648.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
--
kind regards,
Gert Doering
@@ -390,6 +390,87 @@
- name: make check
run: make -j3 check VERBOSE=1
+ openssl:
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-24.04]
+ ssllib: [openssl]
+ build: [ normal, asan ]
+ configureflags: ["--with-openssl-engine=no"]
+ include:
+ - build: asan
+ cflags: "-fsanitize=address -fno-sanitize-recover=all -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer -g -O1"
+ ldflags: -fsanitize=address -fno-sanitize-recover=all
+ cc: clang
+ - build: normal
+ cflags: "-O2 -g"
+ ldflags: ""
+ cc: gcc
+
+ name: "${{matrix.cc}} ${{matrix.build}} - ${{matrix.os}} - ${{matrix.ssllib}} - 4.0"
+ runs-on: ${{matrix.os}}
+ env:
+ CFLAGS: ${{ matrix.cflags }}
+ LDFLAGS: ${{ matrix.ldflags }}
+ CC: ${{matrix.cc}}
+ UBSAN_OPTIONS: print_stacktrace=1
+ # versioning=semver-coerced
+ OPENSSL_REPO: openssl/openssl
+ OPENSSL_VERSION: openssl-4.0.0-beta1
+ OPENSSL_INSTALL: /opt/openssl
+
+ steps:
+ - name: Install dependencies
+ run: sudo apt update && sudo apt install -y liblzo2-dev libpam0g-dev liblz4-dev linux-libc-dev man2html clang libcmocka-dev python3-docutils libtool automake autoconf pkg-config libcap-ng-dev libnl-genl-3-dev
+ - name: Restore OpenSSL 4.0 from cache
+ uses: actions/cache@v5
+ id: openssl-cache
+ with:
+ path: ${{ env.OPENSSL_INSTALL }}
+ key: ${{ matrix.os }}-openssl-${{matrix.build }}-${{ env.OPENSSL_VERSION }}
+ - name: "openssl: checkout"
+ if: steps.openssl-cache.outputs.cache-hit != 'true'
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ path: openssl
+ repository: ${{ env.OPENSSL_REPO }}
+ ref: ${{ env.OPENSSL_VERSION }}
+ - name: "openssl: configure"
+ if: steps.openssl-cache.outputs.cache-hit != 'true'
+ run: ./Configure --prefix=${{ env.OPENSSL_INSTALL }} --libdir=${{ env.OPENSSL_INSTALL }}/lib --openssldir=${{ env.OPENSSL_INSTALL }} -g
+ working-directory: openssl
+ - name: "openssl: make all"
+ if: steps.openssl-cache.outputs.cache-hit != 'true'
+ run: make -j3
+ working-directory: openssl
+ - name: "openssl: make install"
+ if: steps.openssl-cache.outputs.cache-hit != 'true'
+ run: sudo make install
+ working-directory: openssl
+ - name: "ldconfig"
+ run: sudo ldconfig
+ - name: Checkout OpenVPN
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - name: autoconf
+ run: autoreconf -fvi
+ - name: configure
+ run: |
+ OPENSSL_CFLAGS="-I${{ env.OPENSSL_INSTALL }}/include" \
+ OPENSSL_LIBS="-L${{ env.OPENSSL_INSTALL }}/lib -lssl -lcrypto" \
+ LDFLAGS="-Wl,-rpath=${{ env.OPENSSL_INSTALL }}/lib" \
+ ./configure --with-crypto-library=openssl --enable-werror ${{matrix.configureflags}}
+ - name: make all
+ run: make -j3
+ - name: Ensure the build uses Openssl
+ run: |
+ ./src/openvpn/openvpn --version
+ ./src/openvpn/openvpn --version | grep -q "library versions: OpenSSL 4.0"
+ - name: configure checks
+ run: echo 'RUN_SUDO="sudo -E"' >tests/t_server_null.rc
+ - name: make check
+ run: make -j3 check VERBOSE=1
+
mbedtls4:
strategy:
fail-fast: false