use openssl instead of sha256sum for build.rs (#568)

* use openssl instead of sha256sum for build.rs

* use a more portable flag for stat
This commit is contained in:
fdb-hiroshima 2019-05-10 16:15:30 +02:00 committed by Igor Galić
parent 90f6ef0380
commit 5b50f90d2b

View File

@ -5,7 +5,7 @@ use std::process::{Command, Stdio};
use std::{env, fs::*, io::Write, path::PathBuf}; use std::{env, fs::*, io::Write, path::PathBuf};
fn compute_static_hash() -> String { fn compute_static_hash() -> String {
//"find static/ -type f ! -path 'static/media/*' | sort | xargs stat --printf='%n %Y\n' | sha256sum" //"find static/ -type f ! -path 'static/media/*' | sort | xargs stat -c'%n %Y' | openssl dgst -r"
let find = Command::new("find") let find = Command::new("find")
.args(&["static/", "-type", "f", "!", "-path", "static/media/*"]) .args(&["static/", "-type", "f", "!", "-path", "static/media/*"])
@ -20,17 +20,19 @@ fn compute_static_hash() -> String {
.expect("failed sort command"); .expect("failed sort command");
let xargs = Command::new("xargs") let xargs = Command::new("xargs")
.args(&["stat", "--printf='%n %Y\n'"]) .args(&["stat", "-c'%n %Y'"])
.stdin(sort.stdout.unwrap()) .stdin(sort.stdout.unwrap())
.stdout(Stdio::piped()) .stdout(Stdio::piped())
.spawn() .spawn()
.expect("failed xargs command"); .expect("failed xargs command");
let sha = Command::new("sha256sum") let mut sha = Command::new("openssl")
.args(&["dgst", "-r"])
.stdin(xargs.stdout.unwrap()) .stdin(xargs.stdout.unwrap())
.output() .output()
.expect("failed sha256sum command"); .expect("failed openssl command");
sha.stdout.resize(64, 0);
String::from_utf8(sha.stdout).unwrap() String::from_utf8(sha.stdout).unwrap()
} }