2.4 KiB
Native data generation
libremetaverse-codegen is the Rust-only framework for the six source
generators present at LibreMetaverse commit
2aa70bb68513b39795da5d13c88f31b86e85a3ba. Normal builds compile only the
checked-in Rust outputs. They do not run this tool, invoke .NET or Roslyn, read
an environment-dependent path, access the network, or open the sibling
reference checkout.
Provenance inventory
sources.json is the machine-readable inventory. It records
the upstream repository and commit, source-generator hashes, every actual
AdditionalFile, its vendored path, SHA-256, format, and BSD-3-Clause license.
| Golden generator | Pinned data inputs |
|---|---|
| PacketSourceGenerator | message_template.msg |
| VisualParamGenerator | avatar_lad.xml |
| SkeletonGenerator | avatar_skeleton.xml |
| AttentionsGenerator | attentions.xml, attentionsN.xml |
| TreesGenerator | trees.xml, grass.xml |
| GenepoolGenerator | genepool.xml |
The C# project does not provide the optional visualparamtemplate.cs file.
The pinned VisualParam generator therefore uses the template embedded in its
own source; the inventory records that generator source and hash as provenance.
The files under inputs/ are exact, unmodified snapshots. Their license and
copyright attribution are covered by the repository
LICENSE.md. The generated source manifest repeats each hash
and license in its header and data table.
Commands
Regenerate every currently registered Rust output using only checked-in data:
cargo run -p libremetaverse-codegen -- generate
Verify hashes and reject stale output without writing:
cargo run -p libremetaverse-codegen -- check
Maintainers can refresh the vendored snapshots from an explicitly supplied checkout. The command verifies all six golden generator hashes and all input hashes before writing, so a different upstream revision is rejected:
cargo run -p libremetaverse-codegen -- vendor ../libremetaverse
Generation uses UTF-8 with an optional BOM, normalizes CRLF/CR to LF, rejects
NUL input, reports stable path:line:column: severity[code] diagnostics, sorts
manifest records by stable IDs, emits provenance-rich generated headers, and
always terminates output with one LF. Tests generate twice in memory and
require byte identity before comparing with the checked-in file.