SoftBank Robotics documentation What's new in NAOqi 2.8?

qiFramework 1.3.0

Fixed issue

IDL files had inconsistent paths when:

  • stored in sources,
  • used in worktree builds,
  • installed.

In order to support this situation, qilang-tools used symlinks/copies from the source to the QI_SDK_DIR. This copy/symlink trick is considered harmful because:

  • it breaks clean builds when a qilang package imports another one: nothing guarantees that the dependee copy/link will be created before the dependent tries to parse it
  • it breaks incremental CI builds, when dangling links are left in the build directory
  • it adds complexity and internal state

The change:

  • fixes the IDL install rule to remove the inconsistency. IDL files are now installed to:

    $PREFIX/share/qi/idl/mypackage/[mysubpackage]/myidl.idl.qi

  • deprecates the symlink/copies:

    if the IDL files are organized in source under a share/qi/idl directory, then qi_gen_idl won’t use the symlink/copy trick. When parsing an IDL file, qicc will be able to locate a dependee IDL directly in the source tree, if qi_stage_dir() was used: this adds the source directory in qibuild’s qi/path.conf files, which qicc uses as a search path.

  • if the IDL path (as given to qi_gen_idl) does not begin with ‘share/qi/idl/’, then a copy/symlink will be made, unless backward compatibility was disabled using -DQI_GEN_IDL_WITH_LEGACY_LAYOUT_SUPPORT=OFF

  • update the template and the testqilang projects in order to promote the new layout.