From 18e32b4150bbbe02369a5a38517acd64afe67ae4 Mon Sep 17 00:00:00 2001 From: Stuart Montgomery Date: Wed, 5 Jun 2024 15:06:54 -0500 Subject: [PATCH 1/4] Add swift-testing to update-checkout --- utils/update_checkout/update-checkout-config.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/utils/update_checkout/update-checkout-config.json b/utils/update_checkout/update-checkout-config.json index bf28f6c91fba5..43b41b5fd86d5 100644 --- a/utils/update_checkout/update-checkout-config.json +++ b/utils/update_checkout/update-checkout-config.json @@ -34,6 +34,8 @@ "remote": { "id": "apple/swift-system" } }, "swift-stress-tester": { "remote": { "id": "swiftlang/swift-stress-tester" } }, + "swift-testing": { + "remote": { "id": "apple/swift-testing" } }, "swift-corelibs-xctest": { "remote": { "id": "apple/swift-corelibs-xctest" } }, "swift-corelibs-foundation": { @@ -128,6 +130,7 @@ "swift-syntax": "main", "swift-system": "1.3.0", "swift-stress-tester": "main", + "swift-testing": "main", "swift-corelibs-xctest": "main", "swift-corelibs-foundation": "main", "swift-foundation-icu": "main", From 4b4ded407c3868da76842c4f8d63bcddc076889d Mon Sep 17 00:00:00 2001 From: Stuart Montgomery Date: Wed, 10 Jul 2024 13:42:36 -0500 Subject: [PATCH 2/4] Build script changes to begin building and installing swift-testing into toolchains (on Darwin, so far) --- utils/build-presets.ini | 2 + .../build_swift/driver_arguments.py | 5 ++ utils/build_swift/tests/expected_options.py | 1 + .../build_script_invocation.py | 2 + .../productpipeline_list_builder.py | 2 +- .../swift_build_support/products/__init__.py | 2 + .../products/swift_testing.py | 67 +++++++++++++++++++ 7 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 utils/swift_build_support/swift_build_support/products/swift_testing.py diff --git a/utils/build-presets.ini b/utils/build-presets.ini index 2e83a50dbbe9a..a77ace78cf400 100644 --- a/utils/build-presets.ini +++ b/utils/build-presets.ini @@ -1309,6 +1309,7 @@ swift-driver # Failing to build in CI: rdar://78408440 # swift-inspect swiftsyntax +swift-testing swiftformat playgroundsupport indexstore-db @@ -1351,6 +1352,7 @@ install-llbuild install-swiftpm install-swift-driver install-swiftsyntax +install-swift-testing install-playgroundsupport install-sourcekit-lsp install-swiftformat diff --git a/utils/build_swift/build_swift/driver_arguments.py b/utils/build_swift/build_swift/driver_arguments.py index 360b507b82e87..6a85a4c490a24 100644 --- a/utils/build_swift/build_swift/driver_arguments.py +++ b/utils/build_swift/build_swift/driver_arguments.py @@ -811,6 +811,11 @@ def create_argument_parser(): option(['--wasmkit'], toggle_true('build_wasmkit'), help='build WasmKit') + option('--swift-testing', toggle_true('build_swift_testing'), + help='build swift-testing') + option('--install-swift-testing', toggle_true('install_swift_testing'), + help='install swift-testing') + option('--xctest', toggle_true('build_xctest'), help='build xctest') diff --git a/utils/build_swift/tests/expected_options.py b/utils/build_swift/tests/expected_options.py index c90e7367d1e17..bc00f3161634a 100644 --- a/utils/build_swift/tests/expected_options.py +++ b/utils/build_swift/tests/expected_options.py @@ -95,6 +95,7 @@ 'build_swiftpm': False, 'build_swift_driver': False, 'build_swift_libexec': True, + 'build_swift_testing': False, 'build_early_swift_driver': True, 'build_early_swiftsyntax': True, 'build_swiftsyntax': False, diff --git a/utils/swift_build_support/swift_build_support/build_script_invocation.py b/utils/swift_build_support/swift_build_support/build_script_invocation.py index d14f79359bc24..af32615fce574 100644 --- a/utils/swift_build_support/swift_build_support/build_script_invocation.py +++ b/utils/swift_build_support/swift_build_support/build_script_invocation.py @@ -666,6 +666,8 @@ def compute_product_pipelines(self): is_enabled=self.args.build_swiftpm) builder.add_product(products.SwiftSyntax, is_enabled=self.args.build_swiftsyntax) + builder.add_product(products.SwiftTesting, + is_enabled=self.args.build_swift_testing) builder.add_product(products.SwiftFormat, is_enabled=self.args.build_swiftformat) builder.add_product(products.SKStressTester, diff --git a/utils/swift_build_support/swift_build_support/productpipeline_list_builder.py b/utils/swift_build_support/swift_build_support/productpipeline_list_builder.py index 09c16611090ef..056e8af2f117f 100644 --- a/utils/swift_build_support/swift_build_support/productpipeline_list_builder.py +++ b/utils/swift_build_support/swift_build_support/productpipeline_list_builder.py @@ -101,7 +101,7 @@ def add_product(self, product_cls, is_enabled): self.current_pipeline.append(product_cls, is_enabled) def add_impl_product(self, product_cls, is_enabled): - """Add a non-impl product to the current pipeline begin constructed""" + """Add an impl product to the current pipeline begin constructed""" assert self.current_pipeline is not None assert self.is_current_pipeline_impl assert product_cls.is_build_script_impl_product() diff --git a/utils/swift_build_support/swift_build_support/products/__init__.py b/utils/swift_build_support/swift_build_support/products/__init__.py index 3af36fe224847..087e3eb98b561 100644 --- a/utils/swift_build_support/swift_build_support/products/__init__.py +++ b/utils/swift_build_support/swift_build_support/products/__init__.py @@ -30,6 +30,7 @@ from .sourcekitlsp import SourceKitLSP from .staticswiftlinux import StaticSwiftLinuxConfig from .swift import Swift +from .swift_testing import SwiftTesting from .swiftdocc import SwiftDocC from .swiftdoccrender import SwiftDocCRender from .swiftdriver import SwiftDriver @@ -65,6 +66,7 @@ 'SwiftInspect', 'SwiftPM', 'SwiftDriver', + 'SwiftTesting', 'EarlySwiftDriver', 'XCTest', 'SwiftSyntax', diff --git a/utils/swift_build_support/swift_build_support/products/swift_testing.py b/utils/swift_build_support/swift_build_support/products/swift_testing.py new file mode 100644 index 0000000000000..98213a9f1a2ec --- /dev/null +++ b/utils/swift_build_support/swift_build_support/products/swift_testing.py @@ -0,0 +1,67 @@ +# swift_build_support/products/xctest.py -------------------------*- python -*- +# +# This source file is part of the Swift.org open source project +# +# Copyright (c) 2024 Apple Inc. and the Swift project authors +# Licensed under Apache License v2.0 with Runtime Library Exception +# +# See https://swift.org/LICENSE.txt for license information +# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors +# +# ---------------------------------------------------------------------------- + +import os + +from . import cmake_product +from . import swift +from . import swiftsyntax + +class SwiftTesting(cmake_product.CMakeProduct): + @classmethod + def is_build_script_impl_product(cls): + return False + + @classmethod + def is_before_build_script_impl_product(cls): + return False + + @classmethod + def product_source_name(cls): + return "swift-testing" + + @classmethod + def get_dependencies(cls): + return [swift.Swift, + swiftsyntax.SwiftSyntax] + + def should_build(self, host_target): + return True + + def build(self, host_target): + self.cmake_options.define('BUILD_SHARED_LIBS', 'YES') + + # Use empty CMake install prefix, since the `DESTDIR` env var is set by + # `install_with_cmake` later which already has the same prefix. + self.cmake_options.define('CMAKE_INSTALL_PREFIX', '') + + build_root = os.path.dirname(self.build_dir) + swift_build_dir = os.path.join( + '..', build_root, '%s-%s' % ('swift', host_target)) + swift_cmake_dir = os.path.join(swift_build_dir, 'cmake', 'modules') + self.cmake_options.define('SwiftSyntax_DIR:PATH', swift_cmake_dir) + + self.build_with_cmake([], self.args.build_variant, [], + prefer_native_toolchain=True) + + def should_test(self, host_target): + # TODO + return False + + def should_install(self, host_target): + return self.args.install_swift_testing + + def install(self, host_target): + install_destdir = self.host_install_destdir(host_target) + install_prefix = install_destdir + self.args.install_prefix + + self.install_with_cmake(['install'], install_prefix) From 722bf3c0d96eef4ce37431a21fe2332516c772cc Mon Sep 17 00:00:00 2001 From: Stuart Montgomery Date: Thu, 11 Jul 2024 21:40:38 -0500 Subject: [PATCH 3/4] Add swift-testing to Linux presets too --- utils/build-presets.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/build-presets.ini b/utils/build-presets.ini index a77ace78cf400..9a6d47bbfb448 100644 --- a/utils/build-presets.ini +++ b/utils/build-presets.ini @@ -835,6 +835,7 @@ mixin-preset= llbuild swiftpm swift-driver +swift-testing xctest libicu swiftdocc @@ -849,6 +850,7 @@ install-llbuild install-swiftpm install-swift-driver install-swiftsyntax +install-swift-testing install-xctest install-libicu install-prefix=/usr From 8695cc6ebf1df2236891307e66577a2c2b03eea5 Mon Sep 17 00:00:00 2001 From: Stuart Montgomery Date: Fri, 12 Jul 2024 07:04:51 -0500 Subject: [PATCH 4/4] Add swift-testing's main branch to release/6.0 branch scheme --- utils/update_checkout/update-checkout-config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/update_checkout/update-checkout-config.json b/utils/update_checkout/update-checkout-config.json index 43b41b5fd86d5..09929630acf49 100644 --- a/utils/update_checkout/update-checkout-config.json +++ b/utils/update_checkout/update-checkout-config.json @@ -182,6 +182,7 @@ "swift-syntax": "release/6.0", "swift-system": "1.3.0", "swift-stress-tester": "release/6.0", + "swift-testing": "main", "swift-corelibs-xctest": "release/6.0", "swift-corelibs-foundation": "release/6.0", "swift-corelibs-libdispatch": "release/6.0",