rstudio / rstudio/renv

Update PPM package mapping database for R 4.4

Open
#2,002 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
R
Stars
1.2k
Forks
170
Avg merge
1d 14h
Merged PRs (30d)
10

Description

Description

When trying to install historical binaries using PPM on macOS using R 4.4, packages are installed from source rather than binaries. I believe this is because the database mapping package versions to snapshot dates has not been updated for R 4.4.

database <- renv:::renv_p3m_database_load()
key <- renv:::renv_p3m_database_key("macosx/big-sur-arm64", "4.4")
is.null(database[[key]])
#> [1] TRUE
key <- renv:::renv_p3m_database_key("macosx/big-sur-arm64", "4.3")
is.null(database[[key]])
#> [1] FALSE

Reprex

Based on #1699, using duckplyr as an example and attempting to install version 0.2.0 as a binary from the 2023-09-13 snapshot on PPM. (h/t @rszymanski)

Using R 4.4.1
withr::local_options(list(renv.settings.use.cache = FALSE)) # don't use cache to show how package is installed
    project_directory <- withr::local_tempdir()
    
    withr::with_dir(
        new = project_directory,
        code = {
            renv::init(restart = FALSE)
            
            message("Installing duckplyr@0.2.0 from https://packagemanager.posit.co/cran/latest")
            # installs from source
            renv::install(
                "duckplyr@0.2.0", 
                prompt = FALSE
            ) 
            
            message("Installing duckplyr@0.2.0 from P3M snapshot")
            # installs binary
            renv::install(
                "duckplyr@0.2.0", 
                prompt = FALSE,
                repos = c(
                    "CRAN" = "https://packagemanager.posit.co/cran/2023-09-13"
                )
            )
        }
    )
