From 118912539f58fd31a30b20e0eb7cf0a34a75674a Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Sun, 24 Mar 2024 21:45:01 +0100 Subject: [PATCH] do not include asset meta data other than name/size/mode --- build.rs | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/build.rs b/build.rs index da93f18..97d251b 100644 --- a/build.rs +++ b/build.rs @@ -369,7 +369,7 @@ impl Target { ); let exe_path = Path::new(src_dir).join(exe); - archive.append_path(&exe_path).unwrap(); + append_file(archive, &exe_path); fs::remove_file(&exe_path).unwrap(); } @@ -393,7 +393,29 @@ impl Target { } fn stockfish_eval_file(name: &str, archive: &mut ar::Builder) { - archive - .append_path(Path::new("Stockfish").join("src").join(name)) - .unwrap(); + append_file(archive, Path::new("Stockfish").join("src").join(name)); +} + +fn append_file>(archive: &mut ar::Builder, path: P) { + let file = File::open(&path).unwrap(); + let metadata = file.metadata().unwrap(); + + let mut header = ar::Header::new( + path.as_ref() + .file_name() + .unwrap() + .to_str() + .unwrap() + .as_bytes() + .to_vec(), + metadata.len(), + ); + + #[cfg(unix)] + { + use std::os::unix::fs::MetadataExt; + header.set_mode(metadata.mode()); + } + + archive.append(&header, file).unwrap(); }