Skip to content

Commit

Permalink
Add Ubuntu 20.04 Qt package
Browse files Browse the repository at this point in the history
  • Loading branch information
JulianGro committed Aug 12, 2022
1 parent 98d63fd commit 23a59eb
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 2 deletions.
4 changes: 3 additions & 1 deletion hifi_qt.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,9 @@ def __init__(self, args):
if distro.id() == 'ubuntu' or distro.id() == 'linuxmint':
if (distro.id() == 'ubuntu' and u_major == 18) or distro.id() == 'linuxmint' and u_major == 19:
self.qtUrl = self.assets_url + '/dependencies/qt5/qt5-install-5.15.5-2022.07.17-kde_ea4efc067b47c11b1aac61668afd8578a6834f5b-ubuntu-18.04-amd64.tar.xz'
elif (distro.id() == 'ubuntu' and u_major > 18) or (distro.id() == 'linuxmint' and u_major > 19):
elif (distro.id() == 'ubuntu' and u_major == 20) or distro.id() == 'linuxmint' and u_major == 20:
self.qtUrl = self.assets_url + '/dependencies/qt5/qt5-install-5.15.5-2022.08.12-kde_0b4d44f2ff1103349bac22b9b207cfcc1f50a53a-ubuntu-20.04-amd64.tar.xz'
elif (distro.id() == 'ubuntu' and u_major > 20) or (distro.id() == 'linuxmint' and u_major > 20):
self.__no_qt_package_error()
else:
self.__unsupported_error()
Expand Down
2 changes: 1 addition & 1 deletion tools/qt-builder/Dockerfile_Ubuntu_18.04_Qt5
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ 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
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
Expand Down
78 changes: 78 additions & 0 deletions tools/qt-builder/Dockerfile_Ubuntu_20.04_Qt5
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# 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), 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.5-2022.08.12-kde_0b4d44f2ff1103349bac22b9b207cfcc1f50a53a -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.5-2022.08.12-kde_0b4d44f2ff1103349bac22b9b207cfcc1f50a53a`
# `docker cp extract:qt5-install-5.15.5-2022.08.12-kde_0b4d44f2ff1103349bac22b9b207cfcc1f50a53a-ubuntu-20.04-amd64.tar.xz /path/on/host`
# `docker rm extract`

FROM ubuntu:20.04
LABEL maintainer="Julian Groß ([email protected])"
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


RUN mkdir qt5-install && mkdir qt5-build
WORKDIR qt5-build
RUN ../qt5/configure -force-debug-info -release -opensource -confirm-license -platform linux-g++-64 -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='-j10' make -j10

RUN make -j10 module-qtscript

RUN make -j10 install

WORKDIR ./qtscript
RUN make -j10 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\.11/5\.15\.5/g' {} \;
RUN cp lib/libQt5WebEngine.so.5.15.11 lib/libQt5WebEngine.so.5.15.5
RUN cp lib/libQt5WebEngineCore.so.5.15.11 lib/libQt5WebEngineCore.so.5.15.5
RUN cp lib/libQt5WebEngineWidgets.so.5.15.11 lib/libQt5WebEngineWidgets.so.5.15.5
RUN cp lib/libQt5Pdf.so.5.15.11 lib/libQt5Pdf.so.5.15.5
RUN cp lib/libQt5PdfWidgets.so.5.15.11 lib/libQt5PdfWidgets.so.5.15.5


COPY ./qt.conf ./bin/

RUN cp ../qt5-build/config.summary ./

WORKDIR ..
RUN XZ_OPT='-T0' tar -Jcvf qt5-install-5.15.5-2022.08.12-kde_0b4d44f2ff1103349bac22b9b207cfcc1f50a53a-ubuntu-20.04-amd64.tar.xz qt5-install

0 comments on commit 23a59eb

Please sign in to comment.