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.
ebuild integration("Build all EoS packages together") addseosandeBootto one CMake project. Both define test targets with the same names, and CMake
refuses duplicates:
The colliding pairs:
test_cryptotests/CMakeLists.txt:52tests/CMakeLists.txt:10test_multicoretests/CMakeLists.txt:42tests/CMakeLists.txt:50Both are on
masterin both repositories — this is not specific to any openbranch.
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 integrationis for. So the one build that checks therepositories 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 buildinebuildsucceeds on its own; the failure only appearsunder 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 projectname. The
add_test(NAME ...)labels can stay as they are if the ctest outputshould 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.