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.