@@ -6,16 +6,33 @@ echo "🌐 Building and Testing Matft for WebAssembly"
66echo " 🌐 =========================================="
77echo " "
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
1531SWIFT_CMD=" "
1632SWIFT_SDK_NAME=" "
33+ SWIFT_VERSION=" "
1734
18- # Setup Swift command
35+ # Setup Swift command and detect version
1936setup_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