Skip to content

Commit

Permalink
Rollup merge of #39431 - alexcrichton:no-more-makefiles, r=brson
Browse files Browse the repository at this point in the history
Delete the makefile build system

This PR deletes the makefile build system in favor of the rustbuild build system. The beta has now been branched so 1.16 will continue to be buildable from the makefiles, but going forward 1.17 will only be buildable with rustbuild.

Rustbuild has been the default build system [since 1.15.0](rust-lang/rust#37817) and the makefiles were [proposed for deletion](https://internals.rust-lang.org/t/proposal-for-promoting-rustbuild-to-official-status/4368) at this time back in November of last year.

And now with the deletion of these makefiles we can start getting those sweet sweet improvements of using crates.io crates in the compiler!
  • Loading branch information
frewsxcv authored Feb 8, 2017
2 parents ab9a1a4 + 41904a0 commit ac64194
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 27 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
authors = ["The Rust Project Developers"]
name = "compiletest"
version = "0.0.0"
build = "build.rs"

[dependencies]
log = "0.3"
env_logger = { version = "0.3.5", default-features = false }
rustc-serialize = "0.3"
filetime = "0.1"
13 changes: 0 additions & 13 deletions build.rs

This file was deleted.

6 changes: 6 additions & 0 deletions src/header.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,15 @@ use extract_gdb_version;
pub struct EarlyProps {
pub ignore: bool,
pub should_fail: bool,
pub aux: Vec<String>,
}

impl EarlyProps {
pub fn from_file(config: &Config, testfile: &Path) -> Self {
let mut props = EarlyProps {
ignore: false,
should_fail: false,
aux: Vec::new(),
};

iter_header(testfile,
Expand All @@ -50,6 +52,10 @@ impl EarlyProps {
ignore_lldb(config, ln) ||
ignore_llvm(config, ln);

if let Some(s) = parse_aux_build(ln) {
props.aux.push(s);
}

props.should_fail = props.should_fail || parse_name_directive(ln, "should-fail");
});

Expand Down
53 changes: 40 additions & 13 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,19 @@
extern crate libc;
extern crate test;
extern crate getopts;

#[cfg(cargobuild)]
extern crate rustc_serialize;
#[cfg(not(cargobuild))]
extern crate serialize as rustc_serialize;

#[macro_use]
extern crate log;

#[cfg(cargobuild)]
extern crate env_logger;
extern crate filetime;

use std::env;
use std::ffi::OsString;
use std::fs;
use std::io;
use std::path::{Path, PathBuf};
use std::process::Command;
use filetime::FileTime;
use getopts::{optopt, optflag, reqopt};
use common::Config;
use common::{Pretty, DebugInfoGdb, DebugInfoLldb, Mode};
Expand All @@ -58,11 +53,7 @@ mod raise_fd_limit;
mod uidiff;

fn main() {
#[cfg(cargobuild)]
fn log_init() { env_logger::init().unwrap(); }
#[cfg(not(cargobuild))]
fn log_init() {}
log_init();
env_logger::init().unwrap();

let config = parse_config(env::args().collect());

Expand Down Expand Up @@ -478,7 +469,7 @@ pub fn make_test(config: &Config, testpaths: &TestPaths) -> test::TestDescAndFn
};

// Debugging emscripten code doesn't make sense today
let mut ignore = early_props.ignore;
let mut ignore = early_props.ignore || !up_to_date(config, testpaths, &early_props);
if (config.mode == DebugInfoGdb || config.mode == DebugInfoLldb) &&
config.target.contains("emscripten") {
ignore = true;
Expand All @@ -494,6 +485,42 @@ pub fn make_test(config: &Config, testpaths: &TestPaths) -> test::TestDescAndFn
}
}

fn stamp(config: &Config, testpaths: &TestPaths) -> PathBuf {
let stamp_name = format!("{}-H-{}-T-{}-S-{}.stamp",
testpaths.file.file_name().unwrap()
.to_str().unwrap(),
config.host,
config.target,
config.stage_id);
config.build_base.canonicalize()
.unwrap_or(config.build_base.clone())
.join(stamp_name)
}

fn up_to_date(config: &Config, testpaths: &TestPaths, props: &EarlyProps) -> bool {
let stamp = mtime(&stamp(config, testpaths));
let mut inputs = vec![
mtime(&testpaths.file),
mtime(&config.rustc_path),
];
for aux in props.aux.iter() {
inputs.push(mtime(&testpaths.file.parent().unwrap()
.join("auxiliary")
.join(aux)));
}
for lib in config.run_lib_path.read_dir().unwrap() {
let lib = lib.unwrap();
inputs.push(mtime(&lib.path()));
}
inputs.iter().any(|input| *input > stamp)
}

fn mtime(path: &Path) -> FileTime {
fs::metadata(path).map(|f| {
FileTime::from_last_modification_time(&f)
}).unwrap_or(FileTime::zero())
}

pub fn make_test_name(config: &Config, testpaths: &TestPaths) -> test::TestName {
// Convert a complete path to something like
//
Expand Down
2 changes: 2 additions & 0 deletions src/runtest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ pub fn run(config: Config, testpaths: &TestPaths) {
}

base_cx.complete_all();

File::create(::stamp(&config, &testpaths)).unwrap();
}

struct TestCx<'test> {
Expand Down

0 comments on commit ac64194

Please sign in to comment.