MCPcopy Create free account
hub / github.com/f0rr0/oliphaunt / check_aot_crate_templates

Function check_aot_crate_templates

xtask/src/main.rs:5803–5859  ·  view source on GitHub ↗
(sources: &SourcesManifest)

Source from the content-addressed store, hash-verified

5801}
5802
5803fn check_aot_crate_templates(sources: &SourcesManifest) -> Result<()> {
5804 let expected = supported_aot_targets();
5805 for target in expected {
5806 let crate_dir = Path::new("crates/aot").join(target);
5807 ensure_file(&crate_dir.join("Cargo.toml"))?;
5808 ensure_file(&crate_dir.join("README.md"))?;
5809 ensure_file(&crate_dir.join("build.rs"))?;
5810 let lib = crate_dir.join("src/lib.rs");
5811 ensure_file(&lib)?;
5812
5813 let cargo_toml = fs::read_to_string(crate_dir.join("Cargo.toml"))
5814 .with_context(|| format!("read {}/Cargo.toml", crate_dir.display()))?;
5815 if !cargo_toml.contains("\"build.rs\"") || !cargo_toml.contains("\"artifacts/**\"") {
5816 bail!(
5817 "{} must include build.rs and generated artifacts/** when CI materializes the AOT crate",
5818 crate_dir.join("Cargo.toml").display()
5819 );
5820 }
5821
5822 let lib_text =
5823 fs::read_to_string(&lib).with_context(|| format!("read {}", lib.display()))?;
5824 for required in [
5825 "#![deny(unsafe_code)]",
5826 "include!(concat!(env!(\"OUT_DIR\")",
5827 ] {
5828 if !lib_text.contains(required) {
5829 bail!("{} is not a source-only AOT crate template", lib.display());
5830 }
5831 }
5832 if lib_text.contains("include_bytes!") || lib_text.contains("include_str!(\"../artifacts/")
5833 {
5834 bail!(
5835 "{} embeds generated AOT artifacts; generated artifacts belong only in CI/release workspaces",
5836 lib.display()
5837 );
5838 }
5839 let build_rs = fs::read_to_string(crate_dir.join("build.rs"))
5840 .with_context(|| format!("read {}/build.rs", crate_dir.display()))?;
5841 for required in [
5842 "PGLITE_OXIDE_GENERATED_AOT_DIR",
5843 "target/pglite-oxide/aot",
5844 "wasmer-version",
5845 sources.toolchain.wasmer.as_str(),
5846 "wasmer-wasix-version",
5847 sources.toolchain.wasmer_wasix.as_str(),
5848 ] {
5849 if !build_rs.contains(required) {
5850 bail!(
5851 "{} build.rs is missing source-only AOT marker {required}",
5852 crate_dir.display()
5853 );
5854 }
5855 }
5856 }
5857 println!("AOT crates are source-only templates for CI-generated release artifacts");
5858 Ok(())
5859}
5860

Callers 1

verify_committed_assetsFunction · 0.85

Calls 3

supported_aot_targetsFunction · 0.85
ensure_fileFunction · 0.85
joinMethod · 0.45

Tested by

no test coverage detected