From 8890061f8213d605b9dff36d9e950f7d081b74b5 Mon Sep 17 00:00:00 2001 From: Oliver Schneider Date: Fri, 18 May 2018 14:41:40 +0200 Subject: [PATCH] Use `version_check` crate instead of handcrafted version parsing --- serde/Cargo.toml | 3 +++ serde/build.rs | 44 +++++++++----------------------------------- 2 files changed, 12 insertions(+), 35 deletions(-) diff --git a/serde/Cargo.toml b/serde/Cargo.toml index a9a89c9c..22f5e5b8 100644 --- a/serde/Cargo.toml +++ b/serde/Cargo.toml @@ -23,6 +23,9 @@ serde_derive = { version = "1.0", optional = true, path = "../serde_derive" } [dev-dependencies] serde_derive = { version = "1.0", path = "../serde_derive" } +[build-dependencies] +version_check = "0.1.3" + ### FEATURES ################################################################# diff --git a/serde/build.rs b/serde/build.rs index c66bf0e4..4a6db049 100644 --- a/serde/build.rs +++ b/serde/build.rs @@ -1,39 +1,13 @@ -use std::env; -use std::process::Command; -use std::str::{self, FromStr}; +extern crate version_check; fn main() { - let rustc = match env::var_os("RUSTC") { - Some(rustc) => rustc, - None => return, + match version_check::is_min_version("1.26.0") { + Some((true, _)) => { + println!("cargo:rustc-cfg=integer128"); + }, + Some((false, _)) => {} + None => { + println!("could not figure out the rustc version"); + }, }; - - let output = match Command::new(rustc).arg("--version").output() { - Ok(output) => output, - Err(_) => return, - }; - - let version = match str::from_utf8(&output.stdout) { - Ok(version) => version, - Err(_) => return, - }; - - let mut pieces = version.split('.'); - if pieces.next() != Some("rustc 1") { - return; - } - - let next = match pieces.next() { - Some(next) => next, - None => return, - }; - - let minor = match u32::from_str(next) { - Ok(minor) => minor, - Err(_) => return, - }; - - if minor >= 26 { - println!("cargo:rustc-cfg=integer128"); - } }