chore(deps): update dependency nbafrank/uvr to v0.4.8 #243
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.7→v0.4.8Release Notes
nbafrank/uvr (nbafrank/uvr)
v0.4.8Compare Source
Scripts become self-contained: a
# /// scriptheader can pin versions,Bioconductor and git packages, and the R version itself, which
uvr runinstalls when it is missing;
uvr add/remove --scriptedit the header foryou. Resolution gets uv's controls: test your declared floors with
--resolution lowest-direct, reproduce an old analysis with--exclude-newer <date>, force or bound a transitive dependency with[override-dependencies]/[constraint-dependencies], and move onepackage with
uvr lock -P. Also: an opt-in host pin for repositorycredentials,
uvr syncno longer deletes packages it did not install, andsecurity updates for rustls, webpki and zip.
Three adversarial reviews ran before this tag. They found that a cloned
uvr.lockcould steer a cache path through its snapshot date, that a dateset with
--exclude-newerwas silently dropped by the nextuvr add, andthat
uvr runmixed install output into a script's stdout. All are fixedhere.
Changes that may need action:
pkg = "==1.0.8"now means exactly 1.0.8. It used to match afour-part release such as 1.0.8.3. uvr now locks 1.0.8 itself (from the
CRAN archive if needed), or fails if no repository has it.
UVR_REPO_HOST_<NAME>to your repository'shost, so a cloned
uvr.tomlthat reuses the repository name cannotreceive the token.
activating again with v0.4.8.
Known issues, for v0.4.9: with old CRAN releases loaded (lowest modes,
overrides), a four-part version such as 1.0.8.3 sorts below 1.0.8; and
uvr_deactivateremoves a Python venv'sdeactivatewhen the venv wasactivated after uvr.
Pre-release review fixes.
uvr runwrites uvr's own status lines(install summaries, package-name notes) to stderr, so a script's stdout
holds only what the script prints. A script header in a file that starts
with a UTF-8 BOM is read, and
uvr add --scriptno longer adds a secondheader below it. Two git or URL header entries whose file names match
(
.../main.tar.gz) no longer fail as "requested twice".uvr add --scriptrefuses
--resolution, which it would ignore. In the default resolutionmode, an unreachable crandb no longer hides the resolver's own error. A
system package name that starts with
-is never passed to dpkg/rpm/apk.Security updates for dependencies. rustls 0.23.46, rustls-webpki
0.103.16, webpki-roots and webpki-root-certs 1.0.10 (distrusted emSign
intermediates), quinn-proto 0.11.18, and zip 9. uvr extracts zip archives
entry by entry with its own path checks, so the zip advisories (which
concern
ZipArchive::extract) did not reach it.Override or constrain a dependency's version from
uvr.toml(#195).[override-dependencies]sets a package to an exact version and ignoreswhat other packages (and
[dependencies]) require of it;uvr lock -vshows each requirement that an override ignores.
[constraint-dependencies]adds a version range that a package must satisfy if something pulls it in,
without adding it to the project. An override can select an archived CRAN
release. An exact version requirement (
== 1.0.8) no longer matches afour-part release such as 1.0.8.3.
Resolve CRAN as of a date, to reproduce an old analysis (#194).
uvr lock --exclude-newer 2024-01-01, or[resolution] exclude-newerinuvr.toml, resolves CRAN packages from the Posit Package Manager snapshotfor that day.
uvr.lockrecords the date asresolved_as_of, anduvr syncinstalls the P3M binaries from the same snapshot. A date givenonly on the command line stays in the lock: later
uvr add,uvr remove,uvr lock -Panduvr update <pkg>resolve at the same date untiluvr.tomlnames one oruvr lock --upgrademoves to today's CRAN. Bioconductor,custom repositories, and git dependencies have no dated snapshot: uvr warns
once and resolves them from their current state. Without the option,
resolution is unchanged.
Resolve to the lowest allowed versions, so declared floors get tested
(#193).
uvr lock,uvr add, anduvr updateaccept--resolution {highest,lowest,lowest-direct}, anduvr.tomlaccepts[resolution] strategy.lowestpicks the oldest release that everyconstraint allows, for all packages, as uv does.
lowest-directlowersonly the project's own dependencies. CRAN's index lists only current
releases, so uvr reads older releases from crandb (METACRAN), caches them,
and locks their CRAN Archive URL. A release that needs a package that has
left CRAN is skipped. The default (
highest) is unchanged.uvr lock --upgrade-package <pkg>(-P) upgrades one package inuvr.lockand nothing else (#196). It is the lock-only form ofuvr update <pkg>and uses the same resolution: every other package isheld at its locked version, and a conflict with a held-back package is an
error that leaves
uvr.lockunchanged. It installs nothing, so you canreview a single bump before
uvr sync. A second run with nothing newerdoes not write the file and says so. The flag is repeatable and cannot be
combined with
--upgrade.uvr add --scriptanduvr remove --scriptedit a script's inlineheader (#184), like
uv add --script.uvr add <pkg…> --script s.Rcreates the
# /// scriptblock when there is none (after a shebang line),replaces the spec of a package already listed, and writes new entries in
the header's own spellings (
ggplot2>=3.4,DESeq2 (bioc),owner/repo@ref), souvr runreads back exactly what was added. A sortedlist stays sorted and a hand-ordered one is appended to, so each edit is a
one-line diff.
uvr remove <pkg…> --script s.Rdrops entries and deletesthe block once nothing is left in it. Only the
dependencieslines change:other keys, comments, CRLF line endings, the file's mode and the rest of the
script stay as they were. Neither command touches
uvr.tomloruvr.lockor installs anything; the next
uvr runbuilds the environment.A script header can pin R, and uvr installs it if needed (#183).
# r = "~4.4"in a# /// scriptheader selects the newest installed Rthat satisfies the constraint (the
uvr.tomlr_versiongrammar). If noinstalled R does,
uvr runinstalls the newest matching R published forthe platform, with the same backend and progress lines as
uvr r install,and then runs the script.
UVR_R_DOWNLOADS=never(defaultauto) turnsthe download off; the error then names the constraint.
--r-versionstillwins over the header and never downloads. An invalid
rvalue is now aheader error. uvr's log lines (
INFO/WARN) now go to stderr, so they nolonger mix into a script's stdout or into
uvr activate --emitoutput.Script headers take the full
uvr addspec vocabulary (#182). A# /// scriptentry can now carry a version constraint ("ggplot2>=3.4"or
"ggplot2@​>=3.4"), a Bioconductor marker ("DESeq2 (bioc)"), or a gitsource (
"user/repo@ref",forgejo::…,gitlab::…), so a shared scriptpins what it needs. The ephemeral environment is keyed on the full specs,
so headers differing only by version get separate environments, while
plain names keep their existing cache keys and no environment is rebuilt.
One parser now serves both, so
uvr addaccepts thepkg>=1.0andpkg (bioc)spellings too and rejects a malformed version constraintbefore it touches
uvr.toml.UVR_REPO_HOST_<NAME>binds a repository's credentials to its host.UVR_REPO_TOKEN_<NAME>andUVR_REPO_USER/PASSWORD_<NAME>are keyed by the[[sources]]name, which a cloneduvr.tomlchooses, so a project couldname your repository and point it at its own URL. With
UVR_REPO_HOST_INTERNAL_PPM=ppm.corp.exampleset, the variables go only tothat host (and port, if given); any other URL gets a warning and falls
through to
~/.netrc. Without the pin nothing changes.--unattendedno longer leaves.uvr/untracked..uvr/now holds a.gitignorewith*, so the library uvr creates stays out ofgit statuswithout editing the project's own
.gitignore.uvr activateunder--unattendedno longer writes the activation shims (and their.gitignoreentry); it printseval "$(uvr activate --emit sh)"instead.uvr add pkgkeeps an existing constraint. Adding a package thatuvr.tomlalready lists, without a version, used to reset its constraintto
*. It now stays as written (with its comment), unless the add switchesthe source (
--bioc, a git spec, a URL).uvr add --devfor a runtimedependency no longer lists it in both sections, and
uvr addwithout--devmoves a dev dependency to[dependencies].uvr scanignoresbox::use(...)inside strings, and a#inside astring no longer hides a
box::uselater on the same line.The OpenMP site profiles are replaced atomically, so an R session
started by a concurrent
uvr runnever reads a half-written profile, anda rewritten
Rprofile.sitekeeps its file mode.uvr lockgets the base packages from the active R (#169). The resolveradds the names that
installed.packages(priority = "base")gives to itshardcoded list. Thus a base package that a new R release adds is not sent
to CRAN, where it fails with
PackageNotFound. This costs one more Rstart-up per lock, and only when lock finds R. Without R, the hardcoded list
(the R 4.6 set) applies as before.
Failures that uvr used to drop silently are now reported (#168).
uvr cache cleansaid "Cache is already empty" when it could not removeanything (a permission error, for example), and it counted the package
cache as cleared without checking; it now counts only what it removed,
warns for each entry it could not remove, and exits non-zero when nothing
could be removed. If
uvr upgradecannot install the new binary and thencannot put the old one back, the error now gives the path of the backup
and where to move it, instead of leaving no
uvrand no explanation.Failed cleanup of a broken R install, a failed registry cache-meta write,
a missing working directory during
.r-versionlookup, and an unusableRemotes:entry (now with the name of the package that declares it) arelogged as warnings.
A source build that fails because the compiler rejects R's
-std=flagnow says why (#231). R's
etc/Makeconfrecords the compiler flags of thehost that built it, and R 4.5.1's musl build asks for
-std=gnu23, whichgcc 13 (Alpine 3.20) does not know. R installed fine, then every package
with C code failed with only gcc's
unrecognized command-line option '-std=gnu23'. uvr now adds a hint that names the flag, says this R wasbuilt for a newer compiler than the host has (gcc >= 14 or clang >= 18 for
C23), and suggests a newer compiler or an R build that matches the host.
The root cause is upstream in rstudio/r-builds.
A source tarball served from a binary URL is now built from source
instead of failing the install (#225). P3M's Linux repos serve source
and binary from the same URL, and fall back to source for any package
version not yet built for that repo, even though the index lists it. uvr
trusted the index and sent the source tarball down the binary path, so
uvr add xml2failed with "not a built binary package" on repos that hadnot built xml2 1.6.0 yet (openSUSE 15.6 and Debian 12 when reported)
until a manual
uvr sync --no-binary. uvr now reads the tarball'sDESCRIPTIONfirst: noBuilt:field means source, so the package goesthrough
R CMD INSTALL, with the usual system-dependency check.Binary-URL archives that do carry a
Built:field still take the binarypath.
uvr syncno longer deletes packages it did not install (#255). Syncremoved every package in
.uvr/library/that was not inuvr.lock. Thelibrary is on
R_LIBS_USERin an activated shell, so a package installedthere with
install.packages(), or by a tool such as carrier, disappearedon the next sync. uvr now writes a marker file,
Meta/uvr-installed, into each package it installs, whether it comesfrom a binary, from
R CMD INSTALL, or from the package cache. Syncremoves only unlocked packages that have the marker. It keeps the other
unlocked packages and lists them in one line.
uvr sync --prune-allrestores the old behaviour. Existing libraries need no separate
migration step: each sync marks the installed packages that
uvr.locklists, so after one sync with this version,
uvr removefollowed byuvr synccleans up as before. A package removed from the lockfilebefore that first sync has no marker, so sync keeps it and lists it. A
package that you reinstall with R also loses the marker, because R
replaces the whole package directory.
Activating a uvr project no longer breaks a Python virtual environment's
deactivate(#303). A shell has one function namespace, so uvr'sdeactivatereplaced the venv's, and removing uvr's on the way out left theshell with no
deactivateat all and the venv still active. The work nowlives in
uvr_deactivate, which every activation defines.deactivateisan alias for it, created only when no other tool owns that name; when one
does, uvr says which name to use instead. Re-sourcing the shim also unwinds
through
uvr_deactivate, so it can never tear down a venv. Reported by@davidorme.
uvr addacceptsowner/repo/subdir[@​ref]andowner/repo:subdir[@​ref](#312). These are the GitHub package-directory forms of DESCRIPTION
Remotes:. They give the same dependency asowner/repo[@​ref]#subdirectory=subdir.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.