Ошибка при сборке sourcekit-lsp на Ubuntu WSL

Я пытаюсь создать sourcekit-lsp на своем Ubuntu WSl. Успешно установлен swift swift-5.2.5-RELEASE-ubuntu20.04

amal@DESKTOP-CJJEUS7:~/sourcekit-lsp$swift --version
Swift version 5.2.5 (swift-5.2.5-RELEASE)
Target: x86_64-unknown-linux-gnu

А также клонируйте sourcekit-lst из основной ветки. Установлены оба sudo apt install libsqlite3-dev libncurses5-dev, выполняются все шаги из документация, но во время сборки я получил эта ошибка.

swift build -Xcxx -I/home/amal/swift-5.2.5-RELEASE-ubuntu20.04/usr/lib/swift -Xcxx -I/home/amal/swift-5.2.5-RELEASE-ubuntu20.04/usr/lib/swift/Block

/home/amal/sourcekit-lsp/.build/checkouts/swift-package-manager/Sources/PackageLoading/ManifestLoader.swift:530:55: error: type 'JSONEncoder.OutputFormatting' has no member 'withoutEscapingSlashes' encoder.outputFormatting = [.sortedKeys, .withoutEscapingSlashes]
/home/amal/sourcekit-lsp/.build/checkouts/swift-package-manager/Sources/PackageLoading/ManifestLoader.swift:530:55: error: type 'JSONEncoder.OutputFormatting' has no member 'withoutEscapingSlashes' encoder.outputFormatting = [.sortedKeys, .withoutEscapingSlashes]
/home/amal/sourcekit-lsp/.build/checkouts/swift-package-manager/Sources/PackageLoading/ManifestLoader.swift:530:55: error: type 'JSONEncoder.OutputFormatting' has no member 'withoutEscapingSlashes' encoder.outputFormatting = [.sortedKeys, .withoutEscapingSlashes]
[137/214] Compiling Statistic.cpp

Есть идеи, что я сделал не так? Пожалуйста помоги.


person Amalendu Kar    schedule 26.08.2020    source источник
comment
Пожалуйста, помогите кому-нибудь   -  person Amalendu Kar    schedule 27.08.2020


Ответы (1)


когда он молча терпит неудачу, это обычно происходит из-за того, что вам не хватает некоторых зависимостей. убедитесь, что вы установили все

sudo apt-get install curl clang libicu-dev git libatomic1 libxml2 \
libcurl4 zlib1g-dev libbsd0 tzdata libssl-dev libsqlite3-dev \
libblocksruntime-dev libncurses5-dev libicu-dev libblocksruntime-dev \
libpthread-workqueue-dev -y

Тогда я все еще не работал на main ветке sourcekit-lsp с ошибкой

/home/rock64/Software/sourcekit-lsp/.build/checkouts/swift-package-manager/Sources/PackageLoading/ManifestLoader.swift:548:55: error: type 'JSONEncoder.OutputFormatting' has no member 'withoutEscapingSlashes'
            encoder.outputFormatting = [.sortedKeys, .withoutEscapingSlashes]
                                                     ~^~~~~~~~~~~~~~~~~~~~~~

но переход на локально клонированный swift-package-manager помог с компиляцией. я только что изменил зависимости в конце файла Package.swift в проекте sourcekit-lsp, чтобы получить локальный spm, как это

if ProcessInfo.processInfo.environment["SWIFTCI_USE_LOCAL_DEPS"] == nil {
  // Building standalone.
  package.dependencies += [
    .package(name: "IndexStoreDB", url: "https://github.com/apple/indexstore-db.git", .branch("main")),
    //.package(name: "SwiftPM", url: "https://github.com/apple/swift-package-manager.git", .branch("main")),
    .package(name: "SwiftPM", path: "/home/rock64/Software/swift-package-manager"),
    .package(url: "https://github.com/apple/swift-tools-support-core.git", .branch("main")),
    .package(url: "https://github.com/apple/swift-argument-parser.git", .upToNextMinor(from: "0.3.0")),
  ]
} else {
⋮

и удалил неудачный случай перечисления encoder.outputFormatting = [.sortedKeys, .withoutEscapingSlashes] в файле

swift-package-manager/Sourcswift-package-manager/Sources/PackageLoading/ManifestLoader.swiftes/PackageLoading/ManifestLoader.swift

так что теперь это просто encoder.outputFormatting = [.sortedKeys]

просто убедитесь, что вы используете свои пути, и не забудьте зафиксировать изменение в локально клонированном swift-package-manager

это должно помочь вам пройти этап компиляции. Я могу подтвердить, что сервер работает в vim и vscode нормально, но могут быть некоторые скрытые сбои из-за редактирования перечисления. Я исследую это немного позже

person ha100    schedule 01.11.2020