1# cabal2nix/doc/analyze-hydra-space-requirements.r
8### Set up the workspace.
11options(cores=cores, mc.cores=cores)
12cl <- makeForkCluster(cores)
16builds <- foreach (i=list.files(".", "*.json"), .combine="rbind") %dopar% {
20 data.table(pkgset, pkg=names(l[[pkgset]]), out=unlist(l[[pkgset]]))
22setkey(builds, pkgset, pkg)
24t <- foreach (out=unique(builds$out), .combine="rbind") %dopar% {
25 size <- system(paste("( du -sb", out, "| cut -f1 ) 2>/dev/null || true"), intern=TRUE)
26 size <- if (identical(size, character(0))) "" else size
27 data.table(out, size=as.integer(size))
30builds <- merge(builds, t, by="out")
34# Total number of attributes in all package sets.
35builds_total <- nrow(builds)
37# Number of distict builds (output paths).
38builds_unique <- length(unique(builds$out))
40# Size of haskellPackages per platform.
41haskellPackages <- unique(builds[pkgset != "ghc7102" & !is.na(size),list(out,size)])
42haskellPackages_size <- sum(as.numeric(haskellPackages$size))
44# List of distinct sizes.
45sizes <- unique(builds[pkg != "ghc" & !is.na(size),list(out,size)])$size
47# Average output path size.
48avg_build_size <- mean(sizes)
49sd_build_size <- sd(sizes)
53biggest_builds <- head(builds[!is.na(size),list(size=mean(size)),by=pkg][order(size, decreasing=T)], n=20)
54biggest_builds$size <- round(biggest_builds$size / 1e6, 1)
56# Number of builds, distinguished by package set.
57builds_by_pkgset <- builds[,list(attributes=length(pkg)), by=pkgset][order(pkgset)]
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list