Drop unused direct muontrap dependency - #158
Merged
Merged
Conversation
The app never calls MuonTrap — Audio.Player deliberately uses a raw Port because MuonTrap.Daemon closes stdin and routes stdout through Logger, which is unusable for the bidirectional JSON IPC it needs. The dependency and its comment claiming it supervises sendspin_player were both stale. muontrap still resolves transitively for vintage_net, nerves_time and bluez, so mix.lock is unchanged and the release still ships the binary. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the underlying problem behind #157, which cannot be merged as-is.
Why #157 can't work
Renovate's #157 bumps
muontrapto~> 2.0, and CI fails all six checks atmix deps.get:The resolver names
bluezfirst, but it is not the only blocker — three deps pin muontrap 1.x:vintage_net~> 0.5.1 or ~> 0.6.0 or ~> 1.0nerves_time~> 0.5 or ~> 1.0bluez~> 1.8Two of those are upstream (fhunleth's), so no amount of editing our
mix.exsresolves this. The only way to force it isoverride: true, which would make this app assert muontrap-2.0 compatibility on three libraries — for a dependency it does not use.The actual fix
We never use MuonTrap. An exhaustive search finds zero call sites; every mention is prose explaining why it is deliberately avoided:
So the direct declaration was vestigial, and its comment ("Supervised OS process management for the sendspin_player C++ binary") described the opposite of what the code does.
Removing it means muontrap resolves purely as a transitive of the three libraries above.
mix deps.treenow shows it only under them.Impact: none
mix.lockis byte-for-byte unchanged — muontrap stays at 1.8.0_build/rpi3_dev/rel/universal_proxy/lib/muontrap-1.8.0/priv/muontrap(vintage_net needs it at runtime)Follow-up (not in this PR)
muontrap 2.0's only breaking change is cgroup v1 → v2, and its changelog says "If you don't use cgroups, this update is not breaking for you. Library authors are encouraged to allow both MuonTrap v1 and v2." None of
vintage_net,nerves_time, orbluezreference cgroups at all.bluezis ours — widening it to~> 1.8 or ~> 2.0would be correct hygiene, though it still would not unblock v2 here until the two upstreams widen too.Recommend closing #157.
Verification
mix compile --warnings-as-errors— PASS (exit 0)mise run test— 930 passed, 3 excludedmix dialyzer— PASS (7 errors, 7 skipped, 0 unnecessary skips)mise run firmware -- rpi3— PASS, muontrap present in the release🤖 Generated with Claude Code