1- FROM ubuntu:22.04
1+ FROM debian:trixie
22
33MAINTAINER 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
24296ENV SONAR_SCANNER_VERSION 5.0.1.3006
24397ENV SONAR_SERVER_URL "https://sonarcloud.io"
0 commit comments