Skip to content

Commit 7e8d4d9

Browse files
committed
WIP
1 parent 505c8ea commit 7e8d4d9

1 file changed

Lines changed: 50 additions & 20 deletions

File tree

scripts/build-and-test-wasm.sh

Lines changed: 50 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,33 @@ echo "🌐 Building and Testing Matft for WebAssembly"
66
echo "🌐 =========================================="
77
echo ""
88

9-
# Pinned SDK version for reproducible builds (same on CI and local)
10-
PINNED_SDK_VERSION="6.0.3-RELEASE"
11-
PINNED_SDK_NAME="6.0.3-RELEASE-wasm32-unknown-wasi"
12-
PINNED_SDK_CHECKSUM="31d3585b06dd92de390bacc18527801480163188cd7473f492956b5e213a8618"
13-
PINNED_SDK_URL="https://github.com/swiftwasm/swift/releases/download/swift-wasm-${PINNED_SDK_VERSION}/swift-wasm-${PINNED_SDK_VERSION}-wasm32-unknown-wasi.artifactbundle.zip"
9+
# SDK info for different Swift versions (SDK must match Swift compiler version)
10+
get_sdk_info() {
11+
local SWIFT_VER="$1"
12+
case "$SWIFT_VER" in
13+
6.0.3*)
14+
SDK_VERSION="6.0.3-RELEASE"
15+
SDK_CHECKSUM="31d3585b06dd92de390bacc18527801480163188cd7473f492956b5e213a8618"
16+
;;
17+
6.1*)
18+
SDK_VERSION="6.1-RELEASE"
19+
SDK_CHECKSUM="7550b4c77a55f4b637c376f5d192f297fe185607003a6212ad608276928db992"
20+
;;
21+
*)
22+
echo "❌ No WASM SDK available for Swift $SWIFT_VER"
23+
echo " Supported versions: 6.0.3, 6.1"
24+
return 1
25+
;;
26+
esac
27+
SDK_URL="https://github.com/swiftwasm/swift/releases/download/swift-wasm-${SDK_VERSION}/swift-wasm-${SDK_VERSION}-wasm32-unknown-wasi.artifactbundle.zip"
28+
return 0
29+
}
1430

1531
SWIFT_CMD=""
1632
SWIFT_SDK_NAME=""
33+
SWIFT_VERSION=""
1734

18-
# Setup Swift command
35+
# Setup Swift command and detect version
1936
setup_swift() {
2037
echo "📦 Setting up Swift..."
2138

@@ -30,8 +47,10 @@ setup_swift() {
3047
if [ -x "$TOOLCHAIN_SWIFT" ]; then
3148
SWIFT_CMD="$TOOLCHAIN_SWIFT"
3249
echo "✅ Using local development toolchain: $WASM_TOOLCHAIN"
33-
local VERSION=$($SWIFT_CMD --version 2>/dev/null | head -1)
34-
echo " Version: $VERSION"
50+
local VERSION_OUTPUT=$($SWIFT_CMD --version 2>/dev/null | head -1)
51+
echo " Version: $VERSION_OUTPUT"
52+
# Dev toolchain - will use dev SDK
53+
SWIFT_VERSION="dev"
3554
echo ""
3655
return 0
3756
fi
@@ -41,9 +60,11 @@ setup_swift() {
4160
# Use system Swift (CI environment)
4261
if command -v swift &> /dev/null; then
4362
SWIFT_CMD="swift"
44-
local VERSION=$($SWIFT_CMD --version 2>/dev/null | head -1)
63+
local VERSION_OUTPUT=$($SWIFT_CMD --version 2>/dev/null)
64+
# Extract version number (e.g., "6.1.3" from "Swift version 6.1.3")
65+
SWIFT_VERSION=$(echo "$VERSION_OUTPUT" | grep -oE "Swift version [0-9]+\.[0-9]+(\.[0-9]+)?" | head -1 | sed 's/Swift version //')
4566
echo "✅ Using system Swift"
46-
echo " Version: $VERSION"
67+
echo " Version: $SWIFT_VERSION"
4768
echo ""
4869
return 0
4970
fi
@@ -59,7 +80,7 @@ setup_wasm_sdk() {
5980
local INSTALLED_SDKS=$($SWIFT_CMD sdk list 2>/dev/null || echo "")
6081

6182
# For development toolchain, try to find matching development SDK first
62-
if echo "$SWIFT_CMD" | grep -q "DEVELOPMENT-SNAPSHOT"; then
83+
if [ "$SWIFT_VERSION" = "dev" ]; then
6384
local TOOLCHAIN_DATE=$(echo "$SWIFT_CMD" | grep -oE "[0-9]{4}-[0-9]{2}-[0-9]{2}")
6485
if [ -n "$TOOLCHAIN_DATE" ]; then
6586
SWIFT_SDK_NAME=$(echo "$INSTALLED_SDKS" | grep "DEVELOPMENT-SNAPSHOT-${TOOLCHAIN_DATE}" | grep -E "wasm32-unknown-wasi" | grep -v "embedded" | head -1)
@@ -77,25 +98,34 @@ setup_wasm_sdk() {
7798
echo ""
7899
return 0
79100
fi
101+
102+
echo "❌ No development SDK found for development toolchain"
103+
exit 1
104+
fi
105+
106+
# Get SDK info for the detected Swift version
107+
if ! get_sdk_info "$SWIFT_VERSION"; then
108+
exit 1
80109
fi
81110

82-
# Use pinned stable SDK (CI and local fallback)
83-
echo " Looking for pinned SDK: $PINNED_SDK_NAME"
111+
echo " Swift version: $SWIFT_VERSION"
112+
echo " Required SDK: $SDK_VERSION"
84113

85-
if echo "$INSTALLED_SDKS" | grep -qE "(^|swift-wasm-)${PINNED_SDK_VERSION}[_-]wasm32-unknown-wasi"; then
86-
SWIFT_SDK_NAME=$(echo "$INSTALLED_SDKS" | grep -E "(^|swift-wasm-)${PINNED_SDK_VERSION}[_-]wasm32-unknown-wasi" | head -1)
87-
echo "✅ Found pinned SDK: $SWIFT_SDK_NAME"
114+
# Check if SDK is already installed
115+
if echo "$INSTALLED_SDKS" | grep -qE "(^|swift-wasm-)${SDK_VERSION}[_-]wasm32-unknown-wasi"; then
116+
SWIFT_SDK_NAME=$(echo "$INSTALLED_SDKS" | grep -E "(^|swift-wasm-)${SDK_VERSION}[_-]wasm32-unknown-wasi" | head -1)
117+
echo "✅ Found SDK: $SWIFT_SDK_NAME"
88118
echo ""
89119
return 0
90120
fi
91121

92-
# Install the pinned SDK
93-
echo "⬇️ Installing WASM SDK ${PINNED_SDK_VERSION}..."
94-
$SWIFT_CMD sdk install "$PINNED_SDK_URL" --checksum "$PINNED_SDK_CHECKSUM"
122+
# Install the SDK
123+
echo "⬇️ Installing WASM SDK ${SDK_VERSION}..."
124+
$SWIFT_CMD sdk install "$SDK_URL" --checksum "$SDK_CHECKSUM"
95125

96126
# Verify installation
97127
INSTALLED_SDKS=$($SWIFT_CMD sdk list 2>/dev/null || echo "")
98-
SWIFT_SDK_NAME=$(echo "$INSTALLED_SDKS" | grep -E "(^|swift-wasm-)${PINNED_SDK_VERSION}[_-]wasm32-unknown-wasi" | head -1)
128+
SWIFT_SDK_NAME=$(echo "$INSTALLED_SDKS" | grep -E "(^|swift-wasm-)${SDK_VERSION}[_-]wasm32-unknown-wasi" | head -1)
99129

100130
if [ -z "$SWIFT_SDK_NAME" ]; then
101131
echo "❌ Failed to install SDK"

0 commit comments

Comments
 (0)