Skip to content

Commit 060cf48

Browse files
committed
Auto merge of #669 - wesleywiser:targets, r=Mark-Simulacrum
Add support for specifying the target to run This allows you to choose a target other than `x86_64-unknown-linux-gnu` on the current runners such as `i686-unknown-linux-musl`: ``` $ cargo run -- define-ex --crate-select=demo --cap-lints=forbid stable+target=i686-unknown-linux-musl beta+target=i686-unknown-linux-musl [2022-10-06T21:09:31Z INFO crater] command succeeded $ cargo run -- run-graph --threads 1 ... [2022-10-06T21:00:05Z INFO rustwide::toolchain] adding target i686-unknown-linux-musl for toolchain stable [2022-10-06T21:00:05Z INFO rustwide::cmd] running `Command { std: "/home/azureuser/disk1/crater/work/cargo-home/bin/rustup" "target" "add" "--toolchain" "stable" "i686-unknown-linux-musl", kill_on_drop: false }` [2022-10-06T21:00:05Z INFO rustwide::cmd] [stderr] info: downloading component 'rust-std' for 'i686-unknown-linux-musl' [2022-10-06T21:00:05Z INFO rustwide::cmd] [stderr] info: installing component 'rust-std' for 'i686-unknown-linux-musl' ... [2022-10-06T21:00:18Z INFO rustwide::cmd] [stderr] info: checking for self-updates [2022-10-06T21:00:18Z INFO rustwide::toolchain] adding target i686-unknown-linux-musl for toolchain beta [2022-10-06T21:00:18Z INFO rustwide::cmd] running `Command { std: "/home/azureuser/disk1/crater/work/cargo-home/bin/rustup" "target" "add" "--toolchain" "beta" "i686-unknown-linux-musl", kill_on_drop: false }` [2022-10-06T21:00:18Z INFO rustwide::cmd] [stderr] info: downloading component 'rust-std' for 'i686-unknown-linux-musl' [2022-10-06T21:00:19Z INFO rustwide::cmd] [stderr] info: installing component 'rust-std' for 'i686-unknown-linux-musl' [2022-10-06T21:00:21Z INFO crater::runner] running tasks in 1 threads... ... [2022-10-06T21:13:05Z INFO rustwide::cmd] running `Command { std: "docker" "create" "-v" "/home/azureuser/disk1/crater/work/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/home/azureuser/disk1/crater/work/builds/worker-0/source:/opt/rustwide/workdir:ro,Z" "-v" "/home/azureuser/disk1/crater/work/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/home/azureuser/disk1/crater/work/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "1000:998" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d1cd00eb6e6ea2a7969240779edeaeff35b24be85036c63b883ba933028a15f" "/opt/rustwide/cargo-home/bin/cargo" "+beta" "test" "--frozen" "--target" "i686-unknown-linux-musl", kill_on_drop: false }` ... [2022-10-06T21:13:05Z INFO rustwide::cmd] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.00s [2022-10-06T21:13:05Z INFO rustwide::cmd] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/i686-unknown-linux-musl/debug/deps/lazy_static-d189001dd9281e0a) [2022-10-06T21:13:05Z INFO rustwide::cmd] [stderr] Running tests/no_std.rs (/opt/rustwide/target/i686-unknown-linux-musl/debug/deps/no_std-a3be84aa37faf9f2) [2022-10-06T21:13:05Z INFO rustwide::cmd] [stderr] Running tests/test.rs (/opt/rustwide/target/i686-unknown-linux-musl/debug/deps/test-076bce8c3f654325) ... ```
2 parents bc3bc63 + b8536ed commit 060cf48

File tree

12 files changed

+58
-22
lines changed

12 files changed

+58
-22
lines changed

docs/bot-usage.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ following flags:
153153
by the experiment mode, e.g. `+cargoflags=-Zavoid-dev-deps`
154154
* `+patch={crate_name}={git_repo_url}={branch}`: patches all crates built by
155155
this toolchain to resolve the given crate from the given git repository and branch.
156+
* `+target={target_name}`: installs the specified target and passes `--target {target-name}`
157+
to Cargo when building, e.g. `+target=i686-unknown-linux-musl`.
156158

157159
## Commands reference
158160

