From cbf906a48e39d0169d0d3f43a7a9d07c86562408 Mon Sep 17 00:00:00 2001 From: Andreas Reischuck Date: Thu, 4 May 2023 23:53:35 +0200 Subject: [PATCH] updated to GCC 13 and Ubuntu Lunar --- .github/workflows/docker_build.yml | 58 ++++++++++++++++++------------ Dockerfile | 49 ++++++++++++++++--------- 2 files changed, 68 insertions(+), 39 deletions(-) diff --git a/.github/workflows/docker_build.yml b/.github/workflows/docker_build.yml index 685de52..41f362e 100644 --- a/.github/workflows/docker_build.yml +++ b/.github/workflows/docker_build.yml @@ -8,9 +8,14 @@ jobs: strategy: fail-fast: false matrix: - distro: ['jammy'] - clang_major: [15, 16] - gcc_major: [12] + distro: ['lunar'] + clang: [ + {major: 15, source: 'apt'}, + {major: 16, source: 'apt'} + ] + gcc: [ + {major: 13, source: 'apt'} + ] qt_version: ['6.4.3', '6.5.0'] qtcreator: [ {version: "9.0.2-patched", url: "https://github.com/hicknhack-software/Qt-Creator/releases/download/v9.0.2-snapshot-2023-04-02/qtcreator-Linux-4590736396.7z"}, @@ -19,9 +24,9 @@ jobs: ] include: - - distro: jammy - clang_major: 16 - gcc_major: 12 + - distro: lunar + clang: {major: 16, source: 'apt'} + gcc: {major: 13, source: 'apt'} qt_version: '6.5.0' qtcreator: {version: "10.0.1-patched", url: "https://github.com/hicknhack-software/Qt-Creator/releases/download/v10.0.1-snapshot-2023-04-02/qtcreator-linux-x64-4589869247.7z"} clang_tags: arbmind/qtcreator-clang:latest @@ -44,79 +49,86 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: QtCreator ${{ matrix.qtcreator.version }} + Clang${{ matrix.clang_major }} + - name: QtCreator ${{ matrix.qtcreator.version }} + Clang${{ matrix.clang.major }} uses: docker/build-push-action@v3 with: target: qtcreator-clang push: ${{ github.event_name != 'pull_request' }} tags: | - arbmind/qtcreator-clang:${{ matrix.qtcreator.version }}-${{ matrix.clang_major }} + arbmind/qtcreator-clang:${{ matrix.qtcreator.version }}-${{ matrix.clang.major }} ${{ matrix.clang_tags }} build-args: | DISTRO=${{ matrix.distro }} - CLANG_MAJOR=${{ matrix.clang_major }} + CLANG_MAJOR=${{ matrix.clang.major }} + CLANG_SOURCE=${{ matrix.clang.source }} QT_CREATOR_VERSION=${{ matrix.qtcreator.version }} QTCREATOR_URL=${{ matrix.qtcreator.url }} QTCREATOR_VERSION=${{ matrix.qtcreator.version }} - - name: QtCreator ${{ matrix.qtcreator.version }} + Clang${{ matrix.clang_major }} + libstdc++-${{ matrix.gcc_major }} + - name: QtCreator ${{ matrix.qtcreator.version }} + Clang${{ matrix.clang.major }} + libstdc++-${{ matrix.gcc.major }} uses: docker/build-push-action@v3 with: target: qtcreator-clang-libstdcpp push: ${{ github.event_name != 'pull_request' }} tags: | - arbmind/qtcreator-clang-libstdcpp:${{ matrix.qtcreator.version }}-${{ matrix.clang_major }}-${{ matrix.gcc_major }} + arbmind/qtcreator-clang-libstdcpp:${{ matrix.qtcreator.version }}-${{ matrix.clang.major }}-${{ matrix.gcc.major }} ${{ matrix.clang_libstdcpp_tags }} build-args: | DISTRO=${{ matrix.distro }} - GCC_MAJOR=${{ matrix.gcc_major }} - CLANG_MAJOR=${{ matrix.clang_major }} + GCC_MAJOR=${{ matrix.gcc.major }} + GCC_SOURCE=${{ matrix.gcc.source }} + CLANG_MAJOR=${{ matrix.clang.major }} + CLANG_SOURCE=${{ matrix.clang.source }} QT_VERSION=${{ matrix.qt_version }} QTCREATOR_URL=${{ matrix.qtcreator.url }} QTCREATOR_VERSION=${{ matrix.qtcreator.version }} - - name: QtCreator ${{ matrix.qtcreator.version }} + Clang${{ matrix.clang_major }} + libstdc++-${{ matrix.gcc_major }} + Qt-${{ matrix.qt_version }} + - name: QtCreator ${{ matrix.qtcreator.version }} + Clang${{ matrix.clang.major }} + libstdc++-${{ matrix.gcc.major }} + Qt-${{ matrix.qt_version }} uses: docker/build-push-action@v3 with: target: qtcreator-clang-libstdcpp-qt push: ${{ github.event_name != 'pull_request' }} tags: | - arbmind/qtcreator-clang-libstdcpp-qt:${{ matrix.qtcreator.version }}-${{ matrix.clang_major }}-${{ matrix.gcc_major }}-${{ matrix.qt_version }} + arbmind/qtcreator-clang-libstdcpp-qt:${{ matrix.qtcreator.version }}-${{ matrix.clang.major }}-${{ matrix.gcc.major }}-${{ matrix.qt_version }} ${{ matrix.clang_libstdcpp_qt_tags }} build-args: | DISTRO=${{ matrix.distro }} - GCC_MAJOR=${{ matrix.gcc_major }} - CLANG_MAJOR=${{ matrix.clang_major }} + GCC_MAJOR=${{ matrix.gcc.major }} + GCC_SOURCE=${{ matrix.gcc.source }} + CLANG_MAJOR=${{ matrix.clang.major }} + CLANG_SOURCE=${{ matrix.clang.source }} QT_VERSION=${{ matrix.qt_version }} QTCREATOR_URL=${{ matrix.qtcreator.url }} QTCREATOR_VERSION=${{ matrix.qtcreator.version }} - - name: QtCreator ${{ matrix.qtcreator.version }} + GCC${{ matrix.gcc_major }} + - name: QtCreator ${{ matrix.qtcreator.version }} + GCC${{ matrix.gcc.major }} uses: docker/build-push-action@v3 with: target: qtcreator-gcc push: ${{ github.event_name != 'pull_request' }} tags: | - arbmind/qtcreator-gcc:${{ matrix.qtcreator.version }}-${{ matrix.gcc_major }} + arbmind/qtcreator-gcc:${{ matrix.qtcreator.version }}-${{ matrix.gcc.major }} ${{ matrix.gcc_tags }} build-args: | DISTRO=${{ matrix.distro }} - GCC_MAJOR=${{ matrix.gcc_major }} + GCC_MAJOR=${{ matrix.gcc.major }} + GCC_SOURCE=${{ matrix.gcc.source }} QT_VERSION=${{ matrix.qt_version }} QTCREATOR_URL=${{ matrix.qtcreator.url }} QTCREATOR_VERSION=${{ matrix.qtcreator.version }} - - name: QtCreator ${{ matrix.qtcreator.version }} + GCC${{ matrix.gcc_major }} + Qt-${{ matrix.qt_version }} + - name: QtCreator ${{ matrix.qtcreator.version }} + GCC${{ matrix.gcc.major }} + Qt-${{ matrix.qt_version }} uses: docker/build-push-action@v3 with: target: qtcreator-gcc-qt push: ${{ github.event_name != 'pull_request' }} tags: | - arbmind/qtcreator-gcc-qt:${{ matrix.qtcreator.version }}-${{ matrix.gcc_major }}-${{ matrix.qt_version }} + arbmind/qtcreator-gcc-qt:${{ matrix.qtcreator.version }}-${{ matrix.gcc.major }}-${{ matrix.qt_version }} ${{ matrix.gcc_qt_tags }} build-args: | DISTRO=${{ matrix.distro }} - GCC_MAJOR=${{ matrix.gcc_major }} + GCC_MAJOR=${{ matrix.gcc.major }} + GCC_SOURCE=${{ matrix.gcc.source }} QT_VERSION=${{ matrix.qt_version }} QTCREATOR_URL=${{ matrix.qtcreator.url }} QTCREATOR_VERSION=${{ matrix.qtcreator.version }} diff --git a/Dockerfile b/Dockerfile index af53338..5c64ef6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,23 @@ -ARG DISTRO=focal +ARG DISTRO=lunar ARG USER=user ARG UID=1000 ARG GID=1000 -ARG CLANG_MAJOR=13 -ARG GCC_MAJOR=11 -ARG QTCREATOR_VERSION="7.0.0-patched" -ARG QTCREATOR_URL="https://github.com/arBmind/qt-creator/releases/download/v7.0.0-patched-snapshot-2022-03-19/qtcreator-Linux-2011964361.7z" +ARG CLANG_MAJOR=16 +# clang source options: +# apt - directly use apt version +# llvm - add llvm distro repo +ARG CLANG_SOURCE=apt +ARG GCC_MAJOR=13 +# gcc source options: +# apt - directly use apt version +# ppa - add toolchain ppa +ARG GCC_SOURCE=apt +ARG QTCREATOR_VERSION="10.0.1-patched" +ARG QTCREATOR_URL="https://github.com/hicknhack-software/Qt-Creator/releases/download/v10.0.1-snapshot-2023-04-02/qtcreator-linux-x64-4589869247.7z" ARG QT_ARCH=gcc_64 -ARG QT_VERSION=6.2.4 +ARG QT_VERSION=6.5.0 ARG QT_MODULES=qtshadertools -ARG RUNTIME_APT="libicu70 libglib2.0-0 libdbus-1-3 libpcre2-16-0" +ARG RUNTIME_APT="libicu72 libglib2.0-0 libdbus-1-3 libpcre2-16-0" # ARG RUNTIME_XENIAL="libicu55 libglib2.0-0" FROM python:3.10-slim as qt_base @@ -121,14 +129,17 @@ WORKDIR /build FROM qtcreator_base AS qtcreator_clang_base ARG DISTRO ARG CLANG_MAJOR +ARG CLANG_SOURCE ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 ARG DEBIAN_FRONTEND=noninteractive # install Clang (https://apt.llvm.org/) with format and debugger RUN \ - wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \ - && echo "deb http://apt.llvm.org/${DISTRO}/ llvm-toolchain-${DISTRO}-${CLANG_MAJOR} main" > /etc/apt/sources.list.d/llvm.list \ - && apt-get update --quiet \ + if [ "$CLANG_SOURCE" = "llvm" ] ; then \ + wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \ + && echo "deb http://apt.llvm.org/${DISTRO}/ llvm-toolchain-${DISTRO}-${CLANG_MAJOR} main" > /etc/apt/sources.list.d/llvm.list \ + && apt-get update --quiet \ + ; fi \ && apt-get install --yes --quiet --no-install-recommends \ clang-${CLANG_MAJOR} \ clang-format-${CLANG_MAJOR} \ @@ -164,13 +175,16 @@ ENV \ FROM qtcreator_clang_base AS qtcreator_clang_libstdcpp_base ARG DISTRO ARG GCC_MAJOR +ARG GCC_SOURCE ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 ARG DEBIAN_FRONTEND=noninteractive RUN \ - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 60C317803A41BA51845E371A1E9377A2BA9EF27F \ - && echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu ${DISTRO} main" > /etc/apt/sources.list.d/gcc.list \ - && apt-get update --quiet \ + if [ "$GCC_SOURCE" = "ppa" ] ; then \ + apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 60C317803A41BA51845E371A1E9377A2BA9EF27F \ + && echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu ${DISTRO} main" > /etc/apt/sources.list.d/gcc.list \ + && apt-get update --quiet \ + ; fi \ && apt-get install --yes --quiet --no-install-recommends \ libstdc++-${GCC_MAJOR}-dev \ && apt-get --yes autoremove \ @@ -215,14 +229,17 @@ ENV \ FROM qtcreator_base AS qtcreator_gcc_base ARG DISTRO ARG GCC_MAJOR +ARG GCC_SOURCE ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 ARG DEBIAN_FRONTEND=noninteractive # install Clang (https://apt.llvm.org/) with format and debugger RUN \ - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 60C317803A41BA51845E371A1E9377A2BA9EF27F \ - && echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu ${DISTRO} main" > /etc/apt/sources.list.d/gcc.list \ - && apt-get update --quiet \ + if [ "$GCC_SOURCE" = "ppa" ] ; then \ + apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 60C317803A41BA51845E371A1E9377A2BA9EF27F \ + && echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu ${DISTRO} main" > /etc/apt/sources.list.d/gcc.list \ + && apt-get update --quiet \ + ; fi \ && apt-get install --yes --quiet --no-install-recommends \ gcc-${GCC_MAJOR} \ g++-${GCC_MAJOR} \