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: a17060d7a5d0
Choose a base ref
...
head repository: NixOS/ofborg
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 99cc0ce3941f
Choose a head ref
  • 7 commits
  • 2 files changed
  • 2 contributors

Commits on Jan 25, 2019

  1. Merge pull request #307 from NixOS/maintainer-tag

    Maintainer tag
    grahamc authored Jan 25, 2019

    Verified

    This commit was signed with the committer’s verified signature.
    ceedubs Cody Allen
    Copy the full SHA
    344f94b View commit details
  2. autotag Pantheon

    worldofpeace authored Jan 25, 2019

    Verified

    This commit was signed with the committer’s verified signature.
    ceedubs Cody Allen
    Copy the full SHA
    b46bc3b View commit details

Commits on Jan 26, 2019

  1. Merge pull request #308 from worldofpeace/patch-1

    autotag Pantheon
    grahamc authored Jan 26, 2019

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    18c242c View commit details
  2. Merge pull request #309 from NixOS/fixup-tests-darwin

    Fixup tests darwin
    grahamc authored Jan 26, 2019
    Copy the full SHA
    a162d41 View commit details

Commits on Jan 30, 2019

  1. Copy the full SHA
    d35a5c9 View commit details
  2. Copy the full SHA
    d0bc3b0 View commit details
  3. Support bigger ranges

    grahamc committed Jan 30, 2019
    Copy the full SHA
    99cc0ce View commit details
Showing with 546 additions and 25 deletions.
  1. +3 −0 config.public.json
  2. +543 −25 ofborg/src/tagger.rs
3 changes: 3 additions & 0 deletions config.public.json
Original file line number Diff line number Diff line change
@@ -134,6 +134,9 @@
"6.topic: nixos": [
"nixos"
],
"6.topic: pantheon": [
"pkgs/desktops/pantheon"
],
"6.topic: policy discussion": [
".github"
],
568 changes: 543 additions & 25 deletions ofborg/src/tagger.rs
Original file line number Diff line number Diff line change
@@ -119,20 +119,27 @@ impl Default for RebuildTagger {
fn default() -> RebuildTagger {
let mut t = RebuildTagger {
possible: vec![
String::from("10.rebuild-linux: 501+"),
String::from("10.rebuild-linux: 101-500"),
String::from("10.rebuild-linux: 11-100"),
String::from("10.rebuild-linux: 1-10"),
String::from("10.rebuild-linux: 0"),
String::from("10.rebuild-darwin: 501+"),
String::from("10.rebuild-darwin: 101-500"),
String::from("10.rebuild-darwin: 11-100"),
String::from("10.rebuild-darwin: 1-10"),
String::from("10.rebuild-darwin: 0"),
String::from("10.rebuild-darwin: 1-10"),
String::from("10.rebuild-darwin: 11-100"),
String::from("10.rebuild-darwin: 101-500"),
String::from("10.rebuild-darwin: 501+"),
String::from("10.rebuild-darwin: 501-1,000"),
String::from("10.rebuild-darwin: 1,001-2,500"),
String::from("10.rebuild-darwin: 2,501-5,000"),
String::from("10.rebuild-darwin: 5,001+"),
String::from("10.rebuild-linux: 0"),
String::from("10.rebuild-linux: 1-10"),
String::from("10.rebuild-linux: 11-100"),
String::from("10.rebuild-linux: 101-500"),
String::from("10.rebuild-linux: 501+"),
String::from("10.rebuild-linux: 501-1,000"),
String::from("10.rebuild-linux: 1,001-2,500"),
String::from("10.rebuild-linux: 2,501-5,000"),
String::from("10.rebuild-linux: 5,001+"),
],
selected: vec![],
};
t.possible.sort();

t
}
@@ -163,10 +170,20 @@ impl RebuildTagger {
}
}

self.selected = vec![
format!("10.rebuild-linux: {}", self.bucket(counter_linux)),
format!("10.rebuild-darwin: {}", self.bucket(counter_darwin)),
];
self.selected = vec![];
self.selected.extend(
RebuildTagger::bucket(counter_darwin)
.iter()
.map(|bucket| format!("10.rebuild-darwin: {}", bucket))
.collect::<Vec<String>>(),
);

self.selected.extend(
RebuildTagger::bucket(counter_linux)
.iter()
.map(|bucket| format!("10.rebuild-linux: {}", bucket))
.collect::<Vec<String>>(),
);

for tag in &self.selected {
if !self.possible.contains(&tag) {
@@ -183,26 +200,34 @@ impl RebuildTagger {
}

pub fn tags_to_remove(&self) -> Vec<String> {
let mut remove = self.possible.clone();
for tag in &self.selected {
let pos = remove.binary_search(&tag).unwrap();
remove.remove(pos);
let mut remove = vec![];

for tag in self.possible.clone().into_iter() {
if !self.selected.contains(&tag) {
remove.push(tag);
}
}

remove
}

fn bucket(&self, count: u64) -> &str {
if count > 500 {
"501+"
fn bucket(count: u64) -> &'static [&'static str] {
if count > 5000 {
&["501+", "5,001+"]
} else if count > 2500 {
&["501+", "2,501-5,000"]
} else if count > 1000 {
&["501+", "1,001-2,500"]
} else if count > 500 {
&["501+", "501-1,000"]
} else if count > 100 {
"101-500"
&["101-500"]
} else if count > 10 {
"11-100"
&["11-100"]
} else if count > 0 {
"1-10"
&["1-10"]
} else {
"0"
&["0"]
}
}
}
@@ -307,6 +332,499 @@ impl MaintainerPRTagger {
mod tests {
use super::*;

struct PackageArchSrc {
linux: usize,
darwin: usize,
}

impl PackageArchSrc {
pub fn linux(linux: usize) -> PackageArchSrc {
PackageArchSrc { linux, darwin: 0 }
}

pub fn darwin(darwin: usize) -> PackageArchSrc {
PackageArchSrc::linux(0).and_darwin(darwin)
}

pub fn and_linux(mut self, linux: usize) -> PackageArchSrc {
self.linux = linux;
self
}

pub fn and_darwin(mut self, darwin: usize) -> PackageArchSrc {
self.darwin = darwin;
self
}
}

impl From<PackageArchSrc> for Vec<PackageArch> {
fn from(src: PackageArchSrc) -> Vec<PackageArch> {
let mut darwin: Vec<PackageArch> = (0..src.darwin)
.into_iter()
.map(|_| PackageArch {
package: String::from("bogus :)"),
architecture: String::from("x86_64-darwin"),
})
.collect();
let linux: Vec<PackageArch> = (0..src.linux)
.into_iter()
.map(|_| PackageArch {
package: String::from("bogus :)"),
architecture: String::from("x86_64-linux"),
})
.collect();

let mut combined = darwin;
combined.extend(linux);
combined
}
}

#[test]
pub fn test_packages_changed() {
let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(0).and_darwin(0).into());
assert_eq!(
tagger.tags_to_add(),
vec!["10.rebuild-darwin: 0", "10.rebuild-linux: 0",]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 1-10",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 2,501-5,000",
"10.rebuild-linux: 5,001+",
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(1).into());

assert_eq!(
tagger.tags_to_add(),
vec!["10.rebuild-darwin: 0", "10.rebuild-linux: 1-10",]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 2,501-5,000",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(1).and_darwin(1).into());
assert_eq!(
tagger.tags_to_add(),
vec!["10.rebuild-darwin: 1-10", "10.rebuild-linux: 1-10",]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 2,501-5,000",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(10).and_darwin(10).into());
assert_eq!(
tagger.tags_to_add(),
vec!["10.rebuild-darwin: 1-10", "10.rebuild-linux: 1-10",]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 2,501-5,000",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(11).and_darwin(11).into());
assert_eq!(
tagger.tags_to_add(),
vec!["10.rebuild-darwin: 11-100", "10.rebuild-linux: 11-100",]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 1-10",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 2,501-5,000",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(100).and_darwin(100).into());
assert_eq!(
tagger.tags_to_add(),
vec!["10.rebuild-darwin: 11-100", "10.rebuild-linux: 11-100",]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 1-10",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 2,501-5,000",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(101).and_darwin(101).into());
assert_eq!(
tagger.tags_to_add(),
vec!["10.rebuild-darwin: 101-500", "10.rebuild-linux: 101-500",]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 1-10",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 2,501-5,000",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(500).and_darwin(500).into());
assert_eq!(
tagger.tags_to_add(),
vec!["10.rebuild-darwin: 101-500", "10.rebuild-linux: 101-500",]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 1-10",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 2,501-5,000",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(501).and_darwin(501).into());
assert_eq!(
tagger.tags_to_add(),
vec![
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 501-1,000",
]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 1-10",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 2,501-5,000",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(1000).and_darwin(1000).into());
assert_eq!(
tagger.tags_to_add(),
vec![
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 501-1,000",
]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 1-10",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 2,501-5,000",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(1001).and_darwin(1001).into());
assert_eq!(
tagger.tags_to_add(),
vec![
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 1,001-2,500"
]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 1-10",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 2,501-5,000",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(2500).and_darwin(2500).into());
assert_eq!(
tagger.tags_to_add(),
vec![
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 1,001-2,500"
]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 1-10",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 2,501-5,000",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(2501).and_darwin(2501).into());
assert_eq!(
tagger.tags_to_add(),
vec![
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 2,501-5,000"
]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 1-10",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(5000).and_darwin(5000).into());
assert_eq!(
tagger.tags_to_add(),
vec![
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 2,501-5,000"
]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 0",
"10.rebuild-linux: 1-10",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 5,001+"
]
);

let mut tagger = RebuildTagger::new();
tagger.parse_attrs(PackageArchSrc::linux(5001).and_darwin(5001).into());
assert_eq!(
tagger.tags_to_add(),
vec![
"10.rebuild-darwin: 501+",
"10.rebuild-darwin: 5,001+",
"10.rebuild-linux: 501+",
"10.rebuild-linux: 5,001+"
]
);
assert_eq!(
tagger.tags_to_remove(),
vec![
"10.rebuild-darwin: 0",
"10.rebuild-darwin: 1-10",
"10.rebuild-darwin: 11-100",
"10.rebuild-darwin: 101-500",
"10.rebuild-darwin: 501-1,000",
"10.rebuild-darwin: 1,001-2,500",
"10.rebuild-darwin: 2,501-5,000",
"10.rebuild-linux: 0",
"10.rebuild-linux: 1-10",
"10.rebuild-linux: 11-100",
"10.rebuild-linux: 101-500",
"10.rebuild-linux: 501-1,000",
"10.rebuild-linux: 1,001-2,500",
"10.rebuild-linux: 2,501-5,000",
]
);
}

#[test]
pub fn test_files_changed_list() {
let mut criteria: HashMap<String, Vec<String>> = HashMap::new();