src/agent/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ impl Capabilities {
5151
pub fn for_agent(db: &Database, agent: &str) -> Fallible<Self> {
5252
let caps = db.query(
5353
"SELECT capability FROM agent_capabilities WHERE agent_name = ?1",
54-
&[&agent],
54+
[&agent],
5555
|r| r.get::<_, String>(0),
5656
)?;
5757

@@ -153,7 +153,7 @@ fn run_experiment(
153153
db: &ResultsUploader,
154154
threads_count: usize,
155155
past_experiment: &mut Option<String>,
156-
) -> Result<(), (Option<Experiment>, Error)> {
156+
) -> Result<(), (Option<Box<Experiment>>, Error)> {
157157
let ex = agent.experiment().map_err(|e| (None, e))?;
158158

159159
if Some(&ex.name) != past_experiment.as_ref() {
@@ -177,7 +177,7 @@ fn run_experiment(
177177
crate::runner::run_ex(&ex, workspace, db, threads_count, &agent.config, &|| {
178178
agent.next_crate(&ex.name)
179179
})
180-
.map_err(|err| (Some(ex), err))?;
180+
.map_err(|err| (Some(Box::new(ex)), err))?;
181181
Ok(())
182182
}
183183

src/crates/lists.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ pub(crate) trait List {
4848
fn get(db: &Database) -> Fallible<Vec<Crate>> {
4949
let crates_results = db.query(
5050
"SELECT crate FROM crates WHERE list = ?1 ORDER BY rowid;",
51-
&[&Self::NAME],
51+
[&Self::NAME],
5252
|r| r.get::<_, String>(0),
5353
)?;
5454

src/db/migrations.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ pub fn execute(db: &mut Connection) -> Fallible<()> {
408408
}
409409
.with_context(|_| format!("error running migration: {}", name))?;
410410

411-
t.execute("INSERT INTO migrations (name) VALUES (?1)", &[&name])?;
411+
t.execute("INSERT INTO migrations (name) VALUES (?1)", [&name])?;
412412
t.commit()?;
413413

414414
info!("executed migration: {}", name);

src/experiments.rs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ impl Experiment {
268268
pub fn unfinished(db: &Database) -> Fallible<Vec<Experiment>> {
269269
let records = db.query(
270270
"SELECT * FROM experiments WHERE status != ?1 ORDER BY priority DESC, created_at;",
271-
&[&Status::Completed.to_str()],
271+
[&Status::Completed.to_str()],
272272
|r| ExperimentDBRecord::from_row(r),
273273
)?;
274274
records
@@ -283,7 +283,7 @@ impl Experiment {
283283
select latest_work_for from agents where ('agent:' || agents.name) = ?1
284284
) and status = ?2 \
285285
limit 1",
286-
&[&assignee.to_string(), Status::Running.to_str()],
286+
[&assignee.to_string(), Status::Running.to_str()],
287287
|r| ExperimentDBRecord::from_row(r),
288288
)?;
289289

@@ -481,11 +481,9 @@ impl Experiment {
481481
}
482482

483483
pub fn get(db: &Database, name: &str) -> Fallible<Option<Experiment>> {
484-
let record = db.get_row(
485-
"SELECT * FROM experiments WHERE name = ?1;",
486-
&[&name],
487-
|r| ExperimentDBRecord::from_row(r),
488-
)?;
484+
let record = db.get_row("SELECT * FROM experiments WHERE name = ?1;", [&name], |r| {
485+
ExperimentDBRecord::from_row(r)
486+
})?;
489487

490488
if let Some(record) = record {
491489
Ok(Some(record.into_experiment()?))
@@ -552,7 +550,7 @@ impl Experiment {
552550
let results_len: u32 = db
553551
.get_row(
554552
"SELECT COUNT(*) AS count FROM results WHERE experiment = ?1;",
555-
&[&self.name.as_str()],
553+
[&self.name.as_str()],
556554
|r| r.get("count"),
557555
)?
558556
.unwrap();
@@ -561,7 +559,7 @@ impl Experiment {
561559
.get_row(
562560
"SELECT COUNT(*) AS count FROM experiment_crates \
563561
WHERE experiment = ?1 AND skipped = 0;",
564-
&[&self.name.as_str()],
562+
[&self.name.as_str()],
565563
|r| r.get("count"),
566564
)?
567565
.unwrap();
@@ -573,7 +571,7 @@ impl Experiment {
573571
let results: Vec<(String, u32)> = db.query(
574572
"SELECT result, COUNT(*) FROM results \
575573
WHERE experiment = ?1 GROUP BY result;",
576-
&[&self.name.as_str()],
574+
[&self.name.as_str()],
577575
|r| Ok((r.get::<_, String>(0)?, r.get(1)?)),
578576
)?;
579577

@@ -596,7 +594,7 @@ impl Experiment {
596594
pub fn get_crates(&self, db: &Database) -> Fallible<Vec<Crate>> {
597595
db.query(
598596
"SELECT crate FROM experiment_crates WHERE experiment = ?1;",
599-
&[&self.name],
597+
[&self.name],
600598
|r| r.get(0),
601599
)?
602600
.into_iter()

src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ fn main() {
5050
"command failed"
5151
}
5252
);
53-
process::exit(if success { 0 } else { 1 });
53+
process::exit(i32::from(!success));
5454
}
5555

5656
fn main_() -> Fallible<()> {

src/results/db.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ impl<'a> ReadResults for DatabaseDB<'a> {
150150
"SELECT log, encoding FROM results \
151151
WHERE experiment = ?1 AND toolchain = ?2 AND crate = ?3 \
152152
LIMIT 1;",
153-
&[&ex.name, &toolchain.to_string(), &krate.id()],
153+
[&ex.name, &toolchain.to_string(), &krate.id()],
154154
|row| {
155155
let log: Vec<u8> = row.get("log")?;
156156
let encoding: String = row.get("encoding")?;
@@ -176,7 +176,7 @@ impl<'a> ReadResults for DatabaseDB<'a> {
176176
"SELECT result FROM results \
177177
WHERE experiment = ?1 AND toolchain = ?2 AND crate = ?3 \
178178
LIMIT 1;",
179-
&[&ex.name, &toolchain.to_string(), &krate.id()],
179+
[&ex.name, &toolchain.to_string(), &krate.id()],
180180
|row| row.get("result"),
181181
)?
182182
.pop();

src/runner/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ pub fn run_ex<DB: WriteResults + Sync>(
9999
if ex.mode == Mode::Clippy {
100100
tc.add_component(workspace, "clippy")?;
101101
}
102+
if let Some(requested_target) = &tc.target {
103+
tc.add_target(workspace, requested_target)?;
104+
}
102105
}
103106

104107
info!("running tasks in {} threads...", threads_count);

src/runner/test.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ fn run_cargo<DB: WriteResults>(
8989
let local_packages_id: HashSet<_> = local_packages.iter().map(|p| &p.id).collect();
9090

9191
let mut args = args.to_vec();
92+
if let Some(ref target) = ctx.toolchain.target {
93+
args.extend(["--target", target]);
94+
}
9295
if let Some(ref tc_cargoflags) = ctx.toolchain.cargoflags {
9396
args.extend(tc_cargoflags.split(' '));
9497
}

src/server/routes/webhooks/commands.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ pub fn run(
7171
{
7272
detected_start = Some(Toolchain {
7373
source: RustwideToolchain::ci(&build.base_sha, false),
74+
target: None,
7475
rustflags: None,
7576
rustdocflags: None,
7677
cargoflags: None,
@@ -79,6 +80,7 @@ pub fn run(
7980
});
8081
detected_end = Some(Toolchain {
8182
source: RustwideToolchain::ci(&build.merge_sha, false),
83+
target: None,
8284
rustflags: None,
8385
rustdocflags: None,
8486
cargoflags: None,
@@ -309,7 +311,7 @@ fn store_experiment_name(db: &Database, issue: &Issue, name: &str) -> Fallible<(
309311
fn default_experiment_name(db: &Database, issue: &Issue) -> Fallible<Option<String>> {
310312
let name = db.get_row(
311313
"SELECT experiment FROM saved_names WHERE issue = ?1",
312-
&[&issue.number],
314+
[&issue.number],
313315
|r| r.get(0),
314316
)?;
315317

0 commit comments

Comments
 (0)