aboutsummaryrefslogtreecommitdiffstats
path: root/meson/.github/workflows
diff options
context:
space:
mode:
authorAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
committerAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
commitaf1a266670d040d2f4083ff309d732d648afba2a (patch)
tree2fc46203448ddcc6f81546d379abfaeb323575e9 /meson/.github/workflows
parente02cda008591317b1625707ff8e115a4841aa889 (diff)
Add submodule dependency filesHEADmaster
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'meson/.github/workflows')
-rw-r--r--meson/.github/workflows/cygwin.yml96
-rw-r--r--meson/.github/workflows/file_format.yml17
-rw-r--r--meson/.github/workflows/images.yml62
-rw-r--r--meson/.github/workflows/lint_mypy.yml47
-rw-r--r--meson/.github/workflows/macos.yml98
-rw-r--r--meson/.github/workflows/msys2.yml104
-rw-r--r--meson/.github/workflows/nonative.yml38
-rw-r--r--meson/.github/workflows/os_comp.yml129
-rw-r--r--meson/.github/workflows/unusedargs_missingreturn.yml74
-rw-r--r--meson/.github/workflows/website.yml47
10 files changed, 712 insertions, 0 deletions
diff --git a/meson/.github/workflows/cygwin.yml b/meson/.github/workflows/cygwin.yml
new file mode 100644
index 000000000..224f82d41
--- /dev/null
+++ b/meson/.github/workflows/cygwin.yml
@@ -0,0 +1,96 @@
+name: cygwin
+
+concurrency:
+ group: cygwin-${{ github.head_ref }}
+ cancel-in-progress: true
+
+on:
+ push:
+ paths:
+ - "mesonbuild/**"
+ - "test cases/**"
+ - ".github/workflows/cygwin.yml"
+ - "run*tests.py"
+ pull_request:
+ paths:
+ - "mesonbuild/**"
+ - "test cases/**"
+ - ".github/workflows/cygwin.yml"
+ - "run*tests.py"
+
+jobs:
+ test:
+ runs-on: windows-latest
+ name: ${{ matrix.NAME }}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - NAME: gccx64ninja
+ ARCH: x86_64
+
+ steps:
+ # cache should be saved on failure, but the action doesn't support that
+ # https://github.com/actions/cache/issues/92
+ - uses: actions/cache@v1
+ with:
+ # should use 'pip3 cache dir' to discover this path
+ path: C:\cygwin\home\runneradmin\.cache\pip
+ key: cygwin-pip-${{ github.run_number }}
+ restore-keys: cygwin-pip-
+
+ - run: git config --global core.autocrlf input
+
+ - uses: actions/checkout@v2
+
+ - uses: cygwin/cygwin-install-action@master
+ with:
+ platform: ${{ matrix.ARCH }}
+ packages: |
+ cmake
+ gcc-fortran
+ gcc-objc++
+ gcc-objc
+ git
+ gobject-introspection
+ gtk-doc
+ libboost-devel
+ libglib2.0-devel
+ libgtk3-devel
+ libxml2-devel
+ libxslt-devel
+ ninja
+ python2-devel
+ python3-devel
+ python3-libxml2
+ python3-libxslt
+ python38-pip
+ python38-wheel
+ vala
+ zlib-devel
+
+ - name: Run pip
+ run: |
+ export PATH=/usr/bin:/usr/local/bin:$(cygpath ${SYSTEMROOT})/system32
+ python3 -m pip --disable-pip-version-check install gcovr jsonschema pefile pytest pytest-xdist coverage codecov
+ shell: C:\cygwin\bin\bash.exe --noprofile --norc -o igncr -eo pipefail '{0}'
+
+ - name: Run tests
+ run: |
+ export PATH=/usr/bin:/usr/local/bin:$(cygpath ${SYSTEMROOT})/system32
+ python3 ./tools/run_with_cov.py run_tests.py --backend=ninja
+ env:
+ # Cygwin's static boost installation is broken (some static library
+ # variants such as boost_thread are not present)
+ SKIP_STATIC_BOOST: 1
+ shell: C:\cygwin\bin\bash.exe --noprofile --norc -o igncr -eo pipefail '{0}'
+
+ - uses: actions/upload-artifact@v2
+ with:
+ name: ${{ matrix.NAME }}
+ path: meson-test-run.*
+ # test log should be saved on failure
+ if: ${{ !cancelled() }}
+
+ - name: Upload coverage report
+ run: ./ci/upload_cov.sh "${{ matrix.NAME }}"
diff --git a/meson/.github/workflows/file_format.yml b/meson/.github/workflows/file_format.yml
new file mode 100644
index 000000000..278fb297d
--- /dev/null
+++ b/meson/.github/workflows/file_format.yml
@@ -0,0 +1,17 @@
+name: File format check
+
+on: [push, pull_request]
+
+concurrency:
+ group: file_fmt-${{ github.head_ref }}
+ cancel-in-progress: true
+
+jobs:
+ format:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.x'
+ - run: python3 ./run_format_tests.py
diff --git a/meson/.github/workflows/images.yml b/meson/.github/workflows/images.yml
new file mode 100644
index 000000000..9c11f4d2d
--- /dev/null
+++ b/meson/.github/workflows/images.yml
@@ -0,0 +1,62 @@
+name: CI image builder
+
+concurrency:
+ group: img_builder-${{ github.head_ref }}
+ cancel-in-progress: true
+
+on:
+ push:
+ branches:
+ - master
+ paths:
+ - 'ci/ciimage/**'
+ - '.github/workflows/images.yml'
+
+ pull_request:
+ branches:
+ - master
+ paths:
+ - 'ci/ciimage/**'
+ - '.github/workflows/images.yml'
+
+ # Rebuild the images every week (Sunday)
+ schedule:
+ - cron: '0 0 * * 0'
+
+jobs:
+ build:
+ env:
+ HAS_DOCKER_CREDENTIALS: ${{ secrets.DOCKER_PASSWORD != '' }}
+ name: ${{ matrix.cfg.name }}
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ cfg:
+ - { name: Arch Linux, id: arch }
+ - { name: CUDA (on Arch), id: cuda }
+ - { name: Fedora, id: fedora }
+ - { name: OpenSUSE, id: opensuse }
+ - { name: Ubuntu Bionic, id: bionic }
+ - { name: Ubuntu Rolling, id: ubuntu-rolling }
+ steps:
+ - uses: actions/checkout@v2
+
+ # Login to dockerhub
+ - name: Docker login
+ if: (github.event_name == 'push' || github.event_name == 'schedule') && env.HAS_DOCKER_CREDENTIALS == 'true'
+ uses: azure/docker-login@v1
+ with:
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ # Build and test
+ - name: Building the ${{ matrix.cfg.id }} image
+ run: ./ci/ciimage/build.py -t build ${{ matrix.cfg.id }}
+ - name: Testing the ${{ matrix.cfg.id }} image
+ run: ./ci/ciimage/build.py -t test ${{ matrix.cfg.id }}
+
+ # Publish
+ - name: Push the ${{ matrix.cfg.id }} image
+ run: docker push mesonbuild/${{ matrix.cfg.id }}
+ if: (github.event_name == 'push' || github.event_name == 'schedule') && env.HAS_DOCKER_CREDENTIALS == 'true'
diff --git a/meson/.github/workflows/lint_mypy.yml b/meson/.github/workflows/lint_mypy.yml
new file mode 100644
index 000000000..195d733de
--- /dev/null
+++ b/meson/.github/workflows/lint_mypy.yml
@@ -0,0 +1,47 @@
+name: LintMypy
+
+concurrency:
+ group: mypy-${{ github.head_ref }}
+ cancel-in-progress: true
+
+on:
+ push:
+ paths:
+ - "**.py"
+ - ".github/workflows/lint_mypy.yml"
+ pull_request:
+ paths:
+ - "**.py"
+ - ".github/workflows/lint_mypy.yml"
+
+jobs:
+
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.x'
+ # pylint version constraint can be removed when https://github.com/PyCQA/pylint/issues/3524 is resolved
+ - run: python -m pip install pylint==2.4.4
+ - run: pylint mesonbuild
+
+ custom_lint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.x'
+ - run: python ./run_custom_lint.py
+
+ mypy:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.x'
+ - run: python -m pip install mypy
+ - run: python run_mypy.py
diff --git a/meson/.github/workflows/macos.yml b/meson/.github/workflows/macos.yml
new file mode 100644
index 000000000..90fc56b61
--- /dev/null
+++ b/meson/.github/workflows/macos.yml
@@ -0,0 +1,98 @@
+name: macos
+
+concurrency:
+ group: macos-${{ github.head_ref }}
+ cancel-in-progress: true
+
+on:
+ push:
+ paths:
+ - "mesonbuild/**"
+ - "test cases/**"
+ - ".github/workflows/macos.yml"
+ - "run_unittests.py"
+ pull_request:
+ paths:
+ - "mesonbuild/**"
+ - "test cases/**"
+ - ".github/workflows/macos.yml"
+ - "run_unittests.py"
+
+jobs:
+ unittests-appleclang:
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.x'
+ - run: |
+ python -m pip install --upgrade pip
+ python -m pip install pytest pytest-xdist jsonschema coverage codecov
+ - run: brew install pkg-config ninja llvm qt@5
+ - env:
+ CPPFLAGS: "-I/usr/local/include"
+ LDFLAGS: "-L/usr/local/lib"
+ MESON_UNIT_TEST_BACKEND: ninja
+ # These cannot evaluate anything, so we cannot set PATH or SDKROOT here
+ run: |
+ export SDKROOT="$(xcodebuild -version -sdk macosx Path)"
+ export PATH="$HOME/tools:/usr/local/opt/qt@5/bin:$PATH:$(brew --prefix llvm)/bin"
+ export PKG_CONFIG_PATH="/usr/local/opt/qt@5/lib/pkgconfig:$PKG_CONFIG_PATH"
+ ./tools/run_with_cov.py ./run_unittests.py
+ - name: Upload coverage report
+ run: ./ci/upload_cov.sh "appleclang [unit tests]"
+
+
+ project-tests-appleclang:
+ runs-on: macos-latest
+ strategy:
+ matrix:
+ unity: ["on", "off"]
+ steps:
+ - uses: actions/checkout@v2
+ # use python3 from homebrew because it is a valid framework, unlike the actions one:
+ # https://github.com/actions/setup-python/issues/58
+ - run: brew install pkg-config ninja llvm qt@5 boost ldc hdf5 openmpi lapack scalapack sdl2 python3
+ - run: |
+ python3 -m pip install --upgrade setuptools
+ python3 -m pip install --upgrade pip
+ python3 -m pip install cython coverage codecov
+ - env:
+ CPPFLAGS: "-I/usr/local/include"
+ LDFLAGS: "-L/usr/local/lib"
+ MESON_ARGS: --unity=${{ matrix.unity }}
+ CI: 1
+ # These cannot evaluate anything, so we cannot set PATH or SDKROOT here
+ run: |
+ export SDKROOT="$(xcodebuild -version -sdk macosx Path)"
+ export PATH="$HOME/tools:/usr/local/opt/qt@5/bin:$PATH:$(brew --prefix llvm)/bin"
+ export PKG_CONFIG_PATH="/usr/local/opt/qt@5/lib/pkgconfig:$PKG_CONFIG_PATH"
+ ./tools/run_with_cov.py ./run_project_tests.py --backend=ninja
+ - name: Upload coverage report
+ run: ./ci/upload_cov.sh "appleclang [project tests; unity=${{ matrix.unity }}]"
+
+ Qt4macos:
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.x'
+ - run: python -m pip install -e .
+ - run: brew install pkg-config ninja gcc
+ - run: brew tap cartr/qt4
+ - run: brew install qt@4
+ - run: meson setup "test cases/frameworks/4 qt" build -Drequired=qt4
+ - run: meson compile -C build
+ - uses: actions/upload-artifact@v1
+ if: failure()
+ with:
+ name: Qt4_Mac_build
+ path: build/meson-logs/meson-log.txt
+ - run: meson test -C build -v
+ - uses: actions/upload-artifact@v1
+ if: failure()
+ with:
+ name: Qt4_Mac_test
+ path: build/meson-logs/testlog.txt
diff --git a/meson/.github/workflows/msys2.yml b/meson/.github/workflows/msys2.yml
new file mode 100644
index 000000000..f0cfa5d28
--- /dev/null
+++ b/meson/.github/workflows/msys2.yml
@@ -0,0 +1,104 @@
+name: msys2
+
+concurrency:
+ group: msys2-${{ github.head_ref }}
+ cancel-in-progress: true
+
+on:
+ push:
+ paths:
+ - "mesonbuild/**"
+ - "test cases/**"
+ - ".github/workflows/msys2.yml"
+ - "run_unittests.py"
+ pull_request:
+ paths:
+ - "mesonbuild/**"
+ - "test cases/**"
+ - ".github/workflows/msys2.yml"
+ - "run_unittests.py"
+
+jobs:
+ test:
+ runs-on: windows-2019
+ name: ${{ matrix.NAME }}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - NAME: gccx86ninja
+ MSYSTEM: MINGW32
+ MSYS2_ARCH: i686
+ MSYS2_CURSES: ncurses
+ COMPILER: gcc
+ TOOLCHAIN: toolchain
+ - NAME: gccx64ninja
+ MSYSTEM: MINGW64
+ MSYS2_ARCH: x86_64
+ MSYS2_CURSES: pdcurses
+ COMPILER: gcc
+ TOOLCHAIN: toolchain
+ - NAME: clangx64ninja
+ MSYSTEM: MINGW64
+ MSYS2_ARCH: x86_64
+ MSYS2_CURSES:
+ COMPILER: clang
+ TOOLCHAIN: clang
+
+ defaults:
+ run:
+ shell: msys2 {0}
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - uses: msys2/setup-msys2@v2
+ with:
+ msystem: ${{ matrix.MSYSTEM }}
+ update: true
+ install: >-
+ base-devel
+ git
+ mercurial
+ lcov
+ mingw-w64-${{ matrix.MSYS2_ARCH }}-cmake
+ mingw-w64-${{ matrix.MSYS2_ARCH }}-glib2
+ mingw-w64-${{ matrix.MSYS2_ARCH }}-libxml2
+ mingw-w64-${{ matrix.MSYS2_ARCH }}-ninja
+ mingw-w64-${{ matrix.MSYS2_ARCH }}-pkg-config
+ mingw-w64-${{ matrix.MSYS2_ARCH }}-python2
+ mingw-w64-${{ matrix.MSYS2_ARCH }}-python
+ mingw-w64-${{ matrix.MSYS2_ARCH }}-python-lxml
+ mingw-w64-${{ matrix.MSYS2_ARCH }}-python-setuptools
+ mingw-w64-${{ matrix.MSYS2_ARCH }}-python-pip
+ mingw-w64-${{ matrix.MSYS2_ARCH }}-${{ matrix.TOOLCHAIN }}
+
+ - name: Install dependencies
+ run: |
+ python3 -m pip --disable-pip-version-check install gcovr jsonschema pefile pytest pytest-xdist coverage codecov
+
+ - name: Run Tests
+ run: |
+ export BOOST_ROOT=
+ export PATHEXT="$PATHEXT;.py"
+
+ if [[ '${{ matrix.COMPILER }}' == 'clang' ]]; then
+ export CC=clang
+ export CXX=clang++
+ export OBJC=clang
+ export OBJCXX=clang++
+ fi
+
+ if [[ "${{ matrix.MSYS2_CURSES }}" != "" ]]; then
+ pacman --noconfirm --needed -S mingw-w64-${{ matrix.MSYS2_ARCH }}-${{ matrix.MSYS2_CURSES }}
+ fi
+
+ MSYSTEM= python3 ./tools/run_with_cov.py run_tests.py --backend=ninja
+
+ - uses: actions/upload-artifact@v2
+ with:
+ name: ${{ matrix.NAME }}
+ path: meson-test-run.*
+
+ - name: Upload coverage report
+ run: ./ci/upload_cov.sh "${{ matrix.NAME }}"
diff --git a/meson/.github/workflows/nonative.yml b/meson/.github/workflows/nonative.yml
new file mode 100644
index 000000000..4adffbe14
--- /dev/null
+++ b/meson/.github/workflows/nonative.yml
@@ -0,0 +1,38 @@
+name: Cross-only compilation environment
+
+concurrency:
+ group: nonative-${{ github.head_ref }}
+ cancel-in-progress: true
+
+on:
+ push:
+ branches:
+ - master
+ # Stable branches such as 0.56 or the eventual 1.0
+ - '[0-9]+.[0-9]+'
+ paths:
+ - "mesonbuild/**"
+ - "test cases/**"
+ - ".github/workflows/nonative.yml"
+ - "run*tests.py"
+ pull_request:
+ paths:
+ - "mesonbuild/**"
+ - "test cases/**"
+ - ".github/workflows/nonative.yml"
+ - "run*tests.py"
+
+jobs:
+ cross-only-armhf:
+ runs-on: ubuntu-latest
+ container: mesonbuild/eoan:latest
+ steps:
+ - run: |
+ apt-get -y purge clang gcc gdc
+ apt-get -y autoremove
+ python3 -m pip install coverage codecov
+ - uses: actions/checkout@v2
+ - name: Run tests
+ run: bash -c 'source /ci/env_vars.sh; cd $GITHUB_WORKSPACE; ./tools/run_with_cov.py ./run_tests.py $CI_ARGS --cross ubuntu-armhf.json --cross-only'
+ - name: Upload coverage report
+ run: ./ci/upload_cov.sh "Ubuntu nonnative"
diff --git a/meson/.github/workflows/os_comp.yml b/meson/.github/workflows/os_comp.yml
new file mode 100644
index 000000000..fd716ce8d
--- /dev/null
+++ b/meson/.github/workflows/os_comp.yml
@@ -0,0 +1,129 @@
+name: linux
+
+concurrency:
+ group: linux-${{ github.head_ref }}
+ cancel-in-progress: true
+
+on:
+ push:
+ branches:
+ - master
+ # Stable branches such as 0.56 or the eventual 1.0
+ - '[0-9]+.[0-9]+'
+ paths:
+ - "mesonbuild/**"
+ - "test cases/**"
+ - ".github/workflows/images.yml"
+ - ".github/workflows/os_comp.yml"
+ - "run_unittests.py"
+ pull_request:
+ paths:
+ - "mesonbuild/**"
+ - "test cases/**"
+ - ".github/workflows/images.yml"
+ - ".github/workflows/os_comp.yml"
+ - "run_unittests.py"
+
+jobs:
+ arch:
+ name: ${{ matrix.cfg.name }}
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ cfg:
+ - { name: Arch Linux, id: arch }
+ - { name: CUDA (on Arch), id: cuda }
+ - { name: Fedora, id: fedora }
+ - { name: OpenSUSE, id: opensuse }
+ - { name: Ubuntu Bionic, id: bionic }
+ container: mesonbuild/${{ matrix.cfg.id }}:latest
+ env:
+ MESON_CI_JOBNAME: linux-${{ matrix.cfg.id }}-gcc
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Run tests
+ # All environment variables are stored inside the docker image in /ci/env_vars.sh
+ # They are defined in the `env` section in each image.json. CI_ARGS should be set
+ # via the `args` array ub the image.json
+ run: bash -c 'source /ci/env_vars.sh; cd $GITHUB_WORKSPACE; ./tools/run_with_cov.py ./run_tests.py $CI_ARGS'
+ - name: Upload coverage report
+ run: ./ci/upload_cov.sh "OS Comp [${{ matrix.cfg.name }}]"
+
+ ubuntu-rolling:
+ name: 'Ubuntu Rolling'
+ runs-on: ubuntu-latest
+
+ strategy:
+ fail-fast: false
+ matrix:
+ cfg:
+ - CC: 'gcc'
+ CXX: 'g++'
+ - MESON_ARGS: '--unity=on -Ddefault_library=static'
+ RUN_TESTS_ARGS: '--no-unittests'
+ CC: 'gcc'
+ CXX: 'g++'
+ - MESON_ARGS: '-Ddefault_library=both'
+ RUN_TESTS_ARGS: '--no-unittests'
+ CC: 'gcc'
+ CXX: 'g++'
+ - CC: 'clang'
+ CXX: 'clang++'
+ - MESON_ARGS: '--unity=on'
+ RUN_TESTS_ARGS: '--no-unittests'
+ CC: 'clang'
+ CXX: 'clang++'
+ - RUN_TESTS_ARGS: '--cross ubuntu-armhf.json --cross linux-mingw-w64-64bit.json'
+ MESON_RSP_THRESHOLD: '0'
+ CC: 'gcc'
+ CXX: 'g++'
+ - RUN_TESTS_ARGS: '--cross ubuntu-armhf.json --cross linux-mingw-w64-64bit.json'
+ MESON_ARGS: '--unity=on'
+ CC: 'gcc'
+ CXX: 'g++'
+
+ env:
+ MESON_CI_JOBNAME_UPDATE: linux-${{ github.job }}-${{ matrix.cfg.CC }}
+
+ container:
+ image: mesonbuild/ubuntu-rolling
+ env:
+ MESON_RSP_THRESHOLD: ${{ matrix.cfg.MESON_RSP_THRESHOLD }}
+ MESON_ARGS: ${{ matrix.cfg.MESON_ARGS }}
+ RUN_TESTS_ARGS: ${{ matrix.cfg.RUN_TESTS_ARGS }}
+ CC: ${{ matrix.cfg.CC }}
+ CXX: ${{ matrix.cfg.CXX }}
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Run tests
+ shell: bash
+ run: |
+ export HOME=/root
+
+ export CC=$CC
+ export CXX=$CXX
+ export OBJC=$CC
+ export OBJCXX=$CXX
+ export PATH=$(pwd)/tools:$PATH
+ if test "$MESON_RSP_THRESHOLD" != ""
+ then
+ export MESON_RSP_THRESHOLD=$MESON_RSP_THRESHOLD
+ fi
+
+ source /ci/env_vars.sh
+ export MESON_CI_JOBNAME=$MESON_CI_JOBNAME_UPDATE
+
+ update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
+ update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
+ update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix
+ update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix
+
+ ./tools/run_with_cov.py ./run_tests.py $RUN_TESTS_ARGS -- $MESON_ARGS
+
+ - name: Upload coverage report
+ run: ./ci/upload_cov.sh "Ubuntu [${{ matrix.cfg.CC }} ${{ matrix.cfg.RUN_TESTS_ARGS }} ${{ matrix.cfg.MESON_ARGS }}]"
diff --git a/meson/.github/workflows/unusedargs_missingreturn.yml b/meson/.github/workflows/unusedargs_missingreturn.yml
new file mode 100644
index 000000000..f5cf76c23
--- /dev/null
+++ b/meson/.github/workflows/unusedargs_missingreturn.yml
@@ -0,0 +1,74 @@
+name: UnusedMissingReturn
+# this workflow checks for
+# * unused input arguments
+# * missing return values
+# * strict prototypes
+# some users have default configs that will needlessly fail Meson self-tests due to these syntax.
+env:
+ CFLAGS: "-Werror=unused-parameter -Werror=return-type -Werror=strict-prototypes"
+ CPPFLAGS: "-Werror=unused-parameter -Werror=return-type"
+ FFLAGS: "-fimplicit-none"
+
+concurrency:
+ group: unusedargs-${{ github.head_ref }}
+ cancel-in-progress: true
+
+on:
+ push:
+ paths:
+ - ".github/workflows/unusedargs_missingreturn.yml"
+ - "test cases/cmake/**"
+ - "test cases/common/**"
+ - "test cases/fortran/**"
+ - "test cases/linuxlike/**"
+ - "test cases/objc/**"
+ - "test cases/objcpp/**"
+ - "test caes/windows/**"
+
+ pull_request:
+ paths:
+ - ".github/workflows/unusedargs_missingreturn.yml"
+ - "test cases/cmake/**"
+ - "test cases/common/**"
+ - "test cases/fortran/**"
+ - "test cases/linuxlike/**"
+ - "test cases/objc/**"
+ - "test cases/objcpp/**"
+ - "test caes/windows/**"
+
+jobs:
+
+ linux:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.x'
+ - name: Install Compilers
+ run: |
+ sudo apt update -yq
+ sudo apt install -yq --no-install-recommends g++ gfortran ninja-build gobjc gobjc++
+ python -m pip install coverage codecov
+ - run: ./tools/run_with_cov.py run_project_tests.py --only cmake common fortran platform-linux "objective c" "objective c++"
+ - name: Upload coverage report
+ run: ./ci/upload_cov.sh "UnusedMissingReturn"
+
+ windows:
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.x'
+
+ - run: pip install ninja pefile coverage codecov
+
+ - run: python ./tools/run_with_cov.py run_project_tests.py --only platform-windows
+ env:
+ CC: gcc
+ CXX: g++
+ FC: gfortran
+
+ - name: Upload coverage report
+ run: ./ci/upload_cov.sh "UnusedMissingReturn Windows"
diff --git a/meson/.github/workflows/website.yml b/meson/.github/workflows/website.yml
new file mode 100644
index 000000000..efb7fed7e
--- /dev/null
+++ b/meson/.github/workflows/website.yml
@@ -0,0 +1,47 @@
+name: Update website
+
+concurrency:
+ group: mesonbuild.com
+ # We do NOT want `cancel-in-progress` here since only one website job
+ # should run at a time to avoid upload race condtions.
+
+on:
+ push:
+ branches:
+ - master
+ paths:
+ - docs/**
+ workflow_dispatch:
+
+jobs:
+ update_website:
+ env:
+ HAS_SSH_KEY: ${{ secrets.WEBSITE_PRIV_KEY != '' }}
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Install package
+ run: |
+ sudo apt-get -y install python3-pip ninja-build libjson-glib-dev
+ pip install meson hotdoc
+ - name: Setup SSH Keys and known_hosts
+ env:
+ SSH_AUTH_SOCK: /tmp/ssh_agent.sock
+ run: |
+ ssh-agent -a $SSH_AUTH_SOCK > /dev/null
+ ssh-add - <<< "${{ secrets.WEBSITE_PRIV_KEY }}"
+ if: env.HAS_SSH_KEY == 'true'
+ - name: Build website
+ run: |
+ git config --global user.name "github-actions"
+ git config --global user.email "github-actions@github.com"
+ cd docs
+ meson setup _build
+ ninja -C _build
+ - name: Update website
+ env:
+ SSH_AUTH_SOCK: /tmp/ssh_agent.sock
+ run: |
+ cd docs
+ ninja -C _build upload
+ if: env.HAS_SSH_KEY == 'true'