Skip to content

Commit

Permalink
try with dedicated for building
Browse files Browse the repository at this point in the history
  • Loading branch information
3nids committed Mar 6, 2019
1 parent 38d00f9 commit 748c783
Show file tree
Hide file tree
Showing 6 changed files with 124 additions and 105 deletions.
90 changes: 0 additions & 90 deletions .ci/travis/linux/docker-build-test.sh
Expand Up @@ -2,96 +2,6 @@


set -e set -e


##############
# Setup ccache
##############
export CCACHE_TEMPDIR=/tmp
ccache -M 1G

# Temporarily uncomment to debug ccache issues
# export CCACHE_LOGFILE=/tmp/cache.debug
ccache -z

############################
# Setup the (c)test environment
############################
export LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
export SEGFAULT_SIGNALS="abrt segv"
export CTEST_BUILD_COMMAND="/usr/bin/ninja"
export CTEST_PARALLEL_LEVEL=1

##############################
# Variables for output styling
##############################

bold=$(tput bold)
endbold=$(tput sgr0)

###########
# Configure
###########
pushd /root/QGIS > /dev/null
mkdir -p build

pushd build > /dev/null

echo "travis_fold:start:cmake"
echo "${bold}Running cmake...${endbold}"
cmake \
-GNinja \
-DUSE_CCACHE=OFF \
-DWITH_QUICK=ON \
-DWITH_3D=ON \
-DWITH_STAGED_PLUGINS=ON \
-DWITH_GRASS=OFF \
-DSUPPRESS_QT_WARNINGS=ON \
-DENABLE_MODELTEST=ON \
-DENABLE_PGTEST=ON \
-DENABLE_MSSQLTEST=ON \
-DWITH_QSPATIALITE=ON \
-DWITH_QWTPOLAR=OFF \
-DWITH_APIDOC=OFF \
-DWITH_ASTYLE=OFF \
-DWITH_DESKTOP=ON \
-DWITH_BINDINGS=ON \
-DWITH_SERVER=ON \
-DDISABLE_DEPRECATED=ON \
-DPYTHON_TEST_WRAPPER="timeout -sSIGSEGV 55s"\
-DCXX_EXTRA_FLAGS="${CLANG_WARNINGS}" \
-DWERROR=TRUE \
-DQT5_3DEXTRA_LIBRARY="/usr/lib/x86_64-linux-gnu/libQt53DExtras.so" \
-DQT5_3DEXTRA_INCLUDE_DIR="/root/QGIS/external/qt3dextra-headers" \
-DCMAKE_PREFIX_PATH="/root/QGIS/external/qt3dextra-headers/cmake" \
..
echo "travis_fold:end:cmake"

#######
# Build
#######
# Calculate the timeout for building.
# The tests should be aborted before travis times out, in order to allow uploading
# the ccache and therefore speedup subsequent e builds.
#
# Travis will kill the job after approx 150 minutes, we subtract 5 minutes for
# uploading and subtract the bootstrapping time from that.
# Hopefully clocks are in sync :)
TRAVIS_TIME=150
UPLOAD_TIME=5
CURRENT_TIME=$(date +%s)
TIMEOUT=$((( TRAVIS_TIME - UPLOAD_TIME ) * 60 - CURRENT_TIME + TRAVIS_TIMESTAMP))
TIMEOUT=$(( TIMEOUT < 300 ? 300 : TIMEOUT ))
echo "Timeout: ${TIMEOUT}s (started at ${TRAVIS_TIMESTAMP}, current: ${CURRENT_TIME})"

# echo "travis_fold:start:ninja-build.1"
echo "${bold}Building QGIS...${endbold}"
timeout ${TIMEOUT}s ${CTEST_BUILD_COMMAND}
# echo "travis_fold:end:ninja-build.1"

rv=$?
if [ $rv -eq 124 ] ; then
printf '\n\n${bold}Build and test timeout. Please restart the build for meaningful results.${endbold}\n'
exit #$rv
fi