Output
#> The following package(s) will be updated in the lockfile:
#> 
#> # CRAN -----------------------------------------------------------------------
#> - renv   [* -> 1.0.7]
#> 
#> The version of R recorded in the lockfile will be updated:
#> - R      [* -> 4.4.1]
#> 
#> - Lockfile written to "/private/var/folders/xh/crvwt7596l3b9p1s66q3fr1r0000gp/T/RtmpWDsToA/fileb365693320c5/renv.lock".
#> Installing duckplyr@0.2.0 from https://packagemanager.posit.co/cran/latest
#> # Downloading packages -------------------------------------------------------
#> - Downloading duckplyr from Repository ...      OK [216.8 Kb in 0.28s]
#> - Downloading cli from CRAN ...                 OK [file is up to date]
#> - Downloading collections from CRAN ...         OK [64.5 Kb in 0.23s]
#> - Downloading DBI from CRAN ...                 OK [905.4 Kb in 0.43s]
#> - Downloading dplyr from CRAN ...               OK [1.4 Mb in 0.56s]
#> - Downloading generics from CRAN ...            OK [81.7 Kb in 0.23s]
#> - Downloading glue from CRAN ...                OK [file is up to date]
#> - Downloading lifecycle from CRAN ...           OK [file is up to date]
#> - Downloading rlang from CRAN ...               OK [file is up to date]
#> - Downloading magrittr from CRAN ...            OK [219.9 Kb in 0.27s]
#> - Downloading pillar from CRAN ...              OK [643.7 Kb in 0.38s]
#> - Downloading fansi from CRAN ...               OK [306.3 Kb in 0.29s]
#> - Downloading utf8 from CRAN ...                OK [143.2 Kb in 0.24s]
#> - Downloading vctrs from CRAN ...               OK [1.3 Mb in 0.53s]
#> - Downloading R6 from CRAN ...                  OK [file is up to date]
#> - Downloading tibble from CRAN ...              OK [665.8 Kb in 0.37s]
#> - Downloading pkgconfig from CRAN ...           OK [18.3 Kb in 0.21s]
#> - Downloading tidyselect from CRAN ...          OK [221.5 Kb in 0.26s]
#> - Downloading withr from CRAN ...               OK [file is up to date]
#> - Downloading duckdb from CRAN ...              OK [10.4 Mb in 2.8s]
#> - Downloading purrr from CRAN ...               OK [490.2 Kb in 0.34s]
#> Successfully downloaded 21 packages in 13 seconds.
#> 
#> The following package(s) will be installed:
#> - cli         [3.6.3]
#> - collections [0.3.7]
#> - DBI         [1.2.3]
#> - dplyr       [1.1.4]
#> - duckdb      [1.1.0]
#> - duckplyr    [0.2.0]
#> - fansi       [1.0.6]
#> - generics    [0.1.3]
#> - glue        [1.8.0]
#> - lifecycle   [1.0.4]
#> - magrittr    [2.0.3]
#> - pillar      [1.9.0]
#> - pkgconfig   [2.0.3]
#> - purrr       [1.0.2]
#> - R6          [2.5.1]
#> - rlang       [1.1.4]
#> - tibble      [3.2.1]
#> - tidyselect  [1.2.1]
#> - utf8        [1.2.4]
#> - vctrs       [0.6.5]
#> - withr       [3.0.1]
#> These packages will be installed into "/private/var/folders/xh/crvwt7596l3b9p1s66q3fr1r0000gp/T/RtmpWDsToA/fileb365693320c5/renv/library/macos/R-4.4/aarch64-apple-darwin20".
#> 
#> # Installing packages --------------------------------------------------------
#> - Installing cli ...                            OK [installed binary in 0.42s]
#> - Installing collections ...                    OK [installed binary in 0.34s]
#> - Installing DBI ...                            OK [installed binary in 0.37s]
#> - Installing generics ...                       OK [installed binary in 0.33s]
#> - Installing glue ...                           OK [installed binary in 0.35s]
#> - Installing rlang ...                          OK [installed binary in 0.63s]
#> - Installing lifecycle ...                      OK [installed binary in 0.39s]
#> - Installing magrittr ...                       OK [installed binary in 0.75s]
#> - Installing fansi ...                          OK [installed binary in 0.33s]
#> - Installing utf8 ...                           OK [installed binary in 0.33s]
#> - Installing vctrs ...                          OK [installed binary in 0.48s]
#> - Installing pillar ...                         OK [installed binary in 0.69s]
#> - Installing R6 ...                             OK [installed binary in 0.94s]
#> - Installing pkgconfig ...                      OK [installed binary in 0.33s]
#> - Installing tibble ...                         OK [installed binary in 0.94s]
#> - Installing withr ...                          OK [installed binary in 0.8s]
#> - Installing tidyselect ...                     OK [installed binary in 0.91s]
#> - Installing dplyr ...                          OK [installed binary in 0.39s]
#> - Installing duckdb ...                         OK [installed binary in 1.2s]
#> - Installing purrr ...                          OK [installed binary in 0.85s]
#> - Installing duckplyr ...                       OK [built from source in 8.6s]
#> Successfully installed 21 packages in 21 seconds.
#> Installing duckplyr@0.2.0 from P3M snapshot
#> # Downloading packages -------------------------------------------------------
#> - Downloading duckplyr from Repository ...      OK [372.9 Kb in 1.2s]
#> Successfully downloaded 1 package in 1.4 seconds.
#> 
#> The following package(s) will be installed:
#> - duckplyr [0.2.0]
#> These packages will be installed into "/private/var/folders/xh/crvwt7596l3b9p1s66q3fr1r0000gp/T/RtmpWDsToA/fileb365693320c5/renv/library/macos/R-4.4/aarch64-apple-darwin20".
#> 
#> # Installing packages --------------------------------------------------------
#> - Installing duckplyr ...                       OK [installed binary in 0.36s]
#> Successfully installed 1 package in 0.38 seconds.

Created on 2024-10-01 with reprex v2.1.1

Session info
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.4.1 (2024-06-14)
#>  os       macOS Sonoma 14.5
#>  system   aarch64, darwin20
#>  ui       X11
#>  language (EN)
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       America/New_York
#>  date     2024-10-01
#>  pandoc   3.1.11 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  ! package     * version date (UTC) lib source
#>  P cli           3.6.3   2024-06-21 [?] RSPM
#>  R digest        0.6.37  <NA>       [?] <NA>
#>  R evaluate      1.0.0   <NA>       [?] <NA>
#>  R fastmap       1.2.0   <NA>       [?] <NA>
#>  R fs            1.6.4   <NA>       [?] <NA>
#>  P glue          1.8.0   2024-09-30 [?] RSPM
#>  R htmltools     0.5.8.1 <NA>       [?] <NA>
#>  R knitr         1.48    <NA>       [?] <NA>
#>  P lifecycle     1.0.4   2023-11-07 [?] RSPM
#>  P renv          1.0.7   2024-04-11 [?] CRAN (R 4.4.1)
#>  R reprex        2.1.1   <NA>       [?] <NA>
#>  P rlang         1.1.4   2024-06-04 [?] RSPM
#>  R rmarkdown     2.28    <NA>       [?] <NA>
#>  R rstudioapi    0.16.0  <NA>       [?] <NA>
#>  R sessioninfo   1.2.2   <NA>       [?] <NA>
#>  P withr         3.0.1   2024-07-31 [?] RSPM
#>  R xfun          0.47    <NA>       [?] <NA>
#>  R yaml          2.3.10  <NA>       [?] <NA>
#> 
#>  [1] /private/var/folders/xh/crvwt7596l3b9p1s66q3fr1r0000gp/T/RtmpWDsToA/fileb365693320c5/renv/library/macos/R-4.4/aarch64-apple-darwin20
#>  [2] /Users/nickybell/Library/Caches/org.R-project.R/R/renv/sandbox/macos/R-4.4/aarch64-apple-darwin20/f7156815
#> 
#>  P ── Loaded and on-disk path mismatch.
#>  R ── Package was removed from disk.
#> 
#> ──────────────────────────────────────────────────────────────────────────────
Using R 4.3.1
withr::local_options(list(renv.settings.use.cache = FALSE)) # don't use cache to show how package is installed
    project_directory <- withr::local_tempdir()
    
    withr::with_dir(
        new = project_directory,
        code = {
            renv::init(restart = FALSE)
            
            message("Installing duckplyr@0.2.0 from https://packagemanager.posit.co/cran/latest")
            # installs from source
            renv::install(
                "duckplyr@0.2.0", 
                prompt = FALSE
            )
        }
    )
