chore(deps): update dependency nbafrank/uvr to v0.4.6 #162
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.5→v0.4.6Release Notes
nbafrank/uvr (nbafrank/uvr)
v0.4.6Compare Source
Standalone scripts land: a
.Rfile can now declare its own dependenciesin a header comment and run anywhere, with no project, manifest, or
lockfile — the first slice of F1 from the uv-parity roadmap, and the
feature that most distinguishes uvr from the alternatives. Alongside it:
faster warm syncs on every platform (Windows stops copying packages,
Linux source caching works at all for the first time), R installs you can
place where you want, and an install plan you can inspect before it runs.
Two adversarial reviews ran before this tag. One found that two features
in this very batch broke each other — script environments were diverted
by
UVR_LIBRARY— which is fixed here and covered by a regression test.A script's inline-header environment is no longer diverted by
UVR_LIBRARY. The two features collided: the ephemeral environment iscache-owned, but the install inherited the override, so a user with
UVR_LIBRARYexported — the people that feature exists for — had thescript's declared packages installed into their shared library while R
was pointed at the empty cache directory. The script then failed, and
nothing pruned the packages left behind. Found by pre-tag review.
R package builds no longer fail on HPC clusters with module-provided
BLAS/LAPACK (PR #229, @gladkia).
R CMD INSTALLsubprocesses replacedLD_LIBRARY_PATHwith R's own lib dir, discarding the OpenBLAS/MKL/FlexiBLAS paths an environment-module system had put there — installs
succeeded and then
library()died onlibRlapack.so: cannot open shared object file. The path is now prepended rather than replaced, inR CMD INSTALLand in the shared environment builder behinduvr runand
uvr activate, andR_LD_LIBRARY_PATHis set so R's ownbyte-compilation children inherit it too — guarded on
libR.soactuallybeing present, so it can't suppress the
ldpathsdefault that portablebuilds rely on to find their own
libR.so.Windows warm syncs no longer copy every package (#247): cache hits
now hardlink each file into the project library instead of copying its
bytes. macOS has cloned (copy-on-write) and Linux has symlinked since
v0.3; Windows was paying a full recursive copy on every sync because
symlinks there need admin rights — hardlinks don't. Falls back to a copy
when the cache and project sit on different volumes.
R version detection is memoized per process (#246). A single sync asked
the same R binary for its version several times over —
find_all, thepin-mismatch check, and the IDE scaffolding each spawned R — and each ask
is a full R startup, cheap locally but 0.3-0.5s on a container's shared
I/O. Keyed on path, size and mtime, so an R replaced mid-run is a miss
rather than a stale hit.
uvr sync --install-system-depsrefreshes the package index first onmanagers that need it (apt-get, zypper, pacman, apk), passes zypper
--gpg-auto-import-keys, and setsDEBIAN_FRONTEND=noninteractiveforapt — fresh containers ship no synced metadata, an unimported repo key
made
--non-interactivezypper decline, and-ydoesn't answer debconf.Source-built packages cached on Linux are now found again by later
syncs (#237). The cache key hashed the binary-repo flavour into every
entry it stored, but lookups probe source entries without one — so on
any Linux host with a binary repo (a flavour), every package that
installed from source landed in the cache under a key no lookup could
produce, and was rebuilt from source on every warm sync, forever. The
flavour is now part of the key only for binary entries, which is the
rule lookups always assumed. Existing mis-keyed source entries were
unreachable anyway and are simply superseded (
uvr cache cleanreclaimsthe orphans).
UVR_LIBRARYnow applies to the whole project, not justuvr sync(#97). Previously only sync honoured it as an install target, so setting
it sent packages to a directory that
uvr run,uvr activate, doctorand IDE sessions never looked at. All of them — including the
.Rprofilesnippet, which refreshes on the next sync — now resolve the library
through the same rule:
UVR_LIBRARYwhen set, else.uvr/library/.This is the machine-local escape hatch for projects living on slow
network storage (Azure ML mapped drives and similar), matching
UV_PROJECT_ENVIRONMENT/RENV_PATHS_LIBRARY/RV_LIBRARY_DIR.Pruning still never runs against an override target.
A CRAN mac binary failing to load under a non-CRAN R is now diagnosed
as what it is (#238). When a package's compiled code cannot load because
it expects CRAN's R at
/Library/Frameworks/R.framework(dlopen's"Library not loaded"), the hint now explains the CRAN-binary/Homebrew-R
mismatch and both ways out — use CRAN R, or make the Fortran runtime
findable to the loader. Previously this failure either got no hint at
all or the "missing Fortran toolchain" one, which told users who already
had a working gfortran to go install one.
uvr r install --install-dir <DIR>(#89) installs R into a chosenr-versions directory for that one invocation, taking precedence over
UVR_R_INSTALL_DIRthe way uv's flags beat their env vars. The env varremains the way to make every command look there.
uvr sync -vshows the per-package install plan (#205). Beforeanything compiles,
-vexpands the aggregate "Installing 83: 80 binary ·3 from source" into one row per package — name, version, cached/binary/
pure-R/source, and the URL it resolved to — and names each binary-capable
custom source behind the "Using N custom source(s)" line. An unexpected
source build now explains itself up front instead of being
reverse-engineered from
uvr.lockafterwards. Default output isunchanged.
A script can carry its own dependencies and run anywhere (#181). An
.Rfile that opens with a# /// script…# ///comment block listingpackage names now runs standalone —
uvr run analysis.Rin any directory,with no project, no
uvr.tomland no setup. The packages are provisionedinto an isolated ephemeral environment, cached and reused across runs of
the same header, so sending someone the file is enough. This is the R
analog of Python's PEP 723, and the first slice of it: plain package names
only. Version constraints, Bioconductor and git sources (#182), an
rversion pin (#183), and
uvr add --script(#184) follow — a header usingany of them is rejected or reported rather than quietly misread. A file
may declare only one header block: a second one is a hard error, as in
PEP 723, never a silent no-op. And because a headered script is by design
a file you accept from someone else, header text is control-escaped
before it appears in uvr's own warnings and errors, so a crafted header
cannot smuggle ANSI sequences that repaint or forge diagnostics.
Standalone means standalone: a headered script ignores the surrounding
project's library, its R constraint, any
.r-versionpin walked up fromthe working directory, and the startup profile that would otherwise put
the project library back on the search path. Without all four the same
file would resolve differently depending on which directory it was run
from, which is the one thing it exists to avoid. Scripts with no header
are untouched.
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.