Skip to content

Add packaging for Fedora 36

Jeremy Cohen requested to merge jhc02/nektar:pkg/issue307 into master

Issue/feature addressed

This MR adds packaging of Fedora 36 to the packaging pipeline. Addresses and closes #307 (closed).

Proposed solution

This has been undertaken by adding new packaging configuration for Fedora 36 as detailed below.

A couple of problems were encountered with the Nektar++ build on Fedora 36 as a result of update package/tool versions, these are again detailed below.

Implementation

Packaging of Fedora 36 is accomplished by adding an additional block of configuration to the .gitlab-ci/packaging.yml config file for the GitLab CI packaging pipeline. This, in turn, requires addition of a specification file that defines the rpm packaging process - this file has been symlinked from the Fedora 35 version (pkg/redhat/nektar-fedora-35.spec) since the same configuration is valid. A new Dockerfile, docker/packaging/Dockerfile-fedora-36 has also been added and this provides the configuration to create the base Fedora 36 docker container providing the build environment for compiling/packaging Nektar++ on this distro.

Two issues were encountered when building on Fedora 36:

  • A build error relating to the inclusion of geometry.hpp from Boost and compiling with GCC12. The error was the same as that shown in this issue in the Boost Geometry GitHub repository. This was resolved by ensuring that the use namespace std; directive appears below the include of geometry.hpp.

  • The build was then failing with an error relating to HDF5. This was caused by a version of HDF5 being used that has the new API (>=1.10) whereas Nektar++ is calling HDF5 based on the old HDF5 API. This problem has already been addressed in another MR that is awaiting merging - the same fix is used here, credit to @edlaughton for this change which is also being used here.

Tests

The updated configuration is tested as part of the build and test process in the packaging CI pipeline.

Notes

As with other packaging changes, the packaging jobs are not being triggered with the standard MR CI configuration. A separate run of the CI in my fork has been carried out and all jobs (apart from the deployment which will not pass in my fork) finish successfully.

Checklist

  • Functions and classes, or changes to them, are documented.
  • (N/A) User guide/documentation is updated.
  • Changelog is updated.
  • (N/A) Suitable tests added for new functionality.
  • Contributed code is correctly formatted. (See the contributing guidelines).
  • (N/A) License added to any new files.
  • No extraneous files have been added (e.g. compiler output or test data files).

Warning

On the 19.07 the code formatting (code style) was standardised using clang-format, over the whole Nektar++ code. This means changes in your branch will conflict with formatting changes on the master branch. To resolve these conflicts , see #295 (closed)

Merge request reports