ci: refactor all build steps into separate build scripts

this moves each step of the ci build into a separate script with the build
type passed as an argument, allowing for easier modification of each individual
step as necessary and making travis.yml more readable

Differential Revision: https://phab.enlightenment.org/D6604

also includes:
ci: break out make commands into travis.yml from build scripts

this simplifies the platform-specific build scripts to only perform
the configure stage of the build (and any additional setup) and then
uses standardized commands for the build

in addition to being simpler, this will also provide more/better info
about build timings

ref D6603
This commit is contained in:
Mike Blumenkrantz 2018-07-10 12:14:27 -04:00 committed by Stefan Schmidt
parent 24e5aa668a
commit 45988ac6c0
11 changed files with 169 additions and 87 deletions

View File

@ -5,7 +5,7 @@ set -e
cd /
#clone our examples from efl
git clone http://git.enlightenment.org/tools/examples.git/
git clone --depth=1 -b master http://git.enlightenment.org/tools/examples.git/
cd examples/apps/c/life/

67
.ci/ci-configure.sh Executable file
View File

@ -0,0 +1,67 @@
#!/bin/sh
set -e
CI_BUILD_TYPE="$1"
export MAKEFLAGS="-j5"
export EIO_MONITOR_POLL=1
DEFAULT_LINUX_COPTS="--prefix=/usr/ --with-tests=regular --disable-cxx-bindings"
WAYLAND_LINUX_COPTS=" --enable-wayland --enable-elput --enable-drm \
--enable-wayland-ivi-shell --enable-gl-drm --with-opengl=es --enable-egl"
MISC_LINUX_COPTS=" --enable-harfbuzz --enable-liblz4 --enable-image-loader-webp --enable-xinput22 \
--enable-multisense --enable-lua-old --enable-xpresent --enable-hyphen \
--enable-pixman --enable-pixman-font --enable-pixman-rect --enable-pixman-line \
--enable-pixman-poly --enable-pixman-image --enable-pixman-image-scale-sample \
--enable-image-loader-generic --enable-libuv --enable-tile-rotate --enable-vnc-server \
--enable-sdl --enable-fb --enable-v4l2 --enable-cserve --enable-always-build-examples \
--enable-ecore-wayland --enable-ecore-drm --enable-cancel-ok --with-crypto=gnutls \
--enable-debug --disable-gstreamer1 --enable-gstreamer"
MISC_DISABLED_LINUX_COPTS=" --disable-neon --disable-libeeze --disable-systemd --disable-magic-debug \
--disable-valgrind --disable-gstreamer1 \
--disable-fontconfig --disable-fribidi --disable-poppler --disable-spectre --disable-libraw \
--disable-librsvg --disable-xcf --disable-libmount --disable-tslib --disable-audio \
--disable-pulseaudio --disable-avahi --disable-xinput2 --disable-xim --disable-scim \
--disable-ibus --disable-physics --disable-quick-launch --disable-elua"
RELEASE_READY_LINUX_COPTS=" --with-profile=release"
if [ "$DISTRO" != "" ] ; then
# Normal build test of all targets
OPTS="$DEFAULT_LINUX_COPTS"
if [ "$1" = "wayland" ]; then
OPTS="$OPTS $WAYLAND_LINUX_COPTS"
fi
if [ "$1" = "misc" ]; then
OPTS="$OPTS $MISC_LINUX_COPTS"
fi
if [ "$1" = "misc-disabled" ]; then
OPTS="$OPTS $MISC_DISABLED_LINUX_COPTS"
fi
if [ "$1" = "release-ready" ]; then
OPTS="$OPTS $RELEASE_READY_LINUX_COPTS"
fi
docker run --env MAKEFLAGS="-j5" --env EIO_MONITOR_POLL=1 -v `pwd`:/src -w /src stefanschmidt1/ci-support-files:$DISTRO ./autogen.sh $OPTS
else
OSX_COPTS="--disable-cxx-bindings"
# Prepare OSX env for build
mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/d-bus/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/org.freedesktop.dbus-session.plist
export PATH="$(brew --prefix gettext)/bin:$PATH"
export CFLAGS="-I/usr/local/opt/openssl/include $CFLAGS"
export LDFLAGS="-L/usr/local/opt/openssl/lib $LDFLAGS"
# Normal build test of all targets
./autogen.sh $OSX_COPTS
fi

View File

