Skip to content

Commit 3b3f080

Browse files
committed
Improve Qt + Linux Docker builds
1 parent 663d56b commit 3b3f080

File tree

4 files changed

+42
-18
lines changed

4 files changed

+42
-18
lines changed

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ aria2/src/.libs
66
build*
77
Dockerfile*
88
!build-aria.sh
9+
!build-qt.sh
910

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ project(updater LANGUAGES CXX)
55
set(CMAKE_CXX_STANDARD 17)
66
set(CMAKE_CXX_STANDARD_REQUIRED ON)
77

8+
# important for quazip
9+
set(BUILD_SHARED_LIBS OFF)
10+
811
set(CMAKE_AUTORCC ON)
912

1013
set(ARIA2_LIBS "${CMAKE_CURRENT_SOURCE_DIR}/aria2/src/.libs/libaria2.a" CACHE STRING "aria2 libraries")

Dockerfile

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@ FROM docker.io/debian:bullseye-slim
88
# Bullseye environment. It may be that not all are necessary.
99
# aria2 build requires autoconf, autopoint, gettext
1010
# git is used for cleaning unwanted files
11+
ENV XCB_MINIMUM_PACKAGES=' \
12+
libxcb-cursor-dev \
13+
libxcb-icccm4-dev \
14+
libxcb-image0-dev \
15+
libxcb-keysyms1-dev \
16+
libxcb-randr0-dev \
17+
libxcb-render0-dev \
18+
libxcb-render-util0-dev \
19+
libxcb-shape0-dev \
20+
libxcb-shm0-dev \
21+
libxcb-sync-dev \
22+
libxcb-xfixes0-dev \
23+
libxcb-xkb-dev \
24+
'
1125
RUN apt-get update && apt-get install -y \
1226
autoconf \
1327
autopoint \
@@ -19,15 +33,18 @@ RUN apt-get update && apt-get install -y \
1933
libtool \
2034
libx11-xcb-dev \
2135
libxcb-glx0-dev \
22-
libxext-dev \
23-
libxkbcommon-dev \
36+
libxkbcommon-x11-dev \
2437
make \
38+
ninja-build \
2539
perl \
2640
p7zip-full \
2741
pkg-config \
2842
python \
2943
xz-utils \
30-
zlib1g-dev
44+
zlib1g-dev \
45+
$XCB_MINIMUM_PACKAGES && \
46+
echo 'deb https://archive.debian.org/debian-archive/debian bullseye-backports main' > /etc/apt/sources.list.d/backports.list && \
47+
apt-get update && apt-get install -y cmake/bullseye-backports
3148

3249
#################
3350
# Build OpenSSL #
@@ -45,15 +62,8 @@ RUN make -j`nproc` && make install_sw && rm -rf /build-ssl
4562
# Build Qt #
4663
############
4764
WORKDIR /build-qt
48-
COPY md5sums-qt.txt /build-qt/
49-
ENV UPDATER_MODULES=qtbase,qtquickcontrols,qtquickcontrols2,qtsvg,qtgraphicaleffects
50-
RUN curl -LO https://download.qt.io/archive/qt/5.14/5.14.2/single/qt-everywhere-src-5.14.2.tar.xz && \
51-
md5sum --check --ignore-missing md5sums-qt.txt && \
52-
tar -xJf qt-everywhere-src-5.14.2.tar.xz && \
53-
cd qt-everywhere-src-5.14.2 && \
54-
OPENSSL_LIBS='-L/openssl/lib64 -lssl -lcrypto -lpthread -ldl' ./configure -opensource -confirm-license -release -optimize-size -no-shared -static --c++std=14 -nomake tests -nomake tools -nomake examples -no-gif -no-icu -no-glib -no-qml-debug -opengl desktop -no-eglfs -no-opengles3 -no-angle -no-egl -qt-xcb -xkbcommon -dbus-runtime -qt-freetype -qt-pcre -qt-harfbuzz -qt-libpng -qt-libjpeg -system-zlib -I /openssl/include -openssl-linked -prefix /qt && \
55-
bash -c "make -j`nproc` module-{$UPDATER_MODULES} && make module-{$UPDATER_MODULES}-install_subtargets" && \
56-
rm -rf /build-qt
65+
COPY md5sums-qt.txt build-qt.sh /build-qt/
66+
RUN PKG_CONFIG_PATH=/openssl/lib64/pkgconfig ./build-qt.sh && mv qt /qt && rm -rf /build-qt
5767

