Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

scikit-build

Package Overview
Dependencies
Maintainers
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

scikit-build

Improved build system generator for Python C/C++/Fortran/Cython extensions

  • 0.18.1
  • PyPI
  • Socket score

Maintainers
3

scikit-build is a Python build system for CPython C/C++/Fortran/Cython extensions using CMake.

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

The next generation of scikit-build, scikit-build-core_, is currently under development. This provides a simple, reliable build backend for CMake that does not use setuptools and provides a lot of new features. Scikit-build-core can also power a setuptools-based extension system, which will eventually become the backend for scikit-build (classic). If you do not require extensive customization of the build process, you should consider trying scikit-build-core instead of scikit-build.

To get started, see this example <https://scikit-build.readthedocs.io/en/latest/usage.html#example-of-setup-py-cmakelists-txt-and-pyproject-toml>. For more examples, see scikit-build-sample-projects <https://github.com/scikit-build/scikit-build-sample-projects>.

Scikit-build 0.18.1

This release fixes issues with setuptools 74, and avoids a warning from recent versions of wheel. Android and iOS are now included in known platforms.

Bug fixes

  • Support for setuptools 74 in #1116 <https://github.com/scikit-build/scikit-build/pull/1116>_
  • iOS and Android support by @FeodorFitsner <https://github.com/FeodorFitsner>_ in #1101 <https://github.com/scikit-build/scikit-build/pull/1101>_

Testing

  • Fix for distutils change in #1103 <https://github.com/scikit-build/scikit-build/pull/1103>_
  • Remove test directives by @s-t-e-v-e-n-k <https://github.com/s-t-e-v-e-n-k>_ in #1108 <https://github.com/scikit-build/scikit-build/pull/1108>_

Scikit-build 0.18.0

This release bumps the minimum required CMake to 3.5 and supports CPython 3.13.

Bug fixes

  • Support MSVC 17.10 in #1081 <https://github.com/scikit-build/scikit-build/pull/1081>_
  • CMake 3.5+ requirement in #1095 <https://github.com/scikit-build/scikit-build/pull/1095>_
  • Support CPython 3.13 with windows lib finding fix in #1094 <https://github.com/scikit-build/scikit-build/pull/1094>_
  • Don't die on PermissionError during chmod by @mweinelt <https://github.com/mweinelt>_ in #1073 <https://github.com/scikit-build/scikit-build/pull/1073>_
  • Remove usage of deprecated distutils in cmake files by @hmaarrfk <https://github.com/hmaarrfk>_ in #1032 <https://github.com/scikit-build/scikit-build/pull/1032>_
  • Use first available option for vswhere output by @ZzEeKkAa <https://github.com/ZzEeKkAa>_ in #1030 <https://github.com/scikit-build/scikit-build/pull/1030>_

Testing

  • Support setuptools 69.3.0 changes in two tests by @s-t-e-v-e-n-k <https://github.com/s-t-e-v-e-n-k>_ in #1087 <https://github.com/scikit-build/scikit-build/pull/1087>_
  • Use uv in a few places in #1092 <https://github.com/scikit-build/scikit-build/pull/1092>_

Fedora CI

  • Fedora maintenance by @LecrisUT <https://github.com/LecrisUT>_ in #1078 <https://github.com/scikit-build/scikit-build/pull/1078>_
  • Fedora: Fix rsync filter rule by @LecrisUT <https://github.com/LecrisUT>_ in #1003 <https://github.com/scikit-build/scikit-build/pull/1003>_
  • Fix Fedora tests by @LecrisUT <https://github.com/LecrisUT>_ in #1050 <https://github.com/scikit-build/scikit-build/pull/1050>_
  • Fedora downstream CI by @LecrisUT <https://github.com/LecrisUT>_ in #993 <https://github.com/scikit-build/scikit-build/pull/993>_

