From 47c2d981ade073fdce107ac421796f695f64eaba Mon Sep 17 00:00:00 2001 From: Alex Hoppen Date: Mon, 12 May 2025 16:25:33 +0200 Subject: [PATCH 1/2] Install SourceKit-LSP configuration schema into toolchain at `share/sourcekit-lsp/config.schema.json` This allows IDEs like VS Code to pick up the schema and provide code assistance when editing `.sourcekit-lsp/config.json`. --- Utilities/build-script-helper.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Utilities/build-script-helper.py b/Utilities/build-script-helper.py index d264f10cc..6b1286a06 100755 --- a/Utilities/build-script-helper.py +++ b/Utilities/build-script-helper.py @@ -248,9 +248,12 @@ def run_tests(swift_exec: str, args: argparse.Namespace) -> None: raise SystemExit(1) -def install_binary(exe: str, source_dir: str, install_dir: str, verbose: bool) -> None: - cmd = ['rsync', '-a', os.path.join(source_dir, exe), install_dir] - check_call(cmd, verbose=verbose) +def copy_file(source: str, destination_dir: str, verbose: bool) -> None: + """ + Copies the file at `source` into `destination_dir`. + """ + os.makedirs(destination_dir) + check_call(['rsync', '-a', source, destination_dir], verbose=verbose) def install(swift_exec: str, args: argparse.Namespace) -> None: @@ -268,9 +271,10 @@ def install(swift_exec: str, args: argparse.Namespace) -> None: dynamic_library_extension = "so" for prefix in args.install_prefixes: - install_binary('sourcekit-lsp', bin_path, os.path.join(prefix, 'bin'), verbose=args.verbose) - install_binary(f'libSwiftSourceKitPlugin.{dynamic_library_extension}', bin_path, os.path.join(prefix, 'lib'), verbose=args.verbose) - install_binary(f'libSwiftSourceKitClientPlugin.{dynamic_library_extension}', bin_path, os.path.join(prefix, 'lib'), verbose=args.verbose) + copy_file(os.path.join(bin_path, 'sourcekit-lsp'), os.path.join(prefix, 'bin'), verbose=args.verbose) + copy_file(os.path.join(bin_path, f'libSwiftSourceKitPlugin.{dynamic_library_extension}'), os.path.join(prefix, 'lib'), verbose=args.verbose) + copy_file(os.path.join(bin_path, f'libSwiftSourceKitClientPlugin.{dynamic_library_extension}'), os.path.join(prefix, 'lib'), verbose=args.verbose) + copy_file(os.path.join(args.package_path, 'config.schema.json'), os.path.join(prefix, 'share', 'sourcekit-lsp'), verbose=args.verbose) def handle_invocation(swift_exec: str, args: argparse.Namespace) -> None: From 33d7c5d0c74c209ac4aa93a0e5742c533e2e39c7 Mon Sep 17 00:00:00 2001 From: Ben Barham Date: Wed, 19 Nov 2025 19:34:38 +1000 Subject: [PATCH 2/2] Install config.schema.json in the cmake install action --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa14a484d..c0673fa19 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,4 +29,6 @@ find_package(SwiftASN1 CONFIG REQUIRED) include(SwiftSupport) +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/config.schema.json DESTINATION share/sourcekit-lsp) + add_subdirectory(Sources)