Skip to content

Fix biocBuildReport() silently dropping non-software packages#84

Merged
seandavi merged 1 commit into
develfrom
fix-issue-21-workflow-packages
Jul 17, 2026
Merged

Fix biocBuildReport() silently dropping non-software packages#84
seandavi merged 1 commit into
develfrom
fix-issue-21-workflow-packages

Conversation

@seandavi

Copy link
Copy Markdown
Owner

Fixes #21.

Bug

biocBuildReport() requests all four package types by default (software, data-experiment, data-annotation, workflows), and biocBuildReportDB() correctly tags each row with its pkgType. But before returning, it joins in deprecation status:

depdf <- get_deprecated_status_df(version)
...
if (!isEmpty)
    y <- merge(y, depdf, by.x = "pkg", by.y = "Package")

get_deprecated_status_df() always pulls only the software VIEWS file (type = "BioCsoft"), so depdf only ever contains software package names. merge()'s default all = FALSE makes this an inner join, which silently drops every row in y whose package isn't in the software VIEWS — i.e. every workflows/data-experiment/data-annotation row.

Net effect: biocBuildReport() (and everything built on it — problemPage(), checkMe(), checkDeps()) only ever reports on software packages, even though the pkgType parameter looks like it supports all four types. This is why #21 ("could problemPage also check workflow packages?") wasn't actually fixed by the existing pkgType support.

Verified live against Bioconductor devel (3.24):

  • Before this fix: biocBuildReport(version = "devel") → 16772 rows, table(pkgType) is 100% "bioc". The workflow package annotation (currently failing at buildsrc) is completely absent.
  • After this fix: 18277 rows, with 144 data-annotation, 1305 data-experiment, and 56 workflows rows restored, including annotation's real ERROR row.

Fix

Change the merge to all.x = TRUE so non-software packages are preserved. Deprecated/PackageStatus are NA for those rows, since deprecation status for workflows/data-experiment/data-annotation packages isn't tracked by get_deprecated_status_df() today — that's a separate, smaller gap that could be closed later by pulling the VIEWS file per requested pkgType, but it's out of scope for restoring the missing rows. Nothing downstream (problemPage.R) filters on Deprecated/PackageStatus, so this is safe.

Testing

  • Added a test in tests/testthat/test_biocBuildReport.R asserting that data-annotation, data-experiment, and workflows all appear in biocBuildReport("devel")$pkgType.
  • Ran the full test_biocBuildReport.R suite: FAIL 0 | WARN 2 (pre-existing, unrelated) | PASS 10.

Note

No version bump included — this repo's convention (per recent history) is for the maintainer to bump DESCRIPTION right before merge, not as part of the contributing branch.

biocBuildReport() requests all four package types by default, but
merge(y, depdf, by.x = "pkg", by.y = "Package") used base R's default
inner join. get_deprecated_status_df() only pulls the software VIEWS,
so depdf only lists software package names -- the inner join silently
dropped every workflows/data-experiment/data-annotation row before the
final report was returned. problemPage() and checkMe()/checkDeps() sit
on top of biocBuildReport(), so this made it impossible for them to
ever surface a failing workflow package.

Switch to all.x = TRUE so non-software packages are kept (with NA
Deprecated/PackageStatus, since that status isn't tracked outside the
software VIEWS).

Fixes #21
@seandavi
seandavi merged commit 78a43ee into devel Jul 17, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Could problemPage also check workflow packages?

1 participant