| name: libyang CI |
| on: |
| push: |
| branches: |
| - master |
| - devel |
| pull_request: |
| branches: |
| - master |
| - devel |
| |
| jobs: |
| build-unix: |
| name: ${{ matrix.config.name }} |
| runs-on: ${{ matrix.config.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| config: |
| - { |
| name: "Release, gcc", |
| os: "ubuntu-22.04", |
| build-type: "Release", |
| cc: "gcc", |
| options: "-DENABLE_TESTS=ON", |
| packager: "sudo apt-get", |
| # no expect because stdout seems to be redirected |
| packages: "libcmocka-dev shunit2", |
| snaps: "", |
| make-prepend: "", |
| make-target: "" |
| } |
| - { |
| name: "Release, clang", |
| os: "ubuntu-22.04", |
| build-type: "Release", |
| cc: "clang", |
| options: "-DENABLE_TESTS=ON", |
| packager: "sudo apt-get", |
| packages: "libcmocka-dev shunit2", |
| snaps: "", |
| make-prepend: "", |
| make-target: "" |
| } |
| - { |
| name: "Debug, gcc", |
| os: "ubuntu-22.04", |
| build-type: "Debug", |
| cc: "gcc", |
| options: "", |
| packager: "sudo apt-get", |
| packages: "libcmocka-dev valgrind shunit2", |
| snaps: "", |
| make-prepend: "", |
| make-target: "" |
| } |
| - { |
| name: "Debug, clang", |
| os: "ubuntu-22.04", |
| build-type: "Debug", |
| cc: "clang", |
| options: "", |
| packager: "sudo apt-get", |
| # no valgrind because it does not support DWARF5 yet generated by clang 14 |
| packages: "libcmocka-dev shunit2", |
| snaps: "", |
| make-prepend: "", |
| make-target: "" |
| } |
| - { |
| name: "Release, macOS 11, clang", |
| os: "macos-11", |
| build-type: "Release", |
| cc: "clang", |
| options: "-DENABLE_TESTS=ON -DPATH_EXPECT=", |
| packager: "brew", |
| packages: "cmocka shunit2", |
| snaps: "", |
| make-prepend: "", |
| make-target: "" |
| } |
| - { |
| name: "ASAN and UBSAN", |
| os: "ubuntu-22.04", |
| build-type: "Debug", |
| cc: "clang", |
| options: "-DCMAKE_C_FLAGS=-fsanitize=address,undefined -DENABLE_TESTS=ON -DENABLE_VALGRIND_TESTS=OFF", |
| packager: "sudo apt-get", |
| packages: "libcmocka-dev", |
| snaps: "", |
| make-prepend: "", |
| make-target: "" |
| } |
| - { |
| name: "ABI Check", |
| os: "ubuntu-22.04", |
| build-type: "ABICheck", |
| cc: "gcc", |
| options: "", |
| packager: "sudo apt-get", |
| packages: "libcmocka-dev abi-dumper abi-compliance-checker", |
| snaps: "core universal-ctags", |
| make-prepend: "", |
| make-target: "abi-check" |
| } |
| |
| steps: |
| - uses: actions/checkout@v3 |
| |
| - name: Deps-packages |
| shell: bash |
| run: | |
| ${{ matrix.config.packager }} update |
| if ${{ matrix.config.packages != '' }} |
| then ${{ matrix.config.packager }} install ${{ matrix.config.packages }} |
| fi |
| if ${{ matrix.config.snaps != '' }} |
| then sudo snap install ${{ matrix.config.snaps }} |
| fi |
| |
| - name: Deps-uncrustify |
| shell: bash |
| working-directory: ${{ github.workspace }} |
| run: | |
| git clone --branch uncrustify-0.75.1 https://github.com/uncrustify/uncrustify |
| cd uncrustify |
| mkdir build |
| cd build |
| CC=${{ matrix.config.cc }} cmake .. |
| make |
| sudo make install |
| if: ${{ matrix.config.name == 'Debug, gcc' }} |
| |
| - name: Configure |
| shell: bash |
| working-directory: ${{ github.workspace }} |
| run: | |
| mkdir build |
| cd build |
| CC=${{ matrix.config.cc }} cmake -DCMAKE_BUILD_TYPE=${{ matrix.config.build-type }} ${{ matrix.config.options }} .. |
| |
| - name: Build |
| shell: bash |
| working-directory: ${{ github.workspace }}/build |
| run: | |
| export LC_ALL=C.UTF-8 |
| export PATH=/snap/bin:${{ github.workspace }}/coverity-tools/bin:$PATH |
| ${{ matrix.config.make-prepend }} make ${{ matrix.config.make-target }} |
| |
| - name: Test |
| shell: bash |
| working-directory: ${{ github.workspace }}/build |
| run: ctest --output-on-failure |
| |
| build-windows: |
| name: ${{ matrix.name }} |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - name: "Windows 2022 MSVC 16 LF" |
| os: windows-2022 |
| triplet: x64-windows |
| build_type: Release |
| generators: "Visual Studio 17 2022" |
| autocrlf: input |
| eol: lf |
| |
| - name: "Windows 2022 MSVC 16 no autoCRLF" |
| os: windows-2022 |
| triplet: x64-windows |
| build_type: Release |
| generators: "Visual Studio 17 2022" |
| |
| steps: |
| - name: Unix line endings in git |
| if: matrix.autocrlf |
| run: | |
| git config --global core.autocrlf ${{ matrix.autocrlf }} |
| |
| - name: Unix line endings in git |
| if: matrix.eol |
| run: | |
| git config --global core.eol ${{ matrix.eol }} |
| |
| - uses: actions/checkout@v3 |
| |
| - name: Get number of CPU cores |
| id: cpu-cores |
| uses: SimenB/github-actions-cpu-cores@v1 |
| |
| - name: Install Windows dependencies |
| run: vcpkg install --triplet=${{ matrix.triplet }} pcre2 pthreads dirent dlfcn-win32 cmocka getopt |
| |
| - name: Configure |
| shell: bash |
| run: | |
| cmake \ |
| -S '${{ github.workspace }}/' \ |
| -B '${{ github.workspace }}/'../build \ |
| -G '${{ matrix.generators }}' \ |
| -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ |
| -DVCPKG_TARGET_TRIPLET=${{ matrix.triplet }} \ |
| -DCMAKE_TOOLCHAIN_FILE=${VCPKG_INSTALLATION_ROOT//\\//}/scripts/buildsystems/vcpkg.cmake \ |
| -DENABLE_TESTS=ON \ |
| '-DCMAKE_INSTALL_PREFIX:PATH=${{ github.workspace }}'/../target |
| |
| - name: Build |
| working-directory: '${{ github.workspace }}/../build' |
| run: cmake --build . -j${{ steps.cpu-cores.outputs.count }} --config ${{ matrix.build_type }} |
| |
| - name: Test |
| working-directory: '${{ github.workspace }}/../build' |
| run: ctest --output-on-failure -j${{ steps.cpu-cores.outputs.count }} --build-config ${{ matrix.build_type }} |
| |
| - name: Install |
| working-directory: '${{ github.workspace }}/../build' |
| run: cmake --install . --strip |