This commit implements the Cargo.lock policy for reproducible builds across all workspace members (pdftract-core, pdftract-cli, pdftract-py). Changes: - Add CONTRIBUTING.md with lockfile-update workflow documentation - Add .renovaterc.json for weekly lockfile-only PRs (human-gated) - Add crates/pdftract-core/README.md with rationale for checked-in lockfiles - Add notes/pdftract-49f8.md with verification note The Argo workflow updates (pdftract-ci.yaml) are committed separately in the declarative-config repo. Acceptance criteria: - PASS: Cargo.lock tracked by git, not in .gitignore - PASS: Argo workflow templates document --locked/--frozen requirements - WARN: Enforcement to be completed when placeholder templates are implemented - WARN: Binary reproducibility verification deferred to pdftract-build-binaries implementation Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
32 lines
1.1 KiB
Rust
32 lines
1.1 KiB
Rust
use flate2::write::ZlibEncoder;
|
|
use flate2::Compression;
|
|
use flate2::read::ZlibDecoder;
|
|
use std::io::{Write, Read};
|
|
|
|
fn main() {
|
|
let header = b"1 0 2 3";
|
|
let obj1 = b"42";
|
|
let obj2 = b"true";
|
|
let mut stream_data = Vec::new();
|
|
stream_data.extend_from_slice(header);
|
|
stream_data.extend_from_slice(obj1);
|
|
stream_data.extend_from_slice(obj2);
|
|
|
|
println!("Original data: {:?}", stream_data);
|
|
println!("Original data as string: {:?}", String::from_utf8_lossy(&stream_data));
|
|
|
|
let mut encoder = ZlibEncoder::new(Vec::new(), Compression::default());
|
|
encoder.write_all(&stream_data).unwrap();
|
|
let compressed = encoder.finish().unwrap();
|
|
|
|
println!("Compressed: {:?}", compressed);
|
|
println!("Compressed len: {}", compressed.len());
|
|
|
|
// Now try to decompress
|
|
let mut decoder = ZlibDecoder::new(&compressed[..]);
|
|
let mut decompressed = Vec::new();
|
|
decoder.read_to_end(&mut decompressed).unwrap();
|
|
|
|
println!("Decompressed: {:?}", decompressed);
|
|
println!("Decompressed as string: {:?}", String::from_utf8_lossy(&decompressed));
|
|
}
|