@@ -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+ '
1125RUN 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# ###########
4764WORKDIR /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
7080COPY . /updater
7181RUN set -e; for D in . quazip fluid; do cd /updater/$D && git clean -dXff; done
7282WORKDIR /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`
7485RUN mv updater updater-nonstripped && strip updater-nonstripped -o updater
7586# Version check: do not depend on glibc > 2.31
7687RUN echo GLIBC_2.31 > target_version && \
0 commit comments