Skip to content

Commit 6ee3327

Browse files
initial commit
0 parents  commit 6ee3327

File tree

11 files changed

+860
-0
lines changed

11 files changed

+860
-0
lines changed

Diff for: .dockerignore

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
*
2+
!tests
3+
!entrypoint.sh

Diff for: .gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
tests/*/build

Diff for: .travis.yml

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
language:
2+
- generic
3+
services:
4+
- docker
5+
branches:
6+
only:
7+
- deploy
8+
env:
9+
global:
10+
- DOCKER_USERNAME=darkmattercoder
11+
- secure: GlcjFiiyAF5w8/TYqgtexzVIaoN1ohRSNrx80P6+5vB9eTU7P3vJlHsCNkRJUkEkTfgYK0GZnSE4psoVS7eGJXQ0pL0h+ge9gc8wfSGWK3WxT2jtTqnMuU9Uy2j9eawteWnQFzeMH/56fagAIZ5MAPgIO3y1vDe5u6CIQs3+gGOTiusY/SB7L3qQfRmZ5xWk7dIzxHC2Vh3mFchrRayb+bn/wr4RJ20HdwkDaKPdp8jr7JQ6Ux3FAU61IVPflmOkhHyqDpQsZ0/RjuC/Lw7b5bC0NSKCtV8Avj2Jp3Qy8+OLUCm/J5U4IByF8OlXpHUudfO7uz0oEHzNDUZRU+HMdb886vmYb1DRBt5x1/TgFN1uMutKiizVIoPZCtkAC9Y+wXx60D41BNknWB8/XXqJHWVE5aytTIau3THYoJ9lnsLxFzqF6wqxiam6JCbO8gIglEtMRk2BLSZXnA12PkBIwHM4bO/gc3TIss7r9tu6AS0/QTAWAN5r7QTyK9+w9rCtvin173rRNyv4zmp/0Q1Rnc0RsGg/l7J7+xP2q2u9FRxXdxDPe7+MM3EnKhl8HHb+aHMRQRb1xdof6vZrL3p3vQ+Z6jZrEmhfhrT1P/vC9pzlBkOhbjwS10uE+dooGqNFm43oW5vKw2UuSQpZ1qfYpt7KADUKqKab4wiSk9J8FM0=
12+
- secure: CrZnQZH02EhtrgNqTQtluihZMbVgpmpz8e6K3nVk2XYS6kuoW3zHOd5PlRTgt+eHafaWrhqig85wsAdWXD1mu2pDfi4cdtMDA7AzQK/Fx4Bj0uspyIoVjLOZG6ng5LgkgtF/lLXIo1OThtbZnYd/hKtitAXqRCAwjchgMLK2u22xhw8GOY4PPpVOAW9gHQulo6hNvTLUjBWg1UZy4/YpR7nzulngJ1NZ+9zzXSHqa+p/smb6nJjJ20RDY/TtTRMDWnuSFMMYmshqMdNWQjvauK4w/G2naYlxRfSzLmNGyH1o47rO8tmwuPry9AfoMjIzOF5SGqiMEqfKllPCdggMgD3QKzQQyrGnG1scUMroZj9kGX+mMtlIuJDRMudk+Dr3bgYDL2jeUGkVkH9ViS7vN037/Yhc4iI2xm+aw3dFmw9at4TtoqBr4dhqCq1r23aS2coxDurulRgMUDA6dgywc/Y9fzXEpNOYX0VfXNCcRKjbc5h3q6JcQINLc2x3wYogHISCMW290PDx2PX8NU3glV5TTmJGjJqXkMCpqmyic2sfI1JLz6sceUMvFYzR7edMudWy83YlhIbatY2ula7thXqVy2xfXBS3qWc8T8k7h1G9WpepJW/y+V0B7zwfz1hVFj7pwRu0a4q6GXVq5/0Y/frlzCfmkw36OJvj+j/yG9s=
13+
before_install:
14+
- echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin
15+
- docker pull darkmattercoder/qt-build:latest || true
16+
- docker pull darkmattercoder/qt-build:builder || true
17+
install:
18+
- travis_wait 180 docker build --pull --cache-from darkmattercoder/qt-build:builder --build-arg
19+
CI_BUILD=1 --build-arg CORE_COUNT=2 --target=builder -t darkmattercoder/qt-build:builder .
20+
- travis_wait 180 docker build --pull --cache-from darkmattercoder/qt-build:builder --build-arg
21+
CI_BUILD=1 --build-arg CORE_COUNT=2 --target=qt -t darkmattercoder/qt-build:latest .
22+
script:
23+
- docker push darkmattercoder/qt-build:builder
24+
- docker push darkmattercoder/qt-build:latest
25+
after_success:
26+
- export GIT_COMMITTER_EMAIL="[email protected]"
27+
- export GIT_COMMITTER_NAME="Travis CI bot"
28+
- git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* || exit
29+
- git fetch --all || exit
30+
- git checkout master || exit
31+
- git rebase deploy || exit
32+
- git push https://${GITHUB_ACCESS_TOKEN}@github.com/darkmattercoder/qt-build.git

Diff for: Dockerfile

+102
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
FROM ubuntu:bionic as base
2+
3+
LABEL maintainer="[email protected]"
4+
LABEL stage=qt-build-base
5+
6+
# UID/GID injection on build if wanted
7+
ARG USER_UID=
8+
ARG USER_GID=
9+
10+
# Name of the regular user. Does not look useful but can save a bit time when changing
11+
ENV QT_USERNAME=qt
12+
13+
# QT Version
14+
ENV QT_VERSION_MAJOR=5
15+
ENV QT_VERSION_MINOR=11
16+
ENV QT_VERSION_PATCH=3
17+
ENV QT_BUILD_ROOT=/tmp/qt_build
18+
ENV QT_BUILD_DIR=${QT_BUILD_ROOT}/qt-everywhere-src-${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}/build
19+
ENV QT_PREFIX=/usr/local
20+
21+
# Install all build dependencies
22+
RUN apt-get update && apt-get dist-upgrade && apt-get -y --no-install-recommends install \
23+
ca-certificates \
24+
curl \
25+
python \
26+
gperf \
27+
bison \
28+
flex \
29+
build-essential \
30+
pkg-config \
31+
libgl1-mesa-dev \
32+
# bash needed for argument substitution in entrypoint
33+
bash \
34+
&& apt-get -qq clean \
35+
&& rm -rf /var/lib/apt/lists/* \
36+
&& echo -e "#!/bin/sh\nls -lah" > /usr/local/bin/ll && chmod +x /usr/local/bin/ll
37+
38+
# Adding regular user
39+
RUN if [ ${USER_GID} ]; then \
40+
addgroup -g ${USER_GID} ${QT_USERNAME}; \
41+
else \
42+
addgroup ${QT_USERNAME}; \
43+
fi \
44+
&& if [ ${USER_UID} ]; then \
45+
useradd -u ${USER_UID} -g ${QT_USERNAME} ${QT_USERNAME}; \
46+
else \
47+
useradd -g ${QT_USERNAME} ${QT_USERNAME}; \
48+
fi
49+
50+
# build stage
51+
FROM base as builder
52+
53+
LABEL stage=qt-build-builder
54+
55+
# Installing from here
56+
WORKDIR ${QT_BUILD_ROOT}
57+
58+
# Download sources
59+
RUN curl -sSL https://download.qt.io/official_releases/qt/${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}/${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}/single/qt-everywhere-src-${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}.tar.xz | tar xJ
60+
61+
WORKDIR ${QT_BUILD_DIR}
62+
63+
# Configure, make, install
64+
RUN ../configure -prefix ${QT_PREFIX} -opensource -confirm-license -nomake examples -nomake tests -no-feature-geoservices_mapboxgl
65+
66+
# Possibility to make outputs less verbose when required for a ci build
67+
ARG CI_BUILD=
68+
ENV CI_BUILD=${CI_BUILD}
69+
70+
# Speeding up make depending of your system
71+
ARG CORE_COUNT=1
72+
73+
RUN if [ $CI_BUILD ]; then \
74+
echo "Suppressing make output for CI environments to decrease log size"; \
75+
make -j${CORE_COUNT} > /dev/null || make; \
76+
else make -j${CORE_COUNT}; \
77+
fi
78+
79+
# install it
80+
RUN make install
81+
82+
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
83+
# resulting image with environment
84+
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
85+
86+
FROM base as qt
87+
88+
ENV ENTRYPOINT_DIR=/usr/local/bin
89+
ENV APP_BUILDDIR=/var/build
90+
91+
COPY --from=builder ${QT_PREFIX} ${QT_PREFIX}
92+
COPY entrypoint.sh ${ENTRYPOINT_DIR}
93+
94+
RUN chmod +x ${ENTRYPOINT_DIR}/entrypoint.sh
95+
96+
# setting volume up with good permissions
97+
RUN mkdir -p ${APP_BUILDDIR} && chmod 1777 ${APP_BUILDDIR}
98+
VOLUME ["${APP_BUILDDIR}"]
99+
100+
USER ${QT_USERNAME}
101+
102+
ENTRYPOINT ["entrypoint.sh"]

0 commit comments

Comments
 (0)