From 751e755765dba839fccee6e07db2873a8b782afa Mon Sep 17 00:00:00 2001 From: Florian Sattler Date: Sun, 24 May 2026 13:07:16 +0200 Subject: [PATCH 1/3] build: extends pipline setup to arm64 --- .conan/profiles/sen_gcc_arm64 | 6 +++ .github/scripts/generate_matrix_jobs.py | 64 ++++++++++++++----------- .github/workflows/conan.yaml | 1 + 3 files changed, 43 insertions(+), 28 deletions(-) create mode 100644 .conan/profiles/sen_gcc_arm64 diff --git a/.conan/profiles/sen_gcc_arm64 b/.conan/profiles/sen_gcc_arm64 new file mode 100644 index 00000000..bef46580 --- /dev/null +++ b/.conan/profiles/sen_gcc_arm64 @@ -0,0 +1,6 @@ +include(sen_gcc) + +[settings] +arch=armv8 + +[conf] diff --git a/.github/scripts/generate_matrix_jobs.py b/.github/scripts/generate_matrix_jobs.py index cfd8ca99..12d173ec 100644 --- a/.github/scripts/generate_matrix_jobs.py +++ b/.github/scripts/generate_matrix_jobs.py @@ -45,7 +45,7 @@ class JobSpecification: """Pipeline job specification that defines the configuration options.""" name: str os: str - runner: tp.Literal["ubuntu-latest", "windows-2022", "self-hosted"] + runner: tp.Literal["ubuntu-latest", "windows-2022", "self-hosted", "ubuntu-24.04-arm"] container: Container | None compiler: Compiler std: tp.Literal[17, 20, 23] @@ -60,35 +60,43 @@ def compute_jobs(release: bool, conan: bool) -> list[JobSpecification]: """Computes the list of pipeline jobs that should run.""" jobs = [] - # Add gcc jobs +# # Add gcc jobs +# if not release: +# jobs.append( +# JobSpecification("Basic GCC", "ubuntu-22.04", "self-hosted", None, +# Compiler("gcc", 12, "gcc-12", "g++-12"), 17, +# "Debug")) +# else: +# jobs.append( +# JobSpecification("Basic GCC", "ubuntu-22.04", "self-hosted", None, +# Compiler("gcc", 12, "gcc-12", "g++-12"), 17, +# "Release")) +# +# # Add clang jobs +# if not release: +# jobs.append( +# JobSpecification("Basic Clang", "ubuntu-24.04", "self-hosted", +# None, +# Compiler("clang", 20, "clang-20", +# "clang++-20"), 17, "Debug")) +# +# # Add msvc jobs +# if release: +# jobs.append( +# JobSpecification("Basic Windows", "windows", "windows-2022", None, +# Compiler("msvc", 194, "cl", "cl"), 17, "Release")) +# else: +# jobs.append( +# JobSpecification("Basic Windows", "windows", "windows-2022", None, +# Compiler("msvc", 194, "cl", "cl"), 17, "Debug")) +# + # Add amd64 jobs if not release: jobs.append( - JobSpecification("Basic GCC", "ubuntu-22.04", "self-hosted", None, - Compiler("gcc", 12, "gcc-12", "g++-12"), 17, - "Debug")) - else: - jobs.append( - JobSpecification("Basic GCC", "ubuntu-22.04", "self-hosted", None, - Compiler("gcc", 12, "gcc-12", "g++-12"), 17, - "Release")) - - # Add clang jobs - if not release: - jobs.append( - JobSpecification("Basic Clang", "ubuntu-24.04", "self-hosted", - None, - Compiler("clang", 20, "clang-20", - "clang++-20"), 17, "Debug")) - - # Add msvc jobs - if release: - jobs.append( - JobSpecification("Basic Windows", "windows", "windows-2022", None, - Compiler("msvc", 194, "cl", "cl"), 17, "Release")) - else: - jobs.append( - JobSpecification("Basic Windows", "windows", "windows-2022", None, - Compiler("msvc", 194, "cl", "cl"), 17, "Debug")) + JobSpecification("Basic Ubuntu arm", "ubuntu-24.04", + "ubuntu-24.04-arm", None, + Compiler("gcc_arm64", 14, "gcc-14", + "gcc-14"), 17, "Debug")) return sorted(jobs) diff --git a/.github/workflows/conan.yaml b/.github/workflows/conan.yaml index 025451aa..4b58f096 100644 --- a/.github/workflows/conan.yaml +++ b/.github/workflows/conan.yaml @@ -96,6 +96,7 @@ jobs: run: | rm -f ~/.conan2/profiles/default conan profile detect --force -vquiet + conan config install .conan/profiles/ --target-folder ~/.conan2/profiles/ cp .conan/profiles/sen_$COMPILER ~/.conan2/profiles/default echo tools.system.package_manager:mode=install >> ~/.conan2/profiles/default echo tools.system.package_manager:sudo=True >> ~/.conan2/profiles/default From b8d4f9875b91d3a46eae24139b6de82b0926a932 Mon Sep 17 00:00:00 2001 From: Florian Sattler Date: Sun, 24 May 2026 13:41:36 +0200 Subject: [PATCH 2/3] testing linker issues --- .conan/profiles/sen_gcc_arm64 | 10 ++++++++-- .github/scripts/generate_matrix_jobs.py | 4 ++-- conanfile.py | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.conan/profiles/sen_gcc_arm64 b/.conan/profiles/sen_gcc_arm64 index bef46580..f13ea471 100644 --- a/.conan/profiles/sen_gcc_arm64 +++ b/.conan/profiles/sen_gcc_arm64 @@ -1,6 +1,12 @@ -include(sen_gcc) - [settings] arch=armv8 +os=Linux +compiler=gcc +compiler.cppstd=17 +compiler.version=12 +compiler.libcxx=libstdc++11 +build_type=Release + [conf] +tools.cmake.cmake_layout:build_folder_vars=['settings.compiler'] diff --git a/.github/scripts/generate_matrix_jobs.py b/.github/scripts/generate_matrix_jobs.py index 12d173ec..281a8ea6 100644 --- a/.github/scripts/generate_matrix_jobs.py +++ b/.github/scripts/generate_matrix_jobs.py @@ -95,8 +95,8 @@ def compute_jobs(release: bool, conan: bool) -> list[JobSpecification]: jobs.append( JobSpecification("Basic Ubuntu arm", "ubuntu-24.04", "ubuntu-24.04-arm", None, - Compiler("gcc_arm64", 14, "gcc-14", - "gcc-14"), 17, "Debug")) + Compiler("gcc_arm64", 12, "gcc-12", + "g++-12"), 17, "Debug")) return sorted(jobs) diff --git a/conanfile.py b/conanfile.py index 532eec0b..4b704d28 100644 --- a/conanfile.py +++ b/conanfile.py @@ -27,7 +27,7 @@ class SenConan(ConanFile): def build_requirements(self): self.tool_requires("cmake/3.28.1") - self.tool_requires("ninja/1.13.2") + # self.tool_requires("ninja/1.13.2") self.test_requires("gtest/1.17.0") def requirements(self): From f28a44c8f747b834d768b47800a66fe8190987db Mon Sep 17 00:00:00 2001 From: Florian Sattler Date: Sun, 24 May 2026 14:02:00 +0200 Subject: [PATCH 3/3] clean up --- .conan/profiles/sen_gcc_arm64 | 10 +--- .github/scripts/generate_matrix_jobs.py | 64 ++++++++++++------------- conanfile.py | 2 +- 3 files changed, 35 insertions(+), 41 deletions(-) diff --git a/.conan/profiles/sen_gcc_arm64 b/.conan/profiles/sen_gcc_arm64 index f13ea471..bef46580 100644 --- a/.conan/profiles/sen_gcc_arm64 +++ b/.conan/profiles/sen_gcc_arm64 @@ -1,12 +1,6 @@ +include(sen_gcc) + [settings] arch=armv8 -os=Linux -compiler=gcc -compiler.cppstd=17 -compiler.version=12 -compiler.libcxx=libstdc++11 -build_type=Release - [conf] -tools.cmake.cmake_layout:build_folder_vars=['settings.compiler'] diff --git a/.github/scripts/generate_matrix_jobs.py b/.github/scripts/generate_matrix_jobs.py index 281a8ea6..0fb680ba 100644 --- a/.github/scripts/generate_matrix_jobs.py +++ b/.github/scripts/generate_matrix_jobs.py @@ -60,43 +60,43 @@ def compute_jobs(release: bool, conan: bool) -> list[JobSpecification]: """Computes the list of pipeline jobs that should run.""" jobs = [] -# # Add gcc jobs -# if not release: -# jobs.append( -# JobSpecification("Basic GCC", "ubuntu-22.04", "self-hosted", None, -# Compiler("gcc", 12, "gcc-12", "g++-12"), 17, -# "Debug")) -# else: -# jobs.append( -# JobSpecification("Basic GCC", "ubuntu-22.04", "self-hosted", None, -# Compiler("gcc", 12, "gcc-12", "g++-12"), 17, -# "Release")) -# -# # Add clang jobs -# if not release: -# jobs.append( -# JobSpecification("Basic Clang", "ubuntu-24.04", "self-hosted", -# None, -# Compiler("clang", 20, "clang-20", -# "clang++-20"), 17, "Debug")) -# -# # Add msvc jobs -# if release: -# jobs.append( -# JobSpecification("Basic Windows", "windows", "windows-2022", None, -# Compiler("msvc", 194, "cl", "cl"), 17, "Release")) -# else: -# jobs.append( -# JobSpecification("Basic Windows", "windows", "windows-2022", None, -# Compiler("msvc", 194, "cl", "cl"), 17, "Debug")) -# + # Add gcc jobs + if not release: + jobs.append( + JobSpecification("Basic GCC", "ubuntu-22.04", "self-hosted", None, + Compiler("gcc", 12, "gcc-12", "g++-12"), 17, + "Debug")) + else: + jobs.append( + JobSpecification("Basic GCC", "ubuntu-22.04", "self-hosted", None, + Compiler("gcc", 12, "gcc-12", "g++-12"), 17, + "Release")) + + # Add clang jobs + if not release: + jobs.append( + JobSpecification("Basic Clang", "ubuntu-24.04", "self-hosted", + None, + Compiler("clang", 20, "clang-20", + "clang++-20"), 17, "Debug")) + + # Add msvc jobs + if release: + jobs.append( + JobSpecification("Basic Windows", "windows", "windows-2022", None, + Compiler("msvc", 194, "cl", "cl"), 17, "Release")) + else: + jobs.append( + JobSpecification("Basic Windows", "windows", "windows-2022", None, + Compiler("msvc", 194, "cl", "cl"), 17, "Debug")) + # Add amd64 jobs if not release: jobs.append( JobSpecification("Basic Ubuntu arm", "ubuntu-24.04", "ubuntu-24.04-arm", None, - Compiler("gcc_arm64", 12, "gcc-12", - "g++-12"), 17, "Debug")) + Compiler("gcc_arm64", 12, "gcc-14", + "g++-14"), 17, "Debug")) return sorted(jobs) diff --git a/conanfile.py b/conanfile.py index 4b704d28..532eec0b 100644 --- a/conanfile.py +++ b/conanfile.py @@ -27,7 +27,7 @@ class SenConan(ConanFile): def build_requirements(self): self.tool_requires("cmake/3.28.1") - # self.tool_requires("ninja/1.13.2") + self.tool_requires("ninja/1.13.2") self.test_requires("gtest/1.17.0") def requirements(self):