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
24 changes: 15 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -543,7 +543,7 @@ jobs:
extension-artifacts-native-android:
name: Native Extensions (Android Packaging)
needs: [affected, extension-artifacts-native-android-static, extension-artifacts-native-linux]
if: ${{ !cancelled() && needs.affected.result == 'success' && needs.extension-artifacts-native-android-static.result == 'success' && needs.extension-artifacts-native-linux.result == 'success' && fromJson(needs.affected.outputs.extension_artifacts_native_matrix_android).include[0] != null }}
if: ${{ !cancelled() && !failure() && needs.affected.result == 'success' && needs.extension-artifacts-native-android-static.result == 'success' && needs.extension-artifacts-native-linux.result == 'success' && fromJson(needs.affected.outputs.extension_artifacts_native_matrix_android).include[0] != null }}
uses: ./.github/workflows/extension-artifacts-native.yml
with:
phase: android-package
Expand Down Expand Up @@ -591,7 +591,7 @@ jobs:
needs:
- affected
- liboliphaunt-wasix-runtime
if: ${{ !cancelled() && needs.affected.result == 'success' && needs.liboliphaunt-wasix-runtime.result == 'success' && contains(fromJson(needs.affected.outputs.jobs), 'extension-artifacts-wasix') }}
if: ${{ !cancelled() && !failure() && needs.affected.result == 'success' && needs.liboliphaunt-wasix-runtime.result == 'success' && contains(fromJson(needs.affected.outputs.jobs), 'extension-artifacts-wasix') }}
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.affected.outputs.extension_artifacts_wasix_matrix) }}
Expand Down Expand Up @@ -704,7 +704,7 @@ jobs:
mobile-extension-packages-android:
name: Extension Packages (Android)
needs: [affected, extension-artifacts-native-android]
if: ${{ !cancelled() && needs.affected.result == 'success' && needs.extension-artifacts-native-android.result == 'success' && needs.affected.outputs.mobile_extension_package_native_targets_android_csv != '' }}
if: ${{ !cancelled() && !failure() && needs.affected.result == 'success' && needs.extension-artifacts-native-android.result == 'success' && needs.affected.outputs.mobile_extension_package_native_targets_android_csv != '' }}
uses: ./.github/workflows/mobile-extension-packages.yml
with:
cache-save-if: ${{ needs.affected.outputs.cache_save_if == 'true' }}
Expand All @@ -716,7 +716,7 @@ jobs:
mobile-extension-packages-ios:
name: Extension Packages (iOS)
needs: [affected, extension-artifacts-native-ios]
if: ${{ !cancelled() && needs.affected.result == 'success' && needs.extension-artifacts-native-ios.result == 'success' && needs.affected.outputs.mobile_extension_package_native_targets_ios_csv != '' }}
if: ${{ !cancelled() && !failure() && needs.affected.result == 'success' && needs.extension-artifacts-native-ios.result == 'success' && needs.affected.outputs.mobile_extension_package_native_targets_ios_csv != '' }}
uses: ./.github/workflows/mobile-extension-packages.yml
with:
cache-save-if: ${{ needs.affected.outputs.cache_save_if == 'true' }}
Expand Down Expand Up @@ -1102,7 +1102,7 @@ jobs:
- liboliphaunt-native-desktop
- liboliphaunt-native-ios
- liboliphaunt-native-ios-abi
if: ${{ !cancelled() && needs.affected.result == 'success' && needs.liboliphaunt-native-android.result == 'success' && needs.liboliphaunt-native-android-abi.result == 'success' && needs.liboliphaunt-native-desktop.result == 'success' && needs.liboliphaunt-native-ios.result == 'success' && needs.liboliphaunt-native-ios-abi.result == 'success' && contains(fromJson(needs.affected.outputs.jobs), 'liboliphaunt-native-release-assets') }}
if: ${{ !cancelled() && !failure() && needs.affected.result == 'success' && needs.liboliphaunt-native-android.result == 'success' && needs.liboliphaunt-native-android-abi.result == 'success' && needs.liboliphaunt-native-desktop.result == 'success' && needs.liboliphaunt-native-ios.result == 'success' && needs.liboliphaunt-native-ios-abi.result == 'success' && contains(fromJson(needs.affected.outputs.jobs), 'liboliphaunt-native-release-assets') }}
runs-on: ubuntu-24.04
timeout-minutes: 30
steps:
Expand Down Expand Up @@ -1515,7 +1515,7 @@ jobs:
- affected
- liboliphaunt-native-ios-abi
- swift-bindings
if: ${{ !cancelled() && needs.affected.result == 'success' && needs.liboliphaunt-native-ios-abi.result == 'success' && needs.swift-bindings.result == 'success' && contains(fromJson(needs.affected.outputs.jobs), 'swift-sdk-package') }}
if: ${{ !cancelled() && !failure() && needs.affected.result == 'success' && needs.liboliphaunt-native-ios-abi.result == 'success' && needs.swift-bindings.result == 'success' && contains(fromJson(needs.affected.outputs.jobs), 'swift-sdk-package') }}
runs-on: ubuntu-24.04
timeout-minutes: 90
steps:
Expand Down Expand Up @@ -2274,7 +2274,7 @@ jobs:
- affected
- liboliphaunt-wasix-runtime
- liboliphaunt-wasix-aot
if: ${{ !cancelled() && needs.affected.result == 'success' && needs.liboliphaunt-wasix-runtime.result == 'success' && needs.liboliphaunt-wasix-aot.result == 'success' && contains(fromJson(needs.affected.outputs.jobs), 'liboliphaunt-wasix-release-assets') && (github.event_name != 'workflow_dispatch' || inputs.wasm_target == 'all') }}
if: ${{ !cancelled() && !failure() && needs.affected.result == 'success' && needs.liboliphaunt-wasix-runtime.result == 'success' && needs.liboliphaunt-wasix-aot.result == 'success' && contains(fromJson(needs.affected.outputs.jobs), 'liboliphaunt-wasix-release-assets') && (github.event_name != 'workflow_dispatch' || inputs.wasm_target == 'all') }}
runs-on: ubuntu-24.04
timeout-minutes: 30
steps:
Expand Down Expand Up @@ -2327,6 +2327,12 @@ jobs:
rsync -a "$raw_target_dir/" "$destination/"
done

- name: Download qualified Windows engine
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
name: liboliphaunt-wasix-windows-engine
path: .

- name: Package WASIX release assets
env:
OLIPHAUNT_MOON_TRANSFERRED_DEPS_JSON: '["liboliphaunt-wasix:runtime-portable", "liboliphaunt-wasix:runtime-aot"]'
Expand Down Expand Up @@ -3018,7 +3024,7 @@ jobs:
- liboliphaunt-native-ios-abi
- react-native-sdk-package
- swift-sdk-package
if: ${{ !cancelled() && needs.affected.result == 'success' && needs.js-sdk-package.result == 'success' && needs.mobile-extension-packages-ios.result == 'success' && needs.liboliphaunt-native-ios.result == 'success' && needs.liboliphaunt-native-ios-abi.result == 'success' && needs.react-native-sdk-package.result == 'success' && needs.swift-sdk-package.result == 'success' && contains(fromJson(needs.affected.outputs.jobs), 'mobile-build-ios') }}
if: ${{ !cancelled() && !failure() && needs.affected.result == 'success' && needs.js-sdk-package.result == 'success' && needs.mobile-extension-packages-ios.result == 'success' && needs.liboliphaunt-native-ios.result == 'success' && needs.liboliphaunt-native-ios-abi.result == 'success' && needs.react-native-sdk-package.result == 'success' && needs.swift-sdk-package.result == 'success' && contains(fromJson(needs.affected.outputs.jobs), 'mobile-build-ios') }}
runs-on: macos-26
timeout-minutes: 180
env:
Expand Down Expand Up @@ -3344,7 +3350,7 @@ jobs:
needs:
- affected
- mobile-build-ios
if: ${{ !cancelled() && needs.affected.result == 'success' && needs.mobile-build-ios.result == 'success' && contains(fromJson(needs.affected.outputs.jobs), 'mobile-build-ios') }}
if: ${{ !cancelled() && !failure() && needs.affected.result == 'success' && needs.mobile-build-ios.result == 'success' && contains(fromJson(needs.affected.outputs.jobs), 'mobile-build-ios') }}
runs-on: macos-26
timeout-minutes: 45
steps:
Expand Down
120 changes: 113 additions & 7 deletions .github/workflows/wasix-host.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,95 @@ defaults:
run:
shell: bash
jobs:
windows-engine:
name: WASIX Windows engine
if: ${{ contains(inputs.matrix, 'windows-x64-msvc') }}
runs-on: windows-2025-vs2026
timeout-minutes: 40
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
persist-credentials: false
- uses: ./.github/actions/setup-moon
with:
cache-partition: wasix-windows-engine
- uses: ./.github/actions/setup-rust
with:
cache-save-if: ${{ inputs.cache-save-if }}
tools: cargo-nextest@0.9.137
- uses: ./.github/actions/setup-msvc
- name: Produce and test pinned Windows engine
run: .github/scripts/run-moon-targets.sh liboliphaunt-wasix:engine-test
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: liboliphaunt-wasix-windows-engine
include-hidden-files: true
path: |
target/oliphaunt-wasix/engine/windows-x64-msvc/oliphaunt_wee8.dll
target/oliphaunt-wasix/engine/windows-x64-msvc/cache-producer.exe
target/oliphaunt-wasix/engine/windows-x64-msvc/source.json
target/oliphaunt-wasix/engine/windows-x64-msvc/LICENSE.v8
src/wasix/runtime/engine/crates/*/upstream/**
src/wasix/runtime/engine/crates/wasmer/prebuilt/embedded_bindings.rs
if-no-files-found: error
windows-caches:
name: WASIX Windows baseline caches
needs: windows-engine
if: ${{ contains(inputs.matrix, 'windows-x64-msvc') }}
runs-on: ubuntu-24.04
timeout-minutes: 90
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
persist-credentials: false
- uses: ./.github/actions/setup-moon
with:
cache-partition: wasix-windows-caches
- uses: ./.github/actions/setup-rust
with:
cache-save-if: ${{ inputs.cache-save-if }}
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
name: liboliphaunt-wasix-windows-engine
path: .
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
name: liboliphaunt-wasix-runtime-portable
path: .
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
if: ${{ contains(fromJson(inputs.job-targets)['liboliphaunt-wasix-aot'], 'postgres-tools-wasix:build-aot') }}
with:
name: postgres-tools-wasix-compiler-output
path: target/postgres-tools/wasix/assets
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
if: ${{ contains(fromJson(inputs.job-targets)['liboliphaunt-wasix-aot'], 'extension-artifacts-wasix:build-aot') }}
with:
name: extensions-wasix-compiler-output
path: target/extensions/wasix/assets
- name: Set up CPU profile producer
run: sudo apt-get update && sudo apt-get install --no-install-recommends -y wine64 libz-mingw-w64 qemu-user
- name: Produce and read genuine SSE4.1 native caches
env:
BUILD_TOOLS: ${{ contains(fromJson(inputs.job-targets)['liboliphaunt-wasix-aot'], 'postgres-tools-wasix:build-aot') }}
BUILD_EXTENSIONS: ${{ contains(fromJson(inputs.job-targets)['liboliphaunt-wasix-aot'], 'extension-artifacts-wasix:build-aot') }}
run: |
products=(runtime)
if [ "$BUILD_TOOLS" = true ]; then products+=(tools); fi
if [ "$BUILD_EXTENSIONS" = true ]; then products+=(extensions); fi
bun src/wasix/runtime/engine/windows/build-caches.mts "${products[@]}"
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: liboliphaunt-wasix-windows-baseline-caches
path: target/oliphaunt-wasix/engine/windows-x64-msvc/cache/sse41
if-no-files-found: error
build:
name: WASIX host (${{ matrix.target_id }})
runs-on: ${{ matrix.os }}
needs: [windows-engine, windows-caches]
# Linux/macOS must still run when Windows producers are skipped or fail.
if: ${{ !cancelled() }}
timeout-minutes: 240
strategy:
fail-fast: false
Expand All @@ -52,11 +138,34 @@ jobs:
uses: ./.github/actions/setup-rust
with:
cache-save-if: ${{ inputs.cache-save-if }}
tools: ${{ runner.os == 'Windows' && 'cargo-nextest@0.9.137' || '' }}

- name: Set up MSVC
if: ${{ runner.os == 'Windows' }}
uses: ./.github/actions/setup-msvc

- name: Download same-run Windows engine
if: ${{ runner.os == 'Windows' }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
name: liboliphaunt-wasix-windows-engine
path: .
- name: Download same-run Windows baseline caches
if: ${{ runner.os == 'Windows' }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
name: liboliphaunt-wasix-windows-baseline-caches
path: target/oliphaunt-wasix/engine/windows-x64-msvc/cache/sse41
- name: Set up macOS acquisition and smoke timeout
if: ${{ runner.os == 'macOS' }}
run: |
command -v bash
bash --version
brew list coreutils >/dev/null 2>&1 || HOMEBREW_NO_AUTO_UPDATE=1 brew install coreutils

- name: Prepare engine source
run: .github/scripts/run-moon-targets.sh liboliphaunt-wasix:engine-sources

- name: Download portable WASIX build outputs
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
Expand All @@ -78,6 +187,7 @@ jobs:
path: target/extensions/wasix/assets

- name: Install Wasmer LLVM 22.1 for AOT generation
if: ${{ runner.os != 'Windows' }}
uses: ./.github/actions/setup-wasmer-llvm
with:
cache-save-if: ${{ inputs.cache-save-if }}
Expand All @@ -89,7 +199,8 @@ jobs:
- name: Build, validate, and smoke target AOT artifacts
env:
AOT_TARGET: ${{ matrix.target }}
OLIPHAUNT_MOON_TRANSFERRED_DEPS_JSON: '["liboliphaunt-wasix:runtime-portable", "postgres-tools-wasix:compiler-output", "extension-artifacts-wasix:compiler-output"]'
# The uploaded engine already passed engine-test in its producer job.
OLIPHAUNT_MOON_TRANSFERRED_DEPS_JSON: '["liboliphaunt-wasix:runtime-portable", "postgres-tools-wasix:compiler-output", "extension-artifacts-wasix:compiler-output", "liboliphaunt-wasix:engine-test", "liboliphaunt-wasix:engine-build"]'
run: .github/scripts/run-planned-moon-job.sh liboliphaunt-wasix-aot

- name: Upload target PostgreSQL WASIX tools
Expand Down Expand Up @@ -150,11 +261,6 @@ jobs:
path: target/extensions/wasix/release-assets
merge-multiple: true

- name: Set up macOS smoke timeout
if: ${{ contains(fromJson(inputs.napi-targets), matrix.target_id) && runner.os == 'macOS' }}
shell: bash
run: brew list coreutils >/dev/null 2>&1 || HOMEBREW_NO_AUTO_UPDATE=1 brew install coreutils

- name: Build WASIX Node-API release assets
if: ${{ contains(fromJson(inputs.napi-targets), matrix.target_id) }}
shell: bash
Expand All @@ -165,7 +271,7 @@ jobs:
OLIPHAUNT_WASIX_EXTENSION_ARTIFACT_ROOT: ${{ github.workspace }}/target/extension-artifacts
OLIPHAUNT_WASIX_GENERATED_ASSETS_DIR: ${{ github.workspace }}/target/oliphaunt-wasix/assets
OLIPHAUNT_WASIX_NAPI_ARTIFACT_SOURCE_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
OLIPHAUNT_MOON_TRANSFERRED_DEPS_JSON: '["extension-artifacts-wasix:build-target", "extension-artifacts-wasix:build-aot", "liboliphaunt-wasix:runtime-aot"]'
OLIPHAUNT_MOON_TRANSFERRED_DEPS_JSON: '["liboliphaunt-wasix:engine-build", "extension-artifacts-wasix:build-target", "extension-artifacts-wasix:build-aot", "liboliphaunt-wasix:runtime-aot"]'
run: .github/scripts/run-planned-moon-job.sh wasix-napi

- name: Upload WASIX Node-API release assets
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ node_modules/
/src/docs/out/
/src/wasix/runtime/crates/assets/assets/
/src/wasix/runtime/crates/aot/*/artifacts/
/src/wasix/runtime/engine/crates/*/upstream/
/src/wasix/runtime/engine/crates/*/.prepared.json
/src/wasix/runtime/engine/crates/*/prebuilt/
/src/native/sdks/react-native/ios/vendor/oliphaunt-swift/
/src/native/sdks/react-native/ios/vendor/liboliphaunt.xcframework/
**/.DS_Store
Expand Down
4 changes: 4 additions & 0 deletions .moon/tasks/inputs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ fileGroups:
- "/src/third-party/postgres/COPYRIGHT"
- "/src/third-party/icu/LICENSE"
- "/src/third-party/openssl/LICENSE.txt"
- "/src/wasix/runtime/engine/licenses/Wasmer-LICENSE"
- "/src/wasix/runtime/engine/licenses/V8-LICENSES.txt"
packaging-source:
- "/tools/packaging/*.{mjs,mts,sh}"
- "!/tools/packaging/*.test.{mjs,mts,sh}"
Expand All @@ -42,6 +44,8 @@ fileGroups:
- "/src/extensions/contrib/*.toml"
- "/src/extensions/external/**/{recipe,source}.toml"
- "/src/third-party/postgres/source.toml"
- "/src/wasix/runtime/engine/source.toml"
- "/src/wasix/runtime/engine/contract.mts"
- "/tools/release/release-graph.mts"
- "/tools/release/release-history.mts"
- "/src/extensions/artifacts/packages/tools/contrib-carriers.mts"
Expand Down
Loading
Loading