Build Information
Failed to build Ligature, reference main (3bdbcd), with Swift 6.4 for Android on 25 Sep 2026 00:46:22 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-54344843-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:android-6.4-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/ChimeHQ/Ligature.git
Reference: main
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/ChimeHQ/Ligature
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 3bdbcd3 Remove chat, funding
Cloned https://github.com/ChimeHQ/Ligature.git
Revision (git rev-parse @):
3bdbcd3c0188c813664e4cccadb19601cea8ef5f
SUCCESS checkout https://github.com/ChimeHQ/Ligature.git at main
========================================
Build
========================================
Selected platform: android
Swift version: 6.4
Building package at path: $PWD
https://github.com/ChimeHQ/Ligature.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-54344843-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:android-6.4-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1
android-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:abadcff584c273feba50641b454858d377ba30b35ea7287a94f45ebd8afd0ea0
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:android-6.4-latest
Fetching https://github.com/ChimeHQ/Glyph
Fetching https://github.com/ChimeHQ/Rearrange
[1/609] Fetching rearrange
Fetched https://github.com/ChimeHQ/Rearrange (0.40s)
[1/294] Fetching glyph
Fetched https://github.com/ChimeHQ/Glyph (0.45s)
Computing version for https://github.com/ChimeHQ/Rearrange
Computed https://github.com/ChimeHQ/Rearrange at 2.1.1 (0.66s)
Computing version for https://github.com/ChimeHQ/Glyph
Computed https://github.com/ChimeHQ/Glyph at 0.1.1 (0.18s)
Creating working copy for https://github.com/ChimeHQ/Glyph
Working copy of https://github.com/ChimeHQ/Glyph resolved at 0.1.1
Creating working copy for https://github.com/ChimeHQ/Rearrange
Working copy of https://github.com/ChimeHQ/Rearrange resolved at 2.1.1
Building for debugging...
[Pre-planning 1 / 126]
[41 / 70] Rearrange
[53 / 70] Rearrange
[55 / 70] Rearrange
[57 / 70] Rearrange-product
[61 / 80] Ligature
[62 / 81] Ligature
[67 / 81] Ligature
[68 / 82] Rearrange
error: SwiftCompile normal aarch64 /host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift failed with a nonzero exit code. Command line: cd /host
builtin-SwiftPerFileCompile SourceTokenizer.swift
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:14:72: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m12 |[0;0m
[0;36m13 |[0;0m extension SourceTokenizer: TextTokenizer {
[0;36m14 |[0;0m public func position(from position: Position, toBoundary granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection, alignment: CGFloat?) -> Position? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m15 |[0;0m return fallbackTokenzier.position(from: position, toBoundary: granularity, inDirection: direction, alignment: alignment)
[0;36m16 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:14:112: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m12 |[0;0m
[0;36m13 |[0;0m extension SourceTokenizer: TextTokenizer {
[0;36m14 |[0;0m public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m, alignment: CGFloat?) -> Position? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m15 |[0;0m return fallbackTokenzier.position(from: position, toBoundary: granularity, inDirection: direction, alignment: alignment)
[0;36m16 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:18:77: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m16 |[0;0m }
[0;36m17 |[0;0m
[0;36m18 |[0;0m public func rangeEnclosingPosition(_ position: Position, with granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> FallbackTokenzier.TextRange? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m19 |[0;0m return fallbackTokenzier.rangeEnclosingPosition(position, with: granularity, inDirection: direction)
[0;36m20 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:18:117: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m16 |[0;0m }
[0;36m17 |[0;0m
[0;36m18 |[0;0m public func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> FallbackTokenzier.TextRange? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m19 |[0;0m return fallbackTokenzier.rangeEnclosingPosition(position, with: granularity, inDirection: direction)
[0;36m20 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:22:71: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m20 |[0;0m }
[0;36m21 |[0;0m
[0;36m22 |[0;0m public func isPosition(_ position: Position, atBoundary granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> Bool {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m23 |[0;0m return fallbackTokenzier.isPosition(position, atBoundary: granularity, inDirection: direction)
[0;36m24 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:22:111: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m20 |[0;0m }
[0;36m21 |[0;0m
[0;36m22 |[0;0m public func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> Bool {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m23 |[0;0m return fallbackTokenzier.isPosition(position, atBoundary: granularity, inDirection: direction)
[0;36m24 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:26:75: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m24 |[0;0m }
[0;36m25 |[0;0m
[0;36m26 |[0;0m public func isPosition(_ position: Position, withinTextUnit granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> Bool {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m27 |[0;0m return fallbackTokenzier.isPosition(position, withinTextUnit: granularity, inDirection: direction)
[0;36m28 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:26:115: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m24 |[0;0m }
[0;36m25 |[0;0m
[0;36m26 |[0;0m public func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> Bool {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m27 |[0;0m return fallbackTokenzier.isPosition(position, withinTextUnit: granularity, inDirection: direction)
[0;36m28 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:15:65: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m13 |[0;0m typealias Position = TextRange.Bound
[0;36m14 |[0;0m
[0;36m15 |[0;0m func position(from position: Position, toBoundary granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection, alignment: CGFloat?) -> Position?
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
[0;36m17 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:15:105: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m13 |[0;0m typealias Position = TextRange.Bound
[0;36m14 |[0;0m
[0;36m15 |[0;0m func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m, alignment: CGFloat?) -> Position?
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
[0;36m17 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:15:131: [1;31merror: [1;39mcannot find type 'CGFloat' in scope[0;0m
[0;36m13 |[0;0m typealias Position = TextRange.Bound
[0;36m14 |[0;0m
[0;36m15 |[0;0m func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: [4;39mCGFloat[0;0m?) -> Position?
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'CGFloat' in scope[0;0m
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
[0;36m17 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:16:70: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m14 |[0;0m
[0;36m15 |[0;0m func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position?
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> TextRange?
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m17 |[0;0m
[0;36m18 |[0;0m func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:16:110: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m14 |[0;0m
[0;36m15 |[0;0m func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position?
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> TextRange?
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m17 |[0;0m
[0;36m18 |[0;0m func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:18:64: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
[0;36m17 |[0;0m
[0;36m18 |[0;0m func isPosition(_ position: Position, atBoundary granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> Bool
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m19 |[0;0m func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
[0;36m20 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:18:104: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
[0;36m17 |[0;0m
[0;36m18 |[0;0m func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> Bool
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m19 |[0;0m func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
[0;36m20 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:19:68: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m17 |[0;0m
[0;36m18 |[0;0m func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
[0;36m19 |[0;0m func isPosition(_ position: Position, withinTextUnit granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> Bool
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m20 |[0;0m }
[0;36m21 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:19:108: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m17 |[0;0m
[0;36m18 |[0;0m func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
[0;36m19 |[0;0m func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> Bool
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m20 |[0;0m }
[0;36m21 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:13:1: [1;31merror: [1;39mtype 'SourceTokenizer<FallbackTokenzier>' does not conform to protocol 'TextTokenizer'[0;0m
[0;36m11 |[0;0m }
[0;36m12 |[0;0m
[0;36m13 |[0;0m extension SourceTokenizer: TextTokenizer {
[0;36m|[0;0m |- [1;31merror: [1;39mtype 'SourceTokenizer<FallbackTokenzier>' does not conform to protocol 'TextTokenizer'[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd stubs for conformance[0;0m
[0;36m14 |[0;0m public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position? {
[0;36m15 |[0;0m return fallbackTokenzier.position(from: position, toBoundary: granularity, inDirection: direction, alignment: alignment)
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:11:17: [1;39mnote: [1;39mprotocol requires nested type 'TextRange'[0;0m
[0;36m9 |[0;0m @MainActor
[0;36m10 |[0;0m public protocol TextTokenizer<TextRange> {
[0;36m11 |[0;0m associatedtype TextRange: Bounded
[0;36m|[0;0m `- [1;39mnote: [1;39mprotocol requires nested type 'TextRange'[0;0m
[0;36m12 |[0;0m
[0;36m13 |[0;0m typealias Position = TextRange.Bound
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:23:72: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m21 |[0;0m
[0;36m22 |[0;0m extension TextTokenizer {
[0;36m23 |[0;0m public func position(from position: Position, toBoundary granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> Position? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m24 |[0;0m self.position(from: position, toBoundary: granularity, inDirection: direction, alignment: nil)
[0;36m25 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:23:112: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m21 |[0;0m
[0;36m22 |[0;0m extension TextTokenizer {
[0;36m23 |[0;0m public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> Position? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m24 |[0;0m self.position(from: position, toBoundary: granularity, inDirection: direction, alignment: nil)
[0;36m25 |[0;0m }
Failed frontend command:
/root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/bin/swift-frontend -frontend -c /host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift /host/spi-builder-workspace/Sources/Ligature/NSTextSelection+Extensions.swift -primary-file /host/spi-builder-workspace/Sources/Ligature/Platform.swift -primary-file /host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift /host/spi-builder-workspace/Sources/Ligature/TextDirection+Extensions.swift /host/spi-builder-workspace/Sources/Ligature/TextInputStringTokenizer.swift /host/spi-builder-workspace/Sources/Ligature/TextRange+Bounded.swift /host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift /host/spi-builder-workspace/Sources/Ligature/TextView+TextRangeCalculating.swift /host/spi-builder-workspace/Sources/Ligature/UTF16CodePointTextViewTextTokenizer.swift -emit-dependencies-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Platform.d -emit-const-values-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Platform.swiftconstvalues -emit-reference-dependencies-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Platform.swiftdeps -serialize-diagnostics-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Platform.dia -emit-dependencies-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/SourceTokenizer.d -emit-const-values-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/SourceTokenizer.swiftconstvalues -emit-reference-dependencies-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/SourceTokenizer.swiftdeps -serialize-diagnostics-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/SourceTokenizer.dia -target aarch64-unknown-linux-android28 -Xllvm -aarch64-use-tbi -disable-objc-interop -sdk /android-ndk/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -sysroot /android-ndk/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -I /host/spi-builder-workspace/.build/out/Products/Debug-android-aarch64 -module-cache-path /host/spi-builder-workspace/.build/out/ModuleCache.noindex -color-diagnostics -Xcc -fcolor-diagnostics -enable-testing -g -debug-info-format\=dwarf -dwarf-version\=4 -swift-version 6 -Onone -D SWIFT_PACKAGE -D DEBUG -D SWIFT_MODULE_RESOURCE_BUNDLE_UNAVAILABLE -D Xcode -serialize-debugging-options -enable-experimental-feature DebugDescriptionMacro -empty-abi-descriptor -external-plugin-path /root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/lib/swift/host/plugins/testing\#/root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/bin/swift-plugin-server -validate-clang-modules-once -clang-build-session-file /host/spi-builder-workspace/.build/out/ModuleCache.noindex/Session.modulevalidation -Xcc -working-directory -Xcc /host -resource-dir /root/.swiftpm/swift-sdks/swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_android.artifactbundle/swift-android/swift-resources/usr/lib/swift-aarch64 -enable-anonymous-context-mangled-names -file-compilation-dir /host -Xcc -resource-dir -Xcc /android-ndk/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18 -Xcc -fno-omit-frame-pointer -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -Xcc -I/host/spi-builder-workspace/.build/out/Products/Debug-android-aarch64/include -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/DerivedSources-normal/aarch64 -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/DerivedSources/aarch64 -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -no-auto-bridging-header-chaining -module-name Ligature -package-name spi_builder_workspace -const-gather-protocols-file /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Ligature_const_extract_protocols.json -in-process-plugin-server-path /root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/lib/swift/host/libSwiftInProcPluginServer.so -plugin-path /root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/lib/swift/host/plugins -plugin-path /root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/local/lib/swift/host/plugins -parse-as-library -o /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Platform.o -o /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/SourceTokenizer.o -index-unit-output-path /Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Platform.o -index-unit-output-path /Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/SourceTokenizer.o -index-store-path /host/spi-builder-workspace/.build/out -index-system-modules
error: SwiftCompile normal aarch64 failed with a nonzero exit code. Command line: cd /host
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:8:27: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m6 |[0;0m
[0;36m7 |[0;0m public enum Request: Equatable {
[0;36m8 |[0;0m case position(Position, [4;39mTextGranularity[0;0m, TextDirection)
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m9 |[0;0m }
[0;36m10 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:8:44: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m6 |[0;0m
[0;36m7 |[0;0m public enum Request: Equatable {
[0;36m8 |[0;0m case position(Position, TextGranularity, [4;39mTextDirection[0;0m)
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m9 |[0;0m }
[0;36m10 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:7:14: [1;31merror: [1;39mtype 'MockTextTokenizer<R>.Request' does not conform to protocol 'Equatable'[0;0m
[0;36m5 |[0;0m public typealias TextRange = R
[0;36m6 |[0;0m
[0;36m7 |[0;0m public enum Request: Equatable {
[0;36m|[0;0m |- [1;31merror: [1;39mtype 'MockTextTokenizer<R>.Request' does not conform to protocol 'Equatable'[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd stubs for conformance[0;0m
[0;36m8 |[0;0m case position(Position, TextGranularity, TextDirection)
[0;36m|[0;0m | `- [1;39mnote: [1;39massociated value type '_' does not conform to protocol 'Equatable', preventing synthesized conformance of 'MockTextTokenizer<R>.Request' to 'Equatable'[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39massociated value type '_' does not conform to protocol 'Equatable', preventing synthesized conformance of 'MockTextTokenizer<R>.Request' to 'Equatable'[0;0m
[0;36m9 |[0;0m }
[0;36m10 |[0;0m
Swift.==:1:24: [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'RawRepresentable'[0;0m
[0;36m1 |[0;0m @inlinable public func == <T>(lhs: T, rhs: T) -> Bool where T : RawRepresentable, T.RawValue : Equatable
[0;36m|[0;0m `- [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'RawRepresentable'[0;0m
Swift.FloatingPoint.==:2:20: [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'FloatingPoint'[0;0m
[0;36m1 |[0;0m protocol FloatingPoint {
[0;36m2 |[0;0m public static func == (lhs: Self, rhs: Self) -> Bool}
[0;36m|[0;0m `- [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'FloatingPoint'[0;0m
[0;36m3 |[0;0m
Swift.BinaryInteger.==:2:20: [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'BinaryInteger'[0;0m
[0;36m1 |[0;0m protocol BinaryInteger {
[0;36m2 |[0;0m public static func == <Other>(lhs: Self, rhs: Other) -> Bool where Other : BinaryInteger}
[0;36m|[0;0m `- [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'BinaryInteger'[0;0m
[0;36m3 |[0;0m
Swift._Pointer.==:2:20: [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to '_Pointer'[0;0m
[0;36m1 |[0;0m protocol _Pointer {
[0;36m2 |[0;0m public static func == (lhs: Self, rhs: Self) -> Bool}
[0;36m|[0;0m `- [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to '_Pointer'[0;0m
[0;36m3 |[0;0m
Swift._Pointer.==:2:31: [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to '_Pointer'[0;0m
[0;36m1 |[0;0m protocol _Pointer {
[0;36m2 |[0;0m @inlinable public static func == <Other>(lhs: Self, rhs: Other) -> Bool where Other : _Pointer}
[0;36m|[0;0m `- [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to '_Pointer'[0;0m
[0;36m3 |[0;0m
Swift.Strideable.==:2:31: [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'Strideable'[0;0m
[0;36m1 |[0;0m protocol Strideable {
[0;36m2 |[0;0m @inlinable public static func == (x: Self, y: Self) -> Bool}
[0;36m|[0;0m `- [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'Strideable'[0;0m
[0;36m3 |[0;0m
Swift.StringProtocol.==:2:31: [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'StringProtocol'[0;0m
[0;36m1 |[0;0m protocol StringProtocol {
[0;36m2 |[0;0m @inlinable public static func == <RHS>(lhs: Self, rhs: RHS) -> Bool where RHS : StringProtocol}
[0;36m|[0;0m `- [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'StringProtocol'[0;0m
[0;36m3 |[0;0m
Swift.SIMD.==:2:20: [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'SIMD'[0;0m
[0;36m1 |[0;0m protocol SIMD {
[0;36m2 |[0;0m public static func == (a: Self, b: Self) -> Bool}
[0;36m|[0;0m `- [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'SIMD'[0;0m
[0;36m3 |[0;0m
Foundation.__BridgedNSError.==:2:20: [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to '__BridgedNSError'[0;0m
[0;36m1 |[0;0m protocol __BridgedNSError {
[0;36m2 |[0;0m public static func == (lhs: Self, rhs: Self) -> Bool}
[0;36m|[0;0m `- [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to '__BridgedNSError'[0;0m
[0;36m3 |[0;0m
Foundation._BridgedStoredNSError.==:2:20: [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to '_BridgedStoredNSError'[0;0m
[0;36m1 |[0;0m protocol _BridgedStoredNSError {
[0;36m2 |[0;0m public static func == (lhs: Self, rhs: Self) -> Bool}
[0;36m|[0;0m `- [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to '_BridgedStoredNSError'[0;0m
[0;36m3 |[0;0m
FoundationEssentials.AttributedStringProtocol.==:2:20: [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'AttributedStringProtocol'[0;0m
[0;36m1 |[0;0m protocol AttributedStringProtocol {
[0;36m2 |[0;0m public static func == <RHS>(lhs: Self, rhs: RHS) -> Bool where RHS : AttributedStringProtocol}
[0;36m|[0;0m `- [1;39mnote: [1;39mcandidate would match if 'MockTextTokenizer<R>.Request' conformed to 'AttributedStringProtocol'[0;0m
[0;36m3 |[0;0m
Swift.Equatable.==:2:13: [1;39mnote: [1;39mprotocol requires function '==' with type '(borrowing MockTextTokenizer<R>.Request, borrowing MockTextTokenizer<R>.Request) -> Bool'[0;0m
[0;36m1 |[0;0m protocol Equatable {
[0;36m2 |[0;0m static func == (lhs: borrowing Self, rhs: borrowing Self) -> Bool}
[0;36m|[0;0m `- [1;39mnote: [1;39mprotocol requires function '==' with type '(borrowing MockTextTokenizer<R>.Request, borrowing MockTextTokenizer<R>.Request) -> Bool'[0;0m
[0;36m3 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:26:72: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m24 |[0;0m }
[0;36m25 |[0;0m
[0;36m26 |[0;0m public func position(from position: Position, toBoundary granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection, alignment: CGFloat?) -> Position? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m27 |[0;0m requests.append(.position(position, granularity, direction))
[0;36m28 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:26:112: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m24 |[0;0m }
[0;36m25 |[0;0m
[0;36m26 |[0;0m public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m, alignment: CGFloat?) -> Position? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m27 |[0;0m requests.append(.position(position, granularity, direction))
[0;36m28 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:37:77: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m35 |[0;0m }
[0;36m36 |[0;0m
[0;36m37 |[0;0m public func rangeEnclosingPosition(_ position: Position, with granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> R? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m38 |[0;0m return nil
[0;36m39 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:37:117: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m35 |[0;0m }
[0;36m36 |[0;0m
[0;36m37 |[0;0m public func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> R? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m38 |[0;0m return nil
[0;36m39 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:41:71: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m39 |[0;0m }
[0;36m40 |[0;0m
[0;36m41 |[0;0m public func isPosition(_ position: Position, atBoundary granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> Bool {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m42 |[0;0m return false
[0;36m43 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:41:111: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m39 |[0;0m }
[0;36m40 |[0;0m
[0;36m41 |[0;0m public func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> Bool {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m42 |[0;0m return false
[0;36m43 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:45:75: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m43 |[0;0m }
[0;36m44 |[0;0m
[0;36m45 |[0;0m public func isPosition(_ position: Position, withinTextUnit granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> Bool {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m46 |[0;0m return false
[0;36m47 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift:45:115: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m43 |[0;0m }
[0;36m44 |[0;0m
[0;36m45 |[0;0m public func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> Bool {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m46 |[0;0m return false
[0;36m47 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:15:65: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m13 |[0;0m typealias Position = TextRange.Bound
[0;36m14 |[0;0m
[0;36m15 |[0;0m func position(from position: Position, toBoundary granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection, alignment: CGFloat?) -> Position?
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
[0;36m17 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:15:105: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m13 |[0;0m typealias Position = TextRange.Bound
[0;36m14 |[0;0m
[0;36m15 |[0;0m func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m, alignment: CGFloat?) -> Position?
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
[0;36m17 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:15:131: [1;31merror: [1;39mcannot find type 'CGFloat' in scope[0;0m
[0;36m13 |[0;0m typealias Position = TextRange.Bound
[0;36m14 |[0;0m
[0;36m15 |[0;0m func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: [4;39mCGFloat[0;0m?) -> Position?
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'CGFloat' in scope[0;0m
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
[0;36m17 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:16:70: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m14 |[0;0m
[0;36m15 |[0;0m func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position?
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> TextRange?
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m17 |[0;0m
[0;36m18 |[0;0m func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:16:110: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m14 |[0;0m
[0;36m15 |[0;0m func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position?
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> TextRange?
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m17 |[0;0m
[0;36m18 |[0;0m func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:18:64: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
[0;36m17 |[0;0m
[0;36m18 |[0;0m func isPosition(_ position: Position, atBoundary granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> Bool
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m19 |[0;0m func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
[0;36m20 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:18:104: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m16 |[0;0m func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: TextDirection) -> TextRange?
[0;36m17 |[0;0m
[0;36m18 |[0;0m func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> Bool
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m19 |[0;0m func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
[0;36m20 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:19:68: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m17 |[0;0m
[0;36m18 |[0;0m func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
[0;36m19 |[0;0m func isPosition(_ position: Position, withinTextUnit granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> Bool
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m20 |[0;0m }
[0;36m21 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:19:108: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m17 |[0;0m
[0;36m18 |[0;0m func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: TextDirection) -> Bool
[0;36m19 |[0;0m func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> Bool
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m20 |[0;0m }
[0;36m21 |[0;0m
/host/spi-builder-workspace/Sources/Ligature/NSTextSelection+Extensions.swift:9:11: [1;31merror: [1;39mcannot find type 'NSTextSelection' in scope[0;0m
[0;36m7 |[0;0m @available(iOS 15.0, macOS 12.0, tvOS 15.0, *)
[0;36m8 |[0;0m @available(watchOS, unavailable)
[0;36m9 |[0;0m extension [4;39mNSTextSelection[0;0m.Granularity {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'NSTextSelection' in scope[0;0m
[0;36m10 |[0;0m public init(_ granularity: TextGranularity) {
[0;36m11 |[0;0m switch granularity {
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:14:72: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m12 |[0;0m
[0;36m13 |[0;0m extension SourceTokenizer: TextTokenizer {
[0;36m14 |[0;0m public func position(from position: Position, toBoundary granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection, alignment: CGFloat?) -> Position? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m15 |[0;0m return fallbackTokenzier.position(from: position, toBoundary: granularity, inDirection: direction, alignment: alignment)
[0;36m16 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:14:112: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m12 |[0;0m
[0;36m13 |[0;0m extension SourceTokenizer: TextTokenizer {
[0;36m14 |[0;0m public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m, alignment: CGFloat?) -> Position? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m15 |[0;0m return fallbackTokenzier.position(from: position, toBoundary: granularity, inDirection: direction, alignment: alignment)
[0;36m16 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:18:77: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m16 |[0;0m }
[0;36m17 |[0;0m
[0;36m18 |[0;0m public func rangeEnclosingPosition(_ position: Position, with granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> FallbackTokenzier.TextRange? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m19 |[0;0m return fallbackTokenzier.rangeEnclosingPosition(position, with: granularity, inDirection: direction)
[0;36m20 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:18:117: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m16 |[0;0m }
[0;36m17 |[0;0m
[0;36m18 |[0;0m public func rangeEnclosingPosition(_ position: Position, with granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> FallbackTokenzier.TextRange? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m19 |[0;0m return fallbackTokenzier.rangeEnclosingPosition(position, with: granularity, inDirection: direction)
[0;36m20 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:22:71: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m20 |[0;0m }
[0;36m21 |[0;0m
[0;36m22 |[0;0m public func isPosition(_ position: Position, atBoundary granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> Bool {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m23 |[0;0m return fallbackTokenzier.isPosition(position, atBoundary: granularity, inDirection: direction)
[0;36m24 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:22:111: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m20 |[0;0m }
[0;36m21 |[0;0m
[0;36m22 |[0;0m public func isPosition(_ position: Position, atBoundary granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> Bool {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m23 |[0;0m return fallbackTokenzier.isPosition(position, atBoundary: granularity, inDirection: direction)
[0;36m24 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:26:75: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m24 |[0;0m }
[0;36m25 |[0;0m
[0;36m26 |[0;0m public func isPosition(_ position: Position, withinTextUnit granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> Bool {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m27 |[0;0m return fallbackTokenzier.isPosition(position, withinTextUnit: granularity, inDirection: direction)
[0;36m28 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:26:115: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m24 |[0;0m }
[0;36m25 |[0;0m
[0;36m26 |[0;0m public func isPosition(_ position: Position, withinTextUnit granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> Bool {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m27 |[0;0m return fallbackTokenzier.isPosition(position, withinTextUnit: granularity, inDirection: direction)
[0;36m28 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift:13:1: [1;31merror: [1;39mtype 'SourceTokenizer<FallbackTokenzier>' does not conform to protocol 'TextTokenizer'[0;0m
[0;36m11 |[0;0m }
[0;36m12 |[0;0m
[0;36m13 |[0;0m extension SourceTokenizer: TextTokenizer {
[0;36m|[0;0m |- [1;31merror: [1;39mtype 'SourceTokenizer<FallbackTokenzier>' does not conform to protocol 'TextTokenizer'[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd stubs for conformance[0;0m
[0;36m14 |[0;0m public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: TextDirection, alignment: CGFloat?) -> Position? {
[0;36m15 |[0;0m return fallbackTokenzier.position(from: position, toBoundary: granularity, inDirection: direction, alignment: alignment)
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:11:17: [1;39mnote: [1;39mprotocol requires nested type 'TextRange'[0;0m
[0;36m9 |[0;0m @MainActor
[0;36m10 |[0;0m public protocol TextTokenizer<TextRange> {
[0;36m11 |[0;0m associatedtype TextRange: Bounded
[0;36m|[0;0m `- [1;39mnote: [1;39mprotocol requires nested type 'TextRange'[0;0m
[0;36m12 |[0;0m
[0;36m13 |[0;0m typealias Position = TextRange.Bound
/host/spi-builder-workspace/Sources/Ligature/TextDirection+Extensions.swift:1:11: [1;31merror: [1;39mcannot find type 'TextLayoutDirection' in scope[0;0m
[0;36m1 |[0;0m extension [4;39mTextLayoutDirection[0;0m {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextLayoutDirection' in scope[0;0m
[0;36m2 |[0;0m public func textStorageDirection(with layout: UserInterfaceLayoutDirection) -> TextStorageDirection? {
[0;36m3 |[0;0m switch (self, layout) {
/host/spi-builder-workspace/Sources/Ligature/TextDirection+Extensions.swift:16:11: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m14 |[0;0m }
[0;36m15 |[0;0m
[0;36m16 |[0;0m extension [4;39mTextDirection[0;0m {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m17 |[0;0m public func textStorageDirection(with layout: UserInterfaceLayoutDirection) -> TextStorageDirection? {
[0;36m18 |[0;0m switch rawValue {
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:23:72: [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m21 |[0;0m
[0;36m22 |[0;0m extension TextTokenizer {
[0;36m23 |[0;0m public func position(from position: Position, toBoundary granularity: [4;39mTextGranularity[0;0m, inDirection direction: TextDirection) -> Position? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextGranularity' in scope[0;0m
[0;36m24 |[0;0m self.position(from: position, toBoundary: granularity, inDirection: direction, alignment: nil)
[0;36m25 |[0;0m }
/host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift:23:112: [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m21 |[0;0m
[0;36m22 |[0;0m extension TextTokenizer {
[0;36m23 |[0;0m public func position(from position: Position, toBoundary granularity: TextGranularity, inDirection direction: [4;39mTextDirection[0;0m) -> Position? {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'TextDirection' in scope[0;0m
[0;36m24 |[0;0m self.position(from: position, toBoundary: granularity, inDirection: direction, alignment: nil)
[0;36m25 |[0;0m }
Failed frontend command:
/root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/bin/swift-frontend -frontend -emit-module -experimental-skip-non-inlinable-function-bodies-without-types /host/spi-builder-workspace/Sources/Ligature/MockTextTokenizer.swift /host/spi-builder-workspace/Sources/Ligature/NSTextSelection+Extensions.swift /host/spi-builder-workspace/Sources/Ligature/Platform.swift /host/spi-builder-workspace/Sources/Ligature/SourceTokenizer.swift /host/spi-builder-workspace/Sources/Ligature/TextDirection+Extensions.swift /host/spi-builder-workspace/Sources/Ligature/TextInputStringTokenizer.swift /host/spi-builder-workspace/Sources/Ligature/TextRange+Bounded.swift /host/spi-builder-workspace/Sources/Ligature/TextTokenizer.swift /host/spi-builder-workspace/Sources/Ligature/TextView+TextRangeCalculating.swift /host/spi-builder-workspace/Sources/Ligature/UTF16CodePointTextViewTextTokenizer.swift -target aarch64-unknown-linux-android28 -Xllvm -aarch64-use-tbi -disable-objc-interop -sdk /android-ndk/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -sysroot /android-ndk/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -I /host/spi-builder-workspace/.build/out/Products/Debug-android-aarch64 -module-cache-path /host/spi-builder-workspace/.build/out/ModuleCache.noindex -color-diagnostics -Xcc -fcolor-diagnostics -enable-testing -g -debug-info-format\=dwarf -dwarf-version\=4 -swift-version 6 -Onone -D SWIFT_PACKAGE -D DEBUG -D SWIFT_MODULE_RESOURCE_BUNDLE_UNAVAILABLE -D Xcode -serialize-debugging-options -enable-experimental-feature DebugDescriptionMacro -empty-abi-descriptor -external-plugin-path /root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/lib/swift/host/plugins/testing\#/root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/bin/swift-plugin-server -validate-clang-modules-once -clang-build-session-file /host/spi-builder-workspace/.build/out/ModuleCache.noindex/Session.modulevalidation -Xcc -working-directory -Xcc /host -resource-dir /root/.swiftpm/swift-sdks/swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_android.artifactbundle/swift-android/swift-resources/usr/lib/swift-aarch64 -enable-anonymous-context-mangled-names -file-compilation-dir /host -Xcc -resource-dir -Xcc /android-ndk/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18 -Xcc -fno-omit-frame-pointer -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -Xcc -I/host/spi-builder-workspace/.build/out/Products/Debug-android-aarch64/include -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/DerivedSources-normal/aarch64 -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/DerivedSources/aarch64 -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -no-auto-bridging-header-chaining -module-name Ligature -package-name spi_builder_workspace -const-gather-protocols-file /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Ligature_const_extract_protocols.json -in-process-plugin-server-path /root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/lib/swift/host/libSwiftInProcPluginServer.so -plugin-path /root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/lib/swift/host/plugins -plugin-path /root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/local/lib/swift/host/plugins -emit-module-doc-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Modules/Ligature.swiftdoc -emit-module-source-info-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Modules/Ligature.swiftsourceinfo -emit-objc-header-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Ligature-Swift.h -serialize-diagnostics-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Ligature-primary-emit-module.dia -emit-dependencies-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Ligature-primary-emit-module.d -parse-as-library -o /host/spi-builder-workspace/.build/out/Intermediates.noindex/Ligature.build/Debug-android-aarch64/Ligature-t.build/Objects-normal/aarch64/Modules/Ligature.swiftmodule
error: Build failed
BUILD FAILURE 6.4 android