#!/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 debian_requires=( libgirepository1.0-dev yelp-tools iso-codes gobject-introspection ) fedora_requires=( iso-codes gobject-introspection ) ubuntu_requires=( libgirepository1.0-dev yelp-tools iso-codes gobject-introspection ) 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