Skip to content
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
49 changes: 9 additions & 40 deletions .github/workflows/swift.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,18 @@ env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

# Analog to Cocoanetics/ShellKit's swift.yml (SQLiteKit's standalone-library
# peer), extended to the full Apple platform matrix the package declares
# (macOS / iOS / tvOS / watchOS / visionOS) plus Linux / Windows / Android.
# No external-C provisioning on any platform (no brew / apt / vcpkg): the SQLite
# engine is vendored, so there are no system libraries to install.
# peer). Apple platforms in CI: macOS / iOS / watchOS — tvOS and visionOS are
# not built here (iOS coverage is sufficient for the Apple-embedded story).
# Plus Linux / Windows / Android. No external-C provisioning on any platform
# (no brew / apt / vcpkg): the SQLite engine is vendored, so there are no
# system libraries to install.
#
# The four full-build platforms (macOS / Linux / Windows / Android) run the
# suite twice — a default run that pins the trait-OFF contract (the `#else`
# branches: FTS5 / vec0 modules absent), then a `--traits FTS5,SQLiteVec` run for
# the on-state proofs (fullTextSearchFTS5, semanticSearchSQLiteVec, vec0BlobBind).
# The Apple-mobile jobs build the library against each device SDK (a portability
# check); iOS additionally runs the suite on a simulator.
# check); the full test suites run on macOS / Linux / Windows / Android.

jobs:

Expand Down Expand Up @@ -56,30 +57,10 @@ jobs:
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: "26.0"
# Build both the SDK and the shell driver for the iOS device SDK. We
# build (not test) on iOS: the shell driver pulls in ShellKit ->
# swift-subprocess, which declares `iOS("99.0")` — i.e. iOS unsupported —
# so once `Sqlite3ShellTests` is folded into the autogenerated `SQLiteKit`
# scheme's test action the scheme's iOS platform set is empty
# ("not configured for the test action"). The actual SDK + shell test
# suites run on macOS / Linux / Windows / Android via `swift test`; here
# we just prove both products compile for iOS.
# Build the SDK against the iOS device SDK — a portability check. The
# test suites run on macOS / Linux / Windows / Android via `swift test`.
- name: Build (iOS device SDK)
run: |
xcodebuild -scheme SQLiteKit -destination 'generic/platform=iOS' build
xcodebuild -scheme Sqlite3Shell -destination 'generic/platform=iOS' build

build-tvos:
runs-on: macos-15
timeout-minutes: 20
steps:
- uses: actions/checkout@v6
- name: Select Xcode 26.0
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: "26.0"
- name: Build (tvOS device SDK)
run: xcodebuild -scheme SQLiteKit -destination 'generic/platform=tvOS' build
run: xcodebuild -scheme SQLiteKit -destination 'generic/platform=iOS' build

build-watchos:
runs-on: macos-15
Expand All @@ -93,18 +74,6 @@ jobs:
- name: Build (watchOS device SDK)
run: xcodebuild -scheme SQLiteKit -destination 'generic/platform=watchOS' build

build-visionos:
runs-on: macos-15
timeout-minutes: 25
steps:
- uses: actions/checkout@v6
- name: Select Xcode 26.0
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: "26.0"
- name: Build (visionOS device SDK)
run: xcodebuild -scheme SQLiteKit -destination 'generic/platform=visionOS' build

build-linux:
# No `apt-get` — the SQLite engine is vendored. Pinned to 6.2
# (SQLiteKit's tools-version).
Expand Down
41 changes: 0 additions & 41 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,6 @@ let package = Package(
// The SDK: a thin, pure-Swift wrapper over the vendored SQLite
// amalgamation. FTS5 and sqlite-vec ride along behind opt-in traits.
.library(name: "SQLiteKit", targets: ["SQLiteKit"]),
// The `sqlite3` shell driver — the argv parser plus the dot-command /
// REPL engine that reproduces the sqlite3 CLI. ArgumentParser-free and
// IO-agnostic (it reads / writes / authorizes paths through
// `ShellKit.Shell`), so a host can drive it in-process on any platform,
// Android included. The SwiftPorts `sqlite3` executable wraps it in an
// ArgumentParser command; SwiftBash registers it as a native builtin.
// Pulls in ShellKit — SDK-only consumers that depend on the `SQLiteKit`
// product never build this target (or ShellKit) into their link.
.library(name: "Sqlite3Shell", targets: ["Sqlite3Shell"]),
],
// Opt-in, build-time engine toggles. Both off by default.
// • depending on this package: .package(url: …, traits: ["FTS5", "SQLiteVec"])
Expand All @@ -44,14 +35,6 @@ let package = Package(
.package(url: "https://github.com/stephencelis/CSQLite",
exact: "3.50.4",
traits: [.trait(name: "FTS5", condition: .when(traits: ["FTS5"]))]),
// Host runtime context for the `Sqlite3Shell` driver: the IO sinks it
// reads / writes through and the sandbox gate (`Shell.resolve` /
// `Shell.authorize`) every file-touching dot-command passes. Only the
// ArgumentParser-free `ShellKit` core product is used, so no
// ArgumentParser enters this package's graph. Pinned to `main` until
// ShellKit ships a tagged release.
.package(url: "https://github.com/Cocoanetics/ShellKit",
branch: "main"),
],
targets: [
// Typed C wrappers for SQLite's variadic printf (`sqlite3_mprintf`),
Expand Down Expand Up @@ -114,29 +97,5 @@ let package = Package(
name: "SQLiteKitTests",
dependencies: ["SQLiteKit"]
),
// The `sqlite3` shell driver: `Parser` (SQLite's single-dash long
// options, which ArgumentParser can't express) plus `Sqlite3Executable`
// / `Session` (the dot-command and REPL engine). Depends on the SDK and
// on ShellKit's core for IO + the sandbox gate; carries no
// ArgumentParser, so it builds on every platform (Android included).
.target(
name: "Sqlite3Shell",
dependencies: [
"SQLiteKit",
.product(name: "ShellKit", package: "ShellKit"),
]
),
// Drives `Sqlite3Executable` directly (no ArgumentParser), so it builds
// and runs on every platform `swift test` covers — Android included —
// exercising the shell port on the emulator in CI. Depends only on
// `Sqlite3Shell` (+ ShellKit for the IO harness); it references no
// `SQLiteKit` symbols directly.
.testTarget(
name: "Sqlite3ShellTests",
dependencies: [
"Sqlite3Shell",
.product(name: "ShellKit", package: "ShellKit"),
]
),
]
)
157 changes: 0 additions & 157 deletions Sources/Sqlite3Shell/Parser.swift

This file was deleted.

Loading
Loading