Support systems which don't have a "python" command. (#386)

Add support for finding an appropriate python command on systems which
don't have "python". Try "python3" and "python2.7".

Fixed #381.
This commit is contained in:
Dan Gohman
2018-07-02 13:02:00 -07:00
committed by GitHub
parent 1074e2c755
commit 276ba8b97d
3 changed files with 19 additions and 4 deletions

View File

@@ -46,7 +46,7 @@ else
needcheck=yes needcheck=yes
fi fi
if [ -n "$needcheck" ]; then if [ -n "$needcheck" ]; then
banner "$(python --version 2>&1), $(python3 --version 2>&1)" banner "Checking python source files"
"$topdir/lib/codegen/meta/check.sh" "$topdir/lib/codegen/meta/check.sh"
touch "$tsfile" || echo no target directory touch "$tsfile" || echo no target directory
fi fi

View File

@@ -26,6 +26,7 @@ fn main() {
let target_triple = env::var("TARGET").expect("The TARGET environment variable must be set"); let target_triple = env::var("TARGET").expect("The TARGET environment variable must be set");
let cretonne_targets = env::var("CRETONNE_TARGETS").ok(); let cretonne_targets = env::var("CRETONNE_TARGETS").ok();
let cretonne_targets = cretonne_targets.as_ref().map(|s| s.as_ref()); let cretonne_targets = cretonne_targets.as_ref().map(|s| s.as_ref());
let python = identify_python();
// Configure isa targets cfg. // Configure isa targets cfg.
match isa_targets(cretonne_targets, &target_triple) { match isa_targets(cretonne_targets, &target_triple) {
@@ -60,7 +61,7 @@ fn main() {
// Launch build script with Python. We'll just find python in the path. // Launch build script with Python. We'll just find python in the path.
// Use -B to disable .pyc files, because they cause trouble for vendoring // Use -B to disable .pyc files, because they cause trouble for vendoring
// scripts, and this is a build step that isn't run very often anyway. // scripts, and this is a build step that isn't run very often anyway.
let status = process::Command::new("python") let status = process::Command::new(python)
.current_dir(crate_dir) .current_dir(crate_dir)
.arg("-B") .arg("-B")
.arg(build_script) .arg(build_script)
@@ -73,6 +74,19 @@ fn main() {
} }
} }
fn identify_python() -> &'static str {
for python in &["python", "python3", "python2.7"] {
if process::Command::new(python)
.arg("--version")
.status()
.is_ok()
{
return python;
}
}
panic!("The Cretonne build requires Python (version 2.7 or version 3)");
}
/// Represents known ISA target. /// Represents known ISA target.
#[derive(Copy, Clone)] #[derive(Copy, Clone)]
enum Isa { enum Isa {

View File

@@ -5,7 +5,8 @@ cd "$topdir"
function runif { function runif {
if type "$1" > /dev/null; then if type "$1" > /dev/null; then
echo " === $1 ===" version=$("$1" --version 2>&1)
echo " === $1: $version ==="
"$@" "$@"
else else
echo "$1 not found" echo "$1 not found"
@@ -19,7 +20,7 @@ runif flake8 .
runif mypy --py2 build.py runif mypy --py2 build.py
# Python unit tests. # Python unit tests.
runif python -m unittest discover runif python2.7 -m unittest discover
# Then run the unit tests again with Python 3. # Then run the unit tests again with Python 3.
# We get deprecation warnings about assertRaisesRegexp which was renamed in # We get deprecation warnings about assertRaisesRegexp which was renamed in