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" - "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/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" - "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/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 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 - 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