Skip to content

lazyeval dependency breaks installation on R-devel (PREXPR removed from R C API) #156

@ehrlinger

Description

@ehrlinger

I've been working on some internal packages that take a dependecy on ggalluvial. My CI pipelines are failing on the devel pipelines and I used an AI to help me debug those errors.

ggalluvial lists lazyeval in its Imports, and lazyeval 0.2.2 (the current CRAN release) uses the C-level PREXPR symbol that has been removed from R-devel's C API. This causes lazyeval — and therefore ggalluvial — to fail to compile from source on R-devel.

Error from CI (R-devel, pak lockfile install):

Error in lazyeval_install / compilation:
'PREXPR' was not declared in this scope

Why this matters: lazyeval has been superseded by rlang and has not been updated since ~2019. It will not be fixed upstream. Packages that still import it will begin failing R CMD check on R-devel as R 4.6/next moves toward release.

Suggested fix: Replace the lazyeval import with rlang equivalents. In practice, lazyeval::lazy_eval()rlang::eval_tidy(), lazyeval::lazy()rlang::quo() / rlang::enquo(). Since ggalluvial already depends on ggplot2 which in turn depends on rlang, no new dependency is added — it's already in the transitive closure.

Downstream impact: Packages depending on ggalluvial (such as my internal packages) cannot pass R-devel CI without adding continue-on-error workarounds for the R-devel matrix entry.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions