CI: Update Ubuntu runners to 24.04, but keep 22.04 for Linux builds

Pin clang-format to version 16, and black to 24.10.0.
Keep using Ubuntu 22.04 for Linux builds for portability.
This commit is contained in:
Rémi Verschelde 2024-11-06 13:57:25 +01:00 committed by Relintai
parent 8a914eefa3
commit 672cea4d08
20 changed files with 65 additions and 46 deletions

View File

@ -8,26 +8,20 @@ concurrency:
jobs: jobs:
static-checks: static-checks:
name: Static Checks (clang-format, black format, file format, documentation checks) name: Static Checks (clang-format, black format, file format, documentation checks)
runs-on: ubuntu-20.04 runs-on: "ubuntu-24.04"
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
# Azure repositories are not reliable, we need to prevent Azure giving us packages.
- name: Make apt sources.list use the default Ubuntu repositories
run: |
sudo rm -f /etc/apt/sources.list.d/*
sudo cp -f misc/ci/sources.list /etc/apt/sources.list
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-add-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main"
sudo apt-get update
- name: Install dependencies - name: Install dependencies
run: | run: |
sudo apt-get install -qq dos2unix recode clang-format-13 # Azure repositories are flaky, remove them.
sudo update-alternatives --remove-all clang-format sudo rm -f /etc/apt/sources.list.d/{azure,microsoft}*
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-13 100 sudo apt-get update
sudo pip3 install black==22.3.0 pygments sudo apt-get install -qq dos2unix libxml2-utils python3-pip moreutils
sudo update-alternatives --remove-all clang-format || true
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-16 100
sudo pip3 install black==24.10.0 pygments
# This needs to happen before Python and npm execution; it must happen before any extra files are written. # This needs to happen before Python and npm execution; it must happen before any extra files are written.
- name: .gitignore checks (gitignore_check.sh) - name: .gitignore checks (gitignore_check.sh)

View File

@ -12,20 +12,12 @@ concurrency:
jobs: jobs:
android-template: android-template:
runs-on: "ubuntu-20.04" runs-on: "ubuntu-24.04"
name: Template (target=release, tools=no) name: Template (target=release, tools=no)
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
# Azure repositories are not reliable, we need to prevent azure giving us packages.
- name: Make apt sources.list use the default Ubuntu repositories
run: |
sudo rm -f /etc/apt/sources.list.d/*
sudo cp -f misc/ci/sources.list /etc/apt/sources.list
sudo apt-get update
- name: Set up Java 17 - name: Set up Java 17
uses: actions/setup-java@v4 uses: actions/setup-java@v4
with: with:

View File

@ -14,7 +14,7 @@ concurrency:
jobs: jobs:
javascript-template: javascript-template:
runs-on: "ubuntu-22.04" runs-on: "ubuntu-24.04"
name: Template (target=release, tools=no) name: Template (target=release, tools=no)
steps: steps:

View File

@ -12,7 +12,8 @@ concurrency:
jobs: jobs:
build-linux: build-linux:
runs-on: "ubuntu-20.04" # Stay one LTS before latest to increase portability of Linux artifacts.
runs-on: "ubuntu-22.04"
name: ${{ matrix.name }} name: ${{ matrix.name }}
strategy: strategy:
fail-fast: false fail-fast: false
@ -46,14 +47,13 @@ jobs:
- name: Linux dependencies - name: Linux dependencies
shell: bash shell: bash
run: | run: |
# Azure repositories are not reliable, we need to prevent azure giving us packages. # Azure repositories are flaky, remove them.
sudo rm -f /etc/apt/sources.list.d/* sudo rm -f /etc/apt/sources.list.d/{azure,microsoft}*
sudo cp -f misc/ci/sources.list /etc/apt/sources.list
sudo apt-get update sudo apt-get update
# The actual dependencies # The actual dependencies.
sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \ sudo apt-get install --no-install-recommends build-essential pkg-config libx11-dev \
libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev \ libxcursor-dev libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev \
libdbus-1-dev libudev-dev libxi-dev libxrandr-dev yasm xvfb wget unzip \ libpulse-dev libdbus-1-dev libudev-dev libxi-dev libxrandr-dev yasm xvfb wget unzip \
libspeechd-dev speech-dispatcher libspeechd-dev speech-dispatcher
- name: Free disk space on runner - name: Free disk space on runner

View File

@ -12,7 +12,8 @@ concurrency:
jobs: jobs:
build-server: build-server:
runs-on: "ubuntu-20.04" # Stay one LTS before latest to increase portability of Linux artifacts.
runs-on: "ubuntu-22.04"
name: ${{ matrix.name }} name: ${{ matrix.name }}
strategy: strategy:
fail-fast: false fail-fast: false
@ -36,14 +37,14 @@ jobs:
- name: Linux dependencies - name: Linux dependencies
shell: bash shell: bash
run: | run: |
# Azure repositories are not reliable, we need to prevent azure giving us packages. # Azure repositories are flaky, remove them.
sudo rm -f /etc/apt/sources.list.d/* sudo rm -f /etc/apt/sources.list.d/{azure,microsoft}*
sudo cp -f misc/ci/sources.list /etc/apt/sources.list
sudo apt-get update sudo apt-get update
# The actual dependencies # The actual dependencies.
sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \ sudo apt-get install --no-install-recommends build-essential pkg-config libx11-dev \
libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev \ libxcursor-dev libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev \
libdbus-1-dev libudev-dev libxi-dev libxrandr-dev yasm xvfb wget unzip libpulse-dev libdbus-1-dev libudev-dev libxi-dev libxrandr-dev yasm xvfb wget unzip \
libspeechd-dev speech-dispatcher
- name: Restore Pandemonium build cache - name: Restore Pandemonium build cache
uses: ./.github/actions/pandemonium-cache-restore uses: ./.github/actions/pandemonium-cache-restore

View File

@ -714,13 +714,14 @@ PoolByteArray HTTPClient::read_response_body_chunk() {
chunk_left -= rec; chunk_left -= rec;
if (chunk_left == 0) { if (chunk_left == 0) {
if (chunk[chunk.size() - 2] != '\r' || chunk[chunk.size() - 1] != '\n') { const int chunk_size = chunk.size();
if (chunk[chunk_size - 2] != '\r' || chunk[chunk_size - 1] != '\n') {
ERR_PRINT("HTTP Invalid chunk terminator (not \\r\\n)"); ERR_PRINT("HTTP Invalid chunk terminator (not \\r\\n)");
status = STATUS_CONNECTION_ERROR; status = STATUS_CONNECTION_ERROR;
break; break;
} }
ret.resize(chunk.size() - 2); ret.resize(chunk_size - 2);
PoolByteArray::Write w = ret.write(); PoolByteArray::Write w = ret.write();
memcpy(w.ptr(), chunk.ptr(), ret.size()); memcpy(w.ptr(), chunk.ptr(), ret.size());
chunk.clear(); chunk.clear();

View File

@ -106,8 +106,21 @@ Error PacketPeerUDP::get_packet(const uint8_t **r_buffer, int &r_buffer_size) {
return ERR_UNAVAILABLE; return ERR_UNAVAILABLE;
} }
/* Bogus GCC warning here:
* In member function 'int RingBuffer<T>::read(T*, int, bool) [with T = unsigned char]',
* inlined from 'virtual Error PacketPeerUDP::get_packet(const uint8_t**, int&)' at core/io/packet_peer_udp.cpp:112:9,
* inlined from 'virtual Error PacketPeerUDP::get_packet(const uint8_t**, int&)' at core/io/packet_peer_udp.cpp:99:7:
* Error: ./core/ring_buffer.h:68:46: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=]
* 68 | p_buf[dst++] = read[pos + i];
* | ~~~~~~~~~~~~~^~~~~~~
*/
#if defined(__GNUC__) && !defined(__clang__)
#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-Wstringop-overflow=0"
#endif
uint32_t size = 0; uint32_t size = 0;
uint8_t ipv6[16]; uint8_t ipv6[16] = {};
rb.read(ipv6, 16, true); rb.read(ipv6, 16, true);
packet_ip.set_ipv6(ipv6); packet_ip.set_ipv6(ipv6);
rb.read((uint8_t *)&packet_port, 4, true); rb.read((uint8_t *)&packet_port, 4, true);
@ -116,6 +129,11 @@ Error PacketPeerUDP::get_packet(const uint8_t **r_buffer, int &r_buffer_size) {
--queue_count; --queue_count;
*r_buffer = packet_buffer; *r_buffer = packet_buffer;
r_buffer_size = size; r_buffer_size = size;
#if defined(__GNUC__) && !defined(__clang__)
#pragma GCC diagnostic pop
#endif
return OK; return OK;
} }

View File

@ -214,12 +214,12 @@ void StreamPeer::put_var(const Variant &p_variant, bool p_full_objects) {
} }
uint8_t StreamPeer::get_u8() { uint8_t StreamPeer::get_u8() {
uint8_t buf[1]; uint8_t buf[1] = {};
get_data(buf, 1); get_data(buf, 1);
return buf[0]; return buf[0];
} }
int8_t StreamPeer::get_8() { int8_t StreamPeer::get_8() {
uint8_t buf[1]; uint8_t buf[1] = {};
get_data(buf, 1); get_data(buf, 1);
return buf[0]; return buf[0];
} }

View File

@ -59,6 +59,7 @@ import sys
sys.modules["_elementtree"] = None sys.modules["_elementtree"] = None
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
## override the parser to get the line number ## override the parser to get the line number
class LineNumberingParser(ET.XMLParser): class LineNumberingParser(ET.XMLParser):
def _start(self, *args, **kwargs): def _start(self, *args, **kwargs):

View File

@ -3,6 +3,7 @@
All such functions are invoked in a subprocess on Windows to prevent build flakiness. All such functions are invoked in a subprocess on Windows to prevent build flakiness.
""" """
import os import os
import os.path import os.path
import shutil import shutil

View File

@ -3,6 +3,7 @@
All such functions are invoked in a subprocess on Windows to prevent build flakiness. All such functions are invoked in a subprocess on Windows to prevent build flakiness.
""" """
import os import os
from platform_methods import subprocess_main from platform_methods import subprocess_main
from compat import StringIO from compat import StringIO

View File

@ -19,6 +19,7 @@
import os import os
from array import array from array import array
# Generates a C++ file from the specified binary resource file # Generates a C++ file from the specified binary resource file
def generate(in_path, out_path): def generate(in_path, out_path):

View File

@ -3,6 +3,7 @@
All such functions are invoked in a subprocess on Windows to prevent build flakiness. All such functions are invoked in a subprocess on Windows to prevent build flakiness.
""" """
from platform_methods import subprocess_main from platform_methods import subprocess_main
import re import re

View File

@ -3,6 +3,7 @@
All such functions are invoked in a subprocess on Windows to prevent build flakiness. All such functions are invoked in a subprocess on Windows to prevent build flakiness.
""" """
from platform_methods import subprocess_main from platform_methods import subprocess_main
from compat import byte_to_str from compat import byte_to_str
from collections import OrderedDict from collections import OrderedDict

View File

@ -3,6 +3,7 @@
All such functions are invoked in a subprocess on Windows to prevent build flakiness. All such functions are invoked in a subprocess on Windows to prevent build flakiness.
""" """
import json import json
from platform_methods import subprocess_main from platform_methods import subprocess_main

View File

@ -1329,7 +1329,8 @@ void TileMap::_set_tile_data(const PoolVector<int> &p_data) {
for (int i = 0; i < c; i += offset) { for (int i = 0; i < c; i += offset) {
const uint8_t *ptr = (const uint8_t *)&r[i]; const uint8_t *ptr = (const uint8_t *)&r[i];
uint8_t local[12]; uint8_t local[12];
for (int j = 0; j < ((format == FORMAT_2) ? 12 : 8); j++) { const int buffer_size = (format == FORMAT_2) ? 12 : 8;
for (int j = 0; j < buffer_size; j++) {
local[j] = ptr[j]; local[j] = ptr[j];
} }

View File

@ -3,6 +3,7 @@
All such functions are invoked in a subprocess on Windows to prevent build flakiness. All such functions are invoked in a subprocess on Windows to prevent build flakiness.
""" """
import os import os
from platform_methods import subprocess_main from platform_methods import subprocess_main

View File

@ -3,6 +3,7 @@
All such functions are invoked in a subprocess on Windows to prevent build flakiness. All such functions are invoked in a subprocess on Windows to prevent build flakiness.
""" """
import os import os
from platform_methods import subprocess_main from platform_methods import subprocess_main

View File

@ -3,6 +3,7 @@
All such functions are invoked in a subprocess on Windows to prevent build flakiness. All such functions are invoked in a subprocess on Windows to prevent build flakiness.
""" """
import os import os
from platform_methods import subprocess_main from platform_methods import subprocess_main

View File

@ -1,5 +1,6 @@
"""Functions used to generate scu build source files during build time """Functions used to generate scu build source files during build time
""" """
import glob, os import glob, os
import math import math
from pathlib import Path from pathlib import Path
@ -158,6 +159,7 @@ def find_section_name(sub_folder):
# which is slow like a normal build, but prevents the naming conflicts. # which is slow like a normal build, but prevents the naming conflicts.
# Ideally in these situations, the source code should be changed to prevent naming conflicts. # Ideally in these situations, the source code should be changed to prevent naming conflicts.
# "extension" will usually be cpp, but can also be set to c (for e.g. third party libraries that use c) # "extension" will usually be cpp, but can also be set to c (for e.g. third party libraries that use c)
def process_folder(folders, sought_exceptions=[], includes_per_scu=0, extension="cpp"): def process_folder(folders, sought_exceptions=[], includes_per_scu=0, extension="cpp"):
if len(folders) == 0: if len(folders) == 0: