#!/usr/bin/bash set -e set -o pipefail NAME="mate-desktop" TEMP_DIR=$(mktemp -d) OS=$(cat /etc/os-release | grep ^ID | head -n 1 | awk -F= '{ print $2}') TAG=$1 CACHE_DIR=$2 # Use grouped output messages infobegin() { echo "::group::${1}" } infoend() { echo "::endgroup::" } # Required packages to build mate-desktop # https://gitlab.archlinux.org/archlinux/packaging/packages/mate-desktop arch_requires=( autoconf-archive gobject-introspection mate-common intltool ) # https://salsa.debian.org/debian-mate-team/mate-desktop/-/blob/master/debian/control debian_requires=( autoconf-archive gobject-introspection gtk-doc-tools intltool iso-codes libdconf-dev libgdk-pixbuf-2.0-dev libgirepository1.0-dev libglib2.0-dev libglib2.0-doc libgtk-3-dev libgtk-3-doc librsvg2-bin libstartup-notification0-dev libx11-dev libxml2-dev libxrandr-dev mate-common ) # https://src.fedoraproject.org/rpms/mate-desktop/blob/rawhide/f/mate-desktop.spec fedora_requires=( dconf-devel desktop-file-utils gobject-introspection-devel make mate-common startup-notification-devel gtk3-devel iso-codes-devel gobject-introspection-devel cairo-gobject-devel ) # https://git.launchpad.net/ubuntu/+source/mate-desktop/tree/debian/control ubuntu_requires=( autoconf-archive gobject-introspection gtk-doc-tools intltool iso-codes libdconf-dev libgdk-pixbuf-2.0-dev libgirepository1.0-dev libglib2.0-dev libglib2.0-doc libgtk-3-dev libgtk-3-doc librsvg2-bin libstartup-notification0-dev libx11-dev libxml2-dev libxrandr-dev mate-common ) requires=$(eval echo '${'"${OS}_requires[@]}") infobegin "Install Depends for mate-desktop" case ${OS} in arch) pacman --noconfirm -Syu pacman --noconfirm -S ${requires[@]} ;; debian | ubuntu) apt-get update -qq env DEBIAN_FRONTEND=noninteractive \ apt-get install --assume-yes --no-install-recommends ${requires[@]} ;; fedora) dnf update -y dnf install -y ${requires[@]} ;; esac infoend # Use cached packages first if [ -f $CACHE_DIR/${NAME}-${TAG}.tar.xz ]; then echo "Found cache package, reuse it" tar -C / -Jxf $CACHE_DIR/${NAME}-${TAG}.tar.xz else git clone --recurse-submodules https://github.com/mate-desktop/${NAME} # Foldable output information infobegin "Configure" cd ${NAME} git checkout v${TAG} if [[ ${OS} == "debian" || ${OS} == "ubuntu" ]]; then ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu || { cat config.log exit 1 } else ./autogen.sh --prefix=/usr || { cat config.log exit 1 } fi infoend infobegin "Build" make -j ${JOBS} infoend infobegin "Install" make install infoend # Cache this package version infobegin "Cache" [ -d ${CACHE_DIR} ] || mkdir -p ${CACHE_DIR} make install DESTDIR=${TEMP_DIR} cd $TEMP_DIR tar -J -cf $CACHE_DIR/${NAME}-${TAG}.tar.xz * infoend fi