Skip to content

fix(deps): resolve sibling eBoot as well as eboot - #76

Merged
srpatcha merged 1 commit into
embeddedos-org:masterfrom
ShrenikMensinkai:fix/deps-eboot-case
Sep 1, 2026
Merged

srpatcha merged 1 commit into
embeddedos-org:masterfrom
ShrenikMensinkai:fix/deps-eboot-case

Conversation

@ShrenikMensinkai

Copy link
Copy Markdown
Contributor

Summary

Sibling repo lookup used only ../eboot. The public repo and many local trees are named eBoot, 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:

  • Issue: case-sensitive miss of the eBoot sibling
  • Approach: alias list eboot, eBoot on the sibling step only
  • Testing: host tests with a case-sensitive is_dir mock; 4 passed
  • Limits: sibling step only; does not change cache, env, or CLI overrides

Type of Change

  • feat — New feature
  • fix — Bug fix
  • docs — Documentation only
  • style — Formatting, no code change
  • refactor — Code restructuring without behavior change
  • test — Add or fix tests
  • build — Build system or dependency changes
  • ci — CI/CD pipeline changes
  • perf — Performance improvement

Changes

  • Resolve "eboot" from ../eboot or ../eBoot
  • Point the eboot pytest fixture at whichever sibling exists
  • Add tests for camel-case, lowercase, and missing siblings

Testing

  • Unit tests pass (python -m pytest tests/ebuild/test_deps_manager.py -v)
  • Integration tests pass
  • Manual testing performed
  • New tests added for new functionality

Pre-Submission Checklist

  • Code compiles without warnings (-Wall -Wextra -Werror for C)
  • All existing tests pass
  • New tests added for new functionality
  • Documentation updated if API changed
  • Commit messages follow <type>(<scope>): <description> convention
  • Branch is rebased on latest master

Related Issues

None. Found while reviewing workspace layout against GitHub’s eBoot repo name.

Screenshots / Logs

4 passed in 0.07s

Additional Notes

  • Does not alter ebuild/core/eboot (deprecated).
  • Windows already treated eboot and eBoot as the same folder; this is for Linux and CI.
  • Integration CLI already had a local case fallback; the shared DepsManager path did not.

Linux is case-sensitive, so ../eboot misses a GitHub-style eBoot checkout.
Try both names in DepsManager and the test fixture.

@srpatcha srpatcha left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@srpatcha
srpatcha merged commit 996a028 into embeddedos-org:master Sep 1, 2026
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.

2 participants