Skip to content

[5.1] Installation support for sourcekit-lsp #26703

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 58 additions & 14 deletions utils/build-presets.ini
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ dash-dash

swift-install-components=compiler;clang-builtin-headers;stdlib;sdk-overlay;parser-lib;editor-integration;tools;toolchain-tools;testsuite-tools;sourcekit-xpc-service;swift-remote-mirror;swift-remote-mirror-headers;

[preset: mixin_buildbot_install_components_with_clang]
swift-install-components=compiler;clang-resource-dir-symlink;stdlib;sdk-overlay;parser-lib;toolchain-tools;license;sourcekit-xpc-service;swift-remote-mirror;swift-remote-mirror-headers
llvm-install-components=llvm-cov;llvm-profdata;IndexStore;clang;clang-headers;compiler-rt;clangd

[preset: mixin_buildbot_trunk_base]
# Build standard library and SDK overlay for iOS device and simulator.
Expand Down Expand Up @@ -322,14 +325,18 @@ tvos
watchos

[preset: buildbot_incremental,tools=RA,stdlib=RA]
mixin-preset=buildbot_incremental_base_all_platforms
mixin-preset=
buildbot_incremental_base_all_platforms
mixin_buildbot_install_components_with_clang

build-subdir=buildbot_incremental

# Build Release without debug info, because it is faster to build.
release
assertions

libcxx

# Build llbuild & swiftpm here
llbuild
swiftpm
Expand All @@ -351,6 +358,7 @@ skip-test-watchos
install-swift
install-llbuild
install-swiftpm
install-libcxx

[preset: buildbot_incremental,tools=RA,stdlib=RA,xcode]
mixin-preset=buildbot_incremental,tools=RA,stdlib=RA
Expand Down Expand Up @@ -518,6 +526,7 @@ swift-stdlib-build-type=RelWithDebInfo
mixin-preset=
buildbot_incremental_base
lldb-smoketest,tools=RA
mixin_buildbot_install_components_with_clang
build-subdir=buildbot_incremental

# We build release+asserts.
Expand All @@ -544,13 +553,15 @@ verbose-build
# Build ninja while we are at it
build-ninja

libcxx
llbuild
swiftpm
indexstore-db
sourcekit-lsp
install-swift
install-llbuild
install-swiftpm
install-libcxx

# We need to build the unittest extras so we can test
build-swift-stdlib-unittest-extra
Expand Down Expand Up @@ -717,8 +728,14 @@ swift-enable-ast-verifier=0
#===------------------------------------------------------------------------===#
# Linux Builders
#===------------------------------------------------------------------------===#
[preset: mixin_linux_install_components_with_clang]
swift-install-components=autolink-driver;compiler;clang-resource-dir-symlink;stdlib;swift-remote-mirror;sdk-overlay;parser-lib;toolchain-tools;license;sourcekit-inproc
llvm-install-components=llvm-cov;llvm-profdata;IndexStore;clang;clang-headers;compiler-rt;clangd

[preset: mixin_linux_installation]
mixin-preset=mixin_lightweight_assertions
mixin-preset=
mixin_lightweight_assertions
mixin_linux_install_components_with_clang

llbuild
swiftpm
Expand All @@ -736,9 +753,8 @@ install-swiftpm
install-xctest
install-libicu
install-prefix=/usr
swift-install-components=autolink-driver;compiler;clang-resource-dir-symlink;stdlib;swift-remote-mirror;sdk-overlay;parser-lib;toolchain-tools;license;sourcekit-inproc
llvm-install-components=llvm-cov;llvm-profdata;IndexStore;clang;clang-headers;compiler-rt;clangd
install-libcxx
install-sourcekit-lsp
build-swift-static-stdlib
build-swift-static-sdk-overlay
build-swift-stdlib-unittest-extra
Expand Down Expand Up @@ -968,9 +984,12 @@ build-ninja
reconfigure

[preset: buildbot_incremental_linux]
mixin-preset=buildbot_incremental_linux_base
mixin-preset=
buildbot_incremental_linux_base
mixin_linux_install_components_with_clang
build-subdir=buildbot_incremental

libcxx
libicu
llbuild
swiftpm
Expand All @@ -988,6 +1007,7 @@ install-swiftpm
install-foundation
install-libdispatch
install-xctest
install-libcxx

[preset: buildbot_incremental_linux,long_test]
mixin-preset=buildbot_incremental_linux
Expand Down Expand Up @@ -1022,7 +1042,6 @@ enable-asan
indexstore-db=0
sourcekit-lsp=0


# This does not currently pass due to leakers in the optimizer.
[preset: buildbot_incremental_linux,lsan,tools=RDA,stdlib=RDA,test=no]
build-subdir=buildbot_incremental_lsan
Expand Down Expand Up @@ -1064,6 +1083,7 @@ sourcekit-lsp=0
# OS X Package Builders
#===------------------------------------------------------------------------===#
[preset: mixin_osx_package_base]
mixin-preset=mixin_buildbot_install_components_with_clang
ios
tvos
watchos
Expand Down Expand Up @@ -1105,6 +1125,8 @@ skip-install-swiftsyntax-module
install-skstresstester
install-swiftevolve
install-playgroundsupport
install-libcxx
install-sourcekit-lsp

install-destdir=%(install_destdir)s

Expand All @@ -1125,10 +1147,6 @@ test-installable-package
# If someone uses this for incremental builds, force reconfiguration.
reconfigure

swift-install-components=compiler;clang-resource-dir-symlink;stdlib;sdk-overlay;parser-lib;toolchain-tools;license;sourcekit-xpc-service;swift-remote-mirror;swift-remote-mirror-headers
llvm-install-components=llvm-cov;llvm-profdata;IndexStore;clang;clang-headers;compiler-rt;clangd
install-libcxx

# Path to the .tar.gz package we would create.
installable-package=%(installable_package)s

Expand Down Expand Up @@ -1304,18 +1322,29 @@ swift-stdlib-build-type=Release
mixin-preset=
buildbot_incremental_base_all_platforms
lldb-smoketest,tools=RA
mixin_buildbot_install_components_with_clang

build-subdir=buildbot_incremental

# Build Release without debug info, because it is faster to build.
release
assertions

libcxx

# Build llbuild & swiftpm here
llbuild
swiftpm
swiftsyntax

# Build sourcekit-lsp & indexstore-db
indexstore-db
sourcekit-lsp
install-swift
install-llbuild
install-swiftpm
install-libcxx

# Build Playground support
playgroundsupport

Expand Down Expand Up @@ -1361,14 +1390,18 @@ skip-test-osx
#===------------------------------------------------------------------------===#

[preset: buildbot_swiftpm_macos_platform,tools=RA,stdlib=RA]
mixin-preset=buildbot_incremental_base
mixin-preset=
buildbot_incremental_base
mixin_buildbot_install_components_with_clang

build-subdir=buildbot_incremental

# Build Release without debug info, because it is faster to build.
release
assertions

libcxx

# Build llbuild & swiftpm here
llbuild
swiftpm
Expand All @@ -1378,6 +1411,7 @@ sourcekit-lsp
install-swift
install-llbuild
install-swiftpm
install-libcxx

dash-dash

Expand All @@ -1390,7 +1424,9 @@ skip-test-llbuild
#===------------------------------------------------------------------------===#

[preset: buildbot_swiftpm_linux_platform,tools=RA,stdlib=RA]
mixin-preset=buildbot_incremental_base
mixin-preset=
buildbot_incremental_base
mixin_linux_install_components_with_clang

build-subdir=buildbot_incremental

Expand All @@ -1404,6 +1440,7 @@ xctest
foundation
libdispatch
llbuild
libcxx
sourcekit-lsp

install-swift
Expand All @@ -1412,6 +1449,7 @@ install-swiftpm
install-foundation
install-libdispatch
install-xctest
install-libcxx

skip-test-swift
skip-test-cmark
Expand Down Expand Up @@ -1454,6 +1492,7 @@ build-subdir=buildbot_incremental
release
assertions

libcxx
llbuild
swiftpm
indexstore-db
Expand All @@ -1462,22 +1501,27 @@ sourcekit-lsp
install-swift
install-llbuild
install-swiftpm
install-libcxx

skip-test-swift
skip-test-cmark
skip-test-llbuild
skip-test-swiftpm

[preset: buildbot_swiftpm_package_macos]
mixin-preset=buildbot_swiftpm_package_base
mixin-preset=
buildbot_swiftpm_package_base
mixin_buildbot_install_components_with_clang

# Build stdlib for all platforms.
ios
tvos
watchos

[preset: buildbot_swiftpm_package_linux]
mixin-preset=buildbot_swiftpm_package_base
mixin-preset=
buildbot_swiftpm_package_base
mixin_linux_install_components_with_clang

libdispatch
foundation
Expand Down
4 changes: 3 additions & 1 deletion utils/build-script
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,8 @@ class BuildScriptInvocation(object):
def apply_default_arguments(toolchain, args):
# Infer if ninja is required
ninja_required = (
args.cmake_generator == 'Ninja' or args.build_foundation)
args.cmake_generator == 'Ninja' or args.build_foundation or
args.build_sourcekitlsp or args.build_indexstoredb)
if ninja_required and toolchain.ninja is None:
args.build_ninja = True

Expand Down Expand Up @@ -1015,6 +1016,7 @@ class BuildScriptInvocation(object):
host_target, product_name))
product.do_build(host_target)
product.do_test(host_target)
product.install(host_target)

# Extract symbols...
for host_target in all_hosts:
Expand Down
2 changes: 2 additions & 0 deletions utils/build_swift/driver_arguments.py
Original file line number Diff line number Diff line change
Expand Up @@ -553,6 +553,8 @@ def create_argument_parser():
help='build IndexStoreDB')
option(['--sourcekit-lsp'], toggle_true('build_sourcekitlsp'),
help='build SourceKitLSP')
option(['--install-sourcekit-lsp'], toggle_true('install_sourcekitlsp'),
help='install SourceKitLSP')

option('--xctest', toggle_true('build_xctest'),
help='build xctest')
Expand Down
2 changes: 2 additions & 0 deletions utils/build_swift/tests/expected_options.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
'build_swiftevolve': False,
'build_indexstoredb': False,
'build_sourcekitlsp': False,
'install_sourcekitlsp': False,
'build_tvos': True,
'build_tvos_device': False,
'build_tvos_simulator': False,
Expand Down Expand Up @@ -450,6 +451,7 @@ class IgnoreOption(_BaseOption):
EnableOption('--libicu', dest='build_libicu'),
EnableOption('--indexstore-db', dest='build_indexstoredb'),
EnableOption('--sourcekit-lsp', dest='build_sourcekitlsp'),
EnableOption('--install-sourcekit-lsp', dest='install_sourcekitlsp'),
EnableOption('--long-test'),
EnableOption('--show-sdks'),
EnableOption('--stress-test'),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ def do_test(self, host_target):
if self.args.test and self.args.test_indexstoredb:
run_build_script_helper('test', host_target, self, self.args)

def install(self, host_target):
pass


def run_build_script_helper(action, host_target, product, args):
script_path = os.path.join(
Expand All @@ -52,5 +55,6 @@ def run_build_script_helper(action, host_target, product, args):
'--build-path', product.build_dir,
'--configuration', configuration,
'--toolchain', toolchain_path,
'--ninja-bin', product.toolchain.ninja,
]
shell.call(helper_cmd)
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,13 @@ def do_test(self, host_target):
"""
raise NotImplementedError

def install(self, host_target):
"""install() -> void

Install to the toolchain, for a non-build-script-impl product.
"""
raise NotImplementedError

def __init__(self, args, toolchain, source_dir, build_dir):
self.args = args
self.toolchain = toolchain
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,8 @@ def do_test(self, host_target):
if self.args.test and self.args.test_sourcekitlsp:
indexstoredb.run_build_script_helper(
'test', host_target, self, self.args)

def install(self, host_target):
if self.args.install_sourcekitlsp:
indexstoredb.run_build_script_helper(
'install', host_target, self, self.args)