From 8ba390758dc0bd7d628f725bb69b6c820127ab60 Mon Sep 17 00:00:00 2001 From: Totto16 Date: Tue, 1 Oct 2024 17:09:46 +0200 Subject: [PATCH 1/4] ci: update to llvm 19 --- .github/workflows/build.yml | 19 ++++++++++--------- .github/workflows/cpp-linter.yml | 4 ++-- .github/workflows/test.yml | 8 ++++---- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 00ca7e6e..f5a5a756 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -125,11 +125,11 @@ jobs: run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh - sudo ./llvm.sh 18 - sudo apt-get install libc++-18* libc++abi*18* -y - echo "CC=clang-18" >> "$GITHUB_ENV" - echo "CXX=clang++-18" >> "$GITHUB_ENV" - echo "OBJC=clang-18" >> "$GITHUB_ENV" + sudo ./llvm.sh 19 + sudo apt-get install libc++-19* libc++abi*19* -y + echo "CC=clang-19" >> "$GITHUB_ENV" + echo "CXX=clang++-19" >> "$GITHUB_ENV" + echo "OBJC=clang-19" >> "$GITHUB_ENV" - name: Setup GCC (Linux) @@ -143,10 +143,11 @@ jobs: if: matrix.config.os == 'macos' run: | brew update - brew install llvm@18 - echo "$(brew --prefix)/opt/llvm@18/bin" >> $GITHUB_PATH - echo "LDFLAGS=-L$(brew --prefix)/opt/llvm@18/lib -L$(brew --prefix)/opt/llvm@18/lib/c++ -Wl,-rpath,$(brew --prefix)/opt/llvm@18/lib/c++" >> "$GITHUB_ENV" - echo "CPPFLAGS=-I$(brew --prefix)/opt/llvm@18/include" >> "$GITHUB_ENV" + # TODO annotat5e with lld@19, after that is accepted, we don't want to use lld@20 without manually updating it ! + brew install llvm@19 lld + echo "$(brew --prefix)/opt/llvm/bin" >> $GITHUB_PATH + echo "LDFLAGS=-L$(brew --prefix)/opt/llvm/lib -L$(brew --prefix)/opt/llvm/lib/c++ -Wl,-rpath,$(brew --prefix)/opt/llvm/lib/c++" >> "$GITHUB_ENV" + echo "CPPFLAGS=-I$(brew --prefix)/opt/llvm/include" >> "$GITHUB_ENV" echo "CC=clang" >> "$GITHUB_ENV" echo "CXX=clang++" >> "$GITHUB_ENV" echo "OBJC=clang" >> "$GITHUB_ENV" diff --git a/.github/workflows/cpp-linter.yml b/.github/workflows/cpp-linter.yml index a26fdee5..fc291d9d 100644 --- a/.github/workflows/cpp-linter.yml +++ b/.github/workflows/cpp-linter.yml @@ -22,7 +22,7 @@ jobs: - name: Setup Clang uses: egor-tensin/setup-clang@v1 with: - version: 18 + version: 19 platform: x64 - name: Prepare compile_commands.json @@ -40,7 +40,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: style: file - version: 18 + version: 19 database: build files-changed-only: ${{ github.event_name != 'workflow_dispatch' }} lines-changed-only: ${{ github.event_name != 'workflow_dispatch' }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ec154a70..033cd863 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,10 +19,10 @@ jobs: run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh - sudo ./llvm.sh 18 - sudo apt-get install libc++-18* libc++abi*18* llvm-18 -y - echo "CC=clang-18" >> "$GITHUB_ENV" - echo "CXX=clang++-18" >> "$GITHUB_ENV" + sudo ./llvm.sh 19 + sudo apt-get install libc++-19* libc++abi*19* llvm-19 -y + echo "CC=clang-19" >> "$GITHUB_ENV" + echo "CXX=clang++-19" >> "$GITHUB_ENV" # NOTE: meson has no dependencies, so --break-system-packages doesn't really break anything! - name: Setup meson From 93b8da6efedd19ab1c612e1d64f008aac4cf165a Mon Sep 17 00:00:00 2001 From: Totto16 Date: Tue, 1 Oct 2024 18:50:04 +0200 Subject: [PATCH 2/4] ci: use newer g++-14 libstdc++, to make it work with clang --- .github/workflows/build.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f5a5a756..a50828c6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -120,8 +120,8 @@ jobs: mingw-w64-${{matrix.config.architecture}}-cmake git - - name: Setup Clang (Linux) - if: matrix.config.os == 'ubuntu' && matrix.config.use-clang == true + - name: Setup Clang (Linux) (libc++) + if: matrix.config.os == 'ubuntu' && matrix.config.use-clang == true && matrix.config.use-clang_stdlib run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh @@ -131,6 +131,21 @@ jobs: echo "CXX=clang++-19" >> "$GITHUB_ENV" echo "OBJC=clang-19" >> "$GITHUB_ENV" + - name: Setup Clang (Linux) (libstdc++) + if: matrix.config.os == 'ubuntu' && matrix.config.use-clang == true && (! matrix.config.use-clang_stdlib) + run: | + wget https://apt.llvm.org/llvm.sh + chmod +x llvm.sh + sudo ./llvm.sh 19 + echo "CC=clang-19" >> "$GITHUB_ENV" + echo "CXX=clang++-19" >> "$GITHUB_ENV" + echo "OBJC=clang-19" >> "$GITHUB_ENV" + # Also install the newest g++ (For the libstd++ library) + echo "deb http://archive.ubuntu.com/ubuntu/ oracular main" | sudo tee -a /etc/apt/sources.list.d/new_ubuntu.list + sudo apt-get update + sudo apt-get install libstdc++-14-dev -y + sudo rm -rf /etc/apt/sources.list.d/new_ubuntu.list + sudo apt-get update - name: Setup GCC (Linux) if: matrix.config.os == 'ubuntu' && matrix.config.use-clang == false @@ -143,7 +158,7 @@ jobs: if: matrix.config.os == 'macos' run: | brew update - # TODO annotat5e with lld@19, after that is accepted, we don't want to use lld@20 without manually updating it ! + # TODO annotate with lld@19, after that is accepted, we don't want to use lld@20 without manually updating it ! brew install llvm@19 lld echo "$(brew --prefix)/opt/llvm/bin" >> $GITHUB_PATH echo "LDFLAGS=-L$(brew --prefix)/opt/llvm/lib -L$(brew --prefix)/opt/llvm/lib/c++ -Wl,-rpath,$(brew --prefix)/opt/llvm/lib/c++" >> "$GITHUB_ENV" From 0483517ddaf91e0460d3eb400c81d20eb7966fd6 Mon Sep 17 00:00:00 2001 From: Totto16 Date: Tue, 1 Oct 2024 19:08:43 +0200 Subject: [PATCH 3/4] ci: fix a few issues add --no-install-recommends to all apt-get install calls fix formatting of all files --- .github/workflows/android.yml | 17 +++--- .github/workflows/build.yml | 23 ++++---- .github/workflows/cpp-linter.yml | 10 ++-- .github/workflows/flatpak.yml | 4 +- .github/workflows/installer.yml | 12 ++-- .github/workflows/nintendo.yml | 94 ++++++++++++++++---------------- .github/workflows/test.yml | 24 ++++---- 7 files changed, 91 insertions(+), 93 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 10e99a66..3b358ba8 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -4,7 +4,7 @@ on: release: types: [published] push: - branches: ["main"] + branches: ['main'] pull_request: workflow_dispatch: @@ -23,7 +23,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - fetch-depth: "0" + fetch-depth: '0' # NOTE: meson has no dependencies, so --break-system-packages doesn't really break anything! - name: Setup Meson @@ -32,30 +32,29 @@ jobs: - name: Setup ninja run: | - sudo apt-get update - sudo apt-get install ninja-build jq + sudo apt-get update + sudo apt-get install ninja-build jq -y --no-install-recommends - name: Setup JDK uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '21' - + - name: Setup Android SDK uses: android-actions/setup-android@v3 - + - name: Setup NDK - run: | + run: | sdkmanager --install "ndk;27.1.12297006" - - name: Build native libraries run: | bash ./platforms/build-android.sh ${{ matrix.config.arch }} complete_rebuild release cp -r ./assets/ platforms/android/app/src/main - name: Build APK - run: | + run: | cd platforms/android/ ./gradlew assembleDebug --no-daemon -PANDROID_ABI=${{ matrix.config.arch }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a50828c6..6d987296 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,7 +2,7 @@ name: Build CI on: push: - branches: ["main"] + branches: ['main'] pull_request: workflow_dispatch: @@ -30,7 +30,7 @@ jobs: architecture: x86_64 buildtype: release library_type: static - shell: "msys2 {0}" + shell: 'msys2 {0}' - name: Windows UCRT Release os: windows @@ -39,7 +39,7 @@ jobs: architecture: ucrt-x86_64 buildtype: release library_type: static - shell: "msys2 {0}" + shell: 'msys2 {0}' - name: Linux Release os: ubuntu @@ -90,15 +90,14 @@ jobs: steps: - uses: actions/checkout@v4 with: - fetch-depth: "0" + fetch-depth: '0' - name: Setup MSVC (Windows) if: matrix.config.os == 'windows' && matrix.config.environment == 'msvc' uses: TheMrMilchmann/setup-msvc-dev@v3 with: arch: x64 - toolset: "14.41" - + toolset: '14.41' - name: Setup MYSYS2 (Windows) if: matrix.config.os == 'windows' && ( matrix.config.environment == 'mingw' || matrix.config.environment == 'ucrt' ) @@ -126,7 +125,7 @@ jobs: wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh 19 - sudo apt-get install libc++-19* libc++abi*19* -y + sudo apt-get install libc++-19* libc++abi*19* -y --no-install-recommends echo "CC=clang-19" >> "$GITHUB_ENV" echo "CXX=clang++-19" >> "$GITHUB_ENV" echo "OBJC=clang-19" >> "$GITHUB_ENV" @@ -143,7 +142,7 @@ jobs: # Also install the newest g++ (For the libstd++ library) echo "deb http://archive.ubuntu.com/ubuntu/ oracular main" | sudo tee -a /etc/apt/sources.list.d/new_ubuntu.list sudo apt-get update - sudo apt-get install libstdc++-14-dev -y + sudo apt-get install libstdc++-14-dev -y --no-install-recommends sudo rm -rf /etc/apt/sources.list.d/new_ubuntu.list sudo apt-get update @@ -171,7 +170,7 @@ jobs: echo "OBJC_LD=lld" >> "$GITHUB_ENV" - name: Unbreak Python in GHA (MacOS 13 image) - if: matrix.config.os == 'macos' && matrix.config.os-version == 13 + if: matrix.config.os == 'macos' && matrix.config.os-version == 13 run: | # TODO: remove this, after it works again # A workaround for "The `brew link` step did not complete successfully" error. @@ -196,7 +195,7 @@ jobs: if: matrix.config.os == 'ubuntu' run: | sudo apt-get update - sudo apt-get install ninja-build libsdl2-2.0-0 libsdl2-dev libsdl2-ttf* libsdl2-mixer* libsdl2-image* -y + sudo apt-get install ninja-build libsdl2-2.0-0 libsdl2-dev libsdl2-ttf* libsdl2-mixer* libsdl2-image* -y --no-install-recommends - name: Install dependencies (MacOS) if: matrix.config.os == 'macos' @@ -205,10 +204,10 @@ jobs: brew install sdl2 sdl2_ttf sdl2_mixer sdl2_image - name: Configure - run: meson setup build -Dbuildtype=${{ matrix.config.buildtype }} -Ddefault_library=${{ matrix.config.library_type }} -Dclang_libcpp=${{ ( ( matrix.config.os == 'ubuntu' && matrix.config.use-clang == true && matrix.config.use-clang_stdlib ) || matrix.config.os == 'macos' ) && 'enabled' || 'disabled' }} + run: meson setup build -Dbuildtype=${{ matrix.config.buildtype }} -Ddefault_library=${{ matrix.config.library_type }} -Dclang_libcpp=${{ ( ( matrix.config.os == 'ubuntu' && matrix.config.use-clang == true && matrix.config.use-clang_stdlib ) || matrix.config.os == 'macos' ) && 'enabled' || 'disabled' }} - name: Build - run: meson compile -C build + run: meson compile -C build - name: Upload artifacts uses: actions/upload-artifact@v4 diff --git a/.github/workflows/cpp-linter.yml b/.github/workflows/cpp-linter.yml index fc291d9d..dea28c47 100644 --- a/.github/workflows/cpp-linter.yml +++ b/.github/workflows/cpp-linter.yml @@ -1,7 +1,7 @@ name: C++ lints(clang-format + clang-tidy) on: push: - branches: ["main"] + branches: ['main'] pull_request: workflow_dispatch: @@ -14,7 +14,7 @@ jobs: steps: - uses: actions/checkout@v4 - # NOTE: meson has no dependencies, so --break-system-packages doesn't really break anything! + # NOTE: meson has no dependencies, so --break-system-packages doesn't really break anything! - name: Setup Meson run: | pip install meson --break-system-packages @@ -28,8 +28,8 @@ jobs: - name: Prepare compile_commands.json run: | sudo apt-get update - sudo apt-get install ninja-build libsdl2-2.0-0 libsdl2-dev libsdl2-ttf* libsdl2-mixer* libsdl2-image* -y - + sudo apt-get install ninja-build libsdl2-2.0-0 libsdl2-dev libsdl2-ttf* libsdl2-mixer* libsdl2-image* -y --no-install-recommends + meson setup build -Dbuildtype=release -Dclang_libcpp=disabled -Dtests=true meson compile -C build git_version.hpp @@ -45,7 +45,7 @@ jobs: files-changed-only: ${{ github.event_name != 'workflow_dispatch' }} lines-changed-only: ${{ github.event_name != 'workflow_dispatch' }} thread-comments: true - tidy-checks: "" + tidy-checks: '' step-summary: true file-annotations: true ignore: subprojects|build|android|assets|recordings|docs|toolchains|platforms|wrapper|src/libs/core/hash-library diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml index 162fdc0f..1319e6ac 100644 --- a/.github/workflows/flatpak.yml +++ b/.github/workflows/flatpak.yml @@ -4,13 +4,13 @@ on: release: types: [published] push: - branches: ["main"] + branches: ['main'] pull_request: workflow_dispatch: jobs: flatpak: - name: "Flatpak build" + name: 'Flatpak build' runs-on: ubuntu-24.04 container: image: bilelmoussaoui/flatpak-github-actions:freedesktop-24.08 diff --git a/.github/workflows/installer.yml b/.github/workflows/installer.yml index 81d8eee2..e9972615 100644 --- a/.github/workflows/installer.yml +++ b/.github/workflows/installer.yml @@ -2,7 +2,7 @@ name: Installer CI on: push: - branches: ["main"] + branches: ['main'] pull_request: workflow_dispatch: @@ -29,14 +29,14 @@ jobs: steps: - uses: actions/checkout@v4 with: - fetch-depth: "0" + fetch-depth: '0' - name: Setup MSVC (Windows) if: matrix.config.os == 'windows' && matrix.config.msvc == true uses: TheMrMilchmann/setup-msvc-dev@v3 with: arch: x64 - toolset: "14.41" + toolset: '14.41' - name: Setup meson if: matrix.config.os != 'macos' @@ -44,10 +44,10 @@ jobs: pip install meson - name: Configure - run: meson setup build -Dbuildtype=${{ matrix.config.buildtype }} -Ddefault_library=${{ matrix.config.library_type }} -Dclang_libcpp=${{ ( ( matrix.config.os == 'ubuntu' && matrix.config.use-clang == true && matrix.config.use-clang_stdlib ) || matrix.config.os == 'macos' ) && 'enabled' || 'disabled' }} -Dbuild_installer=true + run: meson setup build -Dbuildtype=${{ matrix.config.buildtype }} -Ddefault_library=${{ matrix.config.library_type }} -Dclang_libcpp=${{ ( ( matrix.config.os == 'ubuntu' && matrix.config.use-clang == true && matrix.config.use-clang_stdlib ) || matrix.config.os == 'macos' ) && 'enabled' || 'disabled' }} -Dbuild_installer=true - name: Build - run: meson compile -C build + run: meson compile -C build - name: Download EnVar plugin for NSIS uses: carlosperate/download-file-action@v2 @@ -55,7 +55,7 @@ jobs: file-url: https://nsis.sourceforge.io/mediawiki/images/7/7f/EnVar_plugin.zip file-name: envar_plugin.zip location: ${{ github.workspace }} - + - name: Extract EnVar plugin run: 7z x "-oC:/Program Files (x86)/NSIS" "${{ github.workspace }}/envar_plugin.zip" diff --git a/.github/workflows/nintendo.yml b/.github/workflows/nintendo.yml index 161e9054..4598034b 100644 --- a/.github/workflows/nintendo.yml +++ b/.github/workflows/nintendo.yml @@ -1,52 +1,52 @@ name: Nintendo CI on: - push: - branches: ["main"] - pull_request: - workflow_dispatch: + push: + branches: ['main'] + pull_request: + workflow_dispatch: jobs: - nintendo-build: - name: Nintendo ${{ matrix.config.name }} CI - runs-on: ubuntu-24.04 - container: - image: devkitpro/${{ matrix.config.container }} ## base on debian:buster-slim - strategy: - fail-fast: false - matrix: - config: - - name: 3ds - extension: 3dsx - container: devkitarm - - - name: switch - extension: nro - container: devkita64 - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: "0" - - - name: Setup Meson - run: | - sudo apt-get update - sudo apt-get install python3 python3-pip -y - python3 -m pip install --upgrade pip - pip install meson - - - name: Setup ninja - run: | - sudo apt-get update - sudo apt-get install ninja-build - - - name: Configure and Build - run: | - bash ./platforms/build-${{ matrix.config.name }}.sh complete_rebuild release - - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.config.name }} Executable - path: build-${{ matrix.config.name }}/oopetris.${{ matrix.config.extension }} + nintendo-build: + name: Nintendo ${{ matrix.config.name }} CI + runs-on: ubuntu-24.04 + container: + image: devkitpro/${{ matrix.config.container }} ## base on debian:buster-slim + strategy: + fail-fast: false + matrix: + config: + - name: 3ds + extension: 3dsx + container: devkitarm + + - name: switch + extension: nro + container: devkita64 + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: '0' + + - name: Setup Meson + run: | + sudo apt-get update + sudo apt-get install python3 python3-pip -y --no-install-recommends + python3 -m pip install --upgrade pip + pip install meson + + - name: Setup ninja + run: | + sudo apt-get update + sudo apt-get install ninja-build -y --no-install-recommends + + - name: Configure and Build + run: | + bash ./platforms/build-${{ matrix.config.name }}.sh complete_rebuild release + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.config.name }} Executable + path: build-${{ matrix.config.name }}/oopetris.${{ matrix.config.extension }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 033cd863..20ecde2f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,28 +2,28 @@ name: Test CI on: push: - branches: ["main"] + branches: ['main'] pull_request: workflow_dispatch: jobs: test: - name: Run Tests + name: Run Tests runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 with: - fetch-depth: "0" + fetch-depth: '0' - name: Setup Clang run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh 19 - sudo apt-get install libc++-19* libc++abi*19* llvm-19 -y + sudo apt-get install libc++-19* libc++abi*19* llvm-19 -y --no-install-recommends echo "CC=clang-19" >> "$GITHUB_ENV" echo "CXX=clang++-19" >> "$GITHUB_ENV" - + # NOTE: meson has no dependencies, so --break-system-packages doesn't really break anything! - name: Setup meson run: | @@ -32,10 +32,10 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install ninja-build libsdl2-2.0-0 libsdl2-dev libsdl2-ttf* libsdl2-mixer* libsdl2-image* gcovr -y + sudo apt-get install ninja-build libsdl2-2.0-0 libsdl2-dev libsdl2-ttf* libsdl2-mixer* libsdl2-image* gcovr -y --no-install-recommends - name: Configure - run: meson setup build -Dbuildtype=debug -Db_coverage=true -Dtests=true -Dclang_libcpp=enabled + run: meson setup build -Dbuildtype=debug -Db_coverage=true -Dtests=true -Dclang_libcpp=enabled - name: Run tests run: meson test -C build --verbose @@ -52,14 +52,14 @@ jobs: fail: false # TODO: enable after coverage is higher than 0.000001 % xD # Publish the rendered output as a PR comment publish: true - coverage-summary-title: "Code Coverage Summary" + coverage-summary-title: 'Code Coverage Summary' togglable-report: true # TODO: use the diff feature of that later when we require test coverage on PR's to not go down - name: Upload test coverage artifacts uses: actions/upload-artifact@v4 with: - name: Tests coverage artifacts - path: | - ./build/meson-logs/coverage.xml - ./build/meson-logs/coveragereport/ + name: Tests coverage artifacts + path: | + ./build/meson-logs/coverage.xml + ./build/meson-logs/coveragereport/ From ff0da0bc4abbfd8045b33d361a1ee1bbc2cdb81b Mon Sep 17 00:00:00 2001 From: Totto16 Date: Tue, 1 Oct 2024 20:02:19 +0200 Subject: [PATCH 4/4] ci: fix llvm 19 + libstdc++ build by patching the g++ library --- .github/patches/gcc_14_2.diff | 47 +++++++++++++++++++++++++++++++++++ .github/workflows/build.yml | 11 ++++---- 2 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 .github/patches/gcc_14_2.diff diff --git a/.github/patches/gcc_14_2.diff b/.github/patches/gcc_14_2.diff new file mode 100644 index 00000000..9a81651f --- /dev/null +++ b/.github/patches/gcc_14_2.diff @@ -0,0 +1,47 @@ +From c9e05b03c18e898be604ab90401476e9c473cc52 Mon Sep 17 00:00:00 2001 +From: Jonathan Wakely +Date: Thu, 16 May 2024 17:15:55 +0100 +Subject: [PATCH] libstdc++: Fix typo in _Grapheme_cluster_view::_Iterator + [PR115119] + +libstdc++-v3/ChangeLog: + + PR libstdc++/115119 + * include/bits/unicode.h (_Iterator::operator++(int)): Fix typo + in increment expression. + * testsuite/ext/unicode/grapheme_view.cc: Check post-increment + on view's iterator. + + Source: https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=c9e05b03c18e898be604ab90401476e9c473cc52 + Modified paths, to make it work +--- + bits/unicode.h | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/bits/unicode.h b/bits/unicode.h +index 46238143fb61..a14a17c5dfcf 100644 +--- a/bits/unicode.h ++++ b/bits/unicode.h +@@ -34,10 +34,12 @@ + #include + #include // bit_width + #include // __detail::__from_chars_alnum_to_val_table ++#include + #include + #include + #include +-#include ++#include // iterator_t, sentinel_t, input_range, etc. ++#include // view_interface + + namespace std _GLIBCXX_VISIBILITY(default) + { +@@ -802,7 +804,7 @@ inline namespace __v15_1_0 + operator++(int) + { + auto __tmp = *this; +- ++this; ++ ++*this; + return __tmp; + } + diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6d987296..cc5d651e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -139,12 +139,11 @@ jobs: echo "CC=clang-19" >> "$GITHUB_ENV" echo "CXX=clang++-19" >> "$GITHUB_ENV" echo "OBJC=clang-19" >> "$GITHUB_ENV" - # Also install the newest g++ (For the libstd++ library) - echo "deb http://archive.ubuntu.com/ubuntu/ oracular main" | sudo tee -a /etc/apt/sources.list.d/new_ubuntu.list - sudo apt-get update - sudo apt-get install libstdc++-14-dev -y --no-install-recommends - sudo rm -rf /etc/apt/sources.list.d/new_ubuntu.list - sudo apt-get update + # Patch the libstd++ library, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115119 + # This is a dirty workaround, but it is needed, since gcc 14.2 (where this was patched usptream) is not easily available + # If we use the oracular (Ubuntu 24.10) repos, we could install gcc 14.2, but clang-19 isn't compatible with that + # TODO: remove this, after it works again + sudo patch -p1 /usr/include/c++/14/bits/unicode.h .github/patches/gcc_14_2.diff - name: Setup GCC (Linux) if: matrix.config.os == 'ubuntu' && matrix.config.use-clang == false