144 lines
6.3 KiB
YAML
144 lines
6.3 KiB
YAML
name: Native code generation
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- ".gitea/workflows/codegen.yml"
|
|
- "Cargo.toml"
|
|
- "Cargo.lock"
|
|
- "api/**"
|
|
- "codegen/**"
|
|
- "tools/codegen/**"
|
|
- "tools/generate_*.py"
|
|
- "tools/check_api_coverage.py"
|
|
- "tools/check_codegen_gate.py"
|
|
- "tools/check_milestone_08.py"
|
|
- "tools/check_milestone_09_issue_59.py"
|
|
- "tools/check_milestone_09_issue_60.py"
|
|
- "tools/check_milestone_09_issue_61.py"
|
|
- "tools/check_milestone_09_issue_62.py"
|
|
- "tools/check_milestone_09_issue_63.py"
|
|
- "crates/libremetaverse/src/agent_movement.rs"
|
|
- "crates/libremetaverse/src/inventory.rs"
|
|
- "crates/libremetaverse/src/inventory_manager.rs"
|
|
- "crates/libremetaverse/src/inventory_ais.rs"
|
|
- "crates/libremetaverse/src/inventory_ais_internal_semantics.rs"
|
|
- "docs/agent-movement.md"
|
|
- "docs/inventory.md"
|
|
- "crates/libremetaverse/Cargo.toml"
|
|
- "crates/libremetaverse/src/generated.rs"
|
|
- "crates/libremetaverse/src/packets.rs"
|
|
- "crates/libremetaverse/src/packet_*.rs"
|
|
- "crates/libremetaverse/src/*_catalog.rs"
|
|
- "tests/api-compile/**"
|
|
- "tests/compat/Cargo.toml"
|
|
- "tests/compat/build.rs"
|
|
- "tests/compat/src/**"
|
|
- "tests/compat/tests/wire_semantics.rs"
|
|
- "tests/compat/tests/appearance_visual_semantics.rs"
|
|
- "tests/compat/tests/inventory_store_semantics.rs"
|
|
- "tests/compat/tests/inventory_manager_semantics.rs"
|
|
- "tests/compat/tests/inventory_ais_semantics.rs"
|
|
- "tests/compat/tests/task_inventory_semantics.rs"
|
|
- "tests/compat/tests/misclassified_link_semantics.rs"
|
|
- "tests/upstream-tests.json"
|
|
pull_request:
|
|
paths:
|
|
- ".gitea/workflows/codegen.yml"
|
|
- "Cargo.toml"
|
|
- "Cargo.lock"
|
|
- "api/**"
|
|
- "codegen/**"
|
|
- "tools/codegen/**"
|
|
- "tools/generate_*.py"
|
|
- "tools/check_api_coverage.py"
|
|
- "tools/check_codegen_gate.py"
|
|
- "tools/check_milestone_08.py"
|
|
- "tools/check_milestone_09_issue_59.py"
|
|
- "tools/check_milestone_09_issue_60.py"
|
|
- "tools/check_milestone_09_issue_61.py"
|
|
- "tools/check_milestone_09_issue_62.py"
|
|
- "tools/check_milestone_09_issue_63.py"
|
|
- "crates/libremetaverse/src/agent_movement.rs"
|
|
- "crates/libremetaverse/src/inventory.rs"
|
|
- "crates/libremetaverse/src/inventory_manager.rs"
|
|
- "crates/libremetaverse/src/inventory_ais.rs"
|
|
- "crates/libremetaverse/src/inventory_ais_internal_semantics.rs"
|
|
- "docs/agent-movement.md"
|
|
- "docs/inventory.md"
|
|
- "crates/libremetaverse/Cargo.toml"
|
|
- "crates/libremetaverse/src/generated.rs"
|
|
- "crates/libremetaverse/src/packets.rs"
|
|
- "crates/libremetaverse/src/packet_*.rs"
|
|
- "crates/libremetaverse/src/*_catalog.rs"
|
|
- "tests/api-compile/**"
|
|
- "tests/compat/Cargo.toml"
|
|
- "tests/compat/build.rs"
|
|
- "tests/compat/src/**"
|
|
- "tests/compat/tests/wire_semantics.rs"
|
|
- "tests/compat/tests/appearance_visual_semantics.rs"
|
|
- "tests/compat/tests/inventory_store_semantics.rs"
|
|
- "tests/compat/tests/inventory_manager_semantics.rs"
|
|
- "tests/compat/tests/inventory_ais_semantics.rs"
|
|
- "tests/compat/tests/task_inventory_semantics.rs"
|
|
- "tests/compat/tests/misclassified_link_semantics.rs"
|
|
- "tests/upstream-tests.json"
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
deterministic:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
components: clippy,rustfmt
|
|
- name: Test diagnostics and byte-identical generation
|
|
run: cargo test -p libremetaverse-codegen
|
|
- name: Verify vendored hashes and checked-in output
|
|
run: cargo run -p libremetaverse-codegen -- check
|
|
- name: Verify authoritative API mappings and consumer fixture
|
|
run: |
|
|
python3 tools/generate_rust_mapping.py --check
|
|
python3 tools/generate_api_shims.py --check
|
|
python3 tools/check_api_coverage.py
|
|
python3 tools/check_milestone_08.py
|
|
python3 tools/check_milestone_09_issue_59.py
|
|
python3 tools/check_milestone_09_issue_60.py
|
|
python3 tools/check_milestone_09_issue_61.py
|
|
python3 tools/check_milestone_09_issue_62.py
|
|
python3 tools/check_milestone_09_issue_63.py
|
|
cargo check --manifest-path tests/api-compile/Cargo.toml --locked
|
|
- name: Test generated wire codecs and translated parity cases
|
|
run: |
|
|
cargo test -p libremetaverse --lib generated_codec_tests
|
|
cargo test -p libremetaverse --test packet_wire
|
|
cargo test -p libremetaverse --test packet_osd
|
|
cargo test -p libremetaverse-compat-tests --test wire_semantics
|
|
cargo test -p libremetaverse-compat-tests --test inventory_store_semantics
|
|
cargo test -p libremetaverse-compat-tests --test inventory_manager_semantics
|
|
cargo test -p libremetaverse-compat-tests --test inventory_ais_semantics
|
|
cargo test -p libremetaverse --lib inventory_ais_internal_semantics
|
|
cargo test -p libremetaverse-compat-tests --test task_inventory_semantics
|
|
cargo test -p libremetaverse-compat-tests --test misclassified_link_semantics
|
|
- name: Test generated visual and foliage catalogs
|
|
run: |
|
|
cargo test -p libremetaverse --test generated_catalogs
|
|
cargo test -p libremetaverse-compat-tests --test appearance_visual_semantics
|
|
- name: Test generated skeleton, attention, and genepool catalogs
|
|
run: |
|
|
cargo test -p libremetaverse --test generated_avatar_catalogs
|
|
cargo test -p libremetaverse --lib linden_skeleton
|
|
cargo test -p libremetaverse --lib joint_base_support_category
|
|
cargo test -p libremetaverse --lib joint_get_aliases_list
|
|
- name: Build and audit clean Rust-only release artifacts
|
|
run: |
|
|
cargo build -p libremetaverse-codegen --release --locked -j 1
|
|
python3 tools/check_codegen_gate.py --release-dir target/release
|
|
- name: Lint native generator
|
|
run: |
|
|
cargo clippy -p libremetaverse-codegen --all-targets -- -D warnings
|
|
cargo clippy -p libremetaverse --lib --no-deps -- -D warnings
|
|
- name: Prove normal consumer build does not execute generation
|
|
run: cargo build -p libremetaverse --locked
|