Skip to content

install: remove stale versioned dylibs on upgrade - #63

Merged
prabod merged 1 commit into
mainfrom
fix/installer-stale-dylibs
Sep 11, 2026
Merged

install: remove stale versioned dylibs on upgrade#63
prabod merged 1 commit into
mainfrom
fix/installer-stale-dylibs

Conversation

@prabod

@prabod prabod commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

The clean-install step removes libbaseRT.dylib but not libbaseRT.<version>.dylib.

That was harmless while the macOS bundle shipped one flat library. 0.2.4 changed that — it now ships a versioned library plus two symlinks:

libbaseRT.0.2.4.dylib  <-  libbaseRT.0.dylib  <-  libbaseRT.dylib

and the bare name matches only the last of those. So every upgrade from 0.2.4 on leaves the previous release's real library behind: a full-size orphan nothing points at, one per upgrade. Seen on a live install carrying both libbaseRT.0.2.0.dylib and libbaseRT.0.2.4.dylib.

Benign today, since the symlinks resolve correctly. It is a loaded gun for any future change to the install name.

libbaseRT*.dylib now — the same treatment libbaseRT.so* already had.

Verified both directions against a dirty install seeded with 0.2.0 and 0.2.3 libraries:

result
current script libbaseRT.0.2.0 + libbaseRT.0.2.3 + libbaseRT.0.2.4 all left behind
with this fix exactly libbaseRT.0.2.4.dylib and its two symlinks

The clean-install step removed `libbaseRT.dylib` but not
`libbaseRT.<version>.dylib`. That was harmless while the macOS bundle
shipped one flat library — but 0.2.4 ships a VERSIONED library plus two
symlinks (libbaseRT.0.2.4.dylib <- libbaseRT.0.dylib <- libbaseRT.dylib),
and the bare name matches only the last of those.

So every upgrade from 0.2.4 on leaves the previous release's real library
behind: a full-size orphan nothing points at, accumulating one per upgrade.
Observed on a live install carrying both libbaseRT.0.2.0.dylib and
libbaseRT.0.2.4.dylib. Benign today because the symlinks resolve correctly,
but it is a loaded gun for any future change to the install name.

`libbaseRT*.dylib` now, matching the treatment `libbaseRT.so*` already had.

Verified both directions against a dirty install seeded with 0.2.0 and 0.2.3
libraries: the old script leaves all three stacked up, the fixed one keeps
exactly libbaseRT.0.2.4.dylib and its two symlinks.
@prabod
prabod merged commit e4587e8 into main Sep 11, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant