JHUAPL-DTNMA / dtnma-tools

A reference implementation of the DTN Management Architecture (DTNMA) Agent and related Tools
https://jhuapl-dtnma.github.io/dtnma-tools/
Apache License 2.0
3 stars 1 forks source link

Error in camp-generated C files for `amp_agent.json` #21

Open karenhaining opened 1 month ago

karenhaining commented 1 month ago

The camp-generated C files for the amp_agent.json ADM throws an error when compiled against dtnma-tools.

Note that it fails when compiled on the GitHub CI, but compiles correctly locally. This may be due to a difference in compiler versions.

[8/9] Linking C executable src/stdio_agent
FAILED: src/stdio_agent 
: && /usr/bin/cc -g -O0  src/CMakeFiles/stdio_agent.dir/stdio_if/stdio_agent.c.o -o src/stdio_agent  -Wl,-rpath,/home/runner/work/dtnma-camp/dtnma-camp/tests/integration_test/dtnma-tools/testroot/usr/lib:  src/libnmagent.a  src/libindep_adms.a  src/libnmagent.a  src/libnmcommon.a  -lm  deps/osal/libosal.a  deps/osal/libosal_bsp.a  -lpthread  -ldl  -lrt  /home/runner/work/dtnma-camp/dtnma-camp/tests/integration_test/dtnma-tools/testroot/usr/lib/libqcbor.a && :
/usr/bin/ld: src/libnmcommon.a(adm.c.o):/home/runner/work/dtnma-camp/dtnma-camp/tests/integration_test/dtnma-tools/src/shared/adm/adm.c:59: multiple definition of `g_amp_agent_idx'; src/libindep_adms.a(adm_amp_agent_agent.c.o):/home/runner/work/dtnma-camp/dtnma-camp/tests/integration_test/dtnma-tools/src/indep_adms/agent/adm_amp_agent_agent.c:28: first defined here
collect2: error: ld returned 1 exit status
[9/9] Linking C executable src/ion_nm_agent
FAILED: src/ion_nm_agent 
: && /usr/bin/cc -g -O0  src/CMakeFiles/ion_nm_agent.dir/ion_if/ion_if.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/nm_agent.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/agent/adm_ion_admin_agent.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/agent/adm_ion_admin_impl.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/agent/adm_ion_ipn_admin_agent.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/agent/adm_ion_ipn_admin_impl.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/agent/adm_ion_ltp_admin_agent.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/agent/adm_ion_ltp_admin_impl.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/agent/adm_ionsec_admin_agent.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/agent/adm_ionsec_admin_impl.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/agent/adm_ltp_agent_agent.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/agent/adm_ltp_agent_impl.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/bpv7/adm/adm_bp_agent_agent.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/bpv7/adm/adm_bp_agent_impl.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/bpv7/adm/adm_ion_bp_admin_agent.c.o src/CMakeFiles/ion_nm_agent.dir/ion_if/bpv7/adm/adm_ion_bp_admin_impl.c.o -o src/ion_nm_agent  -Wl,-rpath,/home/runner/work/dtnma-camp/dtnma-camp/tests/integration_test/dtnma-tools/testroot/usr/lib:  src/libnmagent.a  src/libindep_adms.a  /home/runner/work/dtnma-camp/dtnma-camp/tests/integration_test/dtnma-tools/testroot/usr/lib/libbp.so  /home/runner/work/dtnma-camp/dtnma-camp/tests/integration_test/dtnma-tools/testroot/usr/lib/libltp.so  src/libnmagent.a  src/libnmcommon.a  -lm  deps/osal/libosal.a  deps/osal/libosal_bsp.a  -lpthread  -ldl  -lrt  /home/runner/work/dtnma-camp/dtnma-camp/tests/integration_test/dtnma-tools/testroot/usr/lib/libqcbor.a  /home/runner/work/dtnma-camp/dtnma-camp/tests/integration_test/dtnma-tools/testroot/usr/lib/libici.so && :
/usr/bin/ld: src/libnmcommon.a(adm.c.o):/home/runner/work/dtnma-camp/dtnma-camp/tests/integration_test/dtnma-tools/src/shared/adm/adm.c:59: multiple definition of `g_amp_agent_idx'; src/libindep_adms.a(adm_amp_agent_agent.c.o):/home/runner/work/dtnma-camp/dtnma-camp/tests/integration_test/dtnma-tools/src/indep_adms/agent/adm_amp_agent_agent.c:28: first defined here
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
BrianSipos commented 4 weeks ago

This is because the adm_amp_agent.h has manual modifications so that other modules can cross-reference its objects via the following undocumented symbol https://github.com/JHUAPL-DTNMA/dtnma-tools/blob/6e95a2e7fd6975cd8d859627cee73323857ac161/src/indep_adms/shared/adm/adm_amp_agent.h#L31