|
|
- #!/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 \
- automake \
- autoconf \
- libtool \
- pkgconfig \
- gcc \
- vala \
- gobject-introspection-devel \
- json-glib-devel \
- libgee-devel \
- openssl-devel \
- libnotify-devel \
- at-spi2-core-devel \
- gtk3-devel
- }
-
- deps_opensuse() {
- zypper install -y \
- make \
- automake \
- autoconf \
- libtool \
- pkgconfig \
- gcc \
- vala \
- gobject-introspection-devel \
- json-glib-devel \
- libgee-devel \
- openssl-devel \
- libnotify-devel \
- at-spi2-core-devel \
- gtk3-devel
- }
-
- deps_archlinux() {
- pacman -Syu --noconfirm \
- base-devel \
- autoconf \
- automake \
- libtool \
- pkg-config \
- gcc \
- vala \
- glib2 \
- gobject-introspection \
- json-glib \
- libgee \
- openssl \
- libnotify \
- at-spi2-core \
- gtk3
- }
-
- install_deps() {
- case "$1" in
- fedora)
- deps_fedora
- ;;
- opensuse)
- deps_opensuse
- ;;
- archlinux)
- deps_archlinux
- ;;
- *)
- echo "unsupported distro $1"
- exit 1
- esac
- }
-
- build() {
- autoreconf -if
- # TODO: out of source builds
- ./configure
- make
- make install
- }
-
- build_in_container() {
- install_deps $1
-
- build
- }
-
- spin_container() {
- case "$1" in
- fedora)
- DOCKER_IMG=fedora
- ;;
- archlinux)
- DOCKER_IMG=base/archlinux
- ;;
- opensuse)
- DOCKER_IMG=opensuse:tumbleweed
- ;;
- *)
- echo "unsupported distro $1"
- exit 1
- esac
-
- # run a container, mount sources at /mnt, st
- docker run --rm \
- -v $PWD:/mnt \
- -w /mnt \
- -e IN_CONTAINER=1 \
- $DOCKER_IMG \
- /mnt/extra/travis-build "$@"
- }
-
- if [ "$IN_CONTAINER" = "1" ]; then
- build_in_container "$@"
- else
- spin_container "$@"
- fi
|