Skip to content

Do not require to purge Allen in most cases

Daniel Campora Perez requested to merge dcampora_no_purge_no_structtotuple into master

This MR makes it such that purging / making Allen becomes almost never required.

  • A list of algorithm headers is produced in GenerateConfiguration.cmake.
  • This list is used to set the requirements of target algorithms.py.
  • The generated algorithms.py now properly triggers generating all subsequent steps that depend on it. (As a sidenote, the documentation in https://cmake.org/cmake/help/v3.3/command/add_custom_command.html is very confusing about how DEPENDS should be used).
  • Generation of StructToTuple has been removed. Instead, Boost.PFR is used (https://www.boost.org/doc/libs/1_75_0/doc/html/boost_pfr/tutorial.html). This permits not requiring a recompilation of all algorithms each time one algorithm header file is changed, as the intermediate StructToTuple step is now removed.
  • The only moment purging is now required when building Allen is when an algorithm is added or removed. This has been documented in the Adding an algorithm section.

Closes #355 (closed).

As a sidenote, going any further into a world where one never needs to purge would require to:

  • Remove the ability of Allen to generate json configurations at compile time (which right now is required for production), and only allow it to use them at runtime instead.
  • Exploit static initialization to provide a functionality akin to AlgorithmDB.h.
  • Have some sort of mechanism to have all Gaudi-Allen views in a series of source files (similarly to Moore functors, if I recall correctly).
Edited by Daniel Campora Perez

Merge request reports