Robotics StackExchange | Archived questions

On ARM L4T distro I have to run catkin_make multiple times to compile

On my x86 machine, this package compiles fine for me on ros melodic. But on ARM platform (L4T 32.4.4 for NVidia Jetson) it will only compile for me if I run catkinmake _more than once.

I did notice there wasn't an add_dependencies so I added:

add_dependencies(curve_fitting ${catkin_EXPORTED_TARGETS})

After the declared executable target for curve_fitting.

Why would running catkin_make multiple times work? And why would this issue only creep up on an ARM architecture?

Here's the logs from my docker container that runs catkinmake multiple times, successfully compiling on the last one. What I'm noticing is there appears to be a race condition where **catkinmake doesn't get around to generating cpp messages until the second time I run catkin_make**. The first time only python/js/lisp messages are generated:

Step 6/6 : RUN . "$ROSWS/devel/setup.sh" && catkinmake -DCMAKEBUILDTYPE=Release || true && catkinmake -DCMAKEBUILDTYPE=Release || true && catkinmake -DCMAKEBUILDTYPE=Release && chmod +x "$ROSWS/src/LaneNetRos/scripts/lanenetnode.py" ---> Running in 0aa6b617a649 -- Using CATKINDEVELPREFIX: /opt/rosws/devel -- Using CMAKEPREFIXPATH: /opt/rosws/devel;/opt/ros/melodic -- This workspace overlays: /opt/rosws/devel;/opt/ros/melodic -- Found PythonInterp: /usr/bin/python2 (found suitable version "2.7.17", minimum required is "2") -- Using PYTHONEXECUTABLE: /usr/bin/python2 -- Using Debian Python package layout -- Using empy: /usr/bin/empy -- Using CATKINENABLETESTING: ON -- Call enabletesting() -- Using CATKINTESTRESULTSDIR: /opt/rosws/build/testresults -- Found gtest sources under '/usr/src/googletest': gtests will be built -- Found gmock sources under '/usr/src/googletest': gmock will be built -- Found PythonInterp: /usr/bin/python2 (found version "2.7.17") -- Using Python nosetests: /usr/bin/nosetests-2.7 -- catkin 0.7.29 -- BUILDSHAREDLIBS is on -- BUILDSHAREDLIBS is on -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ~~ traversing 1 packages in topological order: -- ~~ - lanedetector -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- +++ processing catkin package: 'lanedetector' -- ==> addsubdirectory(LaneNetRos) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found OpenCV: /usr (found version "3.2.0") -- lanedetector: 3 messages, 0 services -- Configuring done -- Generating done -- Build files have been written to: /opt/rosws/build Scanning dependencies of target stdmsgsgeneratemessagespy Scanning dependencies of target geometrymsgsgeneratemessagesnodejs [ 0%] Built target stdmsgsgeneratemessagespy [ 0%] Built target geometrymsgsgeneratemessagesnodejs Scanning dependencies of target stdmsgsgeneratemessageseus Scanning dependencies of target stdmsgsgeneratemessagesnodejs [ 0%] Built target stdmsgsgeneratemessageseus [ 0%] Built target stdmsgsgeneratemessagesnodejs Scanning dependencies of target rosgraphmsgsgeneratemessagesnodejs Scanning dependencies of target rosgraphmsgsgeneratemessagespy [ 0%] Built target rosgraphmsgsgeneratemessagespy [ 0%] Built target rosgraphmsgsgeneratemessagesnodejs Scanning dependencies of target stdmsgsgeneratemessagescpp Scanning dependencies of target rosgraphmsgsgeneratemessageslisp [ 0%] Built target rosgraphmsgsgeneratemessageslisp [ 0%] Built target stdmsgsgeneratemessagescpp Scanning dependencies of target stdmsgsgeneratemessageslisp Scanning dependencies of target rosgraphmsgsgeneratemessageseus [ 0%] Built target rosgraphmsgsgeneratemessageseus [ 0%] Built target stdmsgsgeneratemessageslisp Scanning dependencies of target sensormsgsgeneratemessageseus Scanning dependencies of target sensormsgsgeneratemessagescpp [ 0%] Built target sensormsgsgeneratemessageseus [ 0%] Built target sensormsgsgeneratemessagescpp Scanning dependencies of target roscppgeneratemessageslisp Scanning dependencies of target rosgraphmsgsgeneratemessagescpp [ 0%] Built target roscppgeneratemessageslisp [ 0%] Built target rosgraphmsgsgeneratemessagescpp Scanning dependencies of target roscppgeneratemessagesnodejs Scanning dependencies of target roscppgeneratemessageseus [ 0%] Built target roscppgeneratemessageseus [ 0%] Built target roscppgeneratemessagesnodejs Scanning dependencies of target geometrymsgsgeneratemessageseus Scanning dependencies of target roscppgeneratemessagespy [ 0%] Built target roscppgeneratemessagespy [ 0%] Built target geometrymsgsgeneratemessageseus Scanning dependencies of target sensormsgsgeneratemessageslisp Scanning dependencies of target roscppgeneratemessagescpp [ 0%] Built target sensormsgsgeneratemessageslisp [ 0%] Built target roscppgeneratemessagescpp Scanning dependencies of target sensormsgsgeneratemessagesnodejs Scanning dependencies of target sensormsgsgeneratemessagespy [ 0%] Built target sensormsgsgeneratemessagespy [ 0%] Built target sensormsgsgeneratemessagesnodejs Scanning dependencies of target geometrymsgsgeneratemessageslisp Scanning dependencies of target geometrymsgsgeneratemessagescpp [ 0%] Built target geometrymsgsgeneratemessageslisp [ 0%] Built target geometrymsgsgeneratemessagescpp Scanning dependencies of target _lanedetectorgeneratemessagescheckdepsLaneImage Scanning dependencies of target geometrymsgsgeneratemessagespy [ 0%] Built target geometrymsgsgeneratemessagespy Scanning dependencies of target lanedetectorgeneratemessagescheckdepsCurve [ 0%] Built target _lanedetectorgeneratemessagescheckdepsLaneImage Scanning dependencies of target lanedetectorgeneratemessagescheckdepsLane [ 0%] Built target _lanedetectorgeneratemessagescheckdepsCurve [ 0%] Built target _lanedetectorgeneratemessagescheckdepsLane Scanning dependencies of target curvefitting Scanning dependencies of target lanedetectorgeneratemessagesnodejs [ 5%] Building CXX object LaneNetRos/CMakeFiles/curvefitting.dir/node/curvefitting.cpp.o [ 10%] Generating Javascript code from lanedetector/Curve.msg [ 15%] Generating Javascript code from lanedetector/Lane.msg [ 21%] Generating Javascript code from lanedetector/LaneImage.msg [ 21%] Built target lanedetectorgeneratemessagesnodejs Scanning dependencies of target lanedetectorgeneratemessagespy [ 26%] Generating Python from MSG lanedetector/Curve [ 31%] Generating Python from MSG lanedetector/Lane [ 36%] Generating Python from MSG lanedetector/LaneImage [ 42%] Generating Python msg init.py for lanedetector [ 42%] Built target lanedetectorgeneratemessagespy Scanning dependencies of target lanedetectorgeneratemessageseus [ 47%] Generating EusLisp code from lanedetector/Curve.msg [ 52%] Generating EusLisp code from lanedetector/Lane.msg [ 57%] Generating EusLisp code from lanedetector/LaneImage.msg [ 63%] Generating EusLisp manifest code for lanedetector In file included from /opt/rosws/src/LaneNetRos/node/curvefitting.cpp:5:0: /opt/rosws/src/LaneNetRos/include/curvefitting.h:11:10: fatal error: lanedetector/LaneImage.h: No such file or directory #include "lanedetector/LaneImage.h" ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. LaneNetRos/CMakeFiles/curvefitting.dir/build.make:62: recipe for target 'LaneNetRos/CMakeFiles/curvefitting.dir/node/curvefitting.cpp.o' failed make[2]: *** [LaneNetRos/CMakeFiles/curvefitting.dir/node/curvefitting.cpp.o] Error 1 CMakeFiles/Makefile2:494: recipe for target 'LaneNetRos/CMakeFiles/curvefitting.dir/all' failed make[1]: *** [LaneNetRos/CMakeFiles/curvefitting.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... [ 63%] Built target lanedetectorgeneratemessageseus Makefile:140: recipe for target 'all' failed make: *** [all] Error 2 Invoking "make -j2 -l2" failed Base path: /opt/rosws Source space: /opt/rosws/src Build space: /opt/rosws/build Devel space: /opt/rosws/devel Install space: /opt/rosws/install Running command: "cmake /opt/rosws/src -DCMAKEBUILDTYPE=Release -DCATKINDEVELPREFIX=/opt/rosws/devel -DCMAKEINSTALLPREFIX=/opt/rosws/install -G Unix Makefiles" in "/opt/rosws/build" Running command: "make -j2 -l2" in "/opt/rosws/build" [ 0%] Built target stdmsgsgeneratemessagespy [ 0%] Built target geometrymsgsgeneratemessagesnodejs [ 0%] Built target stdmsgsgeneratemessagesnodejs [ 0%] Built target stdmsgsgeneratemessageseus [ 0%] Built target rosgraphmsgsgeneratemessagesnodejs [ 0%] Built target rosgraphmsgsgeneratemessagespy [ 0%] Built target stdmsgsgeneratemessagescpp [ 0%] Built target rosgraphmsgsgeneratemessageslisp [ 0%] Built target rosgraphmsgsgeneratemessageseus [ 0%] Built target stdmsgsgeneratemessageslisp [ 0%] Built target sensormsgsgeneratemessageseus [ 0%] Built target sensormsgsgeneratemessagescpp [ 0%] Built target rosgraphmsgsgeneratemessagescpp [ 0%] Built target roscppgeneratemessageslisp [ 0%] Built target roscppgeneratemessagesnodejs [ 0%] Built target roscppgeneratemessageseus [ 0%] Built target roscppgeneratemessagespy [ 0%] Built target geometrymsgsgeneratemessageseus [ 0%] Built target sensormsgsgeneratemessageslisp [ 0%] Built target roscppgeneratemessagescpp [ 0%] Built target sensormsgsgeneratemessagespy [ 0%] Built target sensormsgsgeneratemessagesnodejs [ 0%] Built target geometrymsgsgeneratemessageslisp [ 0%] Built target geometrymsgsgeneratemessagescpp [ 0%] Built target geometrymsgsgeneratemessagespy [ 0%] Built target lanedetectorgeneratemessagescheckdepsLaneImage [ 0%] Built target lanedetectorgeneratemessagescheckdepsCurve [ 5%] Building CXX object LaneNetRos/CMakeFiles/curvefitting.dir/node/curvefitting.cpp.o [ 5%] Built target _lanedetectorgeneratemessagescheckdepsLane [ 21%] Built target lanedetectorgeneratemessagesnodejs [ 42%] Built target lanedetectorgeneratemessagespy [ 63%] Built target lanedetectorgeneratemessageseus Scanning dependencies of target lanedetectorgeneratemessagescpp [ 68%] Generating C++ code from lanedetector/Curve.msg [ 73%] Generating C++ code from lanedetector/Lane.msg [ 78%] Generating C++ code from lanedetector/LaneImage.msg [ 78%] Built target lanedetectorgeneratemessagescpp Scanning dependencies of target lanedetectorgeneratemessageslisp [ 84%] Generating Lisp code from lanedetector/Curve.msg [ 89%] Generating Lisp code from lanedetector/Lane.msg [ 94%] Generating Lisp code from lanedetector/LaneImage.msg [ 94%] Built target lanedetectorgeneratemessageslisp Scanning dependencies of target lanedetectorgeneratemessages [ 94%] Built target lanedetectorgeneratemessages [100%] Linking CXX executable /opt/rosws/devel/lib/lanedetector/curvefitting [100%] Built target curve_fitting

Asked by ia on 2021-01-05 09:37:32 UTC

Comments

Answers