fix: prevent false success for unsupported system backend - #65
Conversation
Signed-off-by: muhammadburhandevv-hub <muhammadburhandevv@gmail.com>
Same defect as #66, reached from a different direction — needs a rebaseThe problem you are fixing is real and it is the same one #66 addresses: Both PRs edit So I have approved #66 to land first. Verified locally: this branch on current master is 9 failed / 201 passed, and it conflicts with #66 in What is yours alone, and worth keepingTwo things in here are not in #66, and I would not want them lost in the rebase:
Suggested rebaseOnce #66 lands, drop your One question worth settling while you are in there: #66 standardised on |
srpatcha
left a comment
There was a problem hiding this comment.
Approving for the config.py half, which is a real bug nobody else has covered.
The unique and valuable part
System-image settings are not a compilation backend. Keep them separate.
That is exactly right, and I verified the failure. config.py:230 sets
if raw.get("system") and isinstance(raw["system"], dict):
backend_config.update(raw["system"])
if backend == "auto":
backend = "system"but "system" is not a backend:
ALL_BACKENDS = {"cmake", "make", "meson", "cargo", "kbuild", "ninja"}So a build.yaml with a perfectly valid system: section selects a backend the
dispatcher has never heard of. Before #66 that fell through silently — the false
success in your title. With #66 merged it now fails, which is better, but with a
message that blames the user's own valid configuration:
$ ebuild build # build.yaml has a system: section
[error] Unknown build backend 'system'. Supported backends: cargo, cmake,
kbuild, make, meson.
exit=1
ebuild system exists as a command, so system-image builds are a supported
feature being reported as an unknown backend. Your split — keeping
system_config out of backend selection entirely, with 'system' must be a mapping validation and a None guard — fixes the cause rather than the
symptom. Neither #66 nor any other open PR touches this.
The dispatch.py half overlaps #66
BackendError(RuntimeError) here and UnknownBackendError(ValueError, RuntimeError) in #66 solve the same problem. #66's inherits from both
deliberately, because the two existing test suites disagreed about which
exception to expect:
tests/ebuildexpectsValueError("Unknown build backend '<name>'")while
tests/unitexpectsRuntimeErrormatching "ninja". Both are legitimate
readings.
BackendError(RuntimeError) alone would fail the tests/ebuild expectation. #66
is also already approved and carries the master syntax repair (#87), so it
lands first either way.
Suggested path
Rebase onto #66 and drop the dispatch.py and tests/ebuild/test_dispatch.py
hunks, keeping config.py, tests/ebuild/test_config_validation.py and
tests/ebuild/test_build_cli.py. This then reviews cleanly on its own merits and
the part that is uniquely yours is not stuck behind a conflict.
Approving now so it is not blocked on me, but it does need that rebase before it
can merge.
|
Hi EmbeddedOS Team,
I’ve addressed the review feedback and updated the eBuild PR (#65). With
all three PRs rebased and ready (eBoot #57, eOS #74, and eBuild #65), I’d
love to check in on the next steps in the evaluation process.
Could we schedule a short call to discuss the role and next steps? Please
let me know what day and time work best for your team.
Best,
Muhammad
…On Mon, 31 Aug 2026 at 02:15, Srikanth Patchava ***@***.***> wrote:
***@***.**** approved this pull request.
Approving for the config.py half, which is a real bug nobody else has
covered.
The unique and valuable part
System-image settings are not a compilation backend. Keep them separate.
That is exactly right, and I verified the failure. config.py:230 sets
if raw.get("system") and isinstance(raw["system"], dict):
backend_config.update(raw["system"])
if backend == "auto":
backend = "system"
but "system" is not a backend:
ALL_BACKENDS = {"cmake", "make", "meson", "cargo", "kbuild", "ninja"}
So a build.yaml with a perfectly valid system: section selects a backend
the
dispatcher has never heard of. Before #66
<#66> that fell through
silently — the false
success in your title. With #66
<#66> merged it now fails,
which is better, but with a
message that blames the user's own valid configuration:
$ ebuild build # build.yaml has a system: section
[error] Unknown build backend 'system'. Supported backends: cargo, cmake,
kbuild, make, meson.
exit=1
ebuild system exists as a command, so system-image builds are a supported
feature being reported as an unknown backend. Your split — keeping
system_config out of backend selection entirely, with 'system' must be a
mapping validation and a None guard — fixes the cause rather than the
symptom. Neither #66 <#66>
nor any other open PR touches this.
The dispatch.py half overlaps #66
<#66>
BackendError(RuntimeError) here and UnknownBackendError(ValueError,
RuntimeError) in #66 <#66>
solve the same problem. #66
<#66>'s inherits from *both*
deliberately, because the two existing test suites disagreed about which
exception to expect:
tests/ebuild expects ValueError("Unknown build backend '<name>'") while
tests/unit expects RuntimeError matching "ninja". Both are legitimate
readings.
BackendError(RuntimeError) alone would fail the tests/ebuild expectation.
#66 <#66>
is also already approved and carries the master syntax repair (#87
<#87>), so it
lands first either way.
Suggested path
Rebase onto #66 <#66> and
drop the dispatch.py and tests/ebuild/test_dispatch.py
hunks, keeping config.py, tests/ebuild/test_config_validation.py and
tests/ebuild/test_build_cli.py. This then reviews cleanly on its own
merits and
the part that is uniquely yours is not stuck behind a conflict.
Approving now so it is not blocked on me, but it does need that rebase
before it
can merge.
—
Reply to this email directly, view it on GitHub
<#65?email_source=notifications&email_token=CF4LHR5YGDAIUAGGSAPQJJT5MSKODA5CNFSNUABKM5UWIORPF5TWS5BNNB2WEL2QOVWGYUTFOF2WK43UKJSXM2LFO4XTKMBWGE4TCMJZGUYKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L#pullrequestreview-5061911950>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/CF4LHRYGPPN5NN7BTI4WTLT5MSKODAVCNFSNUABGKJSXA33TNF2G64TZHMYTCOJQGEZDKNZYGE5US43TOVSTWNJSG43TQMJWGUZTJILWAI>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/CF4LHR6UOO6W5KKTZKOAYRD5MSKODA5CNFSNUABKM5UWIORPF5TWS5BNNB2WEL2QOVWGYUTFOF2WK43UKJSXM2LFO4XTKMBWGE4TCMJZGUYKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KUZTPN52GK4S7NFXXG>
and Android
<https://github.com/notifications/mobile/android/CF4LHR3LTFGEOL4GAAXACUD5MSKODA5CNFSNUABKM5UWIORPF5TWS5BNNB2WEL2QOVWGYUTFOF2WK43UKJSXM2LFO4XTKMBWGE4TCMJZGUYKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2K4ZTPN52GK4S7MFXGI4TPNFSA>.
Download it today!
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Summary
Fixes an issue where eBuild could report a successful build even though no
supported build backend ran. A
system:section is now kept separate frombackend configuration, and unsupported backends fail with a clear error.
Type of Change
Changes
system:settings separate from compilation backend configuration.BackendErrorwhen the external dispatcher cannot handle a backend.Testing
ctest --test-dir build --output-on-failure)Focused Python regression tests:
Additional validation:
git diff --checkpassed.198 passed, 11 failed, 1 skipped.Pre-Submission Checklist
-Wall -Wextra -Werrorfor C)<type>(<scope>): <description>conventionRelated Issues
No related issue number.
Screenshots / Logs
Additional Notes
systemcompilation backend.eBuild implementation and its pytest suite.
cpio, whichis unavailable in the Windows test environment. The remaining failures come
from an existing missing
NinjaBackend._object_pathmethod.