Skip to content

Revert visionOS changes and provide Copilot instruction improvements #20

Revert visionOS changes and provide Copilot instruction improvements

Revert visionOS changes and provide Copilot instruction improvements #20

name: Check visionOS
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test-visionos:
name: Test Ferric with visionOS Triplets
runs-on: macos-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/jod
# Install nightly Rust for -Zbuild-std support (required for tier 3 visionOS targets)
- name: Install Rust nightly with visionOS source
run: |
rustup toolchain install nightly --component rust-src
rustup default nightly
# Set up Xcode and visionOS SDK (required for visionOS compilation)
- name: Setup Xcode and verify visionOS SDK
run: |
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
# Verify visionOS SDK is available
if xcrun --sdk xros --show-sdk-path; then
echo "visionOS SDK found at: $(xcrun --sdk xros --show-sdk-path)"
else
echo "⚠️ visionOS SDK not found - may need Xcode 15+ with visionOS support"
fi
# Install required iOS targets for the bootstrap process
- run: rustup target add aarch64-apple-ios-sim
- run: npm ci
- run: npm run build
# Bootstrap host package to get weak-node-api and ferric-example with visionOS support
- run: npm run bootstrap --workspace react-native-node-api
env:
CMAKE_RN_TRIPLETS: arm64-apple-visionos,arm64-apple-visionos-sim
- name: Configure Cargo for visionOS tier 3 targets with build-std
run: |
# Create cargo config for build-std support (tier 3 visionOS targets)
# Per official docs: build-std requires nightly Cargo + rustc + rust-src component
mkdir -p packages/ferric-example/.cargo
cat > packages/ferric-example/.cargo/config.toml << 'EOF'
[unstable]
build-std = ["std", "panic_abort"]
[build]
target = ["aarch64-apple-visionos", "aarch64-apple-visionos-sim"]
[target.aarch64-apple-visionos]
linker = "clang"
[target.aarch64-apple-visionos-sim]
linker = "clang"
EOF
# Verify cargo config is properly set
echo "Cargo config created:"
cat packages/ferric-example/.cargo/config.toml
- name: Verify build-std setup and bootstrap ferric-example
run: |
# Verify nightly toolchain and components
echo "=== Rust Toolchain Info ==="
rustc --version
cargo --version
rustup component list --installed --toolchain nightly
echo "=== Testing visionOS SDK availability ==="
xcrun --sdk xros --show-sdk-path || echo "visionOS SDK not available - continuing anyway"
echo "=== Bootstrapping ferric-example with visionOS targets ==="
cd packages/ferric-example
ls -la .cargo/ || echo "No .cargo dir found"
cat .cargo/config.toml || echo "No config found"
cd ../..
# Bootstrap ferric-example with visionOS targets
npm run bootstrap --workspace @react-native-node-api/ferric-example
env:
CMAKE_RN_TRIPLETS: arm64-apple-visionos,arm64-apple-visionos-sim
FERRIC_TARGETS: aarch64-apple-visionos,aarch64-apple-visionos-sim
# visionOS SDK configuration
XROS_DEPLOYMENT_TARGET: "1.0"