This repository contains RTE-specific developments for OR-Tools:
- Support for SIRIUS solver
- Customized CI & releases
- Scripting tool for XPRESS, used to update the XPRESS MPsolver implementation
- A simple bash script (not tested by the CI) that allows to test the patch on a linux machine (doc inside)
This repository aims to build a code with the same structure as the original code of OR-Tools, only by adding extra files and applying some patches.
- Extra files are found in the root directory, especially in the ortools folder.
- Patches are applied using patch.py, in order to add new features to Cmake files, among others.
- The CI chain applies these patches on RTE's fork of OR-Tools instead of Google's, allowing us to build and test features before merging them into Google's code.
- Two extra files contain the SIRIUS implementation of MPSolver: sirius_interface.cc and sirius_interface_test.cc
- These files have to be added to different CMake files, thanks to patch.py
- Also, patch.py creates the
USE_SIRIUS
flag that can be used to build OR-Tools with SIRIUS support.
The CI runs after applying patches on RTE's fork of OR-Tools.
Assets are built for different operating systems and development languages.
Stable versions are published in the Releases section.
Moreover, you can run the workflows manually on your desired branch of rte-france/or-tools
in the actions section. This will allow you to test the assets.
The script file parse_header_xpress.py allows maintainers of the XPRESS MPSolver implementation to easily update the implementation for new versions of XPRESS.
This project can be used as a CMake project. It will fetch ortools and apply the patches. Two variables must be set at configure time:
ortools_REPO
url of ortools repositoryortools_REF
commit hash to use
Sirius dependency can be provided through CMAKE_PREFIX_PATH otherwise it will be fetched automatically
Fetching the dependencies the first time can be long, but it will be cached for the next builds.
A target ortools-rte
is created and can be used to build the project. However, it will rebuild ortools.