Miscellaneous

  • Clean up pylint in #1017 <https://github.com/scikit-build/scikit-build/pull/1017>_
  • Fix mypy type ignores for new setuptools types in #1082 <https://github.com/scikit-build/scikit-build/pull/1082>_
  • Move to Ruff-format in #1035 <https://github.com/scikit-build/scikit-build/pull/1035>_
  • Remove pkg_resources and test command in #1014 <https://github.com/scikit-build/scikit-build/pull/1014>_
  • Ruff moved to astral-sh in #1007 <https://github.com/scikit-build/scikit-build/pull/1007>_
  • Target-version no longer needed by Black or Ruff in #1008 <https://github.com/scikit-build/scikit-build/pull/1008>_
  • Update ruff and fix warnings in #1060 <https://github.com/scikit-build/scikit-build/pull/1060>_
  • Use 2x faster black mirror in #1021 <https://github.com/scikit-build/scikit-build/pull/1021>_
  • Group dependabot updates in #1054 <https://github.com/scikit-build/scikit-build/pull/1054>_
  • macos-latest is changing to macos-14 ARM runners in #1083 <https://github.com/scikit-build/scikit-build/pull/1083>_
  • Skip win PyPy PEP 518 in #1091 <https://github.com/scikit-build/scikit-build/pull/1091>_

Scikit-build 0.17.6

A small fix release with some new platforms and better testing, including CPython 3.12.0b1.

Bug fixes

  • Support added for SunOS by @mtelka <https://github.com/mtelka>_ in #983 <https://github.com/scikit-build/scikit-build/pull/983>_.
  • Support added for AIX (with recent CMake) by @bhuntsman <https://github.com/bhuntsman>_ in #988 <https://github.com/scikit-build/scikit-build/pull/988>_.

Testing

  • Tests now pass on CPython 3.12.0b1 in #879 <https://github.com/scikit-build/scikit-build/pull/879>_.
  • Tests no longer use pytest-virtualenv in #879 <https://github.com/scikit-build/scikit-build/pull/879>_.
  • isolated marker now includes test_distribution tests in #879 <https://github.com/scikit-build/scikit-build/pull/879>_.
  • Tests avoid incorrect get_map match by @keszybz <https://github.com/keszybz>_ in #990 <https://github.com/scikit-build/scikit-build/pull/990>_.
  • Fedora testing fix by @LecrisUT <https://github.com/LecrisUT>_ in #986 <https://github.com/scikit-build/scikit-build/pull/986>_ and #938 <https://github.com/scikit-build/scikit-build/pull/938>_.

Miscellaneous

  • Docs improvements in #979 <https://github.com/scikit-build/scikit-build/pull/979>_.

Scikit-build 0.17.5

A small fix release fixing the passing on of generator specific arguments. This fixes some cases where the Ninja generator was found but then was unable to build. NetBSD was reported to work, so was added to the BSD's supported.

Bug fixes

  • Generator args were missing for actual compile in #975 <https://github.com/scikit-build/scikit-build/pull/975>_.
  • Add support for netbsd & pyodide (future) in #977 <https://github.com/scikit-build/scikit-build/pull/977>_.

Scikit-build 0.17.4

A followup fix to the issue 0.17.3 tried to fix. We now have a method to manually test downstream packages, too.

Bug fixes

  • Make sure include dir is found even if the lib is not present in #974 <https://github.com/scikit-build/scikit-build/pull/974>_.

Scikit-build 0.17.3

