diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 7ae9931a..955fe224 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -72,11 +72,11 @@ jobs: android*) PLATFORM="" ;; client*) - PLATFORM="--platform 'linux/amd64'" ;; + PLATFORM="--platform linux/amd64" ;; translations*) - PLATFORM="--platform 'linux/amd64'" ;; + PLATFORM="--platform linux/amd64" ;; *32bit) - PLATFORM="--platform 'linux/386'" ;; + PLATFORM="--platform linux/386" ;; *) PLATFORM="--platform linux/amd64,linux/arm64" ;; esac diff --git a/client-appimage-qt6/Dockerfile b/client-appimage-qt6/Dockerfile deleted file mode 100644 index bb6c1c40..00000000 --- a/client-appimage-qt6/Dockerfile +++ /dev/null @@ -1,239 +0,0 @@ -FROM ubuntu:22.04 - -MAINTAINER Desktop Team - -# Run 'docker build' with '--build-arg BUILD_QT=1' to build Qt from source (default: not set) -ARG BUILD_QT - -ENV VER_QT 6.8.1 -ENV VER_QT_DATE 2025-01-16 -ENV VER_OPENSSL 3.4.0 -ENV VER_LIBP11 libp11-0.4.12 -ENV VER_KFRAMEWORKS 6.10.0 -ENV VER_SQLITE 3460100 -ENV VER_SQLITE_YEAR 2024 -ENV VER_QTKEYCHAIN 0.15.0 - -ENV QT_ROOT /opt/qt - -RUN sed -i '/deb-src/s/^# //' /etc/apt/sources.list && \ - apt-get update && \ - apt-get install -y apt-transport-https ca-certificates gnupg software-properties-common wget && \ - apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -q -y \ - git \ - ninja-build \ - curl \ - jq \ - perl \ - python3 \ - python3-pip \ - software-properties-common \ - build-essential \ - mesa-common-dev \ - pkg-config \ - ninja-build \ - gcc-11 \ - g++-11 \ - clang-15 \ - clang-format-15 \ - clang-tidy-15 \ - libclang-15-dev \ - cmake \ - zlib1g-dev \ - xz-utils \ - liblzma-dev \ - libzstd-dev \ - libbz2-dev \ - libfontconfig1-dev \ - libfreetype6-dev \ - libx11-dev \ - libx11-xcb-dev \ - libxext-dev \ - libxfixes-dev \ - libxi-dev \ - libxrender-dev \ - libxcb1-dev \ - libxcb-cursor-dev \ - libxcb-glx0-dev \ - libxcb-keysyms1-dev \ - libxcb-image0-dev \ - libxcb-shm0-dev \ - libxcb-icccm4-dev \ - libxcb-sync-dev \ - libxcb-xfixes0-dev \ - libxcb-shape0-dev \ - libxcb-randr0-dev \ - libxcb-render-util0-dev \ - libxcb-util-dev \ - libxcb-xinerama0-dev \ - libxcb-xkb-dev \ - libxkbcommon-dev \ - libxkbcommon-x11-dev \ - python3-sphinxcontrib.serializinghtml \ - python3-sphinxcontrib.qthelp \ - python3-sphinx \ - unzip \ - libsecret-1-dev \ -# for updating app images - zsync \ -# For cmocka based csync tests - libcmocka-dev \ -# generate png images from svg - inkscape \ -# install xvfb to enable graphical tests - xvfb \ -# html documentation generation - python3-sphinx && \ - apt-get build-dep -q -y \ - qt6-base-dev \ - qt6-base-dev-tools \ - qt6-l10n-tools \ - qt6-declarative-dev-tools \ - qt6-connectivity-dev \ - qt6-multimedia-dev \ - qt6-webengine-dev \ - qt6-webengine-dev-tools \ - qt6-tools-dev \ - qt6-tools-dev-tools \ - qt6-declarative-dev \ - qt6-l10n-tools \ - qt6-quick3d-dev \ - qt6-translations-l10n \ - libqt6sql6-sqlite && \ - apt-get remove -y -q --purge libqt6core6 nodejs && \ -# Cleaning up - DEBIAN_FRONTEND=noninteractive apt-get remove -q -y --purge libssl-dev && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -########################################################################### - -# Install openssl -RUN cd /tmp && \ - wget https://www.openssl.org/source/openssl-${VER_OPENSSL}.tar.gz && \ - tar -xvf openssl-${VER_OPENSSL}.tar.gz && \ - cd openssl-${VER_OPENSSL} && \ - ./config && \ - make -j$(nproc) && \ - make -j$(nproc) install && \ - cd .. && \ - rm -rf openssl* - -# Install libp11 for PKCS#11 encryption -RUN cd /tmp && \ - wget https://github.com/OpenSC/libp11/releases/download/${VER_LIBP11}/${VER_LIBP11}.tar.gz && \ - tar xvf ${VER_LIBP11}.tar.gz && \ - cd ${VER_LIBP11} && \ - export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig && \ - ./configure && make && make install && \ - cd .. && \ - rm -rf ${VER_LIBP11} - -# Install sqlite3 from https://www.sqlite.org/amalgamation.html -# https://www3.sqlite.org/src/dir?ci=tip&name=autoconf -RUN cd /tmp && \ - wget https://www.sqlite.org/${VER_SQLITE_YEAR}/sqlite-autoconf-${VER_SQLITE}.tar.gz && \ - tar xvf sqlite-autoconf-${VER_SQLITE}.tar.gz && \ - cd sqlite-autoconf-${VER_SQLITE} && \ - ./configure && make && make install && \ - cd .. && \ - rm -rf sqlite-autoconf-${VER_SQLITE} - -########################################################################### - -# Download Qt sources -RUN if [ "$BUILD_QT" = "1" ] ; then echo Build Qt from source. && \ - git clone --depth=1 --recurse-submodules --shallow-submodules --branch=v${VER_QT} https://code.qt.io/qt/qt5.git qt6 \ - ; fi - -RUN if [ "$BUILD_QT" = "1" ] ; then \ - wget https://nodejs.org/dist/v18.20.1/node-v18.20.1-linux-x64.tar.xz && \ - tar xf node-v18.20.1-linux-x64.tar.xz \ - ; fi - -# Build Qt -RUN if [ "$BUILD_QT" = "1" ] ; then \ - mkdir qt6-${VER_QT}-linux-release && \ - cd qt6-${VER_QT}-linux-release && \ - export PATH=${PATH}:/node-v18.20.1-linux-x64/bin && \ - /qt6/configure -release -nomake examples -nomake tests -opensource -confirm-license -openssl-linked -skip qt3d -- \ - -DCMAKE_INSTALL_PREFIX=${QT_ROOT} -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DQT_BUILD_TESTS=OFF -DQT_BUILD_EXAMPLES=ON -DQT_FEATURE_thread=ON -DQT_FEATURE_xcb=ON -DQT_FEATURE_openssl_runtime=OFF -DQT_FEATURE_openssl_linked=ON && \ - cmake --build . --parallel && \ - cmake --install . \ - ; fi - -# Build Qt -RUN if [ "$BUILD_QT" = "1" ] ; then \ - tar cfJ /qt-bin-${VER_QT}-openssl-${VER_OPENSSL}-linux-x86_64-$(date +"%Y-%m-%d").tar.xz ${QT_ROOT} \ - ; fi - -# -# The following precompiled Qt package has been built with the commands above, using this Dockerfile. -# -# Since it takes a very long time to compile, the build on Docker Hub fails due to a timeout. -# -# This is why we're going to use our own precompiled version here. -# -# Run 'docker build' with '--build-arg BUILD_QT=1' to build Qt from source (default: not set) -# on a dedicated build machine: -# -# docker build . -t client-5.15 . --build-arg BUILD_QT=1 -# - -# Download Qt precompiled -ENV QT_TARBALL qt-bin-${VER_QT}-openssl-${VER_OPENSSL}-linux-x86_64-${VER_QT_DATE}.tar.xz - -RUN if [ "$BUILD_QT" != "1" ] ; then \ - wget https://download.nextcloud.com/desktop/development/qt/${QT_TARBALL} && \ - tar -xvf ${QT_TARBALL} && \ - rm ${QT_TARBALL} \ - ; fi - -RUN if [ "$BUILD_QT" != "1" ] ; then \ - DEBIAN_FRONTEND=noninteractive apt-get remove -q -y --purge libsqlite3-dev \ - ; fi - -########################################################################### - -# Install QtKeychain -RUN if [ "$BUILD_QT" != "1" ] ; then \ - cd /tmp && \ - git clone https://github.com/frankosterfeld/qtkeychain.git --depth 1 -b ${VER_QTKEYCHAIN} && \ - cd qtkeychain && \ - mkdir build && \ - cd build && \ - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \ - cmake --build . --parallel && \ - cmake --install . && \ - cd .. && \ - rm -rf qtkeychain \ - ; fi - -# Install extra-cmake-modules -RUN \ - cd /tmp && \ - git clone https://invent.kde.org/frameworks/extra-cmake-modules.git --depth 1 -b v${VER_KFRAMEWORKS} && \ - cd extra-cmake-modules && \ - mkdir build && \ - cd build && \ - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DQT_MAJOR_VERSION=6 -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \ - cmake --build . --parallel && \ - cmake --install . && \ - cd .. && \ - rm -rf extra-cmake-modules \ - ; - -# Install KArchive -RUN \ - cd /tmp && \ - git clone https://invent.kde.org/frameworks/karchive.git --depth 1 -b v${VER_KFRAMEWORKS} && \ - cd karchive && \ - mkdir build && \ - cd build && \ - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DQT_MAJOR_VERSION=6 -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \ - cmake --build . --parallel && \ - cmake --install . && \ - cd .. && \ - rm -rf karchive \ - ; diff --git a/client-appimage-qt6/Dockerfile.build.el8 b/client-appimage-qt6/Dockerfile.build.el8 new file mode 100644 index 00000000..88f82cca --- /dev/null +++ b/client-appimage-qt6/Dockerfile.build.el8 @@ -0,0 +1,70 @@ +FROM almalinux/8-base + +MAINTAINER Desktop Team + +RUN dnf update -y && \ + dnf install -y epel-release && \ + dnf config-manager --set-enabled powertools && \ + dnf update -y && \ + dnf install -y \ + xz \ + gcc-toolset-14 \ + gcc-toolset-14-libatomic-devel \ + git-core \ + patch \ + python3.12 \ + python3.12-pip \ + xcb-util-cursor-devel \ + xcb-util-devel \ + xcb-util-image-devel \ + xcb-util-keysyms-devel \ + xcb-util-renderutil-devel \ + xcb-util-wm-devel \ + xkeyboard-config-devel \ + xorg-x11-server-Xvfb \ + xorg-x11-xkb-utils-devel \ + libxcb-devel \ + libxkbfile-devel \ + libxshmfence-devel \ + libxkbcommon-devel \ + libxkbcommon-x11-devel \ + libSM-devel \ + libX11-devel \ + libXScrnSaver-devel \ + libXcomposite-devel \ + libXcursor-devel \ + libXdamage-devel \ + libXext-devel \ + libXfixes-devel \ + libXi-devel \ + libXinerama-devel \ + libXrandr-devel \ + libXrender-devel \ + libXtst-devel \ + libXv-devel \ + mesa-libEGL-devel \ + mesa-libGL-devel \ + mesa-libgbm-devel \ + alternatives --set python /usr/bin/python3.12 && \ + alternatives --set python3 /usr/bin/python3.12 + +########################################################################### + +# Install craftmaster +RUN \ + cd /root && \ + git clone https://invent.kde.org/packaging/craftmaster.git \ + ; + +ADD craftmaster.ini /root/craftmaster.ini + +# Install binary dependencies +RUN \ + scl run gcc-toolset-14 -- PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:/usr/share/pkgconfig python3 /root/craftmaster/CraftMaster.py --config /root/craftmaster.ini --target linux-gcc-x86_64 -c --add-blueprint-repository "https://github.com/nextcloud/craft-blueprints-kde.git|stable-4.0|" && \ + scl run gcc-toolset-14 -- PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:/usr/share/pkgconfig python3 /root/craftmaster/CraftMaster.py --config /root/craftmaster.ini --target linux-gcc-x86_64 -c --add-blueprint-repository "https://github.com/nextcloud/desktop-client-blueprints.git|stable-4.0|" && \ + scl run gcc-toolset-14 -- PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:/usr/share/pkgconfig python3 /root/craftmaster/CraftMaster.py --config /root/craftmaster.ini --target linux-gcc-x86_64 -c craft && \ + scl run gcc-toolset-14 -- PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:/usr/share/pkgconfig python3 /root/craftmaster/CraftMaster.py --config /root/craftmaster.ini --target linux-gcc-x86_64 -c --install-deps nextcloud-client && \ + scl run gcc-toolset-14 -- PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:/usr/share/pkgconfig python3 /root/craftmaster/CraftMaster.py --config /root/craftmaster.ini --target linux-gcc-x86_64 -c --no-cache -i kde/frameworks/tier1/karchive && \ + scl run gcc-toolset-14 -- PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:/usr/share/pkgconfig python3 /root/craftmaster/CraftMaster.py --config /root/craftmaster.ini --target linux-gcc-x86_64 -c --no-cache -i qt-libs/qtkeychain && \ + rm -rf /root/linux-gcc-x86_64/build \ + ; diff --git a/client-appimage-qt6/Dockerfile.el8 b/client-appimage-qt6/Dockerfile.el8 index d6d41974..fd1121cc 100644 --- a/client-appimage-qt6/Dockerfile.el8 +++ b/client-appimage-qt6/Dockerfile.el8 @@ -2,55 +2,32 @@ FROM almalinux/8-base MAINTAINER Desktop Team -# Run 'docker build' with '--build-arg BUILD_QT=1' to build Qt from source (default: not set) -ARG BUILD_QT - -ENV VER_QT 6.8.3 -ENV VER_QT_DATE 2025-05-07 -ENV VER_OPENSSL 3.4.1 -ENV VER_LIBP11 libp11-0.4.12 -ENV VER_KFRAMEWORKS 6.13.0 -ENV VER_SQLITE 3460100 -ENV VER_SQLITE_YEAR 2024 -ENV VER_QTKEYCHAIN 0.15.0 - -ENV QT_ROOT /opt/qt - RUN dnf update -y && \ dnf install -y epel-release && \ dnf config-manager --set-enabled powertools && \ dnf update -y && \ dnf install -y \ - '@Development Tools' \ - alsa-lib-devel \ - at-spi2-core-devel \ - clang \ - clang-devel \ - cmake \ - cups-devel \ - curl \ - dbus-devel \ - dbus-x11 \ - desktop-file-utils \ - expat-devel \ - fontconfig-devel \ - freetype-devel \ - gcc-toolset-11 \ - gcc-toolset-11-libatomic-devel \ - git \ - glib2-devel \ - glx-utils \ - gperf \ - gstreamer1-devel \ - gstreamer1-plugins-bad-free-devel \ - gstreamer1-plugins-base-devel \ - gtk3-devel \ - harfbuzz-devel \ - inkscape \ - jsoncpp-devel \ - krb5-devel \ - lcms2-devel \ - libICE-devel \ + xz \ + gcc-toolset-14 \ + gcc-toolset-14-libatomic-devel \ + git-core \ + patch \ + python3.12 \ + python3.12-pip \ + xcb-util-cursor-devel \ + xcb-util-devel \ + xcb-util-image-devel \ + xcb-util-keysyms-devel \ + xcb-util-renderutil-devel \ + xcb-util-wm-devel \ + xkeyboard-config-devel \ + xorg-x11-server-Xvfb \ + xorg-x11-xkb-utils-devel \ + libxcb-devel \ + libxkbfile-devel \ + libxshmfence-devel \ + libxkbcommon-devel \ + libxkbcommon-x11-devel \ libSM-devel \ libX11-devel \ libXScrnSaver-devel \ @@ -65,204 +42,49 @@ RUN dnf update -y && \ libXrender-devel \ libXtst-devel \ libXv-devel \ - libcap-devel \ - libcmocka-devel \ - libdrm-devel \ - libevent-devel \ - libglvnd-devel \ - libinput-devel \ - libjpeg-turbo-devel \ - libmng-devel \ - libpng-devel \ - libpq-devel \ - libproxy-devel \ - libsecret-devel \ - libstdc++-static \ - libtiff-devel \ - libwebp-devel \ - libxcb-devel \ - libxkbcommon-devel \ - libxkbcommon-x11-devel \ - libxkbfile-devel \ - libxshmfence-devel \ - llvm-devel \ - mariadb-connector-c-devel \ - mesa-dri-drivers \ mesa-libEGL-devel \ mesa-libGL-devel \ mesa-libgbm-devel \ - ninja-build \ - nss-devel \ - openal-soft-devel \ - opus-devel \ - pciutils-devel \ - perl \ - poppler-cpp-devel \ - pulseaudio-libs-devel \ - python3-sphinx \ - python3.12 \ - python3.12-pip \ - qt5-rpm-macros \ - re2-devel \ - systemd-devel \ - tar \ - time \ - unixODBC-devel \ - unzip \ - wayland-devel \ + libsecret-devel \ + libselinux-devel \ + libmount-devel \ + file \ + glib2-devel \ wget \ - xcb-util-cursor-devel \ - xcb-util-devel \ - xcb-util-image-devel \ - xcb-util-keysyms-devel \ - xcb-util-renderutil-devel \ - xcb-util-wm-devel \ - xkeyboard-config-devel \ - xorg-x11-server-Xvfb \ - xorg-x11-xkb-utils-devel \ - xz \ - xz-devel \ - zlib-devel && \ + inkscape && \ alternatives --set python /usr/bin/python3.12 && \ - alternatives --set python3 /usr/bin/python3.12 && \ - echo $'/usr/local/lib\n/usr/local/lib64' > /etc/ld.so.conf.d/local-lib.conf && ldconfig - -ENV PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" + alternatives --set python3 /usr/bin/python3.12 ########################################################################### -# Install openssl -RUN cd /tmp && \ - wget https://www.openssl.org/source/openssl-${VER_OPENSSL}.tar.gz && \ - tar -xvf openssl-${VER_OPENSSL}.tar.gz && \ - cd openssl-${VER_OPENSSL} && \ - scl run gcc-toolset-11 -- ./config && \ - scl run gcc-toolset-11 -- make -j$(nproc) && \ - scl run gcc-toolset-11 -- make -j$(nproc) install && \ - cd .. && \ - rm -rf openssl* - -# Install libp11 for PKCS#11 encryption -RUN cd /tmp && \ - wget https://github.com/OpenSC/libp11/releases/download/${VER_LIBP11}/${VER_LIBP11}.tar.gz && \ - tar xvf ${VER_LIBP11}.tar.gz && \ - cd ${VER_LIBP11} && \ - export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig && \ - scl run gcc-toolset-11 -- ./configure && \ - scl run gcc-toolset-11 -- make && \ - scl run gcc-toolset-11 -- make install && \ - cd .. && \ - rm -rf ${VER_LIBP11} - -# Install sqlite3 from https://www.sqlite.org/amalgamation.html -# https://www3.sqlite.org/src/dir?ci=tip&name=autoconf -RUN cd /tmp && \ - wget https://www.sqlite.org/${VER_SQLITE_YEAR}/sqlite-autoconf-${VER_SQLITE}.tar.gz && \ - tar xvf sqlite-autoconf-${VER_SQLITE}.tar.gz && \ - cd sqlite-autoconf-${VER_SQLITE} && \ - scl run gcc-toolset-11 -- ./configure && \ - scl run gcc-toolset-11 -- make && \ - scl run gcc-toolset-11 -- make install && \ - cd .. && \ - rm -rf sqlite-autoconf-${VER_SQLITE} - -# Ensure ld cache is up-to-date after building openssl/libp11/sqlite -RUN ldconfig - -########################################################################### - -# Download Qt sources -RUN if [ "$BUILD_QT" = "1" ] ; then echo Build Qt from source. && \ - git clone --depth=1 --recurse-submodules --shallow-submodules --branch=v${VER_QT} https://code.qt.io/qt/qt5.git qt6 \ - ; fi - -RUN if [ "$BUILD_QT" = "1" ] ; then \ - wget https://nodejs.org/dist/v18.20.1/node-v18.20.1-linux-x64.tar.xz && \ - tar xf node-v18.20.1-linux-x64.tar.xz \ - ; fi - -RUN if [ "$BUILD_QT" = "1" ]; then \ - pip3.12 install html5lib \ - ; fi - -# Build Qt -RUN if [ "$BUILD_QT" = "1" ] ; then \ - mkdir qt6-${VER_QT}-linux-release && \ - cd qt6-${VER_QT}-linux-release && \ - export PATH=${PATH}:/node-v18.20.1-linux-x64/bin && \ - scl run gcc-toolset-11 -- /qt6/configure -release -nomake examples -nomake tests -opensource -confirm-license -openssl-linked -skip qt3d -- \ - -DCMAKE_INSTALL_PREFIX=${QT_ROOT} -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DQT_BUILD_TESTS=OFF -DQT_BUILD_EXAMPLES=ON -DQT_FEATURE_thread=ON -DQT_FEATURE_xcb=ON -DQT_FEATURE_openssl_runtime=OFF -DQT_FEATURE_openssl_linked=ON && \ - scl run gcc-toolset-11 -- cmake --build . --parallel && \ - scl run gcc-toolset-11 -- cmake --install . \ - ; fi - -# Build Qt -RUN if [ "$BUILD_QT" = "1" ] ; then \ - tar cfJ /qt-bin-${VER_QT}-openssl-${VER_OPENSSL}-linux-x86_64-$(date +"%Y-%m-%d").tar.xz ${QT_ROOT} \ - ; fi - -# -# The following precompiled Qt package has been built with the commands above, using this Dockerfile. -# -# Since it takes a very long time to compile, the build on Docker Hub fails due to a timeout. -# -# This is why we're going to use our own precompiled version here. -# -# Run 'docker build' with '--build-arg BUILD_QT=1' to build Qt from source (default: not set) -# on a dedicated build machine: -# -# docker build . -t client-5.15 . --build-arg BUILD_QT=1 -# +# Install craftmaster +RUN \ + cd /root && \ + git clone https://invent.kde.org/packaging/craftmaster.git \ + ; -# Download Qt precompiled -ENV QT_TARBALL qt-bin-${VER_QT}-openssl-${VER_OPENSSL}-linux-x86_64-${VER_QT_DATE}.tar.xz +ADD craftmaster.ini /root/craftmaster.ini -RUN if [ "$BUILD_QT" != "1" ] ; then \ - wget https://download.nextcloud.com/desktop/development/qt/${QT_TARBALL} && \ - tar -xvf ${QT_TARBALL} && \ - rm ${QT_TARBALL} \ - ; fi +ENV CRAFT_IMAGE "linux-gcc-x86_64-qt6.9.3-13012026.tar.gz" -########################################################################### +RUN \ + wget https://download.nextcloud.com/desktop/development/qt/${CRAFT_IMAGE} && \ + tar xf ${CRAFT_IMAGE} && \ + rm ${CRAFT_IMAGE} \ + ; -# Install QtKeychain -RUN if [ "$BUILD_QT" != "1" ] ; then \ - cd /tmp && \ - git clone https://github.com/frankosterfeld/qtkeychain.git --depth 1 -b ${VER_QTKEYCHAIN} && \ - cd qtkeychain && \ - mkdir build && \ - cd build && \ - scl run gcc-toolset-11 -- cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \ - scl run gcc-toolset-11 -- cmake --build . --parallel && \ - scl run gcc-toolset-11 -- cmake --install . && \ - cd .. && \ - rm -rf qtkeychain \ - ; fi +ENV PATH "$PATH:/root/linux-gcc-x86_64/dev-utils/bin" -# Install extra-cmake-modules +# Install binary dependencies RUN \ - cd /tmp && \ - git clone https://invent.kde.org/frameworks/extra-cmake-modules.git --depth 1 -b v${VER_KFRAMEWORKS} && \ - cd extra-cmake-modules && \ - mkdir build && \ - cd build && \ - scl run gcc-toolset-11 -- cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DQT_MAJOR_VERSION=6 -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \ - scl run gcc-toolset-11 -- cmake --build . --parallel && \ - scl run gcc-toolset-11 -- cmake --install . && \ - cd .. && \ - rm -rf extra-cmake-modules \ + scl run gcc-toolset-14 -- PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:/usr/share/pkgconfig python3 /root/craftmaster/CraftMaster.py --config /root/craftmaster.ini --target linux-gcc-x86_64 -c --add-blueprint-repository "https://github.com/nextcloud/craft-blueprints-kde.git|stable-4.0|" && \ + scl run gcc-toolset-14 -- PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:/usr/share/pkgconfig python3 /root/craftmaster/CraftMaster.py --config /root/craftmaster.ini --target linux-gcc-x86_64 -c --add-blueprint-repository "https://github.com/nextcloud/desktop-client-blueprints.git|stable-4.0|" && \ + scl run gcc-toolset-14 -- PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:/usr/share/pkgconfig python3 /root/craftmaster/CraftMaster.py --config /root/craftmaster.ini --target linux-gcc-x86_64 -c craft && \ + scl run gcc-toolset-14 -- PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:/usr/share/pkgconfig python3 /root/craftmaster/CraftMaster.py --config /root/craftmaster.ini --target linux-gcc-x86_64 -c --install-deps nextcloud-client && \ + scl run gcc-toolset-14 -- PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:/usr/share/pkgconfig python3 /root/craftmaster/CraftMaster.py --config /root/craftmaster.ini --target linux-gcc-x86_64 -c --no-cache -i kde/frameworks/tier1/karchive && \ + scl run gcc-toolset-14 -- PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:/usr/share/pkgconfig python3 /root/craftmaster/CraftMaster.py --config /root/craftmaster.ini --target linux-gcc-x86_64 -c --no-cache -i qt-libs/qtkeychain \ ; -# Install KArchive RUN \ - cd /tmp && \ - git clone https://invent.kde.org/frameworks/karchive.git --depth 1 -b v${VER_KFRAMEWORKS} && \ - cd karchive && \ - mkdir build && \ - cd build && \ - scl run gcc-toolset-11 -- cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DQT_MAJOR_VERSION=6 -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \ - scl run gcc-toolset-11 -- cmake --build . --parallel && \ - scl run gcc-toolset-11 -- cmake --install . && \ - cd .. && \ - rm -rf karchive \ + rm -rf /root/linux-gcc-x86_64/build \ ; diff --git a/client-appimage-qt6/Dockerfile.qt-6.7.3 b/client-appimage-qt6/Dockerfile.qt-6.7.3 deleted file mode 100644 index eaee7502..00000000 --- a/client-appimage-qt6/Dockerfile.qt-6.7.3 +++ /dev/null @@ -1,239 +0,0 @@ -FROM ubuntu:22.04 - -MAINTAINER Desktop Team - -# Run 'docker build' with '--build-arg BUILD_QT=1' to build Qt from source (default: not set) -ARG BUILD_QT - -ENV VER_QT 6.7.3 -ENV VER_QT_DATE 2025-01-21 -ENV VER_OPENSSL 3.4.0 -ENV VER_LIBP11 libp11-0.4.12 -ENV VER_KFRAMEWORKS 6.10.0 -ENV VER_SQLITE 3460100 -ENV VER_SQLITE_YEAR 2024 -ENV VER_QTKEYCHAIN 0.15.0 - -ENV QT_ROOT /opt/qt - -RUN sed -i '/deb-src/s/^# //' /etc/apt/sources.list && \ - apt-get update && \ - apt-get install -y apt-transport-https ca-certificates gnupg software-properties-common wget && \ - apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -q -y \ - git \ - ninja-build \ - curl \ - jq \ - perl \ - python3 \ - python3-pip \ - software-properties-common \ - build-essential \ - mesa-common-dev \ - pkg-config \ - ninja-build \ - gcc-11 \ - g++-11 \ - clang-15 \ - clang-format-15 \ - clang-tidy-15 \ - libclang-15-dev \ - cmake \ - zlib1g-dev \ - xz-utils \ - liblzma-dev \ - libzstd-dev \ - libbz2-dev \ - libfontconfig1-dev \ - libfreetype6-dev \ - libx11-dev \ - libx11-xcb-dev \ - libxext-dev \ - libxfixes-dev \ - libxi-dev \ - libxrender-dev \ - libxcb1-dev \ - libxcb-cursor-dev \ - libxcb-glx0-dev \ - libxcb-keysyms1-dev \ - libxcb-image0-dev \ - libxcb-shm0-dev \ - libxcb-icccm4-dev \ - libxcb-sync-dev \ - libxcb-xfixes0-dev \ - libxcb-shape0-dev \ - libxcb-randr0-dev \ - libxcb-render-util0-dev \ - libxcb-util-dev \ - libxcb-xinerama0-dev \ - libxcb-xkb-dev \ - libxkbcommon-dev \ - libxkbcommon-x11-dev \ - python3-sphinxcontrib.serializinghtml \ - python3-sphinxcontrib.qthelp \ - python3-sphinx \ - unzip \ - libsecret-1-dev \ -# for updating app images - zsync \ -# For cmocka based csync tests - libcmocka-dev \ -# generate png images from svg - inkscape \ -# install xvfb to enable graphical tests - xvfb \ -# html documentation generation - python3-sphinx && \ - apt-get build-dep -q -y \ - qt6-base-dev \ - qt6-base-dev-tools \ - qt6-l10n-tools \ - qt6-declarative-dev-tools \ - qt6-connectivity-dev \ - qt6-multimedia-dev \ - qt6-webengine-dev \ - qt6-webengine-dev-tools \ - qt6-tools-dev \ - qt6-tools-dev-tools \ - qt6-declarative-dev \ - qt6-l10n-tools \ - qt6-quick3d-dev \ - qt6-translations-l10n \ - libqt6sql6-sqlite && \ - apt-get remove -y -q --purge libqt6core6 nodejs && \ -# Cleaning up - DEBIAN_FRONTEND=noninteractive apt-get remove -q -y --purge libssl-dev && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -########################################################################### - -# Install openssl -RUN cd /tmp && \ - wget https://www.openssl.org/source/openssl-${VER_OPENSSL}.tar.gz && \ - tar -xvf openssl-${VER_OPENSSL}.tar.gz && \ - cd openssl-${VER_OPENSSL} && \ - ./config && \ - make -j$(nproc) && \ - make -j$(nproc) install && \ - cd .. && \ - rm -rf openssl* - -# Install libp11 for PKCS#11 encryption -RUN cd /tmp && \ - wget https://github.com/OpenSC/libp11/releases/download/${VER_LIBP11}/${VER_LIBP11}.tar.gz && \ - tar xvf ${VER_LIBP11}.tar.gz && \ - cd ${VER_LIBP11} && \ - export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig && \ - ./configure && make && make install && \ - cd .. && \ - rm -rf ${VER_LIBP11} - -# Install sqlite3 from https://www.sqlite.org/amalgamation.html -# https://www3.sqlite.org/src/dir?ci=tip&name=autoconf -RUN cd /tmp && \ - wget https://www.sqlite.org/${VER_SQLITE_YEAR}/sqlite-autoconf-${VER_SQLITE}.tar.gz && \ - tar xvf sqlite-autoconf-${VER_SQLITE}.tar.gz && \ - cd sqlite-autoconf-${VER_SQLITE} && \ - ./configure && make && make install && \ - cd .. && \ - rm -rf sqlite-autoconf-${VER_SQLITE} - -########################################################################### - -# Download Qt sources -RUN if [ "$BUILD_QT" = "1" ] ; then echo Build Qt from source. && \ - git clone --depth=1 --recurse-submodules --shallow-submodules --branch=v${VER_QT} https://code.qt.io/qt/qt5.git qt6 \ - ; fi - -RUN if [ "$BUILD_QT" = "1" ] ; then \ - wget https://nodejs.org/dist/v18.20.1/node-v18.20.1-linux-x64.tar.xz && \ - tar xf node-v18.20.1-linux-x64.tar.xz \ - ; fi - -# Build Qt -RUN if [ "$BUILD_QT" = "1" ] ; then \ - mkdir qt6-${VER_QT}-linux-release && \ - cd qt6-${VER_QT}-linux-release && \ - export PATH=${PATH}:/node-v18.20.1-linux-x64/bin && \ - /qt6/configure -release -nomake examples -nomake tests -opensource -confirm-license -openssl-linked -skip qt3d -- \ - -DCMAKE_INSTALL_PREFIX=${QT_ROOT} -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DQT_BUILD_TESTS=OFF -DQT_BUILD_EXAMPLES=ON -DQT_FEATURE_thread=ON -DQT_FEATURE_xcb=ON -DQT_FEATURE_openssl_runtime=OFF -DQT_FEATURE_openssl_linked=ON && \ - cmake --build . --parallel && \ - cmake --install . \ - ; fi - -# Build Qt -RUN if [ "$BUILD_QT" = "1" ] ; then \ - tar cfJ /qt-bin-${VER_QT}-openssl-${VER_OPENSSL}-linux-x86_64-$(date +"%Y-%m-%d").tar.xz ${QT_ROOT} \ - ; fi - -# -# The following precompiled Qt package has been built with the commands above, using this Dockerfile. -# -# Since it takes a very long time to compile, the build on Docker Hub fails due to a timeout. -# -# This is why we're going to use our own precompiled version here. -# -# Run 'docker build' with '--build-arg BUILD_QT=1' to build Qt from source (default: not set) -# on a dedicated build machine: -# -# docker build . -t client-5.15 . --build-arg BUILD_QT=1 -# - -# Download Qt precompiled -ENV QT_TARBALL qt-bin-${VER_QT}-openssl-${VER_OPENSSL}-linux-x86_64-${VER_QT_DATE}.tar.xz - -RUN if [ "$BUILD_QT" != "1" ] ; then \ - wget https://download.nextcloud.com/desktop/development/qt/${QT_TARBALL} && \ - tar -xvf ${QT_TARBALL} && \ - rm ${QT_TARBALL} \ - ; fi - -RUN if [ "$BUILD_QT" != "1" ] ; then \ - DEBIAN_FRONTEND=noninteractive apt-get remove -q -y --purge libsqlite3-dev \ - ; fi - -########################################################################### - -# Install QtKeychain -RUN if [ "$BUILD_QT" != "1" ] ; then \ - cd /tmp && \ - git clone https://github.com/frankosterfeld/qtkeychain.git --depth 1 -b ${VER_QTKEYCHAIN} && \ - cd qtkeychain && \ - mkdir build && \ - cd build && \ - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \ - cmake --build . --parallel && \ - cmake --install . && \ - cd .. && \ - rm -rf qtkeychain \ - ; fi - -# Install extra-cmake-modules -RUN \ - cd /tmp && \ - git clone https://invent.kde.org/frameworks/extra-cmake-modules.git --depth 1 -b v${VER_KFRAMEWORKS} && \ - cd extra-cmake-modules && \ - mkdir build && \ - cd build && \ - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DQT_MAJOR_VERSION=6 -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \ - cmake --build . --parallel && \ - cmake --install . && \ - cd .. && \ - rm -rf extra-cmake-modules \ - ; - -# Install KArchive -RUN \ - cd /tmp && \ - git clone https://invent.kde.org/frameworks/karchive.git --depth 1 -b v${VER_KFRAMEWORKS} && \ - cd karchive && \ - mkdir build && \ - cd build && \ - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DQT_MAJOR_VERSION=6 -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \ - cmake --build . --parallel && \ - cmake --install . && \ - cd .. && \ - rm -rf karchive \ - ; diff --git a/client-appimage-qt6/craftmaster.ini b/client-appimage-qt6/craftmaster.ini new file mode 100644 index 00000000..6355ba62 --- /dev/null +++ b/client-appimage-qt6/craftmaster.ini @@ -0,0 +1,70 @@ +# SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: GPL-2.0-or-later +[General] +Branch = master +# CraftUrl = https://github.com/allexzander/craft.git +CraftRevision = 05fc0f0e7cb6cb5e8ee7eccba400ad4a2b590657 +ShallowClone = False + +# Variables defined here override the default value +# The variable names are casesensitive +[Variables] +#Values need to be overwritten to create a cache +UseCache = True +CreateCache = False + +# Settings applicable for all Crafts matrices +# Settings are Category/key=value +# Category is case sensitive +[GeneralSettings] + +General/MacDeploymentTarget = 12.0 + +Compile/BuildType = RelWithDebInfo + +Compile/UseNinja = True + +ShortPath/Enabled = False +ShortPath/EnableJunctions = False + +#Packager/RepositoryUrl = https://download.nextcloud.com/desktop/development/craftCache/ +#Packager/CacheVersion = stable-4.0-qt-6.9.3 +ContinuousIntegration/Enabled = True + +Packager/UseCache = ${Variables:UseCache} +Packager/CreateCache = ${Variables:CreateCache} +Packager/CacheDir = ${Variables:Root}\cache + +[BlueprintSettings] +nextcloud-client.buildTests = True +binary/mysql.useMariaDB = False +libs/qt6.version = 6.9.3 +craft/craft-blueprints-kde.revision = stable-4.0 + +[windows-msvc2022_64-cl] +Packager/PackageType = NullsoftInstallerPackager +QtSDK/Compiler = msvc2022_64 +General/ABI = windows-msvc2022_64-cl +Paths/Python = C:\Python312-x64 + +[macos-64-clang] +General/ABI = macos-64-clang + +[macos-clang-arm64] +General/ABI = macos-clang-arm64 +Paths/Python = /Users/runner/hostedtoolcache/Python/3.12.3/arm64 + +[linux-gcc-x86_64] +General/ABI = linux-gcc-x86_64 +Paths/Python = /usr/bin/python3 +Packager/RepositoryUrl = https://files.kde.org/craft/Qt6/ +Packager/CacheVersion = 25.12 +libs/qt6.version = 6.9.3 + +[Env] +CRAFT_CODESIGN_CERTIFICATE = +SIGN_PACKAGE = False + +[Custom_Variables_for_Brander] +qtPath = /opt/qt +dockerImage = ghcr.io/nextcloud/continuous-integration-client-appimage-qt6:client-appimage-el8-6.8.3-1 diff --git a/client-qt6/Dockerfile b/client-qt6/Dockerfile index 645a80cf..0d209241 100644 --- a/client-qt6/Dockerfile +++ b/client-qt6/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:trixie +FROM debian:forky MAINTAINER Desktop Team diff --git a/client-qt6/Dockerfile.documentation b/client-qt6/Dockerfile.documentation deleted file mode 100644 index ac087a27..00000000 --- a/client-qt6/Dockerfile.documentation +++ /dev/null @@ -1,11 +0,0 @@ -FROM ubuntu:22.04 -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y python3-pil \ - python3-pip texlive-fonts-recommended latexmk \ - texlive-latex-extra texlive-latex-recommended make php-cli php-xml composer \ - texlive-xetex texlive-fonts-extra-links texlive-fonts-extra \ - nodejs npm libgbm1 libasound2 wget python3-sphinx - -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y python3-pip - -RUN pip3 install sphinxcontrib-phpdomain - diff --git a/client-qt6/Dockerfile.qt-6.7.3 b/client-qt6/Dockerfile.qt-6.7.3 deleted file mode 100644 index bfa0a7d1..00000000 --- a/client-qt6/Dockerfile.qt-6.7.3 +++ /dev/null @@ -1,263 +0,0 @@ -FROM ubuntu:22.04 - -MAINTAINER Desktop Team - -# Run 'docker build' with '--build-arg BUILD_QT=1' to build Qt from source (default: not set) -ARG BUILD_QT - -ENV VER_QT 6.7.3 -ENV VER_QT_DATE 2025-01-21 -ENV VER_OPENSSL 3.4.0 -ENV VER_LIBP11 libp11-0.4.12 -ENV VER_KFRAMEWORKS 6.10.0 -ENV VER_SQLITE 3460100 -ENV VER_SQLITE_YEAR 2024 -ENV VER_QTKEYCHAIN 0.15.0 - -ENV QT_ROOT /opt/qt - -RUN sed -i '/deb-src/s/^# //' /etc/apt/sources.list && \ - apt-get update && \ - apt-get install -y apt-transport-https ca-certificates gnupg software-properties-common wget && \ - apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -q -y \ - git \ - ninja-build \ - curl \ - jq \ - perl \ - python3 \ - python3-pip \ - software-properties-common \ - build-essential \ - mesa-common-dev \ - pkg-config \ - ninja-build \ - gcc-11 \ - g++-11 \ - clang-15 \ - clang-format-15 \ - clang-tidy-15 \ - libclang-15-dev \ - cmake \ - zlib1g-dev \ - xz-utils \ - liblzma-dev \ - libzstd-dev \ - libbz2-dev \ - libfontconfig1-dev \ - libfreetype6-dev \ - libx11-dev \ - libx11-xcb-dev \ - libxext-dev \ - libxfixes-dev \ - libxi-dev \ - libxrender-dev \ - libxcb1-dev \ - libxcb-cursor-dev \ - libxcb-glx0-dev \ - libxcb-keysyms1-dev \ - libxcb-image0-dev \ - libxcb-shm0-dev \ - libxcb-icccm4-dev \ - libxcb-sync-dev \ - libxcb-xfixes0-dev \ - libxcb-shape0-dev \ - libxcb-randr0-dev \ - libxcb-render-util0-dev \ - libxcb-util-dev \ - libxcb-xinerama0-dev \ - libxcb-xkb-dev \ - libxkbcommon-dev \ - libxkbcommon-x11-dev \ - python3-sphinxcontrib.serializinghtml \ - python3-sphinxcontrib.qthelp \ - python3-sphinx \ - unzip \ - libsecret-1-dev \ -# For cmocka based csync tests - libcmocka-dev \ -# generate png images from svg - inkscape \ -# SonarCloud - openjdk-19-jdk \ -# install xvfb to enable graphical tests - xvfb \ -# html documentation generation - python3-sphinx && \ - apt-get build-dep -q -y \ - qt6-base-dev \ - qt6-base-dev-tools \ - qt6-l10n-tools \ - qt6-declarative-dev-tools \ - qt6-connectivity-dev \ - qt6-multimedia-dev \ - qt6-webengine-dev \ - qt6-webengine-dev-tools \ - qt6-tools-dev \ - qt6-tools-dev-tools \ - qt6-declarative-dev \ - qt6-l10n-tools \ - qt6-quick3d-dev \ - qt6-translations-l10n \ - libqt6sql6-sqlite && \ - apt-get remove -y -q --purge libqt6core6 nodejs && \ -# Cleaning up - DEBIAN_FRONTEND=noninteractive apt-get remove -q -y --purge libssl-dev && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -########################################################################### - -# Install openssl -RUN cd /tmp && \ - wget https://www.openssl.org/source/openssl-${VER_OPENSSL}.tar.gz && \ - tar -xvf openssl-${VER_OPENSSL}.tar.gz && \ - cd openssl-${VER_OPENSSL} && \ - ./config && \ - make -j$(nproc) && \ - make -j$(nproc) install && \ - cd .. && \ - rm -rf openssl* - -# Install libp11 for PKCS#11 encryption -RUN cd /tmp && \ - wget https://github.com/OpenSC/libp11/releases/download/${VER_LIBP11}/${VER_LIBP11}.tar.gz && \ - tar xvf ${VER_LIBP11}.tar.gz && \ - cd ${VER_LIBP11} && \ - export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig && \ - ./configure && make && make install && \ - cd .. && \ - rm -rf ${VER_LIBP11} - -# Install sqlite3 from https://www.sqlite.org/amalgamation.html -# https://www3.sqlite.org/src/dir?ci=tip&name=autoconf -RUN cd /tmp && \ - wget https://www.sqlite.org/${VER_SQLITE_YEAR}/sqlite-autoconf-${VER_SQLITE}.tar.gz && \ - tar xvf sqlite-autoconf-${VER_SQLITE}.tar.gz && \ - cd sqlite-autoconf-${VER_SQLITE} && \ - ./configure && make && make install && \ - cd .. && \ - rm -rf sqlite-autoconf-${VER_SQLITE} - -########################################################################### - -# Download Qt sources -RUN if [ "$BUILD_QT" = "1" ] ; then echo Build Qt from source. && \ - git clone --depth=1 --recurse-submodules --shallow-submodules --branch=v${VER_QT} https://code.qt.io/qt/qt5.git qt6 \ - ; fi - -RUN if [ "$BUILD_QT" = "1" ] ; then \ - wget https://nodejs.org/dist/v18.20.1/node-v18.20.1-linux-x64.tar.xz && \ - tar xf node-v18.20.1-linux-x64.tar.xz \ - ; fi - -# Build Qt -RUN if [ "$BUILD_QT" = "1" ] ; then \ - mkdir qt6-${VER_QT}-linux-release && \ - cd qt6-${VER_QT}-linux-release && \ - export PATH=${PATH}:/node-v18.20.1-linux-x64/bin && \ - /qt6/configure -release -nomake examples -nomake tests -opensource -confirm-license -openssl-linked -skip qt3d -- \ - -DCMAKE_INSTALL_PREFIX=${QT_ROOT} -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DQT_BUILD_TESTS=OFF -DQT_BUILD_EXAMPLES=ON -DQT_FEATURE_thread=ON -DQT_FEATURE_xcb=ON -DQT_FEATURE_openssl_runtime=OFF -DQT_FEATURE_openssl_linked=ON && \ - cmake --build . --parallel && \ - cmake --install . \ - ; fi - -# Build Qt -RUN if [ "$BUILD_QT" = "1" ] ; then \ - tar cfJ /qt-bin-${VER_QT}-openssl-${VER_OPENSSL}-linux-x86_64-$(date +"%Y-%m-%d").tar.xz ${QT_ROOT} \ - ; fi - -# -# The following precompiled Qt package has been built with the commands above, using this Dockerfile. -# -# Since it takes a very long time to compile, the build on Docker Hub fails due to a timeout. -# -# This is why we're going to use our own precompiled version here. -# -# Run 'docker build' with '--build-arg BUILD_QT=1' to build Qt from source (default: not set) -# on a dedicated build machine: -# -# docker build . -t client-5.15 . --build-arg BUILD_QT=1 -# - -# Download Qt precompiled -ENV QT_TARBALL qt-bin-${VER_QT}-openssl-${VER_OPENSSL}-linux-x86_64-${VER_QT_DATE}.tar.xz - -RUN if [ "$BUILD_QT" != "1" ] ; then \ - wget https://download.nextcloud.com/desktop/development/qt/${QT_TARBALL} && \ - tar -xvf ${QT_TARBALL} && \ - rm ${QT_TARBALL} \ - ; fi - -RUN if [ "$BUILD_QT" != "1" ] ; then \ - DEBIAN_FRONTEND=noninteractive apt-get remove -q -y --purge libsqlite3-dev \ - ; fi - -########################################################################### - -# Install QtKeychain -RUN if [ "$BUILD_QT" != "1" ] ; then \ - cd /tmp && \ - git clone https://github.com/frankosterfeld/qtkeychain.git --depth 1 -b ${VER_QTKEYCHAIN} && \ - cd qtkeychain && \ - mkdir build && \ - cd build && \ - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_QT6=ON -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \ - cmake --build . --parallel && \ - cmake --install . && \ - cd .. && \ - rm -rf qtkeychain \ - ; fi - -# Install extra-cmake-modules -RUN \ - cd /tmp && \ - git clone https://invent.kde.org/frameworks/extra-cmake-modules.git --depth 1 -b v${VER_KFRAMEWORKS} && \ - cd extra-cmake-modules && \ - mkdir build && \ - cd build && \ - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DQT_MAJOR_VERSION=6 -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \ - cmake --build . --parallel && \ - cmake --install . && \ - cd .. && \ - rm -rf extra-cmake-modules \ - ; - -# Install KArchive -RUN \ - cd /tmp && \ - git clone https://invent.kde.org/frameworks/karchive.git --depth 1 -b v${VER_KFRAMEWORKS} && \ - cd karchive && \ - mkdir build && \ - cd build && \ - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DQT_MAJOR_VERSION=6 -DCMAKE_PREFIX_PATH=${QT_ROOT} .. && \ - cmake --build . --parallel && \ - cmake --install . && \ - cd .. && \ - rm -rf karchive \ - ; - -# Setup sonar-scanner -ENV SONAR_SCANNER_VERSION 5.0.1.3006 -ENV SONAR_SERVER_URL "https://sonarcloud.io" -ENV SONAR_SCANNER_DOWNLOAD_URL https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_SCANNER_VERSION}-linux.zip - -RUN mkdir -p /opt/sonar && \ - curl -sSLo /opt/sonar/sonar-scanner.zip ${SONAR_SCANNER_DOWNLOAD_URL} && \ - unzip -o /opt/sonar/sonar-scanner.zip -d /opt/sonar/ - -ENV PATH=/opt/sonar/sonar-scanner-${SONAR_SCANNER_VERSION}-linux/bin:${PATH} - -# Setup build-wrapper -ENV BUILD_WRAPPER_DOWNLOAD_URL ${SONAR_SERVER_URL}/static/cpp/build-wrapper-linux-x86.zip - -RUN curl -sSLo /opt/sonar/build-wrapper-linux-x86.zip ${BUILD_WRAPPER_DOWNLOAD_URL} && \ - unzip -o /opt/sonar/build-wrapper-linux-x86.zip -d /opt/sonar/ - -ENV PATH=/opt/sonar/build-wrapper-linux-x86:${PATH} - -# Install Python properly (e.g. for clang-tidy-pr-comments) -ENV AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache -ENV RUNNER_TOOL_CACHE=/opt/hostedtoolcache -RUN mkdir -p "${AGENT_TOOLSDIRECTORY}"