fix(update): stop retired installers and finish on fresh launch
Old updaters keep running after the checkout changes. Returning None from their removed uv helpers enables a pip fallback against the new tree. Keep the historical imports as inert shims and stop dependency entrypoints with a relaunch message instead. Do not call PM or write recovery markers from that mixed-version process. Self-managed source launches use PM's successful input stamp to decide when dependencies need a sync. Restart on the managed interpreter before activating the selected generation. Preserve launcher forms and options, and do not sync while a live updater owns the installation. Targeted runtime batch: 225 passed, 8 platform skips. Real PM worker tests build and publish disposable dependency generations, retain prior state on failure, and exercise fresh-process relaunch before dependency activation. The final launch guard test also passes. Full suite and native Windows execution were not run locally.
This commit is contained in:
@@ -26,6 +26,18 @@ Each file has a separate role:
|
||||
A lockfile entry does not prove that a package is installed. `hermes pm doctor`
|
||||
compares the installed state with the lock and checks the realized bytes.
|
||||
Startup uses a cheaper check. It does not query upstream versions on every launch.
|
||||
For self-managed source installs, the pre-import launcher compares PM's recorded
|
||||
successful dependency stamp with the current inputs. Missing or stale completion
|
||||
state triggers a sync, then the same command restarts on the managed Python before
|
||||
loading application dependencies. Failed syncs keep the previous selection and
|
||||
retry on the next launch; no pending-update marker is required. Developer checkouts
|
||||
and packaged installations retain their existing owner.
|
||||
|
||||
Historical updaters can still be executing old Python code after swapping in this
|
||||
source tree. Their retired helper names are inert compatibility shims; dependency
|
||||
entry shims stop the old updater cleanly and ask for a relaunch instead of invoking
|
||||
PM or falling back to pip. Completion belongs to the new launcher, not that mixed
|
||||
old-code/new-files process.
|
||||
|
||||
## Source installs and packaged builds
|
||||
|
||||
|
||||
Reference in New Issue
Block a user