5868
###############
5969
# Build aria2 #
@@ -70,7 +80,8 @@ RUN OPENSSL_LIBS='-L/openssl/lib64 -lssl -lcrypto -lpthread -ldl' OPENSSL_CFLAGS
7080
COPY . /updater
7181
RUN set -e; for D in . quazip fluid; do cd /updater/$D && git clean -dXff; done
7282
WORKDIR /build
73-
RUN /qt/bin/qmake -config release QMAKE_LFLAGS+="-no-pie" /updater && make -j`nproc`
83+
# TODO no-pie?
84+
RUN PKG_CONFIG_PATH=/openssl/lib64/pkgconfig cmake -DCMAKE_FIND_ROOT_PATH=/qt -DCMAKE_BUILD_TYPE=MinSizeRel /updater && make -j`nproc`
7485
RUN mv updater updater-nonstripped && strip updater-nonstripped -o updater
7586
# Version check: do not depend on glibc > 2.31
7687
RUN echo GLIBC_2.31 > target_version && \

build-qt.sh

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@ build_module() {
2121
module_vars "${module}"
2222
cd "${WORK_DIR}/${dirname}"
2323
options_var="options_${module}"
24+
truncate_var="truncate_${module}"
25+
echo ${!truncate_var:-} | xargs --no-run-if-empty truncate -s 0
2426
if [[ "${module}" = qtbase ]]; then
25-
cp /dev/null src/tools/uic/CMakeLists.txt
2627
./configure ${!options_var} ${common_options_cmake}
2728
else
2829
"${INSTALL_DIR}/bin/qt-configure-module" . ${!options_var} ${common_options_cmake}
@@ -35,12 +36,16 @@ WORK_DIR="${PWD}"
3536
SCRIPT_DIR=$(dirname "$0")
3637
INSTALL_DIR="${WORK_DIR}/qt"
3738

39+
#FIXME bad warning in qtdeclarative-everywhere-src-6.8.3/src/quickwidgets/qquickwidget.cpp
40+
3841
common_options_cmake='-DQT_GENERATE_SBOM=OFF -DQT_FEATURE_accessibility=OFF'
39-
options_qtbase="-opensource -confirm-license -release -optimize-size -no-shared -static --c++std=17 -disable-deprecated-up-to 0x060800 -qpa xcb -nomake tests -nomake examples -no-gif -no-icu -no-glib -opengl desktop -no-eglfs -no-opengles3 -no-egl -xkbcommon -dbus-runtime -qt-freetype -qt-pcre -qt-harfbuzz -qt-libpng -qt-libjpeg -system-zlib -openssl-linked -prefix ${INSTALL_DIR} -- -DFEATURE_xcb=1 -DFEATURE_sql=OFF -DFEATURE_printsupport=OFF -DFEATURE_xml=OFF -DFEATURE_testlib=OFF -DFEATURE_qmake=OFF -DFEATURE_style_fusion=OFF -DFEATURE_style_stylesheet=OFF -DFEATURE_androiddeployqt=OFF -DFEATURE_cborstreamwriter=OFF -DFEATURE_columnview=OFF -DFEATURE_commandlinkbutton=OFF -DFEATURE_concatenatetablesproxy=OFF -DFEATURE_concurrent=OFF -DFEATURE_completer=OFF -DFEATURE_contextmenu=OFF -DFEATURE_cssparser=OFF -DFEATURE_datawidgetmapper=OFF -DFEATURE_datetimeedit=OFF -DFEATURE_datetimXXeparser=OFF -DFEATURE_dial=OFF -DFEATURE_dialogbuttonbox=ON -DFEATURE_dockwidget=OFF -DFEATURE_draganddrop=OFF -DFEATURE_dtls=OFF -DFEATURE_easingcurve=OFF -DFEATURE_filedialog=OFF -DFEATURE_filesystemmodel=OFF -DFEATURE_filesystemwatcher=OFF -DFEATURE_fontcombobox=OFF -DFEATURE_fontdialog=OFF -DFEATURE_formlayout=OFF -DFEATURE_fscompleter=OFF -DFEATURE_future=OFF -DFEATURE_gc_binaries=OFF -DFEATURE_gestures=OFF -DFEATURE_graphicsview=OFF -DFEATURE_groupbox=OFF -DFEATURE_hijricalendar=OFF -DFEATURE_identityproxymodel=OFF -DFEATURE_im=OFF -DFEATURE_imageformat_bmp=OFF -DFEATURE_imageformat_jpeg=ON -DFEATURE_imageformat_png=ON -DFEATURE_imageformat_ppm=OFF -DFEATURE_imageformat_xbm=OFF -DFEATURE_imageformat_xpm=OFF -DFEATURE_imageformatplugin=OFF -DFEATURE_imageio_text_loading=OFF -DFEATURE_inputdialog=OFF -DFEATURE_islamiccivilcalendar=OFF -DFEATURE_itemmodel=OFF -DFEATURE_itemviews=OFF -DFEATURE_jalalicalendar=OFF -DFEATURE_keysequenceedit=OFF -DFEATURE_lcdnumber=OFF -DFEATURE_library=OFF -DFEATURE_lineedit=OFF -DFEATURE_listview=OFF -DFEATURE_listwidget=OFF -DFEATURE_localserver=OFF -DFEATURE_mdiarea=OFF -DFEATURE_menu=OFF -DFEATURE_menubar=OFF -DFEATURE_messagebox=ON -DFEATURE_mimetype=OFF -DFEATURE_mimetype_database=OFF -DFEATURE_movie=OFF -DFEATURE_networkdiskcache=OFF -DFEATURE_opengl_desktop=ON -DFEATURE_pdf=OFF -DFEATURE_picture=OFF -DFEATURE_progressbar=OFF -DFEATURE_proxymodel=OFF -DFEATURE_publicsuffix_qt=OFF -DFEATURE_publicsuffix_system=OFF -DFEATURE_pushbutton=ON -DFEATURE_radiobutton=OFF -DFEATURE_rubberband=OFF -DFEATURE_scrollarea=OFF -DFEATURE_scrollbar=OFF -DFEATURE_scroller=OFF -DFEATURE_sessionmanager=OFF -DFEATURE_settings=ON -DFEATURE_shortcut=OFF -DFEATURE_sizegrip=OFF -DFEATURE_slider=OFF -DFEATURE_socks5=OFF -DFEATURE_sortfilterproxymodel=OFF -DFEATURE_spinbox=OFF -DFEATURE_splitter=OFF -DFEATURE_stackedwidget=OFF -DFEATURE_standarditemmodel=OFF -DFEATURE_statusbar=OFF -DFEATURE_statustip=OFF -DFEATURE_stringlistmodel=OFF -DFEATURE_syntaxhighlighter=OFF -DFEATURE_systemtrayicon=OFF -DFEATURE_tabbar=OFF -DFEATURE_tabletevent=OFF -DFEATURE_tableview=OFF -DFEATURE_tabwidget=OFF -DFEATURE_textbrowser=OFF -DFEATURE_teXXXxtdate=OFF -DFEATURE_textedit=OFF -DFEATURE_textmarkdownreader=OFF -DFEATURE_textmarkdownwriter=OFF -DFEATURE_textodfwriter=OFF -DFEATURE_timezonelocale=ON -DFEATURE_toolbar=OFF -DFEATURE_toolbox=OFF -DFEATURE_toolbutton=OFF -DFEATURE_tooltip=OFF -DFEATURE_translation=OFF -DFEATURE_transposeproxymodel=OFF -DFEATURE_treeview=OFF -DFEATURE_treewidget=OFF -DFEATURE_tuiotouch=OFF -DFEATURE_udpsocket=OFF -DFEATURE_undocommand=OFF -DFEATURE_undogroup=OFF -DFEATURE_undostack=OFF -DFEATURE_undoview=OFF -DFEATURE_validator=OFF -DFEATURE_vkgen=OFF -DFEATURE_vnc=OFF -DFEATURE_whatsthis=OFF -DFEATURE_widgettextcontrol=ON -DFEATURE_wizard=OFF -DFEATURE_xmlstream=ON -DQT_FEATURE_label=ON -DQT_BUILD_DOCS=OFF -DQT_BUILD_TOOLS_BY_DEFAULT=OFF -DFEATURE_topleveldomain=OFF"
42+
options_qtbase="-opensource -confirm-license -release -optimize-size -no-shared -static --c++std=17 -disable-deprecated-up-to 0x060800 -qpa xcb -nomake tests -nomake examples -no-gif -no-icu -no-glib -opengl desktop -no-eglfs -no-opengles3 -no-egl -xkbcommon -dbus-runtime -qt-freetype -qt-pcre -qt-harfbuzz -qt-libpng -qt-libjpeg -system-zlib -openssl-linked -prefix ${INSTALL_DIR} -- -DFEATURE_xcb=1 -DFEATURE_sql=OFF -DFEATURE_printsupport=OFF -DFEATURE_xml=OFF -DFEATURE_testlib=OFF -DFEATURE_qmake=OFF -DFEATURE_style_fusion=OFF -DFEATURE_style_stylesheet=OFF -DFEATURE_androiddeployqt=OFF -DFEATURE_animation=ON -DFEATURE_cborstreamwriter=OFF -DFEATURE_columnview=OFF -DFEATURE_commandlinkbutton=OFF -DFEATURE_concatenatetablesproxy=OFF -DFEATURE_concurrent=OFF -DFEATURE_completer=OFF -DFEATURE_contextmenu=OFF -DFEATURE_cssparser=OFF -DFEATURE_datawidgetmapper=OFF -DFEATURE_datetimeedit=OFF -DFEATURE_datetimXXeparser=OFF -DFEATURE_dial=OFF -DFEATURE_dialogbuttonbox=ON -DFEATURE_dockwidget=OFF -DFEATURE_draganddrop=OFF -DFEATURE_dtls=OFF -DFEATURE_easingcurve=ON -DFEATURE_filedialog=OFF -DFEATURE_filesystemmodel=OFF -DFEATURE_filesystemwatcher=OFF -DFEATURE_fontcombobox=OFF -DFEATURE_fontdialog=OFF -DFEATURE_formlayout=OFF -DFEATURE_fscompleter=OFF -DFEATURE_future=OFF -DFEATURE_gc_binaries=OFF -DFEATURE_gestures=OFF -DFEATURE_graphicsview=OFF -DFEATURE_groupbox=OFF -DFEATURE_hijricalendar=OFF -DFEATURE_identityproxymodel=OFF -DFEATURE_im=OFF -DFEATURE_imageformat_bmp=OFF -DFEATURE_imageformat_jpeg=ON -DFEATURE_imageformat_png=ON -DFEATURE_imageformat_ppm=OFF -DFEATURE_imageformat_xbm=OFF -DFEATURE_imageformat_xpm=OFF -DFEATURE_imageformatplugin=ON -DFEATURE_imageio_text_loading=OFF -DFEATURE_inputdialog=OFF -DFEATURE_islamiccivilcalendar=OFF -DFEATURE_itemmodel=ON -DFEATURE_itemviews=OFF -DFEATURE_jalalicalendar=OFF -DFEATURE_keysequenceedit=OFF -DFEATURE_lcdnumber=OFF -DFEATURE_library=OFF -DFEATURE_lineedit=OFF -DFEATURE_listview=OFF -DFEATURE_listwidget=OFF -DFEATURE_localserver=OFF -DFEATURE_mdiarea=OFF -DFEATURE_menu=OFF -DFEATURE_menubar=OFF -DFEATURE_messagebox=ON -DFEATURE_mimetype=OFF -DFEATURE_mimetype_database=OFF -DFEATURE_movie=OFF -DFEATURE_networkdiskcache=OFF -DFEATURE_opengl_desktop=ON -DFEATURE_pdf=OFF -DFEATURE_picture=OFF -DFEATURE_progressbar=OFF -DFEATURE_proxymodel=OFF -DFEATURE_publicsuffix_qt=OFF -DFEATURE_publicsuffix_system=OFF -DFEATURE_pushbutton=ON -DFEATURE_radiobutton=OFF -DFEATURE_rubberband=OFF -DFEATURE_scrollarea=OFF -DFEATURE_scrollbar=OFF -DFEATURE_scroller=OFF -DFEATURE_sessionmanager=OFF -DFEATURE_settings=ON -DFEATURE_shortcut=OFF -DFEATURE_sizegrip=OFF -DFEATURE_slider=OFF -DFEATURE_socks5=OFF -DFEATURE_sortfilterproxymodel=OFF -DFEATURE_spinbox=OFF -DFEATURE_splitter=OFF -DFEATURE_stackedwidget=OFF -DFEATURE_standarditemmodel=OFF -DFEATURE_statusbar=OFF -DFEATURE_statustip=OFF -DFEATURE_stringlistmodel=OFF -DFEATURE_syntaxhighlighter=OFF -DFEATURE_systemtrayicon=OFF -DFEATURE_tabbar=OFF -DFEATURE_tabletevent=OFF -DFEATURE_tableview=OFF -DFEATURE_tabwidget=OFF -DFEATURE_textbrowser=OFF -DFEATURE_teXXXxtdate=OFF -DFEATURE_textedit=OFF -DFEATURE_textmarkdownreader=OFF -DFEATURE_textmarkdownwriter=OFF -DFEATURE_textodfwriter=OFF -DFEATURE_timezonelocale=ON -DFEATURE_toolbar=OFF -DFEATURE_toolbox=OFF -DFEATURE_toolbutton=OFF -DFEATURE_tooltip=OFF -DFEATURE_translation=OFF -DFEATURE_transposeproxymodel=OFF -DFEATURE_treeview=OFF -DFEATURE_treewidget=OFF -DFEATURE_tuiotouch=OFF -DFEATURE_udpsocket=OFF -DFEATURE_undocommand=OFF -DFEATURE_undogroup=OFF -DFEATURE_undostack=OFF -DFEATURE_undoview=OFF -DFEATURE_validator=OFF -DFEATURE_vkgen=OFF -DFEATURE_vnc=OFF -DFEATURE_whatsthis=OFF -DFEATURE_widgettextcontrol=ON -DFEATURE_wizard=OFF -DFEATURE_xmlstream=ON -DQT_FEATURE_label=ON -DQT_BUILD_DOCS=OFF -DQT_BUILD_TOOLS_BY_DEFAULT=OFF -DFEATURE_topleveldomain=OFF -DFEATURE_xcb_glx_plugin=ON"
4043
options_qt5compat='--'
4144
options_qtsvg='--'
4245
options_qtshadertools='--'
43-
options_qtdeclarative='-- -DQT_QML_GENERATE_AOTSTATS=OFF -DFEATURE_qml_debug=OFF -DFEATURE_qml_jit=OFF -DFEATURE_qml_locale=OFF -DFEATURE_qml_profiler=OFF -DFEATURE_qml_xml_http_request=ON -DFEATURE_qml_xmllistmodel=OFF -DFEATURE_quick_designer=OFF -DFEATURE_quick_particles=OFF -DFEATURE_quickcontrols2_fluentwinui3=OFF -DFEATURE_quickcontrols2_fusion=OFF -DFEATURE_quickcontrols2_imagine=OFF -DFEATURE_quickcontrols2_universal=OFF -DFEATURE_quickcontrols2_windows=OFF -DFEATURE_quicktemplates2_calendar=OFF -DFEATURE_quicktemplates2_container=ON DFEATURE_quicktemplates2_hover=OFF DFEATURE_quicktemplates2_multitouch=OFF'
46+
options_qtdeclarative='-- -DBUILD_WITH_PCH=OFF -DFEATURE_qml_debug=OFF -DFEATURE_qml_jit=OFF -DFEATURE_qml_locale=OFF -DFEATURE_qml_profiler=OFF -DFEATURE_qml_xml_http_request=ON -DFEATURE_qml_xmllistmodel=OFF -DFEATURE_quick_designer=OFF -DFEATURE_quick_tableview=OFF -DFEATURE_quick_treeview=OFF -DFEATURE_quick_particles=OFF -DFEATURE_quickcontrols2_fluentwinui3=OFF -DFEATURE_quickcontrols2_fusion=OFF -DFEATURE_qml_animation=ON -DFEATURE_quickcontrols2_imagine=OFF -DFEATURE_quickcontrols2_universal=OFF -DFEATURE_quickcontrols2_windows=OFF -DFEATURE_quicktemplates2_calendar=OFF -DFEATURE_quicktemplates2_container=ON DFEATURE_quicktemplates2_hover=OFF DFEATURE_quicktemplates2_multitouch=OFF'
47+
truncate_qtbase='src/tools/uic/CMakeLists.txt'
48+
#truncate_qtdeclarative='src/labs/CMakeLists.txt'
4449

4550
# qt5compat depends on qtdeclarative
4651
# qtdeclarative depends on qtshadertools, qtsvg
@@ -49,13 +54,17 @@ MODULES=${@:-qtbase qtsvg qtshadertools qtdeclarative qt5compat}
4954
# for bloaty
5055
# options_qtbase="-force-debug-info ${options_qtbase}"
5156

52-
# Download
57+
#FIXME
58+
options_qtbase+=' -DFEATURE_dbus=OFF -DQT_FEATURE_dbus=OFF'
59+
60+
# Download in parallel
5361
for module in $MODULES; do
5462
module_vars "${module}"
5563
if [[ ! -e "${archive}" ]]; then
56-
curl -LO "${url}"
64+
curl -LO "${url}" &
5765
fi
5866
done
67+
wait
5968

6069
md5sum --check --ignore-missing "${SCRIPT_DIR}/md5sums-qt.txt"
6170

0 commit comments

Comments
 (0)