mconnect - KDE Connect protocol implementation in Vala/C
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

194 lines
4.7 KiB

#!/bin/bash -xe
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# AUTHORS
# Maciek Borzecki <maciek.borzecki (at] gmail.com>
# Travis build script. The script reexecs itself inside the container (setting
# IN_CONTAINER=1). The proceeds to install build dependencies and runs through
# the whole build process. Source tree is bind-mounted at /mnt and the container
# has its workdir set to /mnt
#
# NOTE: it is assumed that the script is run while at the top of source tree
# (i.e. $PWD is your checked out tree, this crucial for properly mounting the
# source code into the container).
deps_fedora() {
dnf install --best -y --refresh \
meson \
pkgconfig \
gcc \
vala \
gobject-introspection-devel \
json-glib-devel \
libgee-devel \
gnutls-devel \
libnotify-devel \
at-spi2-core-devel \
gtk3-devel \
glib-networking \
tree \
uncrustify \
diffutils
}
deps_opensuse() {
zypper install -y \
make \
meson \
pkgconfig \
gcc \
vala \
gobject-introspection-devel \
json-glib-devel \
libgee-devel \
gnutls-devel \
libnotify-devel \
at-spi2-core-devel \
gtk3-devel \
glib-networking \
tree \
uncrustify
}
deps_archlinux() {
pacman -Syu --noconfirm \
base-devel \
meson \
pkg-config \
gcc \
vala \
glib2 \
gobject-introspection \
json-glib \
libgee \
libnotify \
at-spi2-core \
gtk3 \
gnutls \
glib-networking \
tree \
uncrustify
}
deps_ubuntu() {
apt-get update && \
apt-get install -y \
meson \
pkg-config \
valac \
libgirepository1.0-dev \
libjson-glib-dev \
libgee-0.8-dev \
libgnutls28-dev \
libnotify-dev \
libgtk-3-dev \
glib-networking \
tree \
uncrustify
}
install_deps() {
case "$1" in
fedora)
deps_fedora
;;
opensuse)
deps_opensuse
;;
archlinux)
deps_archlinux
;;
ubuntu-bionic)
deps_ubuntu
;;
*)
echo "unsupported distro $1"
exit 1
esac
}
build() {
set -ex
./extra/fmt check || {
echo "WARNING: code formatting check failed"
[ -z "${SUPPRESS_FMT}" ] && false
}
mkdir -p build && \
cd build && \
meson .. && \
ninja && \
ninja test \
|| false
DESTDIR=$PWD/install-dir ninja install
(cd install-dir; LC_ALL=C tree -pan . > ../current-tree)
diff -up ../extra/install-tree current-tree
}
build_in_container() {
install_deps "$1"
# distro specific quirks
case "$1" in
ubuntu-*|opensuse|fedora)
echo "$1 is using an outdated version of uncrustify, suppress formatting errors"
export SUPPRESS_FMT=1
;;
esac
build
}
spin_container() {
case "$1" in
fedora)
DOCKER_IMG=fedora
;;
archlinux)
DOCKER_IMG=archlinux
;;
opensuse)
DOCKER_IMG=opensuse/tumbleweed
;;
ubuntu-bionic)
DOCKER_IMG=ubuntu:bionic
;;
*)
echo "unsupported distro $1"
exit 1
esac
engine="docker"
if ! command -v "$engine" 2>/dev/null ; then
engine="podman"
fi
# run a container, mount sources at /mnt, st
"$engine" run --rm \
-v "$PWD":/mnt \
-w /mnt \
-e IN_CONTAINER=1 \
"$DOCKER_IMG" \
/mnt/extra/travis-build "$@"
}
if [ -z "$NO_BUILD" ]; then
if [ "$IN_CONTAINER" = "1" ]; then
build_in_container "$@"
else
spin_container "$@"
fi
fi