From 9db6a41687bacde82585f127b43d418d5845e5c7 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 18 Apr 2016 15:45:45 -0700 Subject: etc: Add debugger.Terminate() to lldb_batchmode.py Right now on the most recent version of LLDB installed on OSX we'll segfault on all the LLDB tests if this isn't called (unfortunately). Hopefully we've updated LLDB on the bots to actually get this working everywhere! Closes #32994 --- src/etc/lldb_batchmode.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/etc/lldb_batchmode.py b/src/etc/lldb_batchmode.py index b1506285b3a..7bbb3577f8d 100644 --- a/src/etc/lldb_batchmode.py +++ b/src/etc/lldb_batchmode.py @@ -216,4 +216,5 @@ except IOError as e: print("Aborting.", file=sys.stderr) sys.exit(1) finally: + debugger.Terminate() script_file.close() -- cgit 1.4.1-3-g733a5 From cbe6292c58feb643917c0959f95173a3c312fbd4 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 19 Apr 2016 09:44:19 -0700 Subject: mk: Force system python for LLDB tests on OSX Force usage of /usr/bin/python whenever we run LLDB tests on OSX because it looks like no other Python will work. --- configure | 13 +++++++++++++ mk/tests.mk | 3 ++- src/bootstrap/build/check.rs | 13 ++++++++++++- src/tools/compiletest/src/common.rs | 7 +++++-- src/tools/compiletest/src/main.rs | 6 ++++-- src/tools/compiletest/src/runtest.rs | 4 ++-- 6 files changed, 38 insertions(+), 8 deletions(-) diff --git a/configure b/configure index fdef550a645..3def40621dd 100755 --- a/configure +++ b/configure @@ -819,6 +819,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 diff --git a/mk/tests.mk b/mk/tests.mk index 41b078efafc..b5ee9c9c328 100644 --- a/mk/tests.mk +++ b/mk/tests.mk @@ -616,7 +616,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) \ diff --git a/src/bootstrap/build/check.rs b/src/bootstrap/build/check.rs index f145a7149fb..ec97ebcc832 100644 --- a/src/bootstrap/build/check.rs +++ b/src/bootstrap/build/check.rs @@ -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); diff --git a/src/tools/compiletest/src/common.rs b/src/tools/compiletest/src/common.rs index 6ffc1e9ea11..81265f6ccaf 100644 --- a/src/tools/compiletest/src/common.rs +++ b/src/tools/compiletest/src/common.rs @@ -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, diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs index e92b0c87280..6cfe1de2650 100644 --- a/src/tools/compiletest/src/main.rs +++ b/src/tools/compiletest/src/main.rs @@ -70,7 +70,8 @@ pub fn parse_config(args: Vec ) -> 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"), @@ -140,7 +141,8 @@ pub fn parse_config(args: Vec ) -> 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)), diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index 6358d19ff09..2336727759a 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -776,7 +776,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) @@ -1901,7 +1901,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)); -- cgit 1.4.1-3-g733a5