fix(install): keep the package store across an upgrade
The install root is not only the artifact: `ludic add` caches fetched packages in <root>/store, keyed by content hash. install_staged moved the whole root aside and replaced it, so re-running the installer — which is exactly what `ludic upgrade` does — deleted the cache and forced every project to refetch. The store is moved into the staged tree before the swap. Nothing else in the root is preserved, because everything else is the toolchain and should be replaced. Verified by staging an install, planting a store entry, upgrading, and reading the entry back. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
6588c9d4ae
commit
470971bf70
2 changed files with 13 additions and 0 deletions
6
changes/installer-keeps-store.md
Normal file
6
changes/installer-keeps-store.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
bump: patch
|
||||
type: fix
|
||||
An upgrade keeps the package store. The installer replaces the whole install
|
||||
root, and `ludic add` caches packages in `~/.ludic/store` — so re-running the
|
||||
one-liner deleted every package a project had fetched. The store is carried
|
||||
across now; everything else in the root belongs to the toolchain and is replaced.
|
||||
|
|
@ -182,6 +182,13 @@ install_staged() {
|
|||
if [ -d "$INSTALL_DIR" ]; then
|
||||
rm -rf "${INSTALL_DIR}.old"
|
||||
mv "$INSTALL_DIR" "${INSTALL_DIR}.old"
|
||||
# The install root is not only the artifact: `ludic add` caches packages in
|
||||
# <root>/store, which is the user's data and takes a network round trip to
|
||||
# rebuild. Carry it across rather than replacing the directory out from under
|
||||
# it. (Anything else here is part of the toolchain and should be replaced.)
|
||||
if [ -d "${INSTALL_DIR}.old/store" ]; then
|
||||
mv "${INSTALL_DIR}.old/store" "${_staged}/store" || warn "could not carry the package store across"
|
||||
fi
|
||||
fi
|
||||
mv "$_staged" "$INSTALL_DIR"
|
||||
rm -rf "${INSTALL_DIR}.old"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue