-
Notifications
You must be signed in to change notification settings - Fork 1
/
bbsBuildArtifacts.Rmd
117 lines (93 loc) · 3.07 KB
/
bbsBuildArtifacts.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
---
title: "bbsBuildArtifacts: filtering build reports"
author: "Vincent J. Carey, stvjc at channing.harvard.edu"
date: "`r format(Sys.time(), '%B %d, %Y')`"
vignette: >
%\VignetteEngine{knitr::rmarkdown}
%\VignetteIndexEntry{bbsBuildArtifacts: filtering build reports}
%\VignetteEncoding{UTF-8}
output:
BiocStyle::html_document:
highlight: pygments
number_sections: yes
theme: united
toc: yes
---
# Introduction
We'd like to be able to get a quick overview of status for a
subset of Bioconductor packages. "Status" is relative to
Bioconductor version, package version, build platform, and
condition of the platform.
We want to be able to work with the current artifacts provided
at, e.g., `https://bioconductor.org/checkResults/3.17/bioc-LATEST/report.tgz`.
Such gzipped tar resources are prepared for different types
of resource.
```{r lktypes}
suppressMessages({
suppressPackageStartupMessages({
library(bbsBuildArtifacts)
library(dplyr)
library(DT)
library(ggplot2)
})
})
bbsBuildArtifacts:::valid_types()
```
We'll focus on type `bioc` for now, which associates with Software packages.
We don't yet know if report.gz has the same
structure for all types, but we hope so.
Our objective is to learn the status and processing times for
various phases of the build process for all packages, and to
analyze error, warning and note events programatically.
## Artifact set manager
We define an S4 class `ArtifSet` to manage key information about builds.
`ArtifSet` instances are produced using `setup_artifacts`.
We've produced a thinned version of the BBS report.tgz accessible
in the package at `demo_path()`.
```{r usecl}
od = getwd()
td = tempdir()
setwd(td)
untar(demo_path())
af = setup_artifacts(type="bioc", version="3.17", extracted=".")
af
```
Information of immediate interest can be derived and tabulated
in a data.frame instance.
```{r convdf}
setwd(td)
d = as.data.frame(af)
dim(d)
head(d)
```
We use this to get statistics about timings for package
installation, building and checking.
```{r timings}
sapply(split(d$elapsed_time, d$host), sum, na.rm=TRUE)/3600 # hours
sapply(split(d$elapsed_time, d$phase), sum, na.rm=TRUE)/3600 # hours
ggplot(mutate(d, elapsed_time_sec=elapsed_time), aes(y=elapsed_time_sec, x=host)) +
geom_boxplot() + facet_grid(.~phase) + scale_y_log10()
```
## Information recorded about a package
Because the build/check processes are error prone, some packages
may lack information described below.
### `raw_info`
This is a selection from content of an `info.dcf` produced for each package.
```{r lkrai}
setwd(td) # need to be there
str(bbsBuildArtifacts:::make_raw_info(af, "zinbwave"))
```
### Detailed information about events
Here's how we can obtain the installation log for
SummarizedExperiment on nebbiolo2.
```{r lklk}
setwd(td)
pd1 <- make_BBS_package_data(af, "zinbwave")
pd1
names(slot(pd1, "host_data"))
hd = slot(pd1, "host_data")
cat(slot(hd$nebbiolo1, "install"), sep="\n")
```
Much of the content of these logs is routine unilluminating chatter.
Isolating the information of functional value is a project
for future effort.