summaryrefslogtreecommitdiff
path: root/.github/workflows/build.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/build.yml')
-rw-r--r--.github/workflows/build.yml280
1 files changed, 0 insertions, 280 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
deleted file mode 100644
index d1febfd6..00000000
--- a/.github/workflows/build.yml
+++ /dev/null
@@ -1,280 +0,0 @@
-name: CI Build
-
-on:
- push:
- branches:
- - master
- pull_request:
- branches:
- - master
- workflow_dispatch:
-
-# cancel already running builds of the same branch or pull request
-concurrency:
- group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.head_ref || github.sha }}
- cancel-in-progress: true
-
-env:
- MATE_PANEL_DEP: 1.28.2
- CONFIGURE_FLAGS: --enable-compile-warnings=maximum
- CFLAGS: -g -O2 -Werror=pointer-arith -Werror=implicit-function-declaration
- JOBS: 2
- DEBUG: 1
- # Useful URL: https://github.com/mate-desktop/debian-packages
- # Useful URL: https://salsa.debian.org/debian-mate-team/mate-panel
- DEB_LIBRARY_DEPS: |
- libatk1.0-dev
- libcairo2-dev
- libdconf-dev
- libgirepository1.0-dev
- libglib2.0-dev
- libgtk-3-dev
- libgtk-layer-shell-dev
- libice-dev
- libmate-desktop-dev
- libmate-menu-dev
- libmateweather-dev
- libpango1.0-dev
- libsm-dev
- libsoup-3.0-dev
- libwnck-3-dev
- libx11-dev
- libxrandr-dev
- # mate-desktop dependencies
- DEB_LIBRARY_DEPS_MATE_DESKTOP: |
- libgirepository1.0-dev
- DEB_BUILD_DEPS: |
- ccache
- autoconf-archive
- autopoint
- gir1.2-freedesktop
- git
- gobject-introspection
- gtk-doc-tools
- lsb-release
- make
- mate-common
- meson
- yelp-tools
- # mate-desktop dependencies
- DEB_BUILD_DEPS_MATE_DESKTOP: |
- iso-codes
- gobject-introspection
- # TODO
- DEB_SCAN_BUILD_DEPS: |
- clang
- clang-tools
- # Useful URL: https://git.archlinux.org/svntogit/community.git/tree/mate-panel
- ARCH_BUILD_DEPS: |
- ccache
- autoconf-archive
- clang
- gcc
- git
- glib2-devel
- gobject-introspection
- gtk-layer-shell
- itstool
- libcanberra
- libmateweather
- libsm
- libwnck3
- make
- mate-common
- mate-desktop
- mate-menus
- meson
- which
- yelp-tools
- # mate-desktop dependencies
- ARCH_BUILD_DEPS_MATE_DESKTOP: |
- iso-codes
- gobject-introspection
-
-jobs:
- build:
- name: Build on ${{matrix.container}} with in-process=${{matrix.in-process}} (using ${{matrix.cc}})
- runs-on: ubuntu-latest
- container: ${{matrix.container}}
-
- strategy:
- fail-fast: false # don't cancel other jobs in the matrix if one fails
- matrix:
- in-process: [all, none]
- container: ['debian:testing', 'ubuntu:rolling', 'archlinux:latest']
- cc: ['gcc']
- cxx: ['g++']
- include:
- # test with clang on archlinux:latest
- - container: 'archlinux:latest'
- cc: 'clang'
- cxx: 'clang++'
- in-process: all
- - container: 'archlinux:latest'
- cc: 'clang'
- cxx: 'clang++'
- in-process: none
-
- env:
- # Speed up build with ccache
- CC: ccache ${{matrix.cc}}
- CXX: ccache ${{matrix.cxx}}
- # root install path for the mate-desktop dependency
- MATE_DESKTOP_INSTALL_PATH: ${{github.workspace}}/mate-desktop-install
-
- steps:
- # We can't *extend* the environment in 'env' directly, so use GITHUB_ENV
- # output variable to do so.
- - name: Setup environment
- run: |
- echo "PATH=${MATE_DESKTOP_INSTALL_PATH}/bin:${PATH}" >> "$GITHUB_ENV"
- echo "PKG_CONFIG_PATH=${MATE_DESKTOP_INSTALL_PATH}/lib/pkgconfig:${PKG_CONFIG_PATH}" >> "$GITHUB_ENV"
-
- # Debugging
- - name: Show environment
- run: env | sort
- if: ${{ env.DEBUG == '1' }}
-
- # For Debian and Ubuntu (apt-based with reasonably compatible packages)
- - name: Install dependencies
- if: ${{ startsWith(matrix.container, 'debian:') || startsWith(matrix.container, 'ubuntu:') }}
- run: |
- apt-get update -qq
- apt-get install --assume-yes --no-install-recommends \
- ${DEB_BUILD_DEPS} ${DEB_BUILD_DEPS_MATE_DESKTOP} \
- ${DEB_LIBRARY_DEPS} ${DEB_LIBRARY_DEPS_MATE_DESKTOP}
-
- # For ArchLinux
- - name: Install dependencies
- if: ${{ startsWith(matrix.container, 'archlinux:') }}
- # don't upgrade, although told otherwise (see link below), because
- # apparently in the container it doesn't quit work...
- # https://wiki.archlinux.org/title/System_maintenance#Partial_upgrades_are_unsupported
- run: |
- pacman --noconfirm -Syu
- pacman --noconfirm -S ${ARCH_BUILD_DEPS} ${ARCH_BUILD_DEPS_MATE_DESKTOP}
-
- # Checkout the repository
- - uses: actions/checkout@v3
- with:
- path: mate-panel
- submodules: true
-
- # Setup ccache cache
- - name: ccache
- uses: hendrikmuhs/[email protected]
- with:
- key: ${{ github.job }}-${{ matrix.container }}-${{ matrix.cc }}
-
- # Cache the build of the mate-desktop dependency
- - name: Cache mate-desktop v${{env.MATE_PANEL_DEP}} dependency
- uses: actions/cache@v3
- id: cache-mate-desktop
- with:
- path: ${{env.MATE_DESKTOP_INSTALL_PATH}}
- # We try and be as specific as possible not to use the wrongly cached
- # build, as this is a *binary*.
- key: ${{runner.os}}-${{runner.arch}}-${{matrix.container}}-build-mate-desktop-${{env.MATE_PANEL_DEP}}
-
- # Checkout mate-desktop dep, if not already cached
- - name: Checkout mate-desktop v${{env.MATE_PANEL_DEP}}
- uses: actions/checkout@v3
- if: ${{ steps.cache-mate-desktop.outputs.cache-hit != 'true' }}
- with:
- repository: mate-desktop/mate-desktop
- ref: v${{env.MATE_PANEL_DEP}}
- path: mate-desktop
- submodules: true
-
- # Build and install mate-desktop dep, if not already cached
- - name: Install mate-desktop v${{env.MATE_PANEL_DEP}}
- if: ${{ steps.cache-mate-desktop.outputs.cache-hit != 'true' }}
- run: |
- cd mate-desktop
- NOCONFIGURE=1 ./autogen.sh
- { ./configure --prefix="${MATE_DESKTOP_INSTALL_PATH}" || { cat config.log; exit 1; } ; }
- make -j ${{ env.JOBS }}
- make -j ${{ env.JOBS }} install
-
- # Follows regular mate-panel build and test steps
-
- - name: Configure
- run: |
- cd mate-panel
- NOCONFIGURE=1 ./autogen.sh
- { ./configure ${CONFIGURE_FLAGS} --with-in-process-applets=${{matrix.in-process}} || { cat config.log; exit 1; } ; }
-
- - name: Build
- run: make -C mate-panel -j ${{ env.JOBS }}
-
- - name: Run Tests
- run: make -C mate-panel -j ${{ env.JOBS }} check
-
- - name: Run distcheck
- # We only run distcheck on one container, because it takes time and
- # doesn't seem so useful to repeat everywhere -- it mostly checks the
- # build system itself, rather than the build.
- if: ${{ startsWith(matrix.container, 'debian:') }}
- run: make -C mate-panel -j ${{ env.JOBS }} distcheck
-
- # Do we need the real build for cppcheck run? I don't think so
- cppcheck:
- name: Run cppcheck
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
-
- # Install code dependencies so that cppcheck has more info
- - name: Install dependencies
- run: |
- sudo apt-get update -qq
- sudo apt-get install --assume-yes --no-install-recommends \
- cppcheck ${DEB_LIBRARY_DEPS} ${DEB_LIBRARY_DEPS_MATE_DESKTOP}
-
- # - define relevant configuration I can think of
- # - X11-related stuff
- # - Wayland-related stuff
- # - in-process for Wayland
- # - optional features
- # - _Noreturn: this is to avoid false positive with functions that
- # don't return, like g_assert(false). Here, we rely on G_NORETURN
- # (GLib 2.68+) using _Noreturn C11 attribute if __STDC_VERSION__ is
- # high enough (cppcheck sets it for us in newer versions, but not on
- # here yet); but the version of cppcheck we run on don't know about
- # the C11 attribute, so map it to the GCC one it does know.
- # This is a tad over-specific, but it removes some spurious warnings,
- # and defining e.g. __GNUC__=12 is simpler, but is a *lot* slower
- # (more than 3 times slower), and doesn't seem to yield other
- # benefits for the moment.
- # - -I flags from pkg-config (grepped from configure.ac)
- # - ignore non-source directories
- - name: cppcheck
- env:
- checks: warning,style,performance,portability,information,missingInclude
- defines: >
- -DHAVE_X11 -DHAVE_RANDR
- -DHAVE_WAYLAND
- -DCLOCK_INPROCESS -DFISH_INPROCESS -DNOTIFICATION_AREA_INPROCESS -DWNCKLET_INPROCESS
- -DHAVE_LANGINFO_H -DHAVE_NL_LANGINFO
- -DGETTEXT_PACKAGE="mate-panel"
- -D__STDC_VERSION__=201112 -D_Noreturn=__attribute__((__noreturn__))
- packages: >
- gdk-pixbuf-2.0
- gio-unix-2.0
- gmodule-2.0
- gtk+-3.0
- ice
- libwnck-3.0
- mate-desktop-2.0
- sm
- run: |
- cppcheck --enable="$checks" \
- -j $JOBS \
- $defines \
- $(pkg-config --cflags-only-I $packages) \
- -i gtk-layer-shell-build \
- -i mate-panel/mate-submodules/ \
- .