(sources: &SourcesManifest)
| 5801 | } |
| 5802 | |
| 5803 | fn 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 |
no test coverage detected