Skip to content

ci: let pak ignore Bioconductor graph on R < 4.4#2753

Merged
krlmlr merged 1 commit into
mainfrom
claude/fix-names-deprecation-graph
Jul 26, 2026
Merged

ci: let pak ignore Bioconductor graph on R < 4.4#2753
krlmlr merged 1 commit into
mainfrom
claude/fix-names-deprecation-graph

Conversation

@krlmlr

@krlmlr krlmlr commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

LLM disclosure: this PR was prepared with Claude Code (Claude Opus 4.8).

  • By submitting this pull request, I assign the copyright of my contribution to The igraph development team.

Problem

graph is an optional Enhances: dependency published only on Bioconductor. The Bioconductor releases matching R 4.2 / 4.3 (graph 3.16 / 3.18) are archived and return HTTP 404, so pak dependency resolution aborts on the rcc: … (4.2) / (4.3) jobs, in the install step, before anything is built.

Fix

Use pak's documented downstream-package parameter, in DESCRIPTION — no workflow changes at all:

Config/gha/extra-packages: graph=?ignore-before-r=4.4.0

The install composite action already forwards Config/gha/extra-packages to setup-r-dependencies. Per ?pak_package_sources, <package>=?<params> is the special param reference type, whose purpose is "to add a parameter to a downstream dependency", and ignore-before-r "will be ignored on R versions that are older than the specified one". So the parameter attaches to the graph dependency pulled in via deps::..

Verified locally against pak's vendored pkgdepends:

  • parse_pkg_refs("graph=?ignore-before-r=4.4.0")type = "param", package = "graph", ignore-before-r = 4.4.0.
  • Solver semantics (pkgplan_i_lp_dependencies): ignored when 4.4.0 > R → dropped on R 4.2 / 4.3, kept on 4.4 / 4.5 / 4.6.
  • The action's own grep Config/gha/extra-packages DESCRIPTION | cut -d " " -f 2- extracts exactly graph=?ignore-before-r=4.4.0 (the adjacent Config/comment/gha/extra-packages note does not match the grep).
  • DESCRIPTION remains valid DCF.

Why the previous approach was replaced

An earlier revision set PKG_USE_BIOCONDUCTOR=false from a workflow step. That did not work, as the CI showed:

  • On R 4.2 / 4.3 the env var was set, but resolution still failed — it only turned the 404 into graph: Can't find package called graph. pak does not drop an unavailable soft dependency unless it is explicitly ignored (ignore, ignore-before-r, or ignore-unavailable).
  • It also broke the Windows jobs (4.5 / 4.6 / devel), which died at the multi-line Rscript -e '…' invocation — those jobs had been passing.

Both problems disappear here: the workflow is untouched, and the ignore is explicit.

Scope

DESCRIPTION only. Related: #2754 (run R-CMD-check on claude/**, stacked on this), #2749 (the R_getRegisteredNamespace C23 sanitizer error — a stale CSAN Docker image, not a package bug). The structure() code fixes merged in #2755.

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

This is how benchmark results would change (along with a 95% confidence interval in relative change) if 1d82032 is merged into main:

  • ✔️as_adjacency_matrix: 685ms -> 683ms [-1.7%, +1.38%]
  • ✔️as_biadjacency_matrix: 635ms -> 630ms [-2.43%, +0.75%]
  • ✔️as_data_frame_both: 1.4ms -> 1.41ms [-1.11%, +2.39%]
  • ✔️as_long_data_frame: 3.66ms -> 3.63ms [-2.3%, +0.82%]
  • ✔️es_attr_filter: 2.65ms -> 2.66ms [-1.92%, +2.12%]
  • ✔️graph_from_adjacency_matrix: 127ms -> 126ms [-5.39%, +3.65%]
  • ✔️graph_from_data_frame: 3.14ms -> 3.1ms [-3.83%, +1.1%]
  • ✔️vs_attr_filter: 1.4ms -> 1.39ms [-2.41%, +1.12%]
  • ✔️vs_by_name: 910µs -> 909µs [-3.12%, +2.93%]
    Further explanation regarding interpretation and methodology can be found in the documentation.

@krlmlr
krlmlr force-pushed the claude/fix-names-deprecation-graph branch from 1d82032 to 6566387 Compare July 24, 2026 10:52
@github-actions

Copy link
Copy Markdown
Contributor

This is how benchmark results would change (along with a 95% confidence interval in relative change) if 6566387 is merged into main:

  • ✔️as_adjacency_matrix: 884ms -> 883ms [-2.86%, +2.72%]
  • ✔️as_biadjacency_matrix: 814ms -> 799ms [-4.51%, +0.81%]
  • ✔️as_data_frame_both: 1.7ms -> 1.7ms [-2.42%, +2.66%]
  • ✔️as_long_data_frame: 4.22ms -> 4.24ms [-2.55%, +3.59%]
  • ✔️es_attr_filter: 2.83ms -> 2.83ms [-2.59%, +2.44%]
  • ✔️graph_from_adjacency_matrix: 147ms -> 148ms [-0.9%, +1.48%]
  • ✔️graph_from_data_frame: 3.67ms -> 3.62ms [-3.07%, +0.27%]
  • ✔️vs_attr_filter: 1.63ms -> 1.61ms [-7.47%, +4.37%]
  • ✔️vs_by_name: 1.04ms -> 1.06ms [-1.22%, +4.7%]
    Further explanation regarding interpretation and methodology can be found in the documentation.

@krlmlr
krlmlr force-pushed the claude/fix-names-deprecation-graph branch from 6566387 to aa70783 Compare July 24, 2026 18:38
@krlmlr krlmlr changed the title fix: canonical structure() attribute names and skip Bioconductor graph on old R ci: disable Bioconductor on older R so pak can resolve dependencies Jul 24, 2026
'graph' is an optional Enhances dependency published only on Bioconductor. The
Bioconductor releases matching R 4.2 / 4.3 (graph 3.16 / 3.18) are archived and
return HTTP 404, so pak dependency resolution aborts on those jobs before
anything is built.

Use pak's documented downstream-package parameter instead of touching the
workflows:

  Config/gha/extra-packages: graph=?ignore-before-r=4.4.0

The install action already forwards Config/gha/extra-packages to
setup-r-dependencies, and pak parses graph=?ignore-before-r=4.4.0 as a 'param'
reference that applies to the graph dependency pulled in via deps::., ignoring
it on R older than 4.4.0 and keeping it on 4.4 and newer.

This replaces an earlier attempt that set PKG_USE_BIOCONDUCTOR=false from a
workflow step. That approach did not work: disabling Bioconductor only turned
the 404 into "Can't find package called graph", because pak does not drop an
unavailable soft dependency unless it is explicitly ignored. It also broke the
Windows jobs, which could not run the multi-line Rscript -e invocation.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019E6CUgb5aFw6uvWXztcHgV
@krlmlr
krlmlr force-pushed the claude/fix-names-deprecation-graph branch from 9d1ec13 to 62036bc Compare July 26, 2026 16:12
@krlmlr krlmlr changed the title ci: disable Bioconductor on older R so pak can resolve dependencies ci: let pak ignore Bioconductor graph on R &lt; 4.4 Jul 26, 2026
@krlmlr krlmlr changed the title ci: let pak ignore Bioconductor graph on R &lt; 4.4 ci: let pak ignore Bioconductor graph on R < 4.4 Jul 26, 2026
@krlmlr
krlmlr merged commit 1dd6557 into main Jul 26, 2026
8 checks passed
@krlmlr
krlmlr deleted the claude/fix-names-deprecation-graph branch July 26, 2026 19:21
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.

2 participants