You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Integration build cannot configure — eos and eBoot define colliding CMake target names #85
ebuild integration ("Build all EoS packages together") adds eos and eBoot
to one CMake project. Both define test targets with the same names, and CMake
refuses duplicates:
CMake Error at eBoot/tests/CMakeLists.txt:10 (add_executable):
add_executable cannot create target "test_crypto" because another target
with the same name already exists. The existing target is an executable
created in source directory "eos/tests". See documentation for policy
CMP0002 for more details.
CMake Error at eBoot/tests/CMakeLists.txt:50 (add_executable):
add_executable cannot create target "test_multicore" because another target
with the same name already exists. The existing target is an executable
created in source directory "eos/tests".
-- Configuring incomplete, errors occurred!
The colliding pairs:
target
eos
eBoot
test_crypto
tests/CMakeLists.txt:52
tests/CMakeLists.txt:10
test_multicore
tests/CMakeLists.txt:42
tests/CMakeLists.txt:50
Both are on master in both repositories — this is not specific to any open
branch.
Effect
The integration build cannot configure at all whenever tests are enabled, which
is the configuration it exists to exercise. Each repository's own build is fine,
because the collision only appears when the two are composed — which is
precisely what ebuild integration is for. So the one build that checks the
repositories work together is the only one that cannot run.
Why it surfaced now
EoSim's ecosystem runner reported ebuild cmake FAIL — cmake configure failed. cmake -S . -B build in ebuild succeeds on its own; the failure only appears
under the runner because it configures with tests on.
Fix
Namespace the test target names per repository — eboot_test_crypto / eos_test_crypto, or the CMake-idiomatic form of prefixing with the project
name. The add_test(NAME ...) labels can stay as they are if the ctest output
should keep reading the same way, since the collision is between target names,
not test names.
Two names collide today. Nothing prevents a third: both repositories will keep
adding tests, and the next overlap fails the same way with the same
"individually green, broken together" signature. A prefix applied to all of them
closes the class rather than the two instances.
Filing here because this is where the composition happens, but the rename lands
in eos and eBoot.
All 16 test targets there are now prefixed eboot_, with the add_test(NAME ...) labels left alone — the collision CMake rejects is between
targets, not test names — so ctest output is unchanged.
A configure-time guard in eBoot rejects any new test target that is not
prefixed, which closes the class rather than the two instances. It was verified
to fire rather than merely exist, and then caught a real case immediately:
rebasing eBoot#67 onto it produced
CMake Error at tests/CMakeLists.txt:128 (message):
Test target 'test_image_abi' is not namespaced. Name it
'eboot_test_image_abi' so it cannot collide with a target of the same name
in eos when ebuild builds both together.
That is a collision caught in eBoot at configure time instead of surfacing here
as a confusing error about a target in a different repository.
38 is eos's 22 and eBoot's 16 running in a single build for the first time.
No change is needed in this repository, and none in eos — prefixing one side is
enough to separate the two. Leaving this open until eBoot#71 merges, which is
itself behind eBoot#58 and the signed-commit policy question in eBoot#68.
Activity
srpatcha commentedon Aug 30, 2026
Fixed on the eBoot side: embeddedos-org/eBoot#71.
All 16 test targets there are now prefixed
eboot_, with theadd_test(NAME ...)labels left alone — the collision CMake rejects is betweentargets, not test names — so ctest output is unchanged.
A configure-time guard in eBoot rejects any new test target that is not
prefixed, which closes the class rather than the two instances. It was verified
to fire rather than merely exist, and then caught a real case immediately:
rebasing eBoot#67 onto it produced
That is a collision caught in eBoot at configure time instead of surfacing here
as a confusing error about a target in a different repository.
Verified from this repo:
38 is eos's 22 and eBoot's 16 running in a single build for the first time.
No change is needed in this repository, and none in eos — prefixing one side is
enough to separate the two. Leaving this open until eBoot#71 merges, which is
itself behind eBoot#58 and the signed-commit policy question in eBoot#68.
test: pin the .efw image header wire format (38 checks) (#67)
fix(tests): namespace test targets so eos and eBoot can build together (