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: 7e0455d7582c^
Choose a base ref
...
head repository: NixOS/ofborg
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 47f4e0bcf05d
Choose a head ref
  • 3 commits
  • 7 files changed
  • 1 contributor

Commits on Sep 3, 2018

  1. Upgrade nixpkgs

    grahamc committed Sep 3, 2018
    Copy the full SHA
    7e0455d View commit details
  2. relocate files_to_stdenv

    grahamc committed Sep 3, 2018
    Copy the full SHA
    c5fdebe View commit details
  3. Copy the full SHA
    47f4e0b View commit details
Showing with 135 additions and 124 deletions.
  1. +3 −3 nix/nixpkgs.json
  2. +8 −0 ofborg/src/files.rs
  3. +2 −0 ofborg/src/lib.rs
  4. +3 −3 ofborg/src/tagger.rs
  5. +115 −0 ofborg/src/tasks/eval/stdenvs.rs
  6. +3 −118 ofborg/src/tasks/massrebuilder.rs
  7. +1 −0 ofborg/src/tasks/mod.rs
6 changes: 3 additions & 3 deletions nix/nixpkgs.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"url": "https://github.com/nixos/nixpkgs-channels.git",
"rev": "2e855dc6b0cd88767a8a5df2faff9e66e1cd7f18",
"date": "2018-04-11T10:16:39+08:00",
"sha256": "08s6mfh5a05kd2qs3hmza50ng3pyhd3qha4nanwwk0s8fjzqnv4a",
"rev": "4477cf04b6779a537cdb5f0bd3dd30e75aeb4a3b",
"date": "2018-08-31T21:37:07-04:00",
"sha256": "1i39wsfwkvj9yryj8di3jibpdg3b3j86ych7s9rb6z79k08yaaxc",
"fetchSubmodules": true
}
8 changes: 8 additions & 0 deletions ofborg/src/files.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
use std::io::Read;
use std::fs::File;

pub fn file_to_str(f: &mut File) -> String {
let mut buffer = Vec::new();
f.read_to_end(&mut buffer).expect("Reading eval output");
return String::from(String::from_utf8_lossy(&buffer));
}
2 changes: 2 additions & 0 deletions ofborg/src/lib.rs
Original file line number Diff line number Diff line change
@@ -36,6 +36,7 @@ pub mod config;
pub mod message;
pub mod tasks;
pub mod evalchecker;
pub mod files;
pub mod nix;
pub mod stats;
pub mod ghevent;
@@ -61,6 +62,7 @@ pub mod ofborg {
pub use message;
pub use tasks;
pub use evalchecker;
pub use files;
pub use commitstatus;
pub use ghevent;
pub use nix;
6 changes: 3 additions & 3 deletions ofborg/src/tagger.rs
Original file line number Diff line number Diff line change
@@ -21,13 +21,13 @@ impl StdenvTagger {
return t;
}

pub fn changed(&mut self, systems: Vec<tasks::massrebuilder::System>) {
pub fn changed(&mut self, systems: Vec<tasks::eval::stdenvs::System>) {
for system in systems {
match system {
tasks::massrebuilder::System::X8664Darwin => {
tasks::eval::stdenvs::System::X8664Darwin => {
self.selected.push(String::from("10.rebuild-darwin-stdenv"));
}
tasks::massrebuilder::System::X8664Linux => {
tasks::eval::stdenvs::System::X8664Linux => {
self.selected.push(String::from("10.rebuild-linux-stdenv"));
}
}
115 changes: 115 additions & 0 deletions ofborg/src/tasks/eval/stdenvs.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@

use std::path::PathBuf;
use ofborg::nix;
use ofborg::files::file_to_str;

enum StdenvFrom {
Before,
After,
}

#[derive(Debug)]
pub enum System {
X8664Darwin,
X8664Linux,
}

#[derive(Debug, PartialEq)]
pub struct Stdenvs {
nix: nix::Nix,
co: PathBuf,

linux_stdenv_before: Option<String>,
linux_stdenv_after: Option<String>,

darwin_stdenv_before: Option<String>,
darwin_stdenv_after: Option<String>,
}

impl Stdenvs {
pub fn new(nix: nix::Nix, co: PathBuf) -> Stdenvs {
return Stdenvs {
nix: nix,
co: co,

linux_stdenv_before: None,
linux_stdenv_after: None,

darwin_stdenv_before: None,
darwin_stdenv_after: None,
};
}

pub fn identify_before(&mut self) {
self.identify(System::X8664Linux, StdenvFrom::Before);
self.identify(System::X8664Darwin, StdenvFrom::Before);
}

pub fn identify_after(&mut self) {
self.identify(System::X8664Linux, StdenvFrom::After);
self.identify(System::X8664Darwin, StdenvFrom::After);
}

pub fn are_same(&self) -> bool {
return self.changed().len() == 0;
}

pub fn changed(&self) -> Vec<System> {
let mut changed: Vec<System> = vec![];

if self.linux_stdenv_before != self.linux_stdenv_after {
changed.push(System::X8664Linux);
}

if self.darwin_stdenv_before != self.darwin_stdenv_after {
changed.push(System::X8664Darwin);
}


return changed;
}

fn identify(&mut self, system: System, from: StdenvFrom) {
match (system, from) {
(System::X8664Linux, StdenvFrom::Before) => {
self.linux_stdenv_before = self.evalstdenv("x86_64-linux");
}
(System::X8664Linux, StdenvFrom::After) => {
self.linux_stdenv_after = self.evalstdenv("x86_64-linux");
}

(System::X8664Darwin, StdenvFrom::Before) => {
self.darwin_stdenv_before = self.evalstdenv("x86_64-darwin");
}
(System::X8664Darwin, StdenvFrom::After) => {
self.darwin_stdenv_after = self.evalstdenv("x86_64-darwin");
}
}
}

/// This is used to find out what the output path of the stdenv for the
/// given system.
fn evalstdenv(&self, system: &str) -> Option<String> {
let result = self.nix.with_system(system.to_owned()).safely(
nix::Operation::QueryPackagesOutputs,
&self.co,
vec![
String::from("-f"),
String::from("."),
String::from("-A"),
String::from("stdenv"),
],
true,
);

println!("{:?}", result);

return match result {
Ok(mut out) => Some(file_to_str(&mut out)),
Err(mut out) => {
println!("{:?}", file_to_str(&mut out));
None
}
};
}
}
121 changes: 3 additions & 118 deletions ofborg/src/tasks/massrebuilder.rs
Original file line number Diff line number Diff line change
@@ -3,15 +3,15 @@ extern crate amqp;
extern crate env_logger;
extern crate uuid;

use tasks::eval;
use uuid::Uuid;
use std::collections::HashMap;
use std::fs::File;
use std::io::Read;
use std::path::Path;
use std::path::PathBuf;
use ofborg::checkout;
use ofborg::message::{massrebuildjob, buildjob};
use std::time::Instant;
use ofborg::files::file_to_str;
use ofborg::nix;
use ofborg::acl::ACL;
use ofborg::stats;
@@ -196,7 +196,7 @@ impl<E: stats::SysEvents + 'static> worker::SimpleWorker for MassRebuildWorker<E
);


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

let mut rebuildsniff = OutPathDiff::new(self.nix.clone(), PathBuf::from(&refpath));
@@ -561,116 +561,7 @@ impl<E: stats::SysEvents + 'static> worker::SimpleWorker for MassRebuildWorker<E
}
}

enum StdenvFrom {
Before,
After,
}

#[derive(Debug)]
pub enum System {
X8664Darwin,
X8664Linux,
}

#[derive(Debug, PartialEq)]
struct Stdenvs {
nix: nix::Nix,
co: PathBuf,

linux_stdenv_before: Option<String>,
linux_stdenv_after: Option<String>,

darwin_stdenv_before: Option<String>,
darwin_stdenv_after: Option<String>,
}

impl Stdenvs {
fn new(nix: nix::Nix, co: PathBuf) -> Stdenvs {
return Stdenvs {
nix: nix,
co: co,

linux_stdenv_before: None,
linux_stdenv_after: None,

darwin_stdenv_before: None,
darwin_stdenv_after: None,
};
}

fn identify_before(&mut self) {
self.identify(System::X8664Linux, StdenvFrom::Before);
self.identify(System::X8664Darwin, StdenvFrom::Before);
}

fn identify_after(&mut self) {
self.identify(System::X8664Linux, StdenvFrom::After);
self.identify(System::X8664Darwin, StdenvFrom::After);
}

fn are_same(&self) -> bool {
return self.changed().len() == 0;
}

fn changed(&self) -> Vec<System> {
let mut changed: Vec<System> = vec![];

if self.linux_stdenv_before != self.linux_stdenv_after {
changed.push(System::X8664Linux);
}

if self.darwin_stdenv_before != self.darwin_stdenv_after {
changed.push(System::X8664Darwin);
}


return changed;
}

fn identify(&mut self, system: System, from: StdenvFrom) {
match (system, from) {
(System::X8664Linux, StdenvFrom::Before) => {
self.linux_stdenv_before = self.evalstdenv("x86_64-linux");
}
(System::X8664Linux, StdenvFrom::After) => {
self.linux_stdenv_after = self.evalstdenv("x86_64-linux");
}

(System::X8664Darwin, StdenvFrom::Before) => {
self.darwin_stdenv_before = self.evalstdenv("x86_64-darwin");
}
(System::X8664Darwin, StdenvFrom::After) => {
self.darwin_stdenv_after = self.evalstdenv("x86_64-darwin");
}
}
}

/// This is used to find out what the output path of the stdenv for the
/// given system.
fn evalstdenv(&self, system: &str) -> Option<String> {
let result = self.nix.with_system(system.to_owned()).safely(
nix::Operation::QueryPackagesOutputs,
&self.co,
vec![
String::from("-f"),
String::from("."),
String::from("-A"),
String::from("stdenv"),
],
true,
);

println!("{:?}", result);

return match result {
Ok(mut out) => Some(file_to_str(&mut out)),
Err(mut out) => {
println!("{:?}", file_to_str(&mut out));
None
}
};
}
}

fn make_gist<'a>(
gists: &hubcaps::gists::Gists<'a>,
@@ -730,12 +621,6 @@ pub fn update_labels(issue: &hubcaps::issues::IssueRef, add: Vec<String>, remove
}
}

fn file_to_str(f: &mut File) -> String {
let mut buffer = Vec::new();
f.read_to_end(&mut buffer).expect("Reading eval output");
return String::from(String::from_utf8_lossy(&buffer));
}

fn parse_commit_messages(messages: Vec<String>) -> Vec<String> {
messages
.iter()
1 change: 1 addition & 0 deletions ofborg/src/tasks/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@

pub mod eval;
pub mod build;
pub mod massrebuilder;
pub mod githubcommentfilter;