Skip to content

Commit

Permalink
Auto merge of #33084 - alexcrichton:osx-python-sanity, r=michaelwoeri…
Browse files Browse the repository at this point in the history
…ster

Sanity check Python on OSX for LLDB tests

Two primary changes:

* Don't get past the configure stage if `python` isn't coming from `/usr/bin`
* Call `debugger.Terminate()` to prevent segfaults on newer versions of LLDB.

Closes #32994
  • Loading branch information
bors committed Apr 23, 2016
2 parents bb4b0d8 + cbe6292 commit ef57fb7
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 8 deletions.
13 changes: 13 additions & 0 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -823,6 +823,19 @@ then
fi
fi

# LLDB tests on OSX require /usr/bin/python, not something like Homebrew's
# /usr/local/bin/python. We're loading a compiled module for LLDB tests which is
# only compatible with the system.
case $CFG_BUILD in
*-apple-darwin)
CFG_LLDB_PYTHON=/usr/bin/python
;;
*)
CFG_LLDB_PYTHON=$CFG_PYTHON
;;
esac
putvar CFG_LLDB_PYTHON

step_msg "looking for target specific programs"

probe CFG_ADB adb
Expand Down
3 changes: 2 additions & 1 deletion mk/tests.mk
Original file line number Diff line number Diff line change
Expand Up @@ -619,7 +619,8 @@ CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) := \
--stage-id stage$(1)-$(2) \
--target $(2) \
--host $(3) \
--python $$(CFG_PYTHON) \
--docck-python $$(CFG_PYTHON) \
--lldb-python $$(CFG_LLDB_PYTHON) \
--gdb-version="$(CFG_GDB_VERSION)" \
--lldb-version="$(CFG_LLDB_VERSION)" \
--android-cross-path=$(CFG_ANDROID_CROSS_PATH) \
Expand Down
13 changes: 12 additions & 1 deletion src/bootstrap/build/check.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,19 @@ pub fn compiletest(build: &Build,

// FIXME: needs android support
cmd.arg("--android-cross-path").arg("");

// FIXME: CFG_PYTHON should probably be detected more robustly elsewhere
cmd.arg("--python").arg("python");
let python_default = "python";
cmd.arg("--docck-python").arg(python_default);

if build.config.build.ends_with("apple-darwin") {
// Force /usr/bin/python on OSX for LLDB tests because we're loading the
// LLDB plugin's compiled module which only works with the system python
// (namely not Homebrew-installed python)
cmd.arg("--lldb-python").arg("/usr/bin/python");
} else {
cmd.arg("--lldb-python").arg(python_default);
}

if let Some(ref vers) = build.gdb_version {
cmd.arg("--gdb-version").arg(vers);
Expand Down
1 change: 1 addition & 0 deletions src/etc/lldb_batchmode.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,4 +216,5 @@ def watchdog():
print("Aborting.", file=sys.stderr)
sys.exit(1)
finally:
debugger.Terminate()
script_file.close()
7 changes: 5 additions & 2 deletions src/tools/compiletest/src/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,11 @@ pub struct Config {
// The rustdoc executable
pub rustdoc_path: PathBuf,

// The python executable
pub python: String,
// The python executable to use for LLDB
pub lldb_python: String,

// The python executable to use for htmldocck
pub docck_python: String,

// The llvm FileCheck binary path
pub llvm_filecheck: Option<PathBuf>,
Expand Down
6 changes: 4 additions & 2 deletions src/tools/compiletest/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ pub fn parse_config(args: Vec<String> ) -> Config {
reqopt("", "run-lib-path", "path to target shared libraries", "PATH"),
reqopt("", "rustc-path", "path to rustc to use for compiling", "PATH"),
reqopt("", "rustdoc-path", "path to rustdoc to use for compiling", "PATH"),
reqopt("", "python", "path to python to use for doc tests", "PATH"),
reqopt("", "lldb-python", "path to python to use for doc tests", "PATH"),
reqopt("", "docck-python", "path to python to use for doc tests", "PATH"),
optopt("", "valgrind-path", "path to Valgrind executable for Valgrind tests", "PROGRAM"),
optflag("", "force-valgrind", "fail if Valgrind tests cannot be run under Valgrind"),
optopt("", "llvm-filecheck", "path to LLVM's FileCheck binary", "DIR"),
Expand Down Expand Up @@ -142,7 +143,8 @@ pub fn parse_config(args: Vec<String> ) -> Config {
run_lib_path: make_absolute(opt_path(matches, "run-lib-path")),
rustc_path: opt_path(matches, "rustc-path"),
rustdoc_path: opt_path(matches, "rustdoc-path"),
python: matches.opt_str("python").unwrap(),
lldb_python: matches.opt_str("lldb-python").unwrap(),
docck_python: matches.opt_str("docck-python").unwrap(),
valgrind_path: matches.opt_str("valgrind-path"),
force_valgrind: matches.opt_present("force-valgrind"),
llvm_filecheck: matches.opt_str("llvm-filecheck").map(|s| PathBuf::from(&s)),
Expand Down
4 changes: 2 additions & 2 deletions src/tools/compiletest/src/runtest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,7 @@ fn run_debuginfo_lldb_test(config: &Config, props: &TestProps, testpaths: &TestP
let lldb_script_path = rust_src_root.join("src/etc/lldb_batchmode.py");
cmd2procres(config,
testpaths,
Command::new(&config.python)
Command::new(&config.lldb_python)
.arg(&lldb_script_path)
.arg(test_executable)
.arg(debugger_script)
Expand Down Expand Up @@ -1835,7 +1835,7 @@ fn run_rustdoc_test(config: &Config, props: &TestProps, testpaths: &TestPaths) {

let res = cmd2procres(config,
testpaths,
Command::new(&config.python)
Command::new(&config.docck_python)
.arg(root.join("src/etc/htmldocck.py"))
.arg(out_dir)
.arg(&testpaths.file));
Expand Down

0 comments on commit ef57fb7

Please sign in to comment.