diff --git a/fedora-presets.ini b/fedora-presets.ini deleted file mode 100644 index 9f74408..0000000 --- a/fedora-presets.ini +++ /dev/null @@ -1,64 +0,0 @@ -# Custom preset for Fedora packaging -# This preset builds the final production toolchain including swift-driver -# using the bootstrapped Swift compiler from bootstrap_stage2 - -[preset: fedora_final] -bootstrapping=hosttools - -# Skip all tests (inlined from mixin_buildbot_linux,no_test) -skip-test-cmark -skip-test-lldb -skip-test-swift -skip-test-llbuild -skip-test-swiftpm -skip-test-swift-driver -skip-test-xctest -skip-test-foundation -skip-test-libdispatch -skip-test-playgroundsupport -skip-test-indexstore-db -skip-test-sourcekit-lsp -skip-test-swiftdocc -skip-test-wasm-stdlib -skip-test-swiftformat - -release - -# Build additional components for production toolchain -llbuild -xctest -swift-testing -swift-testing-macros -swiftpm -swift-driver -indexstore-db -sourcekit-lsp -swiftformat - -swift-include-tests=0 -llvm-include-tests=0 - -foundation -libdispatch - -skip-build-benchmarks - -build-subdir=%(build_subdir)s -install-destdir=%(install_destdir)s - -swift-install-components=autolink-driver;compiler;clang-resource-dir-symlink;stdlib;sdk-overlay;toolchain-tools;license -llvm-install-components=llvm-ar;llvm-ranlib;clang;clang-resource-headers;compiler-rt;clang-features-file;lld;IndexStore - -install-llvm -install-swift -install-foundation -install-libdispatch -install-llbuild -install-swiftpm -install-swift-driver -install-swiftsyntax -install-swift-testing -install-swift-testing-macros -install-xctest -install-sourcekit-lsp -install-swiftformat diff --git a/swift-lang.spec b/swift-lang.spec index 3528d77..4e2bc66 100644 --- a/swift-lang.spec +++ b/swift-lang.spec @@ -230,7 +230,6 @@ for i = 0, 49 do end } Source99: swiftlang.conf -Source100: fedora-presets.ini # NOTE: The patch number corresponds to the source it's packaging. For example, # Patch25 is patching Source25, swift-foundation. @@ -256,11 +255,11 @@ BuildRequires: libcurl-devel BuildRequires: libuuid-devel BuildRequires: libedit-devel BuildRequires: perl-podlators +BuildRequires: swiftlang BuildRequires: lld -BuildRequires: binutils-gold Requires: glibc-devel -Requires: lld +Requires: binutils-gold Requires: gcc Recommends: libstdc++-devel @@ -316,15 +315,12 @@ end %patch 44 %patch 15 %patch 5 -%patch 7 +%patch 7 %patch 13 %patch 25 %patch 24 %patch 9 -# Install custom Fedora preset -cp %{SOURCE100} swift/utils/fedora-presets.ini - # Fix python to python3 %py3_shebang_fix swift/utils/api_checker/swift-api-checker.py %py3_shebang_fix llvm-project/compiler-rt/lib/hwasan/scripts/hwasan_symbolize @@ -334,53 +330,13 @@ sed -i 's/swift-tools-version:999.0.0/swift-tools-version:6.1.3/' wasmkit/Packag %global buildsubdir %{nil} %build +# Work around broken symlink in BuildRequires swiftlang by ensuring PATH finds the versioned swift +export PATH=%{_libexecdir}/swift/%{version}/bin:$PATH export VERBOSE=1 - -# Four-stage bootstrap to build Swift from scratch without external Swift compiler -# Stage 0: Build minimal Swift toolchain from C++ using gold linker -# Produces: Swift compiler with C++ legacy driver (no SwiftPM, no swift-driver) -# Stage 0 clang defaults to gold -# Stage 1: Rebuild Swift compiler using Stage 0 with gold linker -# Produces: Swift compiler with macros support + Foundation + Dispatch -# Stage 1 clang is compiled with lld as its default linker -# Stage 2: Build Swift compiler using Stage 1 with lld linker -# Produces: Swift compiler + SwiftPM + basic tools (still no swift-driver) -# Stage 2 clang defaults to lld -# Stage 3: Build final production toolchain using Stage 2 -# Produces: Complete toolchain with swift-driver, sourcekit-lsp, swift-format, etc. -# This matches upstream first-party distributions - -echo "=== Bootstrap Stage 0: Building minimal Swift from C++ ===" -%{builddir}/swift/utils/build-script --preset=bootstrap_stage0 \ - build_subdir=bootstrap_stage0 \ - install_destdir=%{_builddir}/stage0 \ - installable_package=%{_builddir}/swift-%{version}-stage0.tar.gz \ - extra-cmake-options="-DLLVM_USE_LINKER=gold -DCLANG_DEFAULT_LINKER=gold" - -echo "=== Bootstrap Stage 1: Rebuilding Swift with Stage 0 ===" -export PATH=%{_builddir}/stage0/usr/bin:$PATH -%{builddir}/swift/utils/build-script --preset=bootstrap_stage1 \ - build_subdir=bootstrap_stage1 \ - install_destdir=%{_builddir}/stage1 \ - installable_package=%{_builddir}/swift-%{version}-stage1.tar.gz \ - extra-cmake-options="-DLLVM_USE_LINKER=gold -DCLANG_DEFAULT_LINKER=lld" - -echo "=== Bootstrap Stage 2: Building toolchain with SwiftPM ===" -export PATH=%{_builddir}/stage1/usr/bin:%{_builddir}/stage0/usr/bin:$PATH -%{builddir}/swift/utils/build-script --preset=bootstrap_stage2 \ - build_subdir=bootstrap_stage2 \ - install_destdir=%{_builddir}/stage2 \ - installable_package=%{_builddir}/swift-%{version}-stage2.tar.gz \ - extra-cmake-options="-DLLVM_USE_LINKER=lld -DCLANG_DEFAULT_LINKER=lld" - -echo "=== Stage 3: Building final production toolchain with swift-driver ===" -export PATH=%{_builddir}/stage2/usr/bin:%{_builddir}/stage1/usr/bin:%{_builddir}/stage0/usr/bin:$PATH -%{builddir}/swift/utils/build-script --preset=fedora_final \ - --preset-file=%{builddir}/swift/utils/fedora-presets.ini \ - build_subdir=fedora_final \ +%{builddir}/swift/utils/build-script --preset=buildbot_linux,no_test \ + skip-early-swiftsyntax=true \ install_destdir=%{_builddir} \ - installable_package=%{_builddir}/swift-%{version}-f%{fedora}.tar.gz \ - extra-cmake-options="-DLLVM_USE_LINKER=lld -DCLANG_DEFAULT_LINKER=lld -DCMAKE_EXE_LINKER_FLAGS=-Wl,-z,relro,-z,now -DCMAKE_SHARED_LINKER_FLAGS=-Wl,-z,relro,-z,now" + installable_package=%{_builddir}/swift-%{version}-f%{fedora}.tar.gz %install @@ -398,7 +354,7 @@ mkdir -p %{buildroot}/usr/lib ln -fs %{_libexecdir}/swift/%{version}/lib/swift %{buildroot}/usr/lib/swift mkdir -p %{buildroot}%{_libdir} ln -fs %{_libexecdir}/swift/%{version}/lib/libIndexStore.so %{buildroot}%{_libdir}/ -ln -fs %{_libexecdir}/swift/%{version}/lib/libIndexStore.so.17.0 %{buildroot}%{_libdir}/ +ln -fs %{_libexecdir}/swift/%{version}/lib/libIndexStore.so.17 %{buildroot}%{_libdir}/ ln -fs %{_libexecdir}/swift/%{version}/lib/libsourcekitdInProc.so %{buildroot}%{_libdir}/ ln -fs %{_libexecdir}/swift/%{version}/lib/libswiftDemangle.so %{buildroot}%{_libdir}/ mkdir -p %{buildroot}%{_includedir}/swift diff --git a/swift.patch b/swift.patch index 32f5786..8b08445 100644 --- a/swift.patch +++ b/swift.patch @@ -22,6 +22,19 @@ index 56b9e606302..ca651fc8845 100644 #include #include #include +diff --git swift.orig/utils/build-presets.ini swift/utils/build-presets.ini +index 75043cb69a7..25aec6bc29a 100644 +--- swift.orig/utils/build-presets.ini ++++ swift/utils/build-presets.ini +@@ -886,7 +886,7 @@ build-wasm-stdlib + # Executes the lit tests for the installable package that is created + # Assumes the swift-integration-tests repo is checked out + +-test-installable-package ++# test-installable-package + + # Build the benchmarks against the toolchain. + toolchain-benchmarks diff --git swift.orig/utils/build-script-impl swift/utils/build-script-impl index 3140c8bb545..32a0b502ae6 100755 --- swift.orig/utils/build-script-impl