Build POC `khiops-core` Pip Package
There are Pip packages for MPI:
- for MPICH (maintained by the MPI4Py maintainers), x86 and ARM, Linux and MacOs: https://pypi.org/project/mpich/#files
- for OpenMPI (also maintained by the MPI4Py maintainers), x86 and ARM, Linux and MacOS: https://pypi.org/project/openmpi/#files
- for IntelMPI (maintained by the authors of the library), x86 only, Linux and Windows: https://pypi.org/project/impi-rt/#files.
Hence:
- for Linux and MacOS (x86 and ARM), the use of these packages could be investigated, as a userspace alternative to system packages;
- for Windows:
- either MSMPI could be vendored (as it is for the native package);
- and / or Intel MPI could be used.
Thus, only the Khiops binaries would need to be included in the Pip package, as data files: https://setuptools.pypa.io/en/latest/userguide/datafiles.html.
However, getting these binaries can be done in two ways AFAIU:
- build them from source while building the Pip package
- "reverse-engineer" the released packages for each platform and extract the already-built binaries from there.
Approach 1 has the disadvantage that build work would be duplicated with the native package generation.
Either approach could be done either:
- by scripting setuptools to this end; this would require reinstatement of
setup.py, or running custom script declared inpyproject.toml? - by scripting the GitHub
pip.ymlworkflow to this end; if this route is taken, we need to check whether such a setup is compatible with the PyPI way of building / publishing packages.
Réunion de travail à prévoir :
- politique packaging
- credit temps pour ce POC
Je travaille actuellement avec un prestataire qui développe un package pip basé sur un fork de Khiops (https://github.com/UData-Orange/umodl). J'ai également créé un exécutable umodl pour la modélisation de l'uplift. Ce package pip devra inclure les exécutables umodl compilés pour Windows, Ubuntu et Debian, afin d'être utilisé par une librairie Python appelée Kuplift (https://github.com/UData-Orange/kuplift).
Le travail est en cours depuis le 19/11 et doit se terminer le 16/01. Il serait utile de prévoir une réunion de synchronisation avec Vladimir et Bruno pour voir si cela peut faciliter l'avancement du packaging Khiops sous forme de package pip.