Skip to content

Fix Travis Windows build #3418

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Jul 15, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ matrix:
- os: linux
env: BASE_TESTS=true
- os: windows
env: CARGO_INCREMENTAL=0 BASE_TESTS=true
env: CARGO_INCREMENTAL=0 BASE_TESTS=true OS_WINDOWS=true

# Builds that are only executed when a PR is r+ed or a try build is started
# We don't want to run these always because they go towards
Expand Down Expand Up @@ -81,9 +81,6 @@ matrix:
if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
- env: INTEGRATION=chronotope/chrono
if: repo =~ /^rust-lang\/rust-clippy$/ AND branch IN (auto, try)
allow_failures:
- os: windows
env: CARGO_INCREMENTAL=0 BASE_TESTS=true
# prevent these jobs with default env vars
exclude:
- os: linux
Expand All @@ -94,7 +91,11 @@ script:
- |
rm rust-toolchain
./setup-toolchain.sh
export LD_LIBRARY_PATH=$(rustc --print sysroot)/lib
if [ "$TRAVIS_OS_NAME" == "windows" ]; then
export PATH=$PATH:$(rustc --print sysroot)/bin
else
export LD_LIBRARY_PATH=$(rustc --print sysroot)/lib
fi
- |
if [ -z ${INTEGRATION} ]; then
travis_wait 30 ./ci/base-tests.sh && sleep 5
Expand All @@ -104,7 +105,7 @@ script:

after_success: |
#!/bin/bash
if [ $(uname) == Linux ]; then
if [ "$TRAVIS_OS_NAME" == "linux" ]; then
set -ex
if [ -z ${INTEGRATION} ]; then
./.github/deploy.sh
Expand Down
15 changes: 9 additions & 6 deletions ci/base-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,20 @@ export CARGO_TARGET_DIR=`pwd`/target/

# Check running clippy-driver without cargo
(
export LD_LIBRARY_PATH=$(rustc --print sysroot)/lib

# Check sysroot handling
sysroot=$(./target/debug/clippy-driver --print sysroot)
test $sysroot = $(rustc --print sysroot)

sysroot=$(./target/debug/clippy-driver --sysroot /tmp --print sysroot)
test $sysroot = /tmp
if [ -z $OS_WINDOWS ]; then
desired_sysroot=/tmp
else
desired_sysroot=C:/tmp
fi
sysroot=$(./target/debug/clippy-driver --sysroot $desired_sysroot --print sysroot)
test $sysroot = $desired_sysroot

sysroot=$(SYSROOT=/tmp ./target/debug/clippy-driver --print sysroot)
test $sysroot = /tmp
sysroot=$(SYSROOT=$desired_sysroot ./target/debug/clippy-driver --print sysroot)
test $sysroot = $desired_sysroot

# Make sure this isn't set - clippy-driver should cope without it
unset CARGO_MANIFEST_DIR
Expand Down
20 changes: 14 additions & 6 deletions src/driver.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ extern crate rustc_plugin;
use rustc_interface::interface;
use rustc_tools_util::*;

use std::path::Path;
use std::path::{Path, PathBuf};
use std::process::{exit, Command};

mod lintlist;
Expand Down Expand Up @@ -270,12 +270,19 @@ pub fn main() {
let sys_root_arg = arg_value(&orig_args, "--sysroot", |_| true);
let have_sys_root_arg = sys_root_arg.is_some();
let sys_root = sys_root_arg
.map(std::string::ToString::to_string)
.or_else(|| std::env::var("SYSROOT").ok())
.map(PathBuf::from)
.or_else(|| std::env::var("SYSROOT").ok().map(PathBuf::from))
.or_else(|| {
let home = option_env!("RUSTUP_HOME").or(option_env!("MULTIRUST_HOME"));
let toolchain = option_env!("RUSTUP_TOOLCHAIN").or(option_env!("MULTIRUST_TOOLCHAIN"));
home.and_then(|home| toolchain.map(|toolchain| format!("{}/toolchains/{}", home, toolchain)))
home.and_then(|home| {
toolchain.map(|toolchain| {
let mut path = PathBuf::from(home);
path.push("toolchains");
path.push(toolchain);
path
})
})
})
.or_else(|| {
Command::new("rustc")
Expand All @@ -284,9 +291,10 @@ pub fn main() {
.output()
.ok()
.and_then(|out| String::from_utf8(out.stdout).ok())
.map(|s| s.trim().to_owned())
.map(|s| PathBuf::from(s.trim()))
})
.or_else(|| option_env!("SYSROOT").map(String::from))
.or_else(|| option_env!("SYSROOT").map(PathBuf::from))
.map(|pb| pb.to_string_lossy().to_string())
.expect("need to specify SYSROOT env var during clippy compilation, or use rustup or multirust");

// Setting RUSTC_WRAPPER causes Cargo to pass 'rustc' as the first argument.
Expand Down
4 changes: 2 additions & 2 deletions tests/dogfood.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#[test]
fn dogfood() {
if option_env!("RUSTC_TEST_SUITE").is_some() {
if option_env!("RUSTC_TEST_SUITE").is_some() || cfg!(windows) {
return;
}
let root_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"));
Expand Down Expand Up @@ -30,7 +30,7 @@ fn dogfood() {

#[test]
fn dogfood_tests() {
if option_env!("RUSTC_TEST_SUITE").is_some() {
if option_env!("RUSTC_TEST_SUITE").is_some() || cfg!(windows) {
return;
}
let root_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"));
Expand Down