11# Full Qt toolchain for the reMarkable
22ARG FROM
3- FROM $FROM
3+ FROM $FROM AS qt6base
44
5- # Build Qt 5.15.1 targeting armhf
6- COPY linux-arm-remarkable-g++ /linux-arm-remarkable-g++
7- COPY linux-aarch64-remarkable-g++ /linux-aarch64-remarkable-g++
5+ # Install build dependencies
86RUN export DEBIAN_FRONTEND=noninteractive \
9- # Install build dependencies
107 && apt-get update -y \
118 && apt-get install -y --no-install-recommends \
12- libudev-dev \
13- # Build Qt
14- && cd /root \
15- && git clone https://code.qt.io/qt/qt5.git \
16- && cd qt5 \
9+ libudev-dev
10+
11+ # Build Qt
12+ RUN cd /root \
13+ && git clone https://code.qt.io/qt/qt5.git qt6 \
14+ && cd qt6 \
1715 && git switch 6.7.3 \
18- && GIT_ASKPASS="/bin/echo" perl init-repository --module-subset=qtbase,qtshadertools,qtdeclarative \
19- # Setup reMarkable mkspec
20- && mv /linux-arm-remarkable-g++ qtbase/mkspecs/devices \
21- && mv /linux-aarch64-remarkable-g++ qtbase/mkspecs/devices \
22- && cd .. \
23- # Build for host machine (required from Qt6+)
24- && bash -c 'source /opt/x-tools/switch-aarch64.sh \
25- && mkdir qt5-build \
26- && cd qt5-build \
27- && unset SYSROOT \
28- && unset PKG_CONFIG_SYSROOT_DIR \
29- && ../qt5/configure \
16+ && GIT_ASKPASS="/bin/echo" perl init-repository --module-subset=qtbase,qtshadertools,qtdeclarative
17+
18+ COPY linux-arm-remarkable-g++ /root/qt6/qtbase/mkspecs/devices/linux-arm-remarkable-g++
19+ COPY linux-aarch64-remarkable-g++ /root/qt6/qtbase/mkspecs/devices/linux-aarch64-remarkable-g++
20+
21+ # Build host
22+ RUN mkdir qt6-build \
23+ && cd qt6-build \
24+ && /root/qt6/configure \
3025 -prefix /usr \
3126 -no-opengl \
3227 -no-widgets \
3328 -no-feature-sql \
3429 -- -DQT_BUILD_EXAMPLES=OFF \
3530 -DQT_BUILD_TESTS=OFF \
3631 && cmake --build . --parallel $(nproc) \
37- && cmake --install . \
38- && cd .. \
39- # Clean up
40- && rm -rf qt5-build \
41- # Build for armhf
42- && export SYSROOT=/opt/x-tools/arm-remarkable-linux-gnueabihf/arm-remarkable-linux-gnueabihf/sysroot \
43- && export PKG_CONFIG_SYSROOT_DIR="$SYSROOT" \
44- && mkdir qt5 -build \
45- && cd qt5-build \
46- && ../qt5 /configure \
32+ && cmake --install .
33+
34+ FROM qt6base AS arm
35+
36+ # Build arm
37+ RUN rm -r qt6-build \
38+ && mkdir qt6-build \
39+ && cd qt6 -build \
40+ && bash -c 'source /opt/x-tools/switch-arm.sh \
41+ && /root/qt6 /configure \
4742 -prefix /usr \
4843 -extprefix $SYSROOT/usr \
4944 -device linux-arm-remarkable-g++ \
@@ -56,17 +51,16 @@ RUN export DEBIAN_FRONTEND=noninteractive \
5651 -DQT_BUILD_EXAMPLES=OFF \
5752 -DQT_BUILD_TESTS=OFF \
5853 -DCMAKE_TOOLCHAIN_FILE=/usr/share/cmake/arm-linux-gnueabihf.cmake \
59- && cmake --build . --parallel $(nproc) \
60- && cmake --install . \
61- && cd .. \
62- # Clean up
63- && rm -rf qt5-build \
64- && find "$SYSROOT" -type l,f -name "*.la" | xargs --no-run-if-empty rm' \
65- # Now Build AArch64
54+ && cmake --build . --parallel $(nproc)'
55+
56+ FROM qt6base AS aarch64
57+
58+ # Build aarch64
59+ RUN rm -r qt6-build \
60+ && mkdir qt6-build \
61+ && cd qt6-build \
6662 && bash -c 'source /opt/x-tools/switch-aarch64.sh \
67- && mkdir qt5-build \
68- && cd qt5-build \
69- && ../qt5/configure \
63+ && /root/qt6/configure \
7064 -prefix /usr \
7165 -extprefix $SYSROOT/usr \
7266 -device linux-aarch64-remarkable-g++ \
@@ -80,12 +74,36 @@ RUN export DEBIAN_FRONTEND=noninteractive \
8074 -DQT_BUILD_EXAMPLES=OFF \
8175 -DQT_BUILD_TESTS=OFF \
8276 -DCMAKE_TOOLCHAIN_FILE=/usr/share/cmake/aarch64-remarkable-linux-gnu.cmake \
83- && cmake --build . --parallel $(nproc) \
77+ && cmake --build . --parallel $(nproc)'
78+
79+ FROM $FROM AS final
80+
81+ RUN --mount=target=/root/qt6,from=qt6base,src=/root/qt6 \
82+ --mount=target=qt6-host,from=qt6base,src=qt6-build \
83+ --mount=target=qt6-arm,from=arm,src=qt6-build \
84+ --mount=target=qt6-aarch64,from=aarch64,src=qt6-build \
85+ # Install build dependenciesh
86+ export DEBIAN_FRONTEND=noninteractive \
87+ && apt-get update -y \
88+ && apt-get install -y --no-install-recommends \
89+ libudev-dev \
90+ && cp -r qt6-host qt6-build \
91+ && cd qt6-build \
8492 && cmake --install . \
8593 && cd .. \
86- && rm -rf qt5-build \
94+ && rm -r qt6-build \
95+ && cp -r qt6-arm qt6-build \
96+ && bash -c 'source /opt/x-tools/switch-arm.sh \
97+ && cd qt6-build \
98+ && cmake --install . \
99+ && find "$SYSROOT" -type l,f -name "*.la" | xargs --no-run-if-empty rm' \
100+ && rm -r qt6-build \
101+ && cp -r qt6-aarch64 qt6-build \
102+ && bash -c 'source /opt/x-tools/switch-aarch64.sh \
103+ && cd qt6-build \
104+ && cmake --install . \
87105 && find "$SYSROOT" -type l,f -name "*.la" | xargs --no-run-if-empty rm' \
106+ && rm -r qt6-build \
88107 && apt-get autoremove -y \
89108 && apt-get clean \
90109 && rm -rf /var/lib/apt/lists/* /var/log/dpkg.log /var/log/apt
91-
0 commit comments