chore(deps): update dependency nbafrank/uvr to v0.4.7 #229
Loading…
Reference in a new issue
No description provided.
Delete branch "renovate/nbafrank-uvr-0.x"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
v0.4.6→v0.4.7Release Notes
nbafrank/uvr (nbafrank/uvr)
v0.4.7Compare Source
Private and non-CRAN code becomes a first-class dependency: packages from
authenticated repositories, from any git host, and from a tarball URL, with
one credential resolver (environment variables, then
~/.netrc) behind allof them. Lockfiles get stricter in the useful direction:
uvr sync --frozenno longer breaks when CRAN publishes something new, git dependencies install
from their locked commit, and
uvr add/uvr removestop rewriting youruvr.toml. IDE setup is now opt-in, with an explicit unattended mode for CI.Three adversarial reviews ran before this tag. They found that a git host's
token could reach a lookalike host (and that the all-hosts GitLab/Forgejo
tokens went to any host a project named), that re-locking could silently
accept a changed URL tarball, and that
--frozenrejected inline git refs.All are fixed here.
Two changes may need action:
Self-hosted GitLab/Forgejo: use the per-host token variable. The
all-hosts
UVR_GITLAB_TOKEN/UVR_FORGEJO_TOKENnow go only togitlab.com/codeberg.org, and a-in a host name is now__in thevariable name. uvr warns and prints the variable to set.
r_version = "4.5"(no operator) now pins R 4.5.x, as.r-versionand
uvr r usealways did. Write">=4.5"for a floor.Verify installed and cached generic Git package provenance before reuse, including same-version content or origin changes. Frozen sync validates manifest inputs locally and restores the locked commit without following remote branch changes.
A bare
r_versionpins R (#320).r_version = "4.5.3"inuvr.tomlused to be read as the semver caret
^4.5.3, souvr runpicked thenewest R (4.6.0) and then warned that it didn't match the pin, telling you
to install a version that was already installed. A bare version now
means what it means in
.r-versionanduvr r use:"4.5.3"is exactlyR 4.5.3, and
"4.5"is the newest installed 4.5.x. Write">=4.5"or"^4.5"for a range.uvr run --r-version 4.5.3follows the same rule,and so does the
--frozencheck of the locked R.uvr importnow writesthe R from
renv.lockas a floor (">=4.2.1"), because renv records theR a lock was made with, not one the project requires.
Pre-release review fixes.
uvr lockwithout--upgrade, anduvr addof another package, nowrefuse a URL tarball whose file changed since
uvr.lockwas written,instead of quietly recording the new checksum. Only
uvr lock --upgradeaccepts it.
uvr sync --frozenacceptsgit = "git::<url>@​<ref>"written inline. Itused to reject every such lock as not matching its Git dependency.
url =dependency with auser:password@part is rejected, becausethe secret would be written into
uvr.tomlanduvr.lock.[[sources]]credential is no longer sent over plainhttp://, exceptto
localhost; uvr warns instead.UVR_GITLAB_TOKEN*andUVR_FORGEJO_TOKEN*are kept out ofR CMD INSTALL, like the other uvr credentials.no longer reach a different host. A
-in a host name is now__inits token variable (
my-gitlab.example→UVR_GITLAB_TOKEN_MY__GITLAB_EXAMPLE).Before,
-and.were both_, so a project that namedgit-corp.comreceived the token set forgit.corp.com. The all-hostsUVR_GITLAB_TOKENandUVR_FORGEJO_TOKENnow go only togitlab.comand
codeberg.org; before, they went to any host a dependency named. Avariable under its old name, or an all-hosts token that a host no
longer gets, produces a warning with the variable to set instead.
uvr addin a project writes a standard[dependencies]table, not an inline
dependencies = { … }above[project].uvr.tomlstays CRLF whenuvr addoruvr removeedits it.Positron settings name the project's R (#321).
uvr init,syncandimportnow bind.vscode/settings.jsonto the R thatuvr runresolves(the
.r-versionpin, then theuvr.tomlr_version) instead of thenewest installed R. If no installed R satisfies the project, the settings
are left alone with a hint, rather than pointing at a different R. The
managed-R check also honours
UVR_R_INSTALL_DIRnow.IDE config is now opt-in; CI mode is explicit (#176, #206).
uvr init/sync/importno longer assume an RStudio/Positron workflow:.vscode/settings.jsonand IDE-oriented hints are only produced whenPositron is detected (
POSITRON=1) or forced with--ide=positron(nowscoped to
init/sync/import).--no-idesuppresses them,--no-companion(UVR_NO_COMPANION=1) skipsthe injected companion R package, and
--unattended(UVR_UNATTENDED=1)disables all of the above and every working-tree write (
.Rprofile,.gitignore, activation shims) so a checked-out repository staysbyte-identical.
uvr sync --frozenruns its staleness check before writingany scaffolding, so a stale lockfile fails without dirtying the checkout.
uvr init --bareis the persistent form for interactiveuse:
uvr.toml,.uvr/library/, and a protective.gitignore, persistedin
[project] bare = true.uvr scannow detectsbox::use()imports. Package declarations(
box::use(dplyr[filter]),box::use(gg = ggplot2)) are discovered;local module paths (
box::use(./mod),box::use(prefix/mod)) areignored.
Packages from any git host (#190). A dependency can now name a git
repository by its clone URL:
uvr add git::https://git.example.com/team/pkg.git@v1.0,or
pkg = { git = "git::<url>", rev = "v1.0" }inuvr.toml. This coversBitbucket, a self-hosted GitLab or Gitea, and company git servers. uvr runs
gitto find and fetch the commit, locks it (source = "git:<url>",checksum = "git:<sha>"), installs it from source, and keeps it in thedownload cache.
https://,ssh://anduser@host:pathURLs work;http://andfile://work with a warning. A private https repositorytakes
UVR_GIT_TOKEN_<HOST>(with an optionalUVR_GIT_USER_<HOST>) or a~/.netrcentry; without one, git uses its own credential helpers or sshkeys.
uvr doctornow shows whether git is installed, anduvr exportwrites these packages as renv
gitremotes.One credential path for GitHub, GitLab and Forgejo (#187). The three
git hosts now get their tokens from the same resolver as
[[sources]]repositories, with the same variables and order as before. Private GitHub
dependencies now install: uvr also sends the token with the tarball
download, not only at lock time. A git host's token now goes only to URLs
on that host. Before,
uvr synccould send a GitLab or Forgejo token to aP3M or custom-source binary URL for a package with the same name. If a
host refuses a
~/.netrcpassword, uvr shows a warning and continueswithout credentials, so an old entry does not break public repositories.
Credentials from
~/.netrc(#186). If noUVR_REPO_*variable is setfor a
[[sources]]repository, uvr uses the~/.netrcentry for its host(HTTP basic auth). GitHub, GitLab and Forgejo dependencies also use the
entry's password as their access token when their token variables are
not set. An environment credential always has precedence.
NETRCgives adifferent file. On Unix, uvr shows a warning and ignores a netrc file
that other users can access. uvr never uses a
defaultentry. The401/403message now also names the netrc entry to add.Install from authenticated repositories (#185). A
[[sources]]repository (a private Posit Package Manager, an internal mirror) can now
require credentials. uvr reads them from the environment, keyed by the
source name:
UVR_REPO_TOKEN_<NAME>for a bearer token, orUVR_REPO_USER_<NAME>andUVR_REPO_PASSWORD_<NAME>for HTTP basic auth,so
uvr.tomlnever holds a secret. uvr sends the credential with the indexrequest and with each package download, but only to URLs under that
repository. A
401/403names the repository and the variables to set.Credentials never show in output,
-vincluded, anduser:pass@URLs areredacted.
uvr add --sourcenow refuses a URL that has credentials in it.Verify installed and cached URL tarball package provenance before reuse, including same-version content or origin changes. Downloads are verified against the locked checksum; frozen sync checks the declared URL locally.
Depend on a source tarball by URL (#189).
uvr add https://…/pkg_1.2.0.tar.gzrecordspkg = { url = "…" }inuvr.toml;the lockfile pins the URL and a
sha256checksum (source = "url"), anduvr syncinstalls that exact file from source, never a same-named binary.If the file changes, sync fails with both checksums and asks you to run
uvr lock --upgrade. A URL that is not an R source package (a web page, a builtbinary, a tarball without one top-level package directory) is rejected
when you add or lock it.
uvr exportwrites these as renvURLremotes.Frozen sync checks the manifest locally (#305). New lockfiles record a
fingerprint of resolution inputs, so upstream releases cannot make an
unchanged lock fail in CI. Graph completeness and development flags are also
checked. Older CRAN/Bioconductor locks get a local dependency check; older
Git/custom-repository locks need a one-time
uvr lockmigration. Plainuvr lockreuses the entire resolution when its inputs match; changed inputstrigger a fresh resolution. Use
--upgradeto refresh unchanged inputs.Add and remove preserve comments and other tools' manifest metadata
(#306), including
[project] versionand[tool.*]tables.Git packages stay tied to their pinned source (#300). Sync no longer
substitutes a same-name registry binary for a GitHub, GitLab, or Forgejo
dependency, and it checks installed and cached packages against the commit.
Distro suite maintenance: refreshed the Alpine 3.21/3.22 image versions.
macOS: the OpenMP shim now reaches CRAN's own R, not just uvr-managed
installs (#261). uvr skipped the shim for a system R on the assumption
that CRAN's framework build links
libompitself. It does not:libR.dylibcarries no
libompload command andSHLIB_OPENMP_CFLAGSis empty, soP3M binaries built with
-fopenmpthat don't link the runtime by absolutepath (mgcv 1.9-4 among them, hence anything depending on it) failed with
symbol not found in flat namespace '___kmpc_barrier', and theunconditional
R_PROFILE_USER=/dev/nullat install time removed the.Rprofileworkaround too. Rather than editing an R it does not own, uvrnow writes its site profile to
~/.uvr/etc/Rprofile.siteand pointsR_PROFILEat it per invocation, foruvr run,uvr activate(restoredon
deactivate), andR CMD INSTALL's child sessions. The profile firstsources the site profile it displaces (
$R_HOME/etc/Rprofile.site, or auser's own
R_PROFILE, carried inUVR_SITE_PROFILE_ORIG), so nothing isshadowed. Verified against a shim-less R: P3M's mgcv 1.9-4 fails before and
loads after, with the chained profile's options still visible.
R --vanillaremains the documented gap. Reported with a full
otooldiagnosis by@remlapmot, with @gdevenyi confirming the install-time half from the code.
uvr r installrewrites the stale build-timeR_HOME_DIRin thebin/Rwrapper to the installation's real path (#271). The portablebuilds leave the build machine's path (a
/Library/Frameworks/...framework directory on macOS) on the wrapper's first assignment and only
recompute it at runtime, so tools that read the wrapper as text resolved
the interpreter to an R that isn't there — Positron either failed to
start uvr-managed R or silently launched a different version against the
project's library. The rewrite is inert for shell execution (the runtime
override recomputes the same value) and only corrects what static
readers see. Applies to new installs; refresh an existing version with
uvr r uninstall <ver> && uvr r install <ver>. Reported with averified one-line diagnosis by @Felixmil.
GitHub dependencies can select an R package in a repository
subdirectory, directly or through transitive DESCRIPTION
Remotes:(#244).Direct declarations use
uvr add 'owner/repo[@​revision]#subdirectory=path'; transitive declarationsaccept renv/devtools slash and colon forms. Repository, requested revision,
exact commit, and package directory remain separate identities through the
lock and install paths. Remote traversal is source-chained: only packages
already reached through a manifest Git source may introduce another remote,
while registry packages cannot inject URLs. Bound aliases and nested targets
fail closed instead of falling back to CRAN or the repository root. Cache,
provenance, frozen sync, and renv
RemoteSha/RemoteSubdirhandling apply todirect and transitive packages alike.
One deliberate tightening rides along: a GitLab/Forgejo spec with a
bare trailing
@(or a/-/path segment) is now rejected at parsetime instead of being read as "no ref" — cross-provider hardening,
not a regression.
Full docs claim audit. Every checkable factual claim in the README
and the website was verified against primary sources (the tools' own
docs and source, our own code and CLI). Fixed beyond the earlier
Rationale pass: the sysreqs section still credited the r-hub sysreqs
API (uvr uses the vendored r-system-requirements rules plus Posit's
sysreqs API, across apt/dnf/zypper/apk); the "From R" install snippet
was uninstallable as written (uvr-r is not on CRAN — now
pak::pak("nbafrank/uvr-r")); renv's "run scripts" cell was wrong inboth feature matrices (
renv::run()exists); the rig admin footnotenow cites rig's own FAQ (no admin, period — not just Windows); the
site claimed an ~8 MB binary (it is ~12 MB); the
uvr doctorexamplewas refreshed to current output;
uvr self-updateis documented underits canonical name
uvr upgrade. Verified-as-written and left alone:install script behavior, AUR packages, platform table, glibc/musl
build channels, activation docs, standalone-script docs, all remaining
matrix cells.
Corrected false claims in the docs, flagged by r/rstats.
The README's Rationale said renv installs are "slow and require
compilation on Linux" (mirror-dependent, not true with a binary repo
like P3M — our own benchmark shows it), said pak has "no lockfile"
(
pak::lockfile_create()exists, and our own feature matrix said Y),and the website's comparison table still had rv's column from before
PR #254 (no
rv run, no sysdeps, no CI mode). All fixed.The website's benchmark numbers were invalid and are replaced.
bench.shpointed every R tool at P3M's source-only path(
p3m.dev/cran/latest), so in the Linux container install.packagesand pak compiled everything from source (865s / 414s for tidyverse)
while uvr used binaries — that is not a comparison, and the "142x"
headline built on it was wrong. The script now uses the
__linux__/<codename>binary path plus an R User-Agent on Linux, andthe site now shows the corrected container run (cold tier: uvr 10.4s
vs install.packages 29.2s for tidyverse — 2.8x, not 142x; warm runs
are far faster still). The same fix made the pathological pak and
warm-sync numbers from #235/#237 disappear, so those were likely the
mirror bug too.
--install-system-depsnow runs the setup commands the sysreqs rulescarry, so it works on distros where the packages do not exist until a
repository is enabled.
63 of the 131 vendored rule files have a
pre_installand 2 have apost_install, and uvr dropped all of them: on Rocky 9 it tried toinstall
gdal3.4-develfrom repos that were never enabled, andrJavanever got its
R CMD javareconf.pre_installnow runs before the batched package install andpost_installafter, both only when something is actually missing, so afully provisioned machine does not re-enable EPEL on every sync.
Nothing runs without
--install-system-deps/UVR_INSTALL_SYSREQS=1.The consent block says where each root command comes from and what it
does.
These are shell strings run as root, and two of them are worth reading
before approving: they arrive either from uvr's vendored
r-system-requirementssnapshot or from Posit's API fetched during thatsync, and some of them fetch and execute remote code, install from a
URL, disable signature checking, or add a third-party repository.
Each command is now listed with both, on stderr alongside the prompt and
unconditionally, so redirecting stdout to a build log cannot separate
the consent from what it covers.
The block also states that an unannotated command is one uvr matched no
pattern in rather than one it vetted.
Configuration
📅 Schedule: (UTC)
* 0-3 * * *)* 0-3 * * *)🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.