name: libnl3-ci on: push: pull_request: env: NLTST_IN_CI: 1 jobs: clang-format: runs-on: ubuntu-latest container: image: fedora:40 steps: - name: Install packages run: | sudo dnf install -y \ clang-tools-extra \ git - name: Check out repository code uses: actions/checkout@v3 - name: Setup git run: | git config --global --add safe.directory "$PWD" - name: Formatting with clang-format run: | clang-format --version ./tools/clang-format.sh -n ci: strategy: matrix: include: - cc: gcc - cc: clang runs-on: ubuntu-latest steps: - name: Install packages run: | sudo apt-get update sudo apt-get -y --no-install-recommends install \ check \ valgrind \ libtool-bin - name: Check out repository code uses: actions/checkout@v3 - name: Setup Python uses: actions/setup-python@v4 with: python-version: 3.x - name: Lint Python if: ${{ matrix.cc == 'gcc' }} run: | python3 -m pip install flake8 flake8 . --count --show-source --statistics - name: Code formatting with Python black if: ${{ matrix.cc == 'gcc' }} run: | python3 -m pip install black==22.12.0 black --check . - name: Build run: | set -x export CC="${{ matrix.cc }}" export CFLAGS="-DNL_MORE_ASSERTS=1000 -O2 -Werror -std=gnu11 -fexceptions" CONFIGURE_ARGS= if [ "$CC" = "clang" ]; then CFLAGS="$CFLAGS -Wno-error=unused-command-line-argument -Wno-error=unused-function" export LDFLAGS="-Wl,--no-undefined-version,--fatal-warnings" CONFIGURE_ARGS="--enable-debug=no" else export LDFLAGS="-Wl,--no-undefined-version" fi ./autogen.sh ./configure $CONFIGURE_ARGS make -j 15 shell: bash - name: Build Unit Tests run: | make -j 15 check-build - name: Run Unit Tests run: | set -x export NLTST_SEED_RAND= for i in `seq 1 5`; do tests/check-direct tests/check-all make -j 15 check || (cat ./test-suite.log; false) done - name: Run Unit Tests w/Valgrind run: | set -x export NLTST_SEED_RAND= CK_FORK=no libtool --mode=execute valgrind --error-exitcode=66 --leak-check=full -s --show-leak-kinds=all ./tests/check-direct CK_FORK=no libtool --mode=execute valgrind --error-exitcode=66 --leak-check=full -s --show-leak-kinds=all ./tests/check-all shell: bash - name: Install packages for Release run: | python3 -m pip install \ asciidoc \ graphviz \ pygments sudo apt-get -y --no-install-recommends install \ doxygen \ graphviz \ mscgen \ source-highlight - name: Build Release run: | set -x git clean -fdx export CC="${{ matrix.cc }}" NO_GPG_SIGN=1 ./tools/build_release.sh BuildAll - name: Build out-of-tree and disable-static run: | set -x git clean -fdx export CC="${{ matrix.cc }}" export CFLAGS="-Werror -std=gnu11 -fexceptions" if [ "$CC" = "clang" ]; then CFLAGS="$CFLAGS -Wno-error=unused-command-line-argument -Wno-error=unused-function" fi ./autogen.sh mkdir build cd build ../configure --disable-static make -j 15 make -j 15 check-build export NLTST_SEED_RAND= make -j 15 check || (cat ./test-suite.log; false) - name: Link with mold run: | sudo apt-get -y --no-install-recommends install \ mold git clean -fdx export LDFLAGS="-fuse-ld=mold -Wl,--fatal-warnings" ./autogen.sh ./configure make -j 15 V=1 - run: echo "🍏 This job's status is ${{ job.status }}." ci-alpine: runs-on: ubuntu-latest container: image: alpine:latest steps: - name: Install packages run: | apk add \ autoconf \ automake \ bash \ bison \ check-dev \ flex \ gcc \ git \ libtool \ linux-headers \ make \ musl-dev \ pkgconfig - name: Check out repository code uses: actions/checkout@v3 - name: Setup git run: | git config --global --add safe.directory "$PWD" - name: Build run: | set -x export CC="${{ matrix.cc }}" export CFLAGS="-DNL_MORE_ASSERTS=1000 -O2 -Werror -std=gnu11 -fexceptions" if [ "$CC" = "clang" ]; then CFLAGS="$CFLAGS -Wno-error=unused-command-line-argument -Wno-error=unused-function" export LDFLAGS="-Wl,--no-undefined-version,--fatal-warnings" else export LDFLAGS="-Wl,--no-undefined-version" fi ./autogen.sh ./configure make -j 15 - name: Build Unit Tests run: | make -j 15 check-build - name: Run Unit Tests run: | set -x export NLTST_SEED_RAND= for i in `seq 1 5`; do tests/check-direct # unshare() does not work (EPERM). This test currently cannot pass # (odd). # tests/check-all # make -j 15 check || (cat ./test-suite.log; false) done