Skip to content

ci: install libuv1-dev to unblock R languageserver build on ubuntu-24.04#1420

Merged
MischaPanch merged 1 commit intooraios:mainfrom
a-simeshin:ci/fix-r-languageserver-libuv
Apr 26, 2026
Merged

ci: install libuv1-dev to unblock R languageserver build on ubuntu-24.04#1420
MischaPanch merged 1 commit intooraios:mainfrom
a-simeshin:ci/fix-r-languageserver-libuv

Conversation

@a-simeshin
Copy link
Copy Markdown
Contributor

Summary

  • Adds a Linux-only Install R sysdeps step in .github/workflows/pytest.yml that runs apt-get install -y libuv1-dev before the existing Install R language server step.
  • Fixes the Ubuntu pytest job which currently fails on every PR because the R fs package can no longer build from source on the latest ubuntu-24.04 runner image (libuv1-dev is not preinstalled and there is no binary build of fs for this R/Ubuntu combo).

Refs: #1419

Why

pytest.yml uses runs-on: ubuntu-latest, which now resolves to ubuntu-24.04. On that image:

* installing *source* package ‘fs’ ...
Package libuv was not found in the pkg-config search path.
fatal error: uv.h: No such file or directory
ERROR: configuration failed for package ‘fs’

This cascades through pkgloadroxygen2languageserver, and the 5 R tests in test/solidlsp/r/test_r_basic.py fail at setup with RuntimeError: R languageserver package is not installed. Full breakdown in #1419.

Local verification

Reproduced and verified on docker.io/library/ubuntu:24.04 via podman:

Before:

$ apt-cache policy libuv1-dev
libuv1-dev:
  Installed: (none)
  Candidate: 1.48.0-1.1build1

$ pkg-config --print-errors libuv
Package libuv was not found in the pkg-config search path.

(Identical to the CI failure wording.)

After apt-get install -y libuv1-dev:

$ pkg-config --modversion libuv
1.48.0

The fs configure check now passes.

Test plan

  • Tests on ubuntu-latest — should now pass (R fs builds, languageserver installs, test/solidlsp/r/test_r_basic.py runs).
  • Tests on macos-latest — unaffected (step is gated by runner.os == 'Linux').
  • Tests on windows-latest — unaffected (same gate).

Notes

  • Step is intentionally minimal — only libuv1-dev, no other sysdeps. If other R packages later need more system libraries, the cleaner long-term fix would be to switch to r-lib/actions/setup-r-dependencies@v2, which auto-resolves CRAN sysdeps. Out of scope here.
  • r-lib/actions/setup-r@v2 is showing a Node.js 20 deprecation warning in current runs — not addressed in this PR (worth a follow-up before September 2026).

The `Install R language server` step started failing on the new
`ubuntu-24.04` runner image (`ubuntu-latest`) because the R `fs`
package falls back to a source build and its `configure` step calls
`pkg-config --exists libuv`, which fails with:

    Package libuv was not found in the pkg-config search path.
    fatal error: uv.h: No such file or directory
    ERROR: configuration failed for package 'fs'

That cascades through `pkgload` -> `roxygen2` -> `languageserver`,
making `test/solidlsp/r/test_r_basic.py` error out at setup with
`RuntimeError: R languageserver package is not installed`.

Verified locally on a clean `ubuntu:24.04` container: `libuv1-dev`
is not preinstalled but is available in the `noble` apt repo
(version `1.48.0-1.1build1`). Installing it makes
`pkg-config --exists libuv` succeed (`pkg-config --modversion libuv`
returns `1.48.0`), which is exactly what the `fs` configure script
needs.

Linux-only via `if: runner.os == 'Linux'` so the step is a no-op
on macOS and Windows runners (libuv is bundled differently there
and `fs` is delivered as a binary).

Refs: oraios#1419
@MischaPanch MischaPanch marked this pull request as ready for review April 26, 2026 14:27
@MischaPanch
Copy link
Copy Markdown
Contributor

Thank you, merging

@MischaPanch MischaPanch merged commit ae7f106 into oraios:main Apr 26, 2026
10 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.

2 participants