############################## ##############################
# Run Python Tests on QGIS app # Run Python Tests on QGIS app
Expand Down
10 changes: 10 additions & 0 deletions .ci/travis/linux/script.sh
Expand Up @@ -17,4 +17,14 @@
set -e set -e


# running QGIS tests # running QGIS tests

docker build -t qgis_testing -f .docker/qgis_testing.dockerfile .

docker run qgis test.sh
docker exec



docker-compose -f ${TRAVIS_BUILD_DIR}/.docker/docker-compose.travis.yml run qgis-deps docker-compose -f ${TRAVIS_BUILD_DIR}/.docker/docker-compose.travis.yml run qgis-deps

docker run -it qgis-deps
2 changes: 0 additions & 2 deletions .docker/qgis3-build-deps-cosmic.dockerfile
Expand Up @@ -135,5 +135,3 @@ ENV CXX=/usr/lib/ccache/clang++
ENV QT_SELECT=5 ENV QT_SELECT=5
ENV LANG=C.UTF-8 ENV LANG=C.UTF-8
ENV PATH="/usr/local/bin:${PATH}" ENV PATH="/usr/local/bin:${PATH}"

CMD /root/QGIS/.ci/travis/linux/docker-build-test.sh
2 changes: 0 additions & 2 deletions .docker/qgis3-build-deps.dockerfile
Expand Up @@ -152,5 +152,3 @@ ENV CXX=/usr/lib/ccache/clang++
ENV QT_SELECT=5 ENV QT_SELECT=5
ENV LANG=C.UTF-8 ENV LANG=C.UTF-8
ENV PATH="/usr/local/bin:${PATH}" ENV PATH="/usr/local/bin:${PATH}"

CMD /root/QGIS/.ci/travis/linux/docker-build-test.sh
11 changes: 0 additions & 11 deletions .docker/qgis_resources/test_runner/qgis_testrunner.sh
Expand Up @@ -10,17 +10,6 @@


TEST_NAME=$1 TEST_NAME=$1


export PYTHONUNBUFFERED=TRUE

echo "Running test $1 ..."

qgis --version-migration --nologo --code /usr/bin/qgis_testrunner.py "$TEST_NAME" 2>/dev/null


echo "Running test with unbuffer $1 ..."

unbuffer qgis --version-migration --nologo --code /usr/bin/qgis_testrunner.py "$TEST_NAME" 2>/dev/null

echo "Running test really $1 ..." echo "Running test really $1 ..."
OUTPUT=$(QGIS_TEST_MODULE=${TEST_NAME} unbuffer qgis --version-migration --nologo --code /usr/bin/qgis_testrunner.py "$TEST_NAME" 2>/dev/null | tee /dev/tty ) OUTPUT=$(QGIS_TEST_MODULE=${TEST_NAME} unbuffer qgis --version-migration --nologo --code /usr/bin/qgis_testrunner.py "$TEST_NAME" 2>/dev/null | tee /dev/tty )
EXIT_CODE="$?" EXIT_CODE="$?"
Expand Down
114 changes: 114 additions & 0 deletions .docker/qgis_testing.dockerfile
@@ -0,0 +1,114 @@

ARG DOCKER_TAG=latest
FROM qgis/qgis3-build-deps:${DOCKER_TAG}
MAINTAINER Denis Rouzaud <denis@opengis.ch>

LABEL Description="Docker container with QGIS build for testing" Vendor="QGIS.org" Version="1.1"

ENV CC=/usr/lib/ccache/clang
ENV CXX=/usr/lib/ccache/clang++
ENV QT_SELECT=5
ENV LANG=C.UTF-8
############################
# Setup the (c)test environment
ENV LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
ENV SEGFAULT_SIGNALS="abrt segv"
ENV CTEST_BUILD_COMMAND="/usr/bin/ninja"
ENV CTEST_PARALLEL_LEVEL=1


##############################
# Copy source
COPY . /usr/src/QGIS
WORKDIR /usr/src/QGIS/build

