CI Pipeline to create doxygen-documentation fails

The CI pipeline for the doxygen-based documentation, developed in !4 (merged), currently fails:

  • History:

  • Log:

    • The pipeline always fails in make doc between [ 50%] Generating Slice documentation for armarx_documentation and [ 50%] Built target slicedoc
    • The last output repeatedly is:
      /workspace/armarx/RobotComponents/source/RobotComponents/interface/components/PathPlanner.ice:67: warning: classes with operations are deprecated
      /workspace/armarx/RobotComponents/source/RobotComponents/interface/components/PathPlanner.ice:126: warning: classes with operations are deprecated
      CMakeFiles/slicedoc.dir/build.make:70: recipe for target 'CMakeFiles/slicedoc' failed
      CMakeFiles/Makefile2:747: recipe for target 'CMakeFiles/slicedoc.dir/all' failed
      make[3]: *** [CMakeFiles/slicedoc] Error 1
      make[2]: *** [CMakeFiles/slicedoc.dir/all] Error 2
      make[1]: *** [CMakeFiles/doc.dir/rule] Error 2
      CMakeFiles/Makefile2:286: recipe for target 'CMakeFiles/doc.dir/rule' failed
      make: *** [doc] Error 2
      Makefile:244: recipe for target 'doc' failed
      Cleaning up project directory and file based variables 00:00
      ERROR: Job failed: exit code 1
    • Building the documentation locally yields the same result
  • Investigation attempts:

    • Running it locally with increased verbosity (make -VERBOSE=1 doc) specifies the first error to:
      make[3]: *** [CMakeFiles/slicedoc.dir/build.make:71: CMakeFiles/slicedoc] Error 1
      make[3]: Leaving directory '/home/daab/code/armarxws/armarx/meta/documentation/build'
    • In build/CMakeFiles/slicedoc.dir/build.make, line 71 is (formatting changed, but indeed no space between -I and /home):
      /usr/bin/slice2html
      --output-dir
      /home/daab/code/armarxws/armarx/meta/documentation/build/doxygen/html/slice/
      --hdr
      /home/daab/code/armarxws/armarx/ArmarXCore/etc/templates/slicedoc/slice_documentation_header.html
      -I"/home/daab/code/armarxws/armarx/meta/documentation/source"
      -I"/usr/share/ice/slice"
      --underscore
      -I/home/daab/code/armarxws/armarx/ArmarXCore/source
      -I/home/daab/code/armarxws/armarx/ArmarXGui/source
      -I/home/daab/code/armarxws/armarx/RobotAPI/source
      -I/home/daab/code/armarxws/armarx/MemoryX/source
      -I/home/daab/code/armarxws/armarx/VisionX/source
      -I/home/daab/code/armarxws/armarx/RobotSkillTemplates/source
      -I/home/daab/code/armarxws/armarx/RobotComponents/source
      -I/home/daab/code/armarxws/armarx/skills/control/source
      /home/daab/code/armarxws/armarx/ArmarXCore/source/ArmarXCore/interface/ArmarXStorm.ice
      /home/daab/code/armarxws/armarx/ArmarXCore/source/ArmarXCore/interface/components/BatteryManagementInterface.ice
      /home/daab/code/armarxws/armarx/ArmarXCore/source/ArmarXCore/interface/components/EmergencyStopInterface.ice
      /home/daab/code/armarxws/armarx/ArmarXCore/source/ArmarXCore/interface/components/ExternalApplicationManagerInterface.ice
      /home/daab/code/armarxws/armarx/ArmarXCore/source/ArmarXCore/interface/components/JsonStorageInterface.ice
      ...
      /home/daab/code/armarxws/armarx/RobotComponents/source/RobotComponents/interface/components/PathPlanner.ice
      /home/daab/code/armarxws/armarx/RobotComponents/source/RobotComponents/interface/components/PlannedMotionProviderInterface.ice
      /home/daab/code/armarxws/armarx/RobotComponents/source/RobotComponents/interface/components/RobotIK.ice
      /home/daab/code/armarxws/armarx/RobotComponents/source/RobotComponents/interface/components/ViconMarkerProviderInterface.ice
    • The latest changes of PathPlanner.ice, PlannedMotionProviderInterface.ice and, following after the failure position, RobotIK.ice and ViconMarkerProviderInterface.ice are in all cases at least 5 years old -- thus, there is no recent change that correlates with the occurence of the problem. Even the repository graph of RobotComponents in general does not show any activity later than March 2024.
    • Removing the latest entries of line 71 in build/CMakeFiles/slicedoc.dir/build.make does not resolve the error, but just makes it occur earlier - sometimes missing additional entries, sometimes running until the end:
      • Remove 1 entry (ViconMarkerProviderInterface): error at same location (after PathPlanner:126)
      • Remove 2 entries (+ RobotIK): as before
      • Remove 3 entries (+ PlannedMotionProviderInterface): as before
      • Remove 4 entries (+ PathPlanner): error after RandomShortcutPostprocessor/Task.ice:34, i.e., missing 2 (HumanObstacleDetectionInterface, LaserScannerObstacleDetectionInterface)
      • Remove 5 entries (+ LaserScannerObstacleDetectionInterface): as before
      • Remove 6 entries (+ HumanObstacleDetectionInterface): as before
      • Remove 7 entries (+ RandomShortcutPostprocessor): error after RRTConnect/WorkerNode.ice:79, i.e., missing 0
      • Remove 8 entries (+ RRTConnect): error after RRTConnect/Task.ice:48, i.e., missing 0
    • It works (in terms of reaching [ 50%] Built target slicedoc) when removing many entries:
      • everything after ArmarXCore/interface/serialization/Eigen
      • everything after ArmarXCore/...
      • everything after RobotAPI/...
      • everything after MemoryX/...
      • but NOT when removing only everything after VisionX/...: then, the error occurs after
        /home/daab/code/armarxws/armarx/MemoryX/source/MemoryX/interface/components/WorkingMemoryInterface.ice:44: warning: proxy for a class is deprecated
        /home/daab/code/armarxws/armarx/VisionX/source/VisionX/interface/components/PersonSimulatorSkillProviderInterface.ice:6: module `VisionX' is capitalized inconsistently with its previous name: `visionx'
    • The behavior changes between VisionX/interface/components/OpticalFlowInterface.ice (still ok) and VisionX/interface/components/PersonSimulatorSkillProviderInterface.ice (causing the failure make[3]: *** [CMakeFiles/slicedoc.dir/build.make:71: CMakeFiles/slicedoc] Error 1 as listed above)
    • PersonSimulatorSkillProviderInterface.ice was indeed changed recently:
      • last changed on Nov. 14, i.e., actually slightly BEFORE the last successful run, in commit sw/armarx/visionx@a3f618c4
      • merged into master on Nov. 22, in commit sw/armarx/visionx@db69e3d5, i.e. BETWEEN last successful and before first failing run
      • PersonMemoryInteractorSkillProviderInterface was changed to PersonSimulatorSkillProviderInterface, in combination with a change of the module name from person_memory_interactor_skill_provider to person_simulator_skill_provider. The file name was also changed, from source/VisionX/interface/components/PersonMemoryInteractorSkillProviderInterface.ice to source/VisionX/interface/components/PersonSimulatorSkillProviderInterface.ice
      • Hypothesis that a MemoryInteractor string was left over somewhere, instead of being changed to (Person)Simulator: no, at least no findings via gitlab search functionality within VisionX (but findings for the new version)
      • Hypothesis that, in some cases, the renaming was to something else than Simulator: no, at least in the mentioned commit it seems that memory_interac is always changed to simula, and that upper-/lowercase and special characters are maintained
      • Checking if some documentation comments are affected by the renaming: In the changed files, /** and /// do not occur with references that are suspicious of being broken. The closest is @class PersonSimulator in PersonSimulator.h, but seems to be have ben renamed correctly.
Edited by Tilman Daab