read protoc version pin instead of reading from env vars

This commit is contained in:
Ding Xiang Fei
2018-06-20 11:43:56 +08:00
committed by Romain Ruetschi
parent b4ee79f184
commit 51800be20c

View File

@ -2,7 +2,7 @@
extern crate protoc_rust; extern crate protoc_rust;
#[cfg(feature = "serialization-protobuf")] #[cfg(feature = "serialization-protobuf")]
fn assert_protobuf_version(version: &str) { fn assert_protobuf_version(version: String) {
use std::process::{Command, Stdio}; use std::process::{Command, Stdio};
let protoc = Command::new("protoc") let protoc = Command::new("protoc")
.stdin(Stdio::null()) .stdin(Stdio::null())
@ -15,8 +15,7 @@ fn assert_protobuf_version(version: &str) {
assert!(version_output.status.success()); assert!(version_output.status.success());
assert_eq!( assert_eq!(
String::from_utf8(version_output.stdout).unwrap().trim(), String::from_utf8(version_output.stdout).unwrap().trim(),
version.to_string().trim(), version.trim()
"protoc version must be 3.5.1"
); );
} }
@ -33,7 +32,13 @@ fn build_protobuf(out_dir: &str, input: &[&str], includes: &[&str]) {
#[cfg(feature = "serialization-protobuf")] #[cfg(feature = "serialization-protobuf")]
fn build_protobuf_schemata() { fn build_protobuf_schemata() {
assert_protobuf_version(env!("PROTOC_VERSION")); use std::fs::File;
use std::io::Read;
let mut version_string = String::new();
let mut version_pin =
File::open("PROTOC_VERSION").expect("protoc version pin `PROTOC_VERSION` file is missing");
version_pin.read_to_string(&mut version_string).expect("cannot read protoc pin file");
assert_protobuf_version(version_string);
build_protobuf("src/proto", &["protobuf/proof.proto"], &[]); build_protobuf("src/proto", &["protobuf/proof.proto"], &[]);
} }