Skip to content

SciPy 2018 Talk | scikit-build: A Build System Generator for CPython C/C++/Fortran/Cython Extensions

License

Notifications You must be signed in to change notification settings

jcfr/scipy_2018_scikit-build_talk

Repository files navigation

scikit-build

DOI

scikit-build is an improved build system generator for CPython C/C++/Fortran/Cython extensions. It provides better support for additional compilers, build systems, cross compilation, and locating dependencies and their associated build requirements.

The scikit-build package is fundamentally just glue between the setuptools Python module and CMake.

To get started, see http://scikit-build.readthedocs.io.

scikit-build talk

This talk was presented at SciPy 2018 conference.

Slide 29 of the presentation

For reference, all SciPy 2018 talks are available here

Licensing

All Works of Art in this repository are licensed under the Creative Commons Attribution Share Alike 4.0 International. See LICENSE_CC_BY_SA_40 file for details.

SciPy 2018 submission details

Authors

1Kitware, Inc. 2Anaconda, Inc.

Title

Scikit-build: A build system generator for CPython C/C++/Fortran/Cython extensions.

Short description:

We present “Scikit-build”, an improved build system generator for CPython C/C++/Fortran/Cython extensions. It provides improved support for additional compilers, build systems, cross compilation, and locating dependencies and determining their build requirements over distutils/setuptools. We also describe how ITK and VTK C++ scientific libraries were updated to make use of scikit-build to ultimately be published as wheels.

Keywords

  • Build Tool
  • CPython Extension
  • Building
  • Packaging
  • Wheels
  • Cross Platform

Topics

  • General
  • Infrastructure

Long description

Although the scientific packages NumPy, SciPy, SymEngine and Matplotlib can be used from Python today, since they bundle C, C++, Fortran or Cython extensions, successfully building the associated binary wheels is complex and prone to errors. This is a significant barrier to allow use of these packages on a broader set of platforms such as mobile, Raspberry Pi or HPC.

We present scikit-build, an improved build system generator for CPython C/C++/Fortran/Cython extensions that provides first-class support for additional compilers, build systems, cross compilation, and locating dependencies and their associated build requirements. The scikit-build package is fundamentally glue between the setuptools and cmake Python packages that is used to facilitate the build process.

Initially developed during the SciPy sprints 2014, and later funded by the National Library Medicine in 2015, the scikit-build package is tested (90% coverage) and available on PyPI and conda-forge. It is also supported by core members of the Python Packaging Authority (PPA). In the future, the project aims to be a build tool option in the build system specification PEP-518.

In this talk, we will provide an overview of scikit-build, explain how it can be used to build simple CPython C, C++, Fortran and Cython extensions, and also describe how the build system of more complex C++ packages like the Visualization ToolKit (VTK) and the Insight Segmentation and Registration Toolkit (ITK) were updated to support generating wheels for multiple operating systems and python versions.

Related links