##############################
# ccache
ENV CCACHE_DIR=/usr/src/QGIS/.ccache
RUN ccache -M 1G
RUN ccache -s
# Temporarily uncomment to debug ccache issues
# export CCACHE_LOGFILE=/tmp/cache.debug
RUN ccache -z


###########
# Configure
RUN echo "travis_fold:start:cmake"
RUN echo "Running cmake..."
RUN cmake \
-GNinja \
-DUSE_CCACHE=OFF \
-DWITH_QUICK=ON \
-DWITH_3D=ON \
-DWITH_STAGED_PLUGINS=ON \
-DWITH_GRASS=OFF \
-DSUPPRESS_QT_WARNINGS=ON \
-DENABLE_MODELTEST=ON \
-DENABLE_PGTEST=ON \
-DENABLE_MSSQLTEST=ON \
-DWITH_QSPATIALITE=ON \
-DWITH_QWTPOLAR=OFF \
-DWITH_APIDOC=OFF \
-DWITH_ASTYLE=OFF \
-DWITH_DESKTOP=ON \
-DWITH_BINDINGS=ON \
-DWITH_SERVER=ON \
-DDISABLE_DEPRECATED=ON \
-DPYTHON_TEST_WRAPPER="timeout -sSIGSEGV 55s"\
-DCXX_EXTRA_FLAGS="${CLANG_WARNINGS}" \
-DWERROR=TRUE \
-DQT5_3DEXTRA_LIBRARY="/usr/lib/x86_64-linux-gnu/libQt53DExtras.so" \
-DQT5_3DEXTRA_INCLUDE_DIR="/root/QGIS/external/qt3dextra-headers" \
-DCMAKE_PREFIX_PATH="/root/QGIS/external/qt3dextra-headers/cmake" \
..
RUN echo "travis_fold:end:cmake"

#######
# Build
#######
# Calculate the timeout for building.
# The tests should be aborted before travis times out, in order to allow uploading
# the ccache and therefore speedup subsequent e builds.
#
# Travis will kill the job after approx 150 minutes, we subtract 5 minutes for
# uploading and subtract the bootstrapping time from that.
# Hopefully clocks are in sync :)
ENV TRAVIS_TIME=150
ENV UPLOAD_TIME=5
RUN export CURRENT_TIME=$(date +%s) \
&& export TIMEOUT=$((( TRAVIS_TIME - UPLOAD_TIME ) * 60 - CURRENT_TIME + TRAVIS_TIMESTAMP)) \
&& export TIMEOUT=$(( TIMEOUT < 300 ? 300 : TIMEOUT )) \
&& echo "Timeout: ${TIMEOUT}s (started at ${TRAVIS_TIMESTAMP}, current: ${CURRENT_TIME})"

# echo "travis_fold:start:ninja-build.1"
RUN echo "Building QGIS..."
RUN timeout ${TIMEOUT}s ${CTEST_BUILD_COMMAND} && rv=$? && \
if [ $rv -eq 124 ] ; then printf '\n\nBuild and test timeout. Please restart the build for meaningful results.\n'; exit #$rv; fi


################################################################################
# Python testing environment setup

# Add QGIS test runner
COPY .docker/qgis_resources/test_runner/qgis_* /usr/bin/

# Make all scripts executable
RUN chmod +x /usr/bin/qgis_*

# Add supervisor service configuration script
COPY .docker/qgis_resources/supervisor/supervisord.conf /etc/supervisor/
COPY .docker/qgis_resources/supervisor/supervisor.xvfb.conf /etc/supervisor/supervisor.d/

# Python paths are for
# - kartoza images (compiled)
# - deb installed
# - built from git
# needed to find PyQt wrapper provided by QGIS
ENV PYTHONPATH=/usr/share/qgis/python/:/usr/share/qgis/python/plugins:/usr/lib/python3/dist-packages/qgis:/usr/share/qgis/python/qgis


WORKDIR /

# Run supervisor
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]

0 comments on commit 748c783

Please sign in to comment.