# Docker file for building Overte Qt5 packages for Ubuntu 20.04 # Some steps for actually using this: # - Check which commit you are building https://invent.kde.org/qt/qt/qt5/-/tree/kde/5.15 # - Adjust this file to include the commit hash you are building, the date, the number of threads you want to use (-j10), the platform, and the Qt and QtWebEngine versions. # Keep in mind that building Qt requires a lot of memory. You should have over 1.2GiB of system memory available per thread. # - Run the build process with something like `PROGRESS_NO_TRUNC=1 DOCKER_BUILDKIT=1 BUILDKIT_STEP_LOG_MAX_SIZE=-1 docker build --progress plain -t overte-qt5:5.15.10-2023.10.01-kde_d2122ee587cceb5b2f4130b7074f86db9aca570e -f Dockerfile_Ubuntu_20.04_Qt5 .` # Buildkit is used to cache intermittent steps in case you need to modify something afterwards. # - Once the build has completed, create a container from the image and export the created Qt package. # `docker create --name extract overte-qt5:5.15.10-2023.10.01-kde_d2122ee587cceb5b2f4130b7074f86db9aca570e` # `docker cp extract:qt5-install-5.15.10-2023.10.01-kde_d2122ee587cceb5b2f4130b7074f86db9aca570e-ubuntu-20.04-amd64.tar.xz /path/on/host` # `docker rm extract` FROM ubuntu:20.04 LABEL maintainer="Julian Groß (julian.gro@overte.org)" LABEL description="Development image for Overte Qt5 packages for Ubuntu 20.04." # Don't use any frontend when installalling packages during the creation of this container ARG DEBIAN_FRONTEND=noninteractive RUN echo UTC >/etc/timezone # Enable source repositories for apt RUN sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list # Update package list RUN apt-get update # Upgrade packages RUN apt-get -y upgrade RUN apt-get -y install git # Clone and enter single branch of Qt5 RUN git clone --recursive https://invent.kde.org/qt/qt/qt5.git -b kde/5.15 --single-branch # Note: We don't need to update QtWebengine because KDE has already done this. # Adjust QMAKE_LIBDIR_X11 and QMAKE_LIBDIR_OPENGL RUN sed -i qt5/qtbase/mkspecs/linux-g++-64/qmake.conf -e 's/\/usr\/X11R6\/lib64/\/usr\/lib\/x86_64-linux-gnu/g' # Install Qt5 system build dependencies RUN apt-get -y build-dep qt5-default # Install build dependencies RUN apt-get -y install git python gperf flex bison pkg-config mesa-utils libgl1-mesa-dev make g++ libdbus-glib-1-dev libnss3-dev nodejs libxkbfile-dev libx11-dev libwebp-dev libvpx-dev RUN mkdir qt5-install && mkdir qt5-build WORKDIR qt5-build RUN ../qt5/configure -force-debug-info -release -opensource -confirm-license -platform linux-g++ -recheck-all -nomake tests -nomake examples -skip qttranslations -skip qtserialport -skip qt3d -skip qtlocation -skip qtwayland -skip qtsensors -skip qtgamepad -skip qtcharts -skip qtx11extras -skip qtmacextras -skip qtvirtualkeyboard -skip qtpurchasing -skip qtdatavis3d -skip qtlottie -skip qtquick3d -skip qtpim -skip qtdocgallery -no-warnings-are-errors -no-pch -no-icu -prefix ../qt5-install RUN NINJAFLAGS='-j6' make -j6 RUN make -j6 install WORKDIR ../../qt5-install RUN find . -name \*.prl -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \; # Overwrite QtWebengine version to work around version conflicts RUN find . -name \Qt5WebEngine*Config.cmake -exec sed -i '' -e 's/5\.15\.14/5\.15\.10/g' {} \; RUN cp lib/libQt5WebEngine.so.5.15.14 lib/libQt5WebEngine.so.5.15.10 RUN cp lib/libQt5WebEngineCore.so.5.15.14 lib/libQt5WebEngineCore.so.5.15.10 RUN cp lib/libQt5WebEngineWidgets.so.5.15.14 lib/libQt5WebEngineWidgets.so.5.15.10 RUN cp lib/libQt5Pdf.so.5.15.14 lib/libQt5Pdf.so.5.15.10 RUN cp lib/libQt5PdfWidgets.so.5.15.14 lib/libQt5PdfWidgets.so.5.15.10 COPY ./qt.conf ./bin/ RUN cp ../qt5-build/config.summary ./ WORKDIR .. RUN XZ_OPT='-T0' tar -Jcvf qt5-install-5.15.10-2023.10.01-kde_d2122ee587cceb5b2f4130b7074f86db9aca570e-ubuntu-20.04-amd64.tar.xz qt5-install