diff --git a/.github/workflows/libnice.yml b/.github/workflows/libnice.yml new file mode 100644 index 0000000..39c3221 --- /dev/null +++ b/.github/workflows/libnice.yml @@ -0,0 +1,82 @@ +name: Libnice Build and Test + +on: + push: + branches: [ 'master', 'main', 'release/**' ] + pull_request: + branches: [ '*' ] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + libnice_build_test: + name: Libnice ${{ matrix.libnice_ref }} on ${{ matrix.os }} + timeout-minutes: 25 + strategy: + matrix: + os: [ ubuntu-latest ] + libnice_ref: [ 'master', '0.1.22', '0.1.21' ] + fail-fast: false + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v4 + + - name: Install build prerequisites + run: | + sudo apt-get update + sudo apt-get install -y gnulib autopoint gperf gtk-doc-tools nettle-dev clang libtasn1-bin libtasn1-6-dev libunistring-dev libp11-kit-dev libunbound-dev meson cmake meson ninja-build pkg-config python3-ply python3-jinja2 python3-yaml libyaml-dev libgtest-dev libglib2.0-dev + + - name: Build custom GnuTLS (wolfSSL provider) + run: | + GNUTLS_INSTALL=/opt/gnutls WOLFSSL_INSTALL=/opt/wolfssl ./setup.sh + + - name: Clone libnice @ ref + run: | + git clone https://github.com/libnice/libnice.git + cd libnice + if [ "${{ matrix.libnice_ref }}" != "master" ]; then + git checkout ${{ matrix.libnice_ref }} + fi + + - name: Configure & build with Meson/Ninja + working-directory: libnice + run: | + export PKG_CONFIG_PATH="/opt/gnutls/lib/pkgconfig:${PKG_CONFIG_PATH}" + export CPPFLAGS="-I/opt/gnutls/include ${CPPFLAGS}" + export LDFLAGS="-L/opt/gnutls/lib -Wl,-rpath,/opt/gnutls/lib ${LDFLAGS}" + export LD_LIBRARY_PATH="/opt/gnutls/lib:${LD_LIBRARY_PATH}" + meson setup build-gnutls + ninja -C build-gnutls + + - name: Verify libnice links to /opt/gnutls/lib/libgnutls + working-directory: libnice + run: | + export PKG_CONFIG_PATH="/opt/gnutls/lib/pkgconfig:${PKG_CONFIG_PATH}" + export CPPFLAGS="-I/opt/gnutls/include ${CPPFLAGS}" + export LDFLAGS="-L/opt/gnutls/lib -Wl,-rpath,/opt/gnutls/lib ${LDFLAGS}" + export LD_LIBRARY_PATH="/opt/gnutls/lib:${LD_LIBRARY_PATH}" + LIB=$(find build-gnutls/nice -name 'libnice*.so*' | head -n1) + if [ -z "$LIB" ]; then + echo "libnice shared library not found" >&2 + exit 1 + fi + if ldd "$LIB" | grep -q '/opt/gnutls/lib/libgnutls'; then + ldd "$LIB" | grep libgnutls + else + ldd "$LIB" | grep libgnutls || true + exit 1 + fi + + - name: Run unit tests + working-directory: libnice + run: | + export G_MESSAGES_DEBUG=all + export NICE_DEBUG=all + export PKG_CONFIG_PATH="/opt/gnutls/lib/pkgconfig:${PKG_CONFIG_PATH}" + export CPPFLAGS="-I/opt/gnutls/include ${CPPFLAGS}" + export LDFLAGS="-L/opt/gnutls/lib -Wl,-rpath,/opt/gnutls/lib ${LDFLAGS}" + export LD_LIBRARY_PATH="/opt/gnutls/lib:${LD_LIBRARY_PATH}" + ninja -C build-gnutls test