Skip to content

Commit 9f1502c

Browse files
committed
feat(desktop/ci): use debian trixie and only debian packages
should get us more recent compilers (clang++) and a much quicker way to build an image for CI Signed-off-by: Matthieu Gallien <[email protected]>
1 parent 28dcb07 commit 9f1502c

File tree

1 file changed

+18
-164
lines changed

1 file changed

+18
-164
lines changed

client-qt6/Dockerfile

Lines changed: 18 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,10 @@
1-
FROM ubuntu:22.04
1+
FROM debian:trixie
22

33
MAINTAINER Desktop Team <[email protected]>
44

5-
# Run 'docker build' with '--build-arg BUILD_QT=1' to build Qt from source (default: not set)
6-
ARG BUILD_QT
7-
8-
ENV VER_QT 6.8.1
9-
ENV VER_QT_DATE 2025-01-16
10-
ENV VER_OPENSSL 3.4.0
11-
ENV VER_LIBP11 libp11-0.4.12
12-
ENV VER_KFRAMEWORKS 6.10.0
13-
ENV VER_SQLITE 3460100
14-
ENV VER_SQLITE_YEAR 2024
15-
ENV VER_QTKEYCHAIN 0.15.0
16-
17-
ENV QT_ROOT /opt/qt
18-
19-
RUN sed -i '/deb-src/s/^# //' /etc/apt/sources.list && \
5+
RUN \
206
apt-get update && \
21-
apt-get install -y apt-transport-https ca-certificates gnupg software-properties-common wget && \
7+
apt-get install -y apt-transport-https ca-certificates gnupg wget && \
228
apt-get update && \
239
DEBIAN_FRONTEND=noninteractive apt-get install -q -y \
2410
git \
@@ -28,17 +14,16 @@ RUN sed -i '/deb-src/s/^# //' /etc/apt/sources.list && \
2814
perl \
2915
python3 \
3016
python3-pip \
31-
software-properties-common \
3217
build-essential \
3318
mesa-common-dev \
3419
pkg-config \
3520
ninja-build \
36-
gcc-11 \
37-
g++-11 \
38-
clang-15 \
39-
clang-format-15 \
40-
clang-tidy-15 \
41-
libclang-15-dev \
21+
gcc \
22+
g++ \
23+
clang \
24+
clang-format \
25+
clang-tidy \
26+
libclang-dev \
4227
cmake \
4328
zlib1g-dev \
4429
xz-utils \
@@ -70,22 +55,24 @@ RUN sed -i '/deb-src/s/^# //' /etc/apt/sources.list && \
7055
libxcb-xkb-dev \
7156
libxkbcommon-dev \
7257
libxkbcommon-x11-dev \
73-
python3-sphinxcontrib.serializinghtml \
74-
python3-sphinxcontrib.qthelp \
75-
python3-sphinx \
7658
unzip \
7759
libsecret-1-dev \
60+
libssl-dev \
61+
libp11-dev \
62+
qt6-websockets-dev \
63+
qt6-svg-dev \
64+
libkf6archive-dev \
65+
qtkeychain-qt6-dev \
66+
libsqlite3-dev \
67+
qt6-5compat-dev \
7868
# For cmocka based csync tests
7969
libcmocka-dev \
8070
# generate png images from svg
8171
inkscape \
8272
# SonarCloud
83-
openjdk-19-jdk \
73+
openjdk-21-jdk \
8474
# install xvfb to enable graphical tests
8575
xvfb \
86-
# html documentation generation
87-
python3-sphinx && \
88-
apt-get build-dep -q -y \
8976
qt6-base-dev \
9077
qt6-base-dev-tools \
9178
qt6-l10n-tools \
@@ -101,143 +88,10 @@ RUN sed -i '/deb-src/s/^# //' /etc/apt/sources.list && \
10188
qt6-quick3d-dev \
10289
qt6-translations-l10n \
10390
libqt6sql6-sqlite && \
104-
apt-get remove -y -q --purge libqt6core6 nodejs && \
10591
# Cleaning up
106-
DEBIAN_FRONTEND=noninteractive apt-get remove -q -y --purge libssl-dev && \
10792
apt-get clean && \
10893
rm -rf /var/lib/apt/lists/*
10994

110-
###########################################################################
111-
112-
# Install openssl
113-
RUN cd /tmp && \
114-
wget https://www.openssl.org/source/openssl-${VER_OPENSSL}.tar.gz && \
115-
tar -xvf openssl-${VER_OPENSSL}.tar.gz && \
116-
cd openssl-${VER_OPENSSL} && \
117-
./config && \
118-
make -j$(nproc) && \
119-
make -j$(nproc) install && \
120-
cd .. && \
121-
rm -rf openssl*
122-
123-
# Install libp11 for PKCS#11 encryption
124-
RUN cd /tmp && \
125-
wget https://github.com/OpenSC/libp11/releases/download/${VER_LIBP11}/${VER_LIBP11}.tar.gz && \
126-
tar xvf ${VER_LIBP11}.tar.gz && \
127-
cd ${VER_LIBP11} && \
128-
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig && \
129-
./configure && make && make install && \
130-
cd .. && \
131-
rm -rf ${VER_LIBP11}
132-
133-
# Install sqlite3 from https://www.sqlite.org/amalgamation.html
134-
# https://www3.sqlite.org/src/dir?ci=tip&name=autoconf
135-
RUN cd /tmp && \
136-
wget https://www.sqlite.org/${VER_SQLITE_YEAR}/sqlite-autoconf-${VER_SQLITE}.tar.gz && \
137-
tar xvf sqlite-autoconf-${VER_SQLITE}.tar.gz && \
138-
cd sqlite-autoconf-${VER_SQLITE} && \
139-
./configure && make && make install && \
140-
cd .. && \
141-
rm -rf sqlite-autoconf-${VER_SQLITE}
142-
143-
###########################################################################
144-
145-
# Download Qt sources
146-
RUN if [ "$BUILD_QT" = "1" ] ; then echo Build Qt from source. && \
147-
git clone --depth=1 --recurse-submodules --shallow-submodules --branch=v${VER_QT} https://code.qt.io/qt/qt5.git qt6 \
148-
; fi
149-
150-
RUN if [ "$BUILD_QT" = "1" ] ; then \
151-
wget https://nodejs.org/dist/v18.20.1/node-v18.20.1-linux-x64.tar.xz && \
152-
tar xf node-v18.20.1-linux-x64.tar.xz \
153-
; fi
154-
155-
# Build Qt
156-
RUN if [ "$BUILD_QT" = "1" ] ; then \
157-
mkdir qt6-${VER_QT}-linux-release && \
158-
cd qt6-${VER_QT}-linux-release && \
159-
export PATH=${PATH}:/node-v18.20.1-linux-x64/bin && \
160-
/qt6/configure -release -nomake examples -nomake tests -opensource -confirm-license -openssl-linked -skip qt3d -- \
161-
-DCMAKE_INSTALL_PREFIX=${QT_ROOT} -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DQT_BUILD_TESTS=OFF -DQT_BUILD_EXAMPLES=ON -DQT_FEATURE_thread=ON -DQT_FEATURE_xcb=ON -DQT_FEATURE_openssl_runtime=OFF -DQT_FEATURE_openssl_linked=ON && \
162-
cmake --build . --parallel && \
163-
cmake --install . \
164-
; fi
165-
166-
# Build Qt
167-
RUN if [ "$BUILD_QT" = "1" ] ; then \
168-
tar cfJ /qt-bin-${VER_QT}-openssl-${VER_OPENSSL}-linux-x86_64-$(date +"%Y-%m-%d").tar.xz ${QT_ROOT} \
169-
; fi
170-
171-
#
172-
# The following precompiled Qt package has been built with the commands above, using this Dockerfile.
173-
#
174-
# Since it takes a very long time to compile, the build on Docker Hub fails due to a timeout.
175-
#
176-
# This is why we're going to use our own precompiled version here.
177-
#
178-
# Run 'docker build' with '--build-arg BUILD_QT=1' to build Qt from source (default: not set)
179-
# on a dedicated build machine:
180-
#
181-
# docker build . -t client-5.15 . --build-arg BUILD_QT=1
182-
#
183-
184-
# Download Qt precompiled
185-
ENV QT_TARBALL qt-bin-${VER_QT}-openssl-${VER_OPENSSL}-linux-x86_64-${VER_QT_DATE}.tar.xz
186-
187-
RUN if [ "$BUILD_QT" != "1" ] ; then \
188-
wget https://download.nextcloud.com/desktop/development/qt/${QT_TARBALL} && \
189-
tar -xvf ${QT_TARBALL} && \
190-
rm ${QT_TARBALL} \
191-
; fi
192-
193-
RUN if [ "$BUILD_QT" != "1" ] ; then \
194-
DEBIAN_FRONTEND=noninteractive apt-get remove -q -y --purge libsqlite3-dev \
195-
; fi
196-
197-
###########################################################################
198-
199-
# Install QtKeychain
200-
RUN if [ "$BUILD_QT" != "1" ] ; then \
201-
cd /tmp && \
202-
git clone https://github.com/frankosterfeld/qtkeychain.git --depth 1 -b ${VER_QTKEYCHAIN} && \
203-
cd qtkeychain && \
204-
mkdir build && \
205-
cd build && \
206-
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \
207-
cmake --build . --parallel && \
208-
cmake --install . && \
209-
cd .. && \
210-
rm -rf qtkeychain \
211-
; fi
212-
213-
# Install extra-cmake-modules
214-
RUN \
215-
cd /tmp && \
216-
git clone https://invent.kde.org/frameworks/extra-cmake-modules.git --depth 1 -b v${VER_KFRAMEWORKS} && \
217-
cd extra-cmake-modules && \
218-
mkdir build && \
219-
cd build && \
220-
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DQT_MAJOR_VERSION=6 -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \
221-
cmake --build . --parallel && \
222-
cmake --install . && \
223-
cd .. && \
224-
rm -rf extra-cmake-modules \
225-
;
226-
227-
# Install KArchive
228-
RUN \
229-
cd /tmp && \
230-
git clone https://invent.kde.org/frameworks/karchive.git --depth 1 -b v${VER_KFRAMEWORKS} && \
231-
cd karchive && \
232-
mkdir build && \
233-
cd build && \
234-
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DQT_MAJOR_VERSION=6 -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \
235-
cmake --build . --parallel && \
236-
cmake --install . && \
237-
cd .. && \
238-
rm -rf karchive \
239-
;
240-
24195
# Setup sonar-scanner
24296
ENV SONAR_SCANNER_VERSION 5.0.1.3006
24397
ENV SONAR_SERVER_URL "https://sonarcloud.io"

0 commit comments

Comments
 (0)