Skip to content

Commit 66b864d

Browse files
committed
Improve Qt + Linux Docker builds
1 parent 9a4a8f3 commit 66b864d

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
@@ -12,6 +12,20 @@ ENV LANG=C.UTF-8
1212
# Bullseye environment. It may be that not all are necessary.
1313
# aria2 build requires autoconf, autopoint, gettext
1414
# git is used for cleaning unwanted files
15+
ENV XCB_MINIMUM_PACKAGES=' \
16+
libxcb-cursor-dev \
17+
libxcb-icccm4-dev \
18+
libxcb-image0-dev \
19+
libxcb-keysyms1-dev \
20+
libxcb-randr0-dev \
21+
libxcb-render0-dev \
22+
libxcb-render-util0-dev \
23+
libxcb-shape0-dev \
24+
libxcb-shm0-dev \
25+
libxcb-sync-dev \
26+
libxcb-xfixes0-dev \
27+
libxcb-xkb-dev \
28+
'
1529
RUN apt-get update && apt-get install -y \
1630
autoconf \
1731
autopoint \
@@ -23,15 +37,18 @@ RUN apt-get update && apt-get install -y \
2337
libtool \
2438
libx11-xcb-dev \
2539
libxcb-glx0-dev \
26-
libxext-dev \
27-
libxkbcommon-dev \
40+
libxkbcommon-x11-dev \
2841
make \
42+
ninja-build \
2943
perl \
3044
p7zip-full \
3145
pkg-config \
3246
python \
3347
xz-utils \
34-
zlib1g-dev
48+
zlib1g-dev \
49+
$XCB_MINIMUM_PACKAGES && \
50+
echo 'deb https://archive.debian.org/debian-archive/debian bullseye-backports main' > /etc/apt/sources.list.d/backports.list && \
51+
apt-get update && apt-get install -y cmake/bullseye-backports
3552

3653
#################
3754
# Build OpenSSL #
@@ -49,15 +66,8 @@ RUN make -j`nproc` && make install_sw && rm -rf /build-ssl
4966
# Build Qt #
5067
############
5168
WORKDIR /build-qt
52-
COPY md5sums-qt.txt /build-qt/
53-
ENV UPDATER_MODULES=qtbase,qtquickcontrols,qtquickcontrols2,qtsvg,qtgraphicaleffects
54-
RUN curl -LO https://download.qt.io/archive/qt/5.14/5.14.2/single/qt-everywhere-src-5.14.2.tar.xz && \
55-
md5sum --check --ignore-missing md5sums-qt.txt && \
56-
tar -xJf qt-everywhere-src-5.14.2.tar.xz && \
57-
cd qt-everywhere-src-5.14.2 && \
58-
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 && \
59-
bash -c "make -j`nproc` module-{$UPDATER_MODULES} && make module-{$UPDATER_MODULES}-install_subtargets" && \
60-
rm -rf /build-qt
69+
COPY md5sums-qt.txt build-qt.sh /build-qt/
70+
RUN PKG_CONFIG_PATH=/openssl/lib64/pkgconfig ./build-qt.sh && mv qt /qt && rm -rf /build-qt
6171

6272
###############
6373
# Build aria2 #
@@ -75,7 +85,8 @@ RUN OPENSSL_LIBS='-L/openssl/lib64 -lssl -lcrypto -lpthread -ldl' OPENSSL_CFLAGS
7585
COPY . /updater
7686
RUN set -e; for D in . quazip fluid; do cd /updater/$D && git clean -dXff; done
7787
WORKDIR /build
78-
RUN /qt/bin/qmake -config release QMAKE_LFLAGS+="-no-pie" /updater && make -j`nproc`
88+
# TODO no-pie?
89+
RUN PKG_CONFIG_PATH=/openssl/lib64/pkgconfig cmake -DCMAKE_FIND_ROOT_PATH=/qt -DCMAKE_BUILD_TYPE=MinSizeRel /updater && make -j`nproc`
7990
RUN mv updater updater-nonstripped && strip updater-nonstripped -o updater
8091
# Version check: do not depend on glibc > 2.31
8192
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)