$OpenBSD: patch-src_tools_cargo_src_cargo_core_compiler_context_compilation_files_rs,v 1.16 2021/01/01 09:02:54 semarie Exp $
For port tree, use a custom metadata to have known-in-advance hashes.
Use an environment variable to use alternate method.

Index: src/tools/cargo/src/cargo/core/compiler/context/compilation_files.rs
--- src/tools/cargo/src/cargo/core/compiler/context/compilation_files.rs.orig
+++ src/tools/cargo/src/cargo/core/compiler/context/compilation_files.rs
@@ -495,6 +495,19 @@ fn compute_metadata(
     if !should_use_metadata(bcx, unit) {
         return None;
     }
+
+    // Use specified hash if requested
+    if let Ok(_) = env::var("OPENBSD_PORTS_LANG_RUST") {
+        let name = unit.pkg.package_id().name().replace("-", "_");
+        let varname = format!("LIBR_METADATA_{}", name);
+        if let Ok(value) = env::var(&varname) {
+            if let Ok(metadata) = u64::from_str_radix(&value, 16) {
+                return Some(Metadata(metadata))
+            }
+            panic!("invalid value for {} environment variable", varname);
+        }
+    }
+
     let mut hasher = StableHasher::new();
 
     METADATA_VERSION.hash(&mut hasher);
