From ec2bbb8e833d71119f853f3e1d3b3f9eea798cf7 Mon Sep 17 00:00:00 2001 From: Jordan Santell Date: Fri, 17 Feb 2017 12:04:45 -0800 Subject: [PATCH] Ensure minimum rustc version in a build script. r=nalexander (#326) Printing out failure to meet rustc version helps users during setup with a helpful message if using an older rustc. Rust version checking from http://stackoverflow.com/a/36607492. --- Cargo.toml | 4 ++++ build/version.rs | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 build/version.rs diff --git a/Cargo.toml b/Cargo.toml index 770b3c95..6cbe021a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,6 +8,10 @@ authors = [ ] name = "mentat" version = "0.4.0" +build = "build/version.rs" + +[build-dependencies] +rustc_version = "0.1.7" [dependencies] clap = "2.19.3" diff --git a/build/version.rs b/build/version.rs new file mode 100644 index 00000000..54f8b2a4 --- /dev/null +++ b/build/version.rs @@ -0,0 +1,26 @@ +// Copyright 2016 Mozilla +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use +// this file except in compliance with the License. You may obtain a copy of the +// License at http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software distributed +// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +extern crate rustc_version; + +use std::io::{self, Write}; +use std::process::exit; +use rustc_version::version_matches; + +/// MIN_VERSION should be changed when there's a new minimum version of rustc required +/// to build the project. +static MIN_VERSION: &'static str = ">= 1.15.1"; + +fn main() { + if !version_matches(MIN_VERSION) { + writeln!(&mut io::stderr(), "Mentat requires rustc {}", MIN_VERSION).unwrap(); + exit(1); + } +}