Spack Package Deployment

With this release there will be a Spack package for installing GPI-Space and all its dependencies (i.e. versions 21.09 and 21.12). Installing GPI-Space could be as simple as spack install gpi-space.


NOTE:

The package will only be available some time after the release. In the meantime, some reading material on Spack:


API CHANGE: Standalone Util-RPC

GPI-Space’s RPC is now a standalone project with its own CMake package configuration file and has been renamed to util-rpc. A few more things to note:

  • util-rpc is currently installed alongside GPISpace which is including it through its own CMake package configuration file. util-rpc-config.cmake has the same root directory as GPISpace (i.e. util-rpc_ROOT == GPISpace_ROOT)
  • A util-rpc submodule can no longer exist in a GPISpace application. Keeping it will result in CMake errors.
  • The target RPC is now called Util::RPC.
  • Compilation now requires a C++14 capable compiler.
  • In GPISpace util-rpc’s tests are disabled by default, to enable them UTIL_RPC_BUILD_TESTING needs to be set to ON.

API CHANGE: fhg/util/boost/program_options has been merged into util-generic

fhg/util/boost/program_options has been merged into util-generic and is no longer available as a separate repository.

Changes:

  • #include <fhg/util/boost/program_options/...> becomes #include <util-generic/boost/program_options/...>
  • fhg/util/boost/program_options headers are now installed with util-generic and are therefore part of the public API.

API CHANGE: Standalone Util-Qt

GPISpace’s util-qt is now a standalone project with its own CMake package configuration file. A few more things to note:

  • util-qt is currently installed alongside GPISpace which is including it through its own CMake package configuration file.
  • util-qt is only installed if GPISpace is built with GSPC_WITH_MONITOR_APP=ON (default)
  • util-qt submodule can no longer exist in a GPISpace application. Keeping it will result in CMake errors.
  • In addition to the Util::Qt target, there is now also a Util::Qt-Headers target for the public headers.
  • Compilation now requires a C++14 capable compiler.
  • In GPISpace util-qt’s tests are disabled by default, to enable them UTIL_QT_BUILD_TESTING needs to be set to ON.

New System Testing Functionality

A new System Test functionality is introduced and demonstrated on the aggregate_sum example from the How-To-Use instructions. In contrast to the old system tests, this one is truly independent of build tree information. This was achieved through a new indirection which makes CTest call a script to perform a separate CMake configuration, build, and execution. The newly introduced script is also usable outside of util_cmake_add_system_test.

Improvements to Util-CMake’s parse_arguments

A new and improved cmake_parse_arguments wrapper util_cmake_parse_arguments with a more powerful and flexible argument definition syntax is added. At the same time, the old _parse_arguments and _parse_arguments_with_unknown will be removed in the foreseeable future. util_cmake_parse_arguments features:

  • required arguments
  • a flag to trigger an error message in case of unparsed arguments
  • a flag to trigger an error message in case of keywords with missing values
  • automatic generation of a usage message
  • a flag to trigger the usage message in case the HELP argument is set
  • default values
  • appending of additional values to the default

Util-CMake Feature for Colored Strings

A functionality is provided to color strings for console outputs using escape codes. The function util_cmake_color_string is located in util-cmake/colors.cmake.

Fixes

  • API CHANGE: The Petri net compiler pnetc now includes --std=c++14 in the flags used to compile the generated wrapper code. It used to be --std=c++11 before.
  • When ports are connected with places of wrong type, then the error messages are now always correctly printing the direction, e.g. connect-in and not connect-0 any longer as in former versions of GPI-Space.

Miscellaneous

  • API CHANGE: The file fhg/util/dl-hpp is no longer installed. Please use util-generic/dynamic_linking.hpp which provides the same interface.
  • CentOS 6 has reached its End Of Life on November 30th 2020. Dropping support for this system was necessary to reduce the maintenance effort.
  • The minimum supported version of GCC is increased to 5.5.0.

Meta

  • Documentation files and examples are now grouped together under share/doc/. All tests under share have been relocated into test/share/ for a cleaner separation between documentation and tests.
  • More content was added to the existing feature documenation. Additionally, a description of the scheduling with preferences feature was added.