@ -1,63 +0,0 @@
#!/bin/sh
set -e
CI_BUILD_TYPE=$1
DEFAULT_COPTS="--prefix=/usr/ --with-tests=regular --disable-cxx-bindings"
WAYLAND_COPTS="--with-tests=regular --enable-wayland --enable-elput --enable-drm \
--enable-wayland-ivi-shell --enable-gl-drm --with-opengl=es --enable-egl"
MISC_COPTS="--enable-harfbuzz --enable-liblz4 --enable-image-loader-webp --enable-xinput22 \
--enable-multisense --enable-lua-old --enable-xpresent --enable-hyphen \
--enable-pixman --enable-pixman-font --enable-pixman-rect --enable-pixman-line \
--enable-pixman-poly --enable-pixman-image --enable-pixman-image-scale-sample \
--enable-image-loader-generic --enable-libuv --enable-tile-rotate --enable-vnc-server \
--enable-sdl --enable-fb --enable-v4l2 --enable-cserve --enable-always-build-examples \
--enable-ecore-wayland --enable-ecore-drm --enable-cancel-ok --with-crypto=gnutls \
--enable-debug --disable-gstreamer1 --enable-gstreamer"
MISC_DISABLED_COPTS="--disable-neon --disable-libeeze --disable-systemd --disable-magic-debug \
--disable-valgrind --disable-cxx-bindings --disable-gstreamer1 \
--disable-fontconfig --disable-fribidi --disable-poppler --disable-spectre --disable-libraw \
--disable-librsvg --disable-xcf --disable-libmount --disable-tslib --disable-audio \
--disable-pulseaudio --disable-avahi --disable-xinput2 --disable-xim --disable-scim \
--disable-ibus --disable-physics --disable-quick-launch --disable-elua"
RELEASE_READY_COPTS="--with-profile=release"
if [ "$CI_BUILD_TYPE" = "" ]; then
# Normal build test of all targets
./autogen.sh $DEFAULT_COPTS
make
make check-build
make examples
make benchmark
make install
./.ci/build-efl-app.sh
fi
if [ "$CI_BUILD_TYPE" = "wayland" ]; then
./autogen.sh $WAYLAND_COPTS
make
make examples
fi
if [ "$CI_BUILD_TYPE" = "misc" ]; then
./autogen.sh $MISC_COPTS
make
make examples
fi
if [ "$CI_BUILD_TYPE" = "misc-disabled" ]; then
./autogen.sh $MISC_DISABLED_COPTS
make
make examples
fi
if [ "$CI_BUILD_TYPE" = "release-ready" ]; then
./autogen.sh $RELEASE_READY_COPTS
make
make distcheck
fi

14
.ci/ci-make-benchmark.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
set -e
if [ "$1" = "release-ready" ] ; then
exit 0
fi
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make benchmark
else
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
make benchmark
fi

14
.ci/ci-make-checkbuild.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
set -e
if [ "$1" = "release-ready" ] ; then
exit 0
fi
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make check-build
else
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
make check-build
fi

14
.ci/ci-make-distcheck.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
set -e
if [ "$1" != "release-ready" ] ; then
exit 0
fi
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make distcheck
else
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
make
fi

14
.ci/ci-make-examples.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
set -e
if [ "$1" = "release-ready" ] ; then
exit 0
fi
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make examples
else
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
make examples
fi

14
.ci/ci-make-install.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
set -e
if [ "$1" = "release-ready" ] ; then
exit 0
fi
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make install
else
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
make install
fi

10
.ci/ci-make.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/sh
set -e
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make
else
export PATH="$(brew --prefix gettext)/bin:$PATH"
make
fi

View File

@ -1,20 +0,0 @@
#!/bin/sh
set -e
COPTS="--disable-cxx-bindings"
# Prepare OSX env for build
mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/d-bus/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/org.freedesktop.dbus-session.plist
export PATH="$(brew --prefix gettext)/bin:$PATH"
export CFLAGS="-I/usr/local/opt/openssl/include $CFLAGS"
export LDFLAGS="-L/usr/local/opt/openssl/lib $LDFLAGS"
# Normal build test of all targets
./autogen.sh $COPTS $@
make
make examples
#make benchmark

View File

@ -52,6 +52,7 @@ matrix:
- os: osx
env:
DISTRO=Archlinux
- os: linux
env:
allow_failures:
@ -66,13 +67,30 @@ before_script:
if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$DISTRO" != "" ]]; then
docker pull stefanschmidt1/ci-support-files:$DISTRO
fi
- |
if [[ "$TRAVIS_OS_NAME" == "linux" ]] ; then
docker version
docker run --cidfile $HOME/cid -t -d -v `pwd`:/src -w /src stefanschmidt1/ci-support-files:$DISTRO bash
cat $HOME/cid
fi
script:
- .ci/ci-configure.sh "$CI_BUILD_TYPE"
- .ci/ci-make.sh "$CI_BUILD_TYPE"
- .ci/ci-make-checkbuild.sh "$CI_BUILD_TYPE"
- .ci/ci-make-examples.sh "$CI_BUILD_TYPE"
- |
if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$DISTRO" != "" ]]; then
docker run -v `pwd`:/src -w /src stefanschmidt1/ci-support-files:$DISTRO /src/.ci/ci-linux-build.sh $CI_BUILD_TYPE
if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$CI_BUILD_TYPE" == "" ]]; then
.ci/ci-make-benchmark.sh "$CI_BUILD_TYPE"
fi
- .ci/ci-make-install.sh "$CI_BUILD_TYPE"
- .ci/ci-make-distcheck.sh "$CI_BUILD_TYPE"
- |
if [[ "$DISTRO" == "" ]] && [[ "$TRAVIS_OS_NAME" != "linux" ]] ; then
.ci/build-efl-app.sh
elif [[ "$CI_BUILD_TYPE" != "release-ready" ]] ; then
docker exec --env MAKEFLAGS="-j5" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) .ci/build-efl-app.sh
fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then .ci/ci-osx-build.sh ; fi
after_success:
- |