@@ -204,24 +204,80 @@ jobs:
204204 echo "SwiftSyntax cache hit: ${{ steps.swiftsyntax-prebuilts.outputs.cache-hit }}"
205205 echo "SwiftSyntax prebuilts path: ${{ steps.swiftsyntax-prebuilts.outputs.prebuilts-path }}"
206206 find "${{ steps.swiftsyntax-prebuilts.outputs.prebuilts-path }}" -maxdepth 3 -type f | sort
207- swift package --verbose ${SWIFT_PACKAGE_FLAGS} --package-path Examples/ActorOnWebWorker resolve
208- find Examples/ActorOnWebWorker/.build/prebuilts -maxdepth 5 -print 2>/dev/null | sort || true
209- find Examples/ActorOnWebWorker/.build -name workspace-state.json -print -exec sed -n '1,240p' {} \; || true
210- cd Examples/ActorOnWebWorker
211207
212- swift build --verbose ${SWIFT_PACKAGE_FLAGS} --build-system native \
213- --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1_threads:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1-threads}}" \
214- --product MyApp -c release \
215- -Xswiftc -static-stdlib \
216- -Xswiftc -Xclang-linker -Xswiftc -mexec-model=reactor \
217- -Xlinker --export-if-defined=__main_argc_argv 2>&1 | tee prebuilt-warmup.log
208+ runtime_view="$RUNNER_TEMP/JavaScriptKitRuntimeOnly"
209+ rm -rf "$runtime_view"
210+ cp -R "$GITHUB_WORKSPACE" "$runtime_view"
211+ rm -rf "$runtime_view/.git"
212+
213+ cat > "$runtime_view/Package.swift" <<'EOF'
214+ // swift-tools-version:6.2
215+
216+ import CompilerPluginSupport
217+ import PackageDescription
218+
219+ let package = Package(
220+ name: "JavaScriptKit",
221+ platforms: [
222+ .macOS(.v13),
223+ .iOS(.v13),
224+ .tvOS(.v13),
225+ .watchOS(.v6),
226+ .macCatalyst(.v13),
227+ ],
228+ products: [
229+ .library(name: "JavaScriptKit", targets: ["JavaScriptKit"]),
230+ .library(name: "JavaScriptEventLoop", targets: ["JavaScriptEventLoop"]),
231+ .plugin(name: "PackageToJS", targets: ["PackageToJS"]),
232+ ],
233+ dependencies: [
234+ .package(url: "https://github.com/swiftlang/swift-syntax", "600.0.0"..<"604.0.0")
235+ ],
236+ targets: [
237+ .target(
238+ name: "JavaScriptKit",
239+ dependencies: ["_CJavaScriptKit", "BridgeJSMacros"],
240+ exclude: ["Runtime"],
241+ swiftSettings: [
242+ .enableExperimentalFeature("Extern"),
243+ ]
244+ ),
245+ .target(name: "_CJavaScriptKit"),
246+ .macro(
247+ name: "BridgeJSMacros",
248+ dependencies: [
249+ .product(name: "SwiftSyntaxMacros", package: "swift-syntax"),
250+ .product(name: "SwiftCompilerPlugin", package: "swift-syntax"),
251+ ]
252+ ),
253+ .target(
254+ name: "JavaScriptEventLoop",
255+ dependencies: ["JavaScriptKit", "_CJavaScriptEventLoop"]
256+ ),
257+ .target(name: "_CJavaScriptEventLoop"),
258+ .plugin(
259+ name: "PackageToJS",
260+ capability: .command(
261+ intent: .custom(verb: "js", description: "Convert a Swift package to a JavaScript package")
262+ ),
263+ path: "Plugins/PackageToJS/Sources"
264+ ),
265+ ]
266+ )
267+ EOF
268+
269+ swift package --verbose ${SWIFT_PACKAGE_FLAGS} --package-path "$runtime_view/Examples/ActorOnWebWorker" resolve
270+ find "$runtime_view/Examples/ActorOnWebWorker/.build/prebuilts" -maxdepth 5 -print 2>/dev/null | sort || true
271+ find "$runtime_view/Examples/ActorOnWebWorker/.build" -name workspace-state.json -print -exec sed -n '1,240p' {} \; || true
272+
273+ cd "$runtime_view/Examples/ActorOnWebWorker"
218274
219- swift package --verbose ${SWIFT_PACKAGE_FLAGS} --build-system native \
275+ swift package --verbose ${SWIFT_PACKAGE_FLAGS} --build-system native --package JavaScriptKit \
220276 --swift-sdk "${SWIFT_SDK_ID_wasm32_unknown_wasip1_threads:-${SWIFT_SDK_ID:-wasm32-unknown-wasip1-threads}}" \
221277 plugin --allow-writing-to-package-directory \
222278 js --use-cdn --output ./Bundle -c release 2>&1 | tee plugin-build.log
223279
224- if grep -E "Compiling (SwiftSyntax|SwiftBasicFormat|SwiftDiagnostics|SwiftParser|SwiftOperators|SwiftIfConfig|SwiftCompilerPlugin|SwiftSyntaxMacros|SwiftSyntaxMacroExpansion|SwiftCompilerPluginMessageHandling)" prebuilt-warmup.log plugin-build.log; then
280+ if grep -E "Compiling (SwiftSyntax|SwiftBasicFormat|SwiftDiagnostics|SwiftParser|SwiftOperators|SwiftIfConfig|SwiftCompilerPlugin|SwiftSyntaxMacros|SwiftSyntaxMacroExpansion|SwiftCompilerPluginMessageHandling)|SwiftSyntax-tool\.build|SwiftCompilerPlugin-tool\.build|SwiftSyntaxMacros-tool\.build" plugin-build.log; then
225281 echo "::error::SwiftSyntax was built from source instead of using prebuilts"
226282 exit 1
227283 fi
0 commit comments