Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/ofborg
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 4b0be8becb1e^
Choose a base ref
...
head repository: NixOS/ofborg
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: d67d6b2d8137
Choose a head ref
  • 2 commits
  • 3 files changed
  • 1 contributor

Commits on Sep 8, 2018

  1. Copy the full SHA
    4b0be8b View commit details
  2. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    d67d6b2 View commit details
Showing with 83 additions and 19 deletions.
  1. +21 −0 ofborg/src/tasks/eval/mod.rs
  2. +42 −1 ofborg/src/tasks/eval/stdenvs.rs
  3. +20 −18 ofborg/src/tasks/massrebuilder.rs
21 changes: 21 additions & 0 deletions ofborg/src/tasks/eval/mod.rs
Original file line number Diff line number Diff line change
@@ -1,2 +1,23 @@
pub struct EvaluationResult {
pub tags: Option<TagDiff>,
}

pub struct TagDiff {
pub add: Vec<String>,
pub delete: Vec<String>,
}

pub trait StraddledEvaluationTask: Sized {
fn before_on_target_branch_message(&self) -> String;
fn on_target_branch(&mut self);

fn before_after_merge_message(&self) -> String;
fn after_merge(&mut self);

fn results(self) -> EvaluationResult;
}

pub mod maintainers;

pub mod stdenvs;
pub use self::stdenvs::Stdenvs;
43 changes: 42 additions & 1 deletion ofborg/src/tasks/eval/stdenvs.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@

use std::path::PathBuf;
use tasks::eval::EvaluationResult;
use tasks::eval::StraddledEvaluationTask;
use tasks::eval::TagDiff;
use ofborg::nix;
use ofborg::files::file_to_str;
use ofborg::tagger::StdenvTagger;



enum StdenvFrom {
Before,
@@ -147,3 +152,39 @@ mod tests {
assert!(stdenv.are_same());
}
}

impl StraddledEvaluationTask for Stdenvs {
fn before_on_target_branch_message(&self) -> String{
String::from("Identifying target branch's stdenvs")
}

fn on_target_branch(&mut self) {
self.identify_before();
}

fn before_after_merge_message(&self) -> String{
String::from("Identifying new stdenvs")
}

fn after_merge(&mut self) {
self.identify_after();
}

fn results(self) -> EvaluationResult {
if self.are_same() {
return EvaluationResult {
tags: None,
};
} else {
let mut stdenvtagger = StdenvTagger::new();
stdenvtagger.changed(self.changed());

return EvaluationResult {
tags: Some(TagDiff {
add: stdenvtagger.tags_to_add(),
delete: stdenvtagger.tags_to_remove(),
}),
};
}
}
}
38 changes: 20 additions & 18 deletions ofborg/src/tasks/massrebuilder.rs
Original file line number Diff line number Diff line change
@@ -17,14 +17,17 @@ use ofborg::acl::ACL;
use ofborg::stats;
use ofborg::stats::Event;
use ofborg::worker;
use ofborg::tagger::{StdenvTagger, RebuildTagger, PathsTagger, PkgsAddedRemovedTagger};
use ofborg::tagger::{RebuildTagger, PathsTagger, PkgsAddedRemovedTagger};
use ofborg::outpathdiff::{OutPaths, OutPathDiff};
use ofborg::evalchecker::EvalChecker;
use ofborg::commitstatus::CommitStatus;
use ofborg::commentparser::Subset;
use tasks::eval::StraddledEvaluationTask;
use tasks::eval::EvaluationResult;
use amqp::protocol::basic::{Deliver, BasicProperties};
use hubcaps;


pub struct MassRebuildWorker<E> {
cloner: checkout::CachedCloner,
nix: nix::Nix,
@@ -190,14 +193,12 @@ impl<E: stats::SysEvents + 'static> worker::SimpleWorker for MassRebuildWorker<E
info!("Checking out target branch {}", &target_branch);
let refpath = co.checkout_origin_ref(target_branch.as_ref()).unwrap();

let mut stdenvs = eval::Stdenvs::new(self.nix.clone(), PathBuf::from(&refpath));
overall_status.set_with_description(
"Checking original stdenvs",
&stdenvs.before_on_target_branch_message(),
hubcaps::statuses::State::Pending,
);


let mut stdenvs = eval::Stdenvs::new(self.nix.clone(), PathBuf::from(&refpath));
stdenvs.identify_before();
stdenvs.on_target_branch();

let mut rebuildsniff = OutPathDiff::new(self.nix.clone(), PathBuf::from(&refpath));

@@ -286,11 +287,10 @@ impl<E: stats::SysEvents + 'static> worker::SimpleWorker for MassRebuildWorker<E
}

overall_status.set_with_description(
"Checking new stdenvs",
&stdenvs.before_after_merge_message(),
hubcaps::statuses::State::Pending,
);

stdenvs.identify_after();
stdenvs.after_merge();

overall_status.set_with_description(
"Checking new out paths",
@@ -500,15 +500,7 @@ impl<E: stats::SysEvents + 'static> worker::SimpleWorker for MassRebuildWorker<E
hubcaps::statuses::State::Pending,
);

let mut stdenvtagger = StdenvTagger::new();
if !stdenvs.are_same() {
stdenvtagger.changed(stdenvs.changed());
}
update_labels(
&issue,
stdenvtagger.tags_to_add(),
stdenvtagger.tags_to_remove(),
);
update_pr(&issue, stdenvs.results());

if let Some((removed, added)) = rebuildsniff.package_diff() {
let mut addremovetagger = PkgsAddedRemovedTagger::new();
@@ -590,6 +582,16 @@ fn make_gist<'a>(
);
}

pub fn update_pr(issue: &hubcaps::issues::IssueRef, result: EvaluationResult) {
if let Some(tagdiff) = result.tags {
update_labels(
&issue,
tagdiff.add,
tagdiff.delete
);
}
}

pub fn update_labels(issue: &hubcaps::issues::IssueRef, add: Vec<String>, remove: Vec<String>) {
let l = issue.labels();