A small release related to PYTHON_LIBRARY handling changes in 0.17.2; scikit-build 0.17.3 returns an empty string from get_python_library if no Python library is present (like on manylinux), where 0.17.2 returned None, and previous versions returned a non-existent path. Note that adding REQUIRED to find_package(PythonLibs will fail, but it is incorrect (you must not link to libPython.so) and was really just injecting a non-existent path before.

Bug fixes

  • Keep get_python_library return type string if python lib non-existing for now in #959 <https://github.com/scikit-build/scikit-build/pull/959>_.
  • Avoid 'not found' warning if libs are not found by FindPythonExtensions in #960 <https://github.com/scikit-build/scikit-build/pull/960>_.
  • FindNumPy should not call FindPythonLibs in #958 <https://github.com/scikit-build/scikit-build/pull/958>_.

Scikit-build 0.17.2

Another small release with fixes for non-MSVC Windows platforms.

Bug fixes

  • RPM spec fix by @LecrisUT <https://github.com/LecrisUT>_ in #937 <https://github.com/scikit-build/scikit-build/pull/937>_.
  • Validate value before returning library path by @dlech <https://github.com/dlech>_ in #942 <https://github.com/scikit-build/scikit-build/pull/942>_.
  • Only add Python_LIBRARY on Windows MSVC in #943 <https://github.com/scikit-build/scikit-build/pull/943>_ and #944 <https://github.com/scikit-build/scikit-build/pull/944>_.
  • Slightly nicer traceback for failed compiler in #947 <https://github.com/scikit-build/scikit-build/pull/947>_.

Testing

  • Hide a few warnings that are expected in #948 <https://github.com/scikit-build/scikit-build/pull/948>_.

Scikit-build 0.17.1

This is a small release fixing a few bugs; the primary one being a change that was triggering a bug in older FindPython. The unused variable messages have been deactivated to simplify output, as well.

Bug fixes

  • Older (<3.24) CMake breaks when lib specified in #932 <https://github.com/scikit-build/scikit-build/pull/932>_.
  • An error output was missing formatting in #931 <https://github.com/scikit-build/scikit-build/pull/931>_.
  • Make empty CMAKE_OSX_DEPLOYMENT_TARGET a warning (bug in conda-forge's clang activation fixed upstream) in #934 <https://github.com/scikit-build/scikit-build/pull/934>_.
  • Remove unused variable warnings by in #930 <https://github.com/scikit-build/scikit-build/pull/930>_.

Testing

  • Add Fedora packaging with packit automation by @LecrisUT <https://github.com/LecrisUT>_ in #928 <https://github.com/scikit-build/scikit-build/pull/928>_.
  • Fix codecov ci by @LecrisUT <https://github.com/LecrisUT>_ in #929 <https://github.com/scikit-build/scikit-build/pull/929>_.
  • Update some coverage settings in #933 <https://github.com/scikit-build/scikit-build/pull/933>_.

Scikit-build 0.17.0

A lot of bug fixes are present in this release, focusing on Windows, PyPy, and cross compiling. We've also improved the compatibility with default setuptools behaviors a little, and enabled some things that were previously unavailable, like overriding the build type via the cmake argument environment variables. We've expanded our CI matrix to include Windows and macOS PyPy and some Fortran tests on Linux. This release requires Python 3.7+.

Bug fixes

  • Match setuptools behavior for include_package_data default. by @vyasr <https://github.com/vyasr>_ in #873 <https://github.com/scikit-build/scikit-build/pull/873>_.
  • Misc. fixes for F2PY and PythonExtensions modules by @benbovy <https://github.com/benbovy>_ in #495 <https://github.com/scikit-build/scikit-build/pull/495>_.
  • Provide more useful error if user provides CMAKE_INSTALL_PREFIX by @vyasr <https://github.com/vyasr>_ in #872 <https://github.com/scikit-build/scikit-build/pull/872>_.
  • Stop assuming that .pyx files are in the same directory as CMakeLists.txt by @vyasr <https://github.com/vyasr>_ in #871 <https://github.com/scikit-build/scikit-build/pull/871>_.
  • Allow build type overriding in #902 <https://github.com/scikit-build/scikit-build/pull/902>_.
  • Detect PyPy library correctly on Windows by user:gershnik in #904 <https://github.com/scikit-build/scikit-build/pull/904>_.
  • Include library for FindPython for better Windows cross-compiles in #913 <https://github.com/scikit-build/scikit-build/pull/913>_. Thanks to user:maxbachmann for testing.
  • Fix logic for default generator when cross-compiling for ARM on Windows in #917 <https://github.com/scikit-build/scikit-build/pull/917>_ by @dlech <https://github.com/dlech>_.
  • Use f2py's get_include if present in #877 <https://github.com/scikit-build/scikit-build/pull/877>_.
  • Fix support for cross-compilation exception using targetLinkLibrariesWithDynamicLookup by @erykoff <https://github.com/erykoff>_ in #901 <https://github.com/scikit-build/scikit-build/pull/901>_.
  • Treat empty MACOSX_DEPLOYMENT_TARGET as if it was unset in #918 <https://github.com/scikit-build/scikit-build/pull/918>_.

Testing

  • Add hello fortran sample package + tests by @benbovy <https://github.com/benbovy>_ in #493 <https://github.com/scikit-build/scikit-build/pull/493>_.
  • Add sdist check & fix in #906 <https://github.com/scikit-build/scikit-build/pull/906>_.
  • Fix some setuptools types in #888 <https://github.com/scikit-build/scikit-build/pull/888>_.
  • Add PyPy Win & macOS to the CI in #907 <https://github.com/scikit-build/scikit-build/pull/907>_.
  • Add tests for Python 3.12 Linux alphas in #922 <https://github.com/scikit-build/scikit-build/pull/922>_.

Miscellaneous

  • Drop Python 3.6 in #862 <https://github.com/scikit-build/scikit-build/pull/862>_.
  • Move building backend to hatchling in #870 <https://github.com/scikit-build/scikit-build/pull/870>_.
  • Avoid mutating function input parameters in #899 <https://github.com/scikit-build/scikit-build/pull/899>_.
  • Use compat/typing name in #869 <https://github.com/scikit-build/scikit-build/pull/869>.

Publications

Please use the first citation when referencing scikit-build in scientific publications.

  • Jean-Christophe Fillion-Robin, Matt McCormick, Omar Padron, Max Smolens, Michael Grauer, & Michael Sarahan. (2018, July 13). jcfr/scipy_2018_scikit-build_talk: SciPy 2018 Talk | scikit-build: A Build System Generator for CPython C/C++/Fortran/Cython Extensions. Zenodo. https://doi.org/10.5281/zenodo.2565368

  • Schreiner, Henry, Rickerby, Joe, Grosse-Kunstleve, Ralf, Jakob, Wenzel, Darbois, Matthieu, Gokaslan, Aaron, Fillion-Robin, Jean-Christophe, & McCormick, Matt. (2022, August 1). Building Binary Extensions with pybind11, scikit-build, and cibuildwheel. https://doi.org/10.25080/majora-212e5952-033

History

PyCMake was created at SciPy 2014 in response to general difficulties building C++ and Fortran based Python extensions across platforms. It was renamed to "scikit-build" in 2016. Scikit-build-core was started in 2022.

Known Issues

These issues are likely to be addressed in upcoming releases, and are already addressed in scikit-build-core_.

  • Editable installs do not work with the latest versions of Setuptools (and had issues with older versions, too).
  • Configuration scikit-build cares about must be specified in setup() currently.
  • The cache directory (_skbuild) may need to be deleted between builds in some cases (like rebuilding with a different Python interpreter).
  • AIX requires a newer version of CMake than the IBM-supplied CMake 3.22.0 from the AIX Toolbox for Open Source Software. We currently recommend building CMake from source on AIX.

We are also working on improving scikit-build, so there are some upcoming changes and deprecations:

  • All deprecated setuptools/distutils features are also deprecated in scikit-build, like the test command, easy_install, etc.
  • Older versions of CMake (<3.15) are not recommended; a future version will remove support for older CMake's (along with providing a better mechanism for ensuring a proper CMake is available).

If you need any of these features, please open or find an issue explaining what and why you need something.

Miscellaneous

Support for this work was provided by NSF grant OAC-2209877 <https://www.nsf.gov/awardsearch/showAward?AWD_ID=2209877>_.

.. _scikit-build-core: https://scikit-build-core.readthedocs.io .. _cmake: https://cmake.org

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc