Make Python packages ('wheels') for multiple platforms (#223/1)
The following changes carry out the first step described in issue #223 (closed).
The CI mechanism is modified to make a Python package for Linux, MacOS, and MS-Windows.
The changes are kept minimal, as far as possible. The new CMake modules are placed in cmake/multipython folder.
-
In the root
CMakeLists.txt, variablesBA_PY_PACKAGEandBA_PY_PLATFORMare added to build a Python package.-
BA_PY_PACKAGE = ONbuilds a Python package with the default Python platform, or a given Python platform (viaBA_PY_PLATFORM). - If
BA_PY_PLATFORM = <path/to/Python/platform>is provided, CMake tries to find a Python platform in the given path via configuration files, to build the Python package. IfBA_PY_PLATFORMis given, there is no need to setBA_PY_PACKAGE = ON.
- Example:
cmake .. BA_PY_PACKAGE=ON cmake .. BA_PY_PLATFORM=/path/to/python38
-
-
multipython/FindCustomPython3searches for a Python platform in the default paths or in a given path. -
multipython/PyDirectoriesmakes the required directories for the Python package under the build directory. -
multipython/PyDependencesfinds the required Python dependencies and performs the required configuration. -
multipython/MakePythonWheelmakes the Python wheel. -
Added proper RPATHs as hints to load the dependencies of the libraries at run-time (on Linux & MacOS). On MacOS, a shell script,
devtools/deploy/mk_pypack_macos.sh, is used to gather the required external dependencies, correct the library ids and RPATHs and make the Python wheel. A similar script,devtools/deploy/mk_pypack_linux.sh, is used to make the Python wheel on Linux. -
The files and directory structure which Python needs to build the 'wheel' are stored under
Wrap/PythonPackage. -
Removed the unnecessary dependence on Boost::regex which is added automatically by CMake
FindBoostmodule. -
The GitLab CI script is updated to build the Python package and keep it as an artifact.
Related to issue #223 (closed) and milestone %5