Output
#> The following package(s) will be updated in the lockfile:
#> 
#> # RSPM -----------------------------------------------------------------------
#> - renv   [* -> 1.0.7]
#> 
#> The version of R recorded in the lockfile will be updated:
#> - R      [* -> 4.3.1]
#> 
#> - Lockfile written to "/private/var/folders/xh/crvwt7596l3b9p1s66q3fr1r0000gp/T/RtmpSXShFq/filed7ba529bb07c/renv.lock".
#> Installing duckplyr@0.2.0 from https://packagemanager.posit.co/cran/latest
#> # Downloading packages -------------------------------------------------------
#> - Downloading duckplyr from P3M ...             OK [377.3 Kb in 1.3s]
#> - Downloading cli from CRAN ...                 OK [file is up to date]
#> - Downloading collections from CRAN ...         OK [63.3 Kb in 0.38s]
#> - Downloading DBI from CRAN ...                 OK [878.6 Kb in 0.43s]
#> - Downloading dplyr from CRAN ...               OK [1.4 Mb in 0.57s]
#> - Downloading generics from CRAN ...            OK [74.5 Kb in 0.22s]
#> - Downloading glue from CRAN ...                OK [file is up to date]
#> - Downloading lifecycle from CRAN ...           OK [file is up to date]
#> - Downloading rlang from CRAN ...               OK [file is up to date]
#> - Downloading magrittr from CRAN ...            OK [212.9 Kb in 0.25s]
#> - Downloading pillar from CRAN ...              OK [634.5 Kb in 0.37s]
#> - Downloading fansi from CRAN ...               OK [296 Kb in 0.28s]
#> - Downloading utf8 from CRAN ...                OK [140.5 Kb in 0.24s]
#> - Downloading vctrs from CRAN ...               OK [1.2 Mb in 0.54s]
#> - Downloading R6 from CRAN ...                  OK [file is up to date]
#> - Downloading tibble from CRAN ...              OK [658 Kb in 0.38s]
#> - Downloading pkgconfig from CRAN ...           OK [17.7 Kb in 0.21s]
#> - Downloading tidyselect from CRAN ...          OK [217 Kb in 0.27s]
#> - Downloading withr from CRAN ...               OK [file is up to date]
#> - Downloading duckdb from CRAN ...              OK [10.4 Mb in 3.0s]
#> - Downloading purrr from CRAN ...               OK [477.1 Kb in 0.33s]
#> Successfully downloaded 21 packages in 14 seconds.
#> 
#> The following package(s) will be installed:
#> - cli         [3.6.3]
#> - collections [0.3.7]
#> - DBI         [1.2.3]
#> - dplyr       [1.1.4]
#> - duckdb      [1.1.0]
#> - duckplyr    [0.2.0]
#> - fansi       [1.0.6]
#> - generics    [0.1.3]
#> - glue        [1.8.0]
#> - lifecycle   [1.0.4]
#> - magrittr    [2.0.3]
#> - pillar      [1.9.0]
#> - pkgconfig   [2.0.3]
#> - purrr       [1.0.2]
#> - R6          [2.5.1]
#> - rlang       [1.1.4]
#> - tibble      [3.2.1]
#> - tidyselect  [1.2.1]
#> - utf8        [1.2.4]
#> - vctrs       [0.6.5]
#> - withr       [3.0.1]
#> These packages will be installed into "/private/var/folders/xh/crvwt7596l3b9p1s66q3fr1r0000gp/T/RtmpSXShFq/filed7ba529bb07c/renv/library/R-4.3/aarch64-apple-darwin20".
#> 
#> # Installing packages --------------------------------------------------------
#> - Installing cli ...                            OK [installed binary in 0.44s]
#> - Installing collections ...                    OK [installed binary in 0.33s]
#> - Installing DBI ...                            OK [installed binary in 0.86s]
#> - Installing generics ...                       OK [installed binary in 0.34s]
#> - Installing glue ...                           OK [installed binary in 0.34s]
#> - Installing rlang ...                          OK [installed binary in 0.38s]
#> - Installing lifecycle ...                      OK [installed binary in 0.35s]
#> - Installing magrittr ...                       OK [installed binary in 0.35s]
#> - Installing fansi ...                          OK [installed binary in 0.35s]
#> - Installing utf8 ...                           OK [installed binary in 0.33s]
#> - Installing vctrs ...                          OK [installed binary in 0.38s]
#> - Installing pillar ...                         OK [installed binary in 0.38s]
#> - Installing R6 ...                             OK [installed binary in 0.34s]
#> - Installing pkgconfig ...                      OK [installed binary in 0.36s]
#> - Installing tibble ...                         OK [installed binary in 0.92s]
#> - Installing withr ...                          OK [installed binary in 0.35s]
#> - Installing tidyselect ...                     OK [installed binary in 0.53s]
#> - Installing dplyr ...                          OK [installed binary in 0.39s]
#> - Installing duckdb ...                         OK [installed binary in 0.93s]
#> - Installing purrr ...                          OK [installed binary in 0.59s]
#> - Installing duckplyr ...                       OK [installed binary in 0.77s]
#> Successfully installed 21 packages in 10 seconds.

Created on 2024-10-01 with reprex v2.1.1

Session info
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.3.1 (2023-06-16)
#>  os       macOS Sonoma 14.5
#>  system   aarch64, darwin20
#>  ui       X11
#>  language (EN)
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       America/New_York
#>  date     2024-10-01
#>  pandoc   3.1.11 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  ! package     * version date (UTC) lib source
#>  P cli           3.6.3   2024-06-21 [?] RSPM
#>  R digest        0.6.37  <NA>       [?] <NA>
#>  R evaluate      1.0.0   <NA>       [?] <NA>
#>  R fastmap       1.2.0   <NA>       [?] <NA>
#>  R fs            1.6.4   <NA>       [?] <NA>
#>  P glue          1.8.0   2024-09-30 [?] RSPM
#>  R htmltools     0.5.8.1 <NA>       [?] <NA>
#>  R knitr         1.48    <NA>       [?] <NA>
#>  P lifecycle     1.0.4   2023-11-07 [?] RSPM
#>  P renv          1.0.7   2024-04-11 [?] RSPM (R 4.3.1)
#>  R reprex        2.1.1   <NA>       [?] <NA>
#>  P rlang         1.1.4   2024-06-04 [?] RSPM
#>  R rmarkdown     2.28    <NA>       [?] <NA>
#>  R rstudioapi    0.16.0  <NA>       [?] <NA>
#>  R sessioninfo   1.2.2   <NA>       [?] <NA>
#>  P withr         3.0.1   2024-07-31 [?] RSPM
#>  R xfun          0.47    <NA>       [?] <NA>
#>  R yaml          2.3.10  <NA>       [?] <NA>
#> 
#>  [1] /private/var/folders/xh/crvwt7596l3b9p1s66q3fr1r0000gp/T/RtmpSXShFq/filed7ba529bb07c/renv/library/R-4.3/aarch64-apple-darwin20
#>  [2] /Users/nickybell/Library/Caches/org.R-project.R/R/renv/sandbox/R-4.3/aarch64-apple-darwin20/ac5c2659
#> 
#>  P ── Loaded and on-disk path mismatch.
#>  R ── Package was removed from disk.
#> 
#> ──────────────────────────────────────────────────────────────────────────────

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing renv:::renv_p3m_database_load() and renv:::renv_p3m_database_key() to find where platform and R-version mappings are stored. Verify the missing macosx/big-sur-arm64 and R 4.4 key, then rerun the provided duckplyr installation example; done means the historical PPM snapshot installs the binary rather than building from source.

Written by the indexing model from the issue text.

Assessment

Tech stack
r
Domain
databases, tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.