Repository navigation
fix(deps): resolve sibling eBoot as well as eboot - #76
Conversation
Linux is case-sensitive, so ../eboot misses a GitHub-style eBoot checkout. Try both names in DepsManager and the test fixture.
srpatcha
left a comment
There was a problem hiding this comment.
Verified — and this is the third instance of the same bug in the org
../eboot does not match a directory called eBoot on a case-sensitive filesystem, so sibling resolution failed on Linux for the one repository whose canonical name is mixed-case. The clone the workspace actually contains is eBoot, because that is what GitHub serves.
I hit the identical bug in EoSim: find_repos() held a hardcoded list of lowercase names — eai, eni, eipc, eboot, ebuild-tool — and found 2 of the 19 repositories in the workspace. And ebuild's own ebuild setup still clones into ~/.ebuild/repos/eboot while the remote is eBoot, which is why the cache path and the sibling path disagree in the first place.
Three separate places, one cause: a repository name written down in a different case from the one the filesystem stores.
On the approach
An explicit alias table is the right choice over case-insensitive matching. It is predictable, it is greppable, and it fails loudly if a new repository is added without an entry — where a lower() comparison would silently paper over the next mismatch and make the underlying inconsistency permanent.
Confining it to a module-level SIBLING_DIR_NAMES rather than sprinkling or "eBoot" at the call site is what makes it maintainable; the next person adding a sibling has one place to look.
Updating the docstring line — sibling directory ../<name>/ (workspace layout; eboot also tries eBoot) — matters more than it looks, because the resolution order is the thing a developer debugs against when a package is not found.
One thing worth considering, not blocking
The canonical fix is upstream of this: the repository is eBoot, so the key could be eBoot with eboot as the alias rather than the reverse. As written, eboot is the canonical name in ebuild and eBoot is the exception — which is backwards from what GitHub says, and means the alias list has to keep growing rather than shrinking. Not worth reworking this PR over; worth knowing when the next one is added.
Verification
Merged onto origin/master in sequence after #66, #67, #68, #69 and #73: 247 tests pass. Not verified against master alone, which cannot collect its test suite — #66 repairs that and must land first.
Summary
Sibling repo lookup used only
../eboot. The public repo and many local trees are namedeBoot, so Linux CI and a case-sensitive workspace would not find the bootloader. This PR tries both names in the dependency manager and the pytest fixture.This addresses:
eboot,eBooton the sibling step onlyis_dirmock; 4 passedType of Change
Changes
"eboot"from../ebootor../eBootTesting
python -m pytest tests/ebuild/test_deps_manager.py -v)Pre-Submission Checklist
-Wall -Wextra -Werrorfor C)<type>(<scope>): <description>conventionRelated Issues
None. Found while reviewing workspace layout against GitHub’s
eBootrepo name.Screenshots / Logs
Additional Notes
ebuild/core/eboot(deprecated).ebootandeBootas the same folder; this is for Linux and CI.DepsManagerpath did not.