Skip to content

ci: disable Bioconductor on older R so pak can resolve dependencies#2753

Open
krlmlr wants to merge 1 commit into
mainfrom
claude/fix-names-deprecation-graph
Open

ci: disable Bioconductor on older R so pak can resolve dependencies#2753
krlmlr wants to merge 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 now return HTTP 404 on the Posit mirror, so pak dependency resolution aborts on the rcc: … (4.2) / (4.3) jobs — they fail in the install step, before anything is built.

Fix

Rather than patching DESCRIPTION, flip pak's own switch: the install composite action sets PKG_USE_BIOCONDUCTOR=false when R < 4.4.

With Bioconductor off, graph has no install candidate; because it is a soft (Enhances) dependency, pak's solver drops it rather than erroring. Newer R keeps Bioconductor and exercises graph as before. DESCRIPTION is untouched.

Verified against pak's own source (the docs site 403s from here):

  • pkgcache:::default_use_bioconductor reads the pkg.use_bioconductor option / PKG_USE_BIOCONDUCTOR env var.
  • pkgdepends:::pkgplan_i_lp_dependencies explicitly nexts past a soft dependency whose candidates are all unavailable — so this drops graph silently rather than trading a 404 for a "package not found" error.

Also verified both branches of the version check locally (R < 4.4 writes the flag to GITHUB_ENV; R ≥ 4.4 writes nothing).

Evidence it works

In a full-matrix push run on an earlier revision of this branch, ubuntu-26.04 (4.2) / (4.3) no longer fail in install — dependency resolution now succeeds and they progress to the check step. (They still fail there, for a separate reason that is not dependency resolution; tracked separately.)

Scope

Workflow change only. The related pieces are split out:

🤖 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.

'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
now return HTTP 404 on the Posit mirror, so pak dependency resolution aborts on
those jobs before anything is built.

Rather than patching DESCRIPTION, use pak's own switch: set
PKG_USE_BIOCONDUCTOR=false on R < 4.4 in the install composite action. 'graph'
then has no install candidate, and because it is a soft (Enhances) dependency
pak's solver drops it instead of erroring. Newer R keeps Bioconductor and
exercises graph as before; DESCRIPTION is left untouched.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019E6CUgb5aFw6uvWXztcHgV
@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
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