dev-lang/swift: fix issues caused by build system updates

Closes: https://bugs.gentoo.org/945025

Signed-off-by: Pavel Sobolev <contact@paveloom.dev>
This commit is contained in:
Pavel Sobolev
2025-09-05 10:31:56 +03:00
parent 137a544a78
commit 23ea96bd50
4 changed files with 227 additions and 1 deletions

View File

@@ -0,0 +1,138 @@
From: Pavel Sobolev <contact@paveloom.dev>
Subject: [PATCH] Fix issues caused by build system updates.
This includes fixes for issues caused by the following updates:
- GCC 15 (specifically, changes in libstdc++)
- GNU libc C library 2.42
- CMake 4
Specifically, the following is changed:
- Added missing includes of the `<cstdint>` header [1]
- Removed deprecated `struct termio` [2]
- Removed unnecessary `CMP0037` policy change [3]
[1] See https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=3a817a4a5a6d94da9127af3be9f84a74e3076ee2
[2] See https://github.com/swiftlang/llvm-project/commit/59978b21ad9c65276ee8e14f26759691b8a65763
[3] See https://github.com/swiftlang/swift-llbuild/commit/1fbcca53fe5fde6e2afb3998f19bb5ff4a7df5d8
Bug: https://bugs.gentoo.org/945025
Signed-off-by: Pavel Sobolev <contact@paveloom.dev>
--- a/llbuild/tests/CMakeLists.txt
+++ b/llbuild/tests/CMakeLists.txt
@@ -46,9 +46,6 @@ if(Python_Interpreter_FOUND AND LIT_FOUND AND FILECHECK_FOUND)
add_dependencies(test-llbuild ${test_target_dependencies})
# Add a target for running all tests.
- if(POLICY CMP0037)
- cmake_policy(SET CMP0037 OLD)
- endif(POLICY CMP0037)
add_custom_target(test)
add_dependencies(test test-llbuild)
set_target_properties(test PROPERTIES FOLDER "Tests")
--- a/llbuild/utils/unittest/googletest/include/gtest/gtest.h
+++ b/llbuild/utils/unittest/googletest/include/gtest/gtest.h
@@ -52,6 +52,7 @@
#define GTEST_INCLUDE_GTEST_GTEST_H_
#include <cstddef>
+#include <cstdint>
#include <limits>
#include <memory>
#include <ostream>
--- a/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
+++ b/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
@@ -338,17 +338,9 @@ static void ioctl_table_fill() {
_(SOUND_PCM_WRITE_CHANNELS, WRITE, sizeof(int));
_(SOUND_PCM_WRITE_FILTER, WRITE, sizeof(int));
_(TCFLSH, NONE, 0);
-#if SANITIZER_GLIBC
- _(TCGETA, WRITE, struct_termio_sz);
-#endif
_(TCGETS, WRITE, struct_termios_sz);
_(TCSBRK, NONE, 0);
_(TCSBRKP, NONE, 0);
-#if SANITIZER_GLIBC
- _(TCSETA, READ, struct_termio_sz);
- _(TCSETAF, READ, struct_termio_sz);
- _(TCSETAW, READ, struct_termio_sz);
-#endif
_(TCSETS, READ, struct_termios_sz);
_(TCSETSF, READ, struct_termios_sz);
_(TCSETSW, READ, struct_termios_sz);
--- a/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
+++ b/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
@@ -467,9 +467,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
unsigned struct_input_id_sz = sizeof(struct input_id);
unsigned struct_mtpos_sz = sizeof(struct mtpos);
unsigned struct_rtentry_sz = sizeof(struct rtentry);
-#if SANITIZER_GLIBC || SANITIZER_ANDROID
- unsigned struct_termio_sz = sizeof(struct termio);
-#endif
unsigned struct_vt_consize_sz = sizeof(struct vt_consize);
unsigned struct_vt_sizes_sz = sizeof(struct vt_sizes);
unsigned struct_vt_stat_sz = sizeof(struct vt_stat);
--- a/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+++ b/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -998,7 +998,6 @@ extern unsigned struct_hd_geometry_sz;
extern unsigned struct_input_absinfo_sz;
extern unsigned struct_input_id_sz;
extern unsigned struct_mtpos_sz;
-extern unsigned struct_termio_sz;
extern unsigned struct_vt_consize_sz;
extern unsigned struct_vt_sizes_sz;
extern unsigned struct_vt_stat_sz;
--- a/llvm-project/lldb/include/lldb/Utility/AddressableBits.h
+++ b/llvm-project/lldb/include/lldb/Utility/AddressableBits.h
@@ -11,6 +11,8 @@
#include "lldb/lldb-forward.h"
+#include <cstdint>
+
namespace lldb_private {
/// \class AddressableBits AddressableBits.h "lldb/Core/AddressableBits.h"
--- a/llvm-project/llvm/include/llvm/ADT/SmallVector.h
+++ b/llvm-project/llvm/include/llvm/ADT/SmallVector.h
@@ -20,6 +20,7 @@
#include <cassert>
#include <cstddef>
#include <cstdlib>
+#include <cstdint>
#include <cstring>
#include <functional>
#include <initializer_list>
--- a/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h
+++ b/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h
@@ -13,6 +13,7 @@
#ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86MCTARGETDESC_H
#define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86MCTARGETDESC_H
+#include <cstdint>
#include <memory>
#include <string>
--- a/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
+++ b/llvm-project/llvm/utils/unittest/googletest/include/gtest/gtest.h
@@ -52,6 +52,7 @@
#define GTEST_INCLUDE_GTEST_GTEST_H_
#include <cstddef>
+#include <cstdint>
#include <limits>
#include <memory>
#include <ostream>
--- a/swift/stdlib/include/llvm/ADT/SmallVector.h
+++ b/swift/stdlib/include/llvm/ADT/SmallVector.h
@@ -22,6 +22,7 @@
#include <cassert>
#include <cstddef>
#include <cstdlib>
+#include <cstdint>
#include <cstring>
#include <functional>
#include <initializer_list>

View File

@@ -0,0 +1,87 @@
From: Pavel Sobolev <contact@paveloom.dev>
Subject: [PATCH] Fix issues caused by build system updates.
This includes fixes for issues caused by the following updates:
- GCC 15 (specifically, changes in libstdc++)
- GNU libc C library 2.42
Specifically, the following is changed:
- Added missing includes of the `<cstdint>` header [1]
- Removed deprecated `struct termio` [2]
- Removed a redundant include of the `<math.h>` header [3]
[1] See https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=3a817a4a5a6d94da9127af3be9f84a74e3076ee2
[2] See https://github.com/swiftlang/llvm-project/commit/59978b21ad9c65276ee8e14f26759691b8a65763
[3] See https://github.com/swiftlang/swift/issues/81774
Bug: https://bugs.gentoo.org/945025
Signed-off-by: Pavel Sobolev <contact@paveloom.dev>
--- a/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
+++ b/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
@@ -338,17 +338,9 @@ static void ioctl_table_fill() {
_(SOUND_PCM_WRITE_CHANNELS, WRITE, sizeof(int));
_(SOUND_PCM_WRITE_FILTER, WRITE, sizeof(int));
_(TCFLSH, NONE, 0);
-#if SANITIZER_GLIBC
- _(TCGETA, WRITE, struct_termio_sz);
-#endif
_(TCGETS, WRITE, struct_termios_sz);
_(TCSBRK, NONE, 0);
_(TCSBRKP, NONE, 0);
-#if SANITIZER_GLIBC
- _(TCSETA, READ, struct_termio_sz);
- _(TCSETAF, READ, struct_termio_sz);
- _(TCSETAW, READ, struct_termio_sz);
-#endif
_(TCSETS, READ, struct_termios_sz);
_(TCSETSF, READ, struct_termios_sz);
_(TCSETSW, READ, struct_termios_sz);
--- a/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
+++ b/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
@@ -479,9 +479,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
unsigned struct_input_id_sz = sizeof(struct input_id);
unsigned struct_mtpos_sz = sizeof(struct mtpos);
unsigned struct_rtentry_sz = sizeof(struct rtentry);
-#if SANITIZER_GLIBC || SANITIZER_ANDROID
- unsigned struct_termio_sz = sizeof(struct termio);
-#endif
unsigned struct_vt_consize_sz = sizeof(struct vt_consize);
unsigned struct_vt_sizes_sz = sizeof(struct vt_sizes);
unsigned struct_vt_stat_sz = sizeof(struct vt_stat);
--- a/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+++ b/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -1013,7 +1013,6 @@ extern unsigned struct_hd_geometry_sz;
extern unsigned struct_input_absinfo_sz;
extern unsigned struct_input_id_sz;
extern unsigned struct_mtpos_sz;
-extern unsigned struct_termio_sz;
extern unsigned struct_vt_consize_sz;
extern unsigned struct_vt_sizes_sz;
extern unsigned struct_vt_stat_sz;
--- a/swift/stdlib/include/llvm/ADT/SmallVector.h
+++ b/swift/stdlib/include/llvm/ADT/SmallVector.h
@@ -22,6 +22,7 @@
#include <cassert>
#include <cstddef>
#include <cstdlib>
+#include <cstdint>
#include <cstring>
#include <functional>
#include <initializer_list>
--- a/swift-foundation/Sources/_FoundationCShims/include/_CStdlib.h
+++ b/swift-foundation/Sources/_FoundationCShims/include/_CStdlib.h
@@ -51,10 +51,6 @@
#include <locale.h>
#endif
-#if __has_include(<math.h>)
-#include <math.h>
-#endif
-
#if __has_include(<signal.h>)
/// Guard against including `signal.h` on WASI. The `signal.h` header file
/// itself is available in wasi-libc, but it's just a stub that doesn't actually

View File

@@ -54,6 +54,7 @@ PATCHES=(
"${FILESDIR}/${PF}/backtracing-noexecstack.patch"
"${FILESDIR}/${PF}/clang-indexstore-exports.patch"
"${FILESDIR}/${PF}/disable-libdispatch-werror.patch"
"${FILESDIR}/${PF}/fix-issues-caused-by-build-system-updates.patch"
"${FILESDIR}/${PF}/link-ncurses-tinfo.patch"
"${FILESDIR}/${PF}/link-with-lld.patch"
"${FILESDIR}/${PF}/lldb-cmake-minimum-version.patch"
@@ -394,4 +395,3 @@ pkg_postrm() {
eselect swift update
fi
}

View File

@@ -56,6 +56,7 @@ SRC_URI="
PATCHES=(
"${FILESDIR}/${PF}/backtracing-noexecstack.patch"
"${FILESDIR}/${PF}/disable-libdispatch-werror.patch"
"${FILESDIR}/${PF}/fix-issues-caused-by-build-system-updates.patch"
"${FILESDIR}/${PF}/link-ncurses-tinfo.patch"
"${FILESDIR}/${PF}/link-with-lld.patch"
"${FILESDIR}/${PF}/respect-c-cxx-flags.patch"