diff --git a/.github/scripts/build-matrix.rb b/.github/scripts/build-matrix.rb index 650d087..2c6c4c3 100644 --- a/.github/scripts/build-matrix.rb +++ b/.github/scripts/build-matrix.rb @@ -12,6 +12,7 @@ "main": "ghcr.io/swiftwasm/swift-ci:main-ubuntu-22.04", "release-6.0": "ghcr.io/swiftwasm/swift-ci:main-ubuntu-20.04@sha256:06faf7795ea077b64986b1c821a27b2756242ebe6d73adcdae17f4e424c17dc5", "release-6.1": "ghcr.io/swiftwasm/swift-ci:main-ubuntu-20.04@sha256:06faf7795ea077b64986b1c821a27b2756242ebe6d73adcdae17f4e424c17dc5", + "release-6.2": "ghcr.io/swiftwasm/swift-ci:main-ubuntu-20.04@sha256:ef0e9e4ff5b457103d8a060573050d9b33c91d9f680f7d4202412a99dc52cde0", }, "run_stdlib_test": true, "run_full_test": false, diff --git a/schemes/release-6.2/build/build-target-toolchain.sh b/schemes/release-6.2/build/build-target-toolchain.sh new file mode 100755 index 0000000..dda30ad --- /dev/null +++ b/schemes/release-6.2/build/build-target-toolchain.sh @@ -0,0 +1,152 @@ +#!/bin/bash +# +# Build the Swift standard library. + +set -euo pipefail +set -x + +print_help() { + echo "Usage: $0 [options]" + echo "" + echo "Options:" + echo " --help Display this help message." + echo " --llvm-bin Path to LLVM bin directory." + echo " --swift-bin Path to Swift bin directory." +} + +SCHEMES_BUILD_PATH="$(cd "$(dirname "$0")" && pwd)" +SOURCE_PATH="$(cd "$(dirname "$0")/../../../.." && pwd)" +TARGET_BUILD_ROOT=$SOURCE_PATH/build/WebAssembly +WASI_SYSROOT_PATH="$TARGET_BUILD_ROOT/wasi-sysroot" +PACKAGING_DIR="$SOURCE_PATH/build/Packaging" +TARGET_TOOLCHAIN_DESTDIR=$PACKAGING_DIR/target-toolchain + +build_target_toolchain() { + + local LLVM_BIN_DIR="$1" + local CLANG_BIN_DIR="$2" + local SWIFT_BIN_DIR="$3" + local TRIPLE="$4" + local SHORT_TRIPLE="$5" + local CLANG_MULTIARCH_TRIPLE="$6" + local STDLIB_PRODUCT="$7" + local COMPILER_RT_OS_DIR="$8" + + local HOST_SUFFIX + HOST_SUFFIX=$(find "$TARGET_BUILD_ROOT" -name "wasmstdlib-*" -exec basename {} \; | sed 's/wasmstdlib-//') + + local TRIPLE_DESTDIR="$TARGET_TOOLCHAIN_DESTDIR/$TRIPLE" + + env DESTDIR="$TRIPLE_DESTDIR" \ + cmake --install "$TARGET_BUILD_ROOT/$STDLIB_PRODUCT-$HOST_SUFFIX" --prefix /usr + + env DESTDIR="$TRIPLE_DESTDIR" \ + cmake --install "$TARGET_BUILD_ROOT/wasmswiftsdk-$HOST_SUFFIX/swift-testing/$TRIPLE" --prefix /usr + env DESTDIR="$TRIPLE_DESTDIR" \ + cmake --install "$TARGET_BUILD_ROOT/wasmswiftsdk-$HOST_SUFFIX/foundation/$TRIPLE" --prefix /usr + env DESTDIR="$TRIPLE_DESTDIR" \ + cmake --install "$TARGET_BUILD_ROOT/wasmswiftsdk-$HOST_SUFFIX/xctest/$TRIPLE" --prefix /usr + + rm -rf "$TRIPLE_DESTDIR/usr/lib/swift_static/clang/lib/$COMPILER_RT_OS_DIR" + # XXX: Is this the right way to install compiler-rt? + cp -R "$TARGET_BUILD_ROOT/wasi-sysroot/$CLANG_MULTIARCH_TRIPLE/lib/$COMPILER_RT_OS_DIR" "$TRIPLE_DESTDIR/usr/lib/swift_static/clang/lib/$COMPILER_RT_OS_DIR" + + # FIXME: The following is a workaround for the issue with wrong libxml2.a path + local LIBXML2_PATH_TO_FIX="$TARGET_BUILD_ROOT/wasi-sysroot/$CLANG_MULTIARCH_TRIPLE/lib/libxml2.a" + if [[ -f "$LIBXML2_PATH_TO_FIX" ]]; then + cp "$LIBXML2_PATH_TO_FIX" "$TRIPLE_DESTDIR/usr/lib/swift_static/wasi/libxml2.a" + fi +} + +main() { + local OPTIONS_LLVM_BIN="" + local OPTIONS_CLANG_BIN="" + local OPTIONS_SWIFT_BIN="" + + while [[ $# -gt 0 ]]; do + case "$1" in + --llvm-bin) + OPTIONS_LLVM_BIN="$2" + shift 2 + ;; + --clang-bin) + OPTIONS_CLANG_BIN="$2" + shift 2 + ;; + --swift-bin) + OPTIONS_SWIFT_BIN="$2" + shift 2 + ;; + --scheme) + OPTIONS_SCHEME="$2" + shift 2 + ;; + --help) + print_help + exit 0 + ;; + *) + echo "Unknown option: $1" + print_help + exit 1 + ;; + esac + done + + if [[ -z "$OPTIONS_LLVM_BIN" ]]; then + echo "Missing --llvm-bin option" + print_help + exit 1 + fi + + if [[ -z "$OPTIONS_SWIFT_BIN" ]]; then + echo "Missing --swift-bin option" + print_help + exit 1 + fi + + if [[ -z "$OPTIONS_CLANG_BIN" ]]; then + OPTIONS_CLANG_BIN="$OPTIONS_LLVM_BIN" + fi + + # NOTE: The llvm-cmake-options is a workaround for the issue on amazonlinux2 + # See https://github.com/apple/swift/commit/40c7268e8f7d402b27e3ad16a84180e07c37f92c + # NOTE: Add llvm-bin directory to PATH so that wasmstdlib.py can find FileCheck during tests + env PATH="$OPTIONS_LLVM_BIN:$OPTIONS_SWIFT_BIN:$PATH" "$SOURCE_PATH/swift/utils/build-script" \ + --build-subdir=WebAssembly \ + --release \ + --skip-build-llvm \ + --skip-build-swift \ + --skip-build-cmark \ + --skip-build-benchmarks \ + --skip-early-swift-driver \ + --build-wasm-stdlib \ + --skip-test-wasm-stdlib \ + --native-swift-tools-path="$OPTIONS_SWIFT_BIN" \ + --native-clang-tools-path="$OPTIONS_CLANG_BIN" \ + --native-llvm-tools-path="$OPTIONS_LLVM_BIN" \ + --extra-cmake-options="\ + -DSWIFT_STDLIB_TRACING=NO \ + -DSWIFT_STDLIB_HAS_ASL=NO \ + -DSWIFT_STDLIB_CONCURRENCY_TRACING=NO \ + -DSWIFT_RUNTIME_CRASH_REPORTER_CLIENT=NO \ + -DSWIFT_STDLIB_INSTALL_PARENT_MODULE_FOR_SHIMS=NO \ + " \ + --llvm-cmake-options="\ + -DCROSS_TOOLCHAIN_FLAGS_LLVM_NATIVE='-DCMAKE_C_COMPILER=clang;-DCMAKE_CXX_COMPILER=clang++' \ + " \ + --sccache + + local BUILD_TOOLS_ARGS=( + "$OPTIONS_LLVM_BIN" + "$OPTIONS_CLANG_BIN" + "$OPTIONS_SWIFT_BIN" + ) + + build_target_toolchain "${BUILD_TOOLS_ARGS[@]}" "wasm32-unknown-wasip1" "wasip1-wasm32" "wasm32-wasip1" "wasmstdlib" "wasip1" + build_target_toolchain "${BUILD_TOOLS_ARGS[@]}" "wasm32-unknown-wasip1-threads" "wasip1-threads-wasm32" "wasm32-wasip1-threads" "wasmthreadsstdlib" "wasip1" + + rsync -av "$WASI_SYSROOT_PATH/" "$PACKAGING_DIR/wasi-sysroot/" +} + +main "$@" diff --git a/schemes/release-6.2/build/run-test.sh b/schemes/release-6.2/build/run-test.sh new file mode 100755 index 0000000..701e6c6 --- /dev/null +++ b/schemes/release-6.2/build/run-test.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -euxo pipefail + +echo "Skipping test because we now run tests in build-script" diff --git a/schemes/release-6.2/manifest.json b/schemes/release-6.2/manifest.json new file mode 100644 index 0000000..dd8fabb --- /dev/null +++ b/schemes/release-6.2/manifest.json @@ -0,0 +1,7 @@ +{ + "update-checkout-scheme": "release/6.2", + "base-tag": "swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-14-a", + "icu4c": [], + "libxml2": [], + "swift-org-download-channel": "swift-6.2-branch" +}