scikit-build 0.7.1

Skip to first unread message

Jean-Christophe Fillion-Robin

Aug 1, 2018, 1:48:21 PM8/1/18
to scikit-build
Busy attending SciPy 2018 conference, we forgot to announce the latest release now available on PyPI.

On behalf of the scikit-build team, I am pleased to announce that the version 0.7.1 is available for download:

  pip install --upgrade scikit-build

I would also like to thanks everyone who contributed.

Scikit-build 0.7.1


  • Fix description and classifier list in
  • Fix link in README.

Scikit-build 0.7.0

New Features

  • Faster incremental build by re-configuring the project only if needed. This was achieved by (1) adding support to retrieve the environment mapping associated with the generator set in the CMakeCache.txt file, (2) introducing a CMake spec file storing the CMake version as well as the the CMake arguments and (3) re-configuring only if either the generator or the CMake specs change. Thanks @xoviat for the contribution. See #301.
  • CMake modules:
    • CMake module PythonExtensions: Set symbol visibility to export only the module init function. This applies to GNU and MSVC compilers. Thanks @xoviat. See #299.
    • Add CMake module F2PY useful to find the f2py executable for building Python extensions with Fortran. Thanks to @xoviat for moving forward with the integration. Concept for the module comes from the work of @scopatz done in PyNE project. See #273.
    • Update CMake module NumPy setting variables NumPy_CONV_TEMPLATE_EXECUTABLE and NumPy_FROM_TEMPLATE_EXECUTABLE. Thanks @xoviat for the contribution. See #278.
  • Setup keywords:
    • Add support for cmake_languages setup keyword.
    • Add support for include_package_data and exclude_package_data setup keywords as well as parsing of See #315. Thanks @reiver-dev for reporting the issue.
    • Add support for cmake_minimum_required_version setup keyword. See #312. Suggested by @henryiii.
    • Install cmake if found in setup_requires list. See #313. Suggested by @henryiii.
  • Add support for --cmake-executable scikit-build command line option. Thanks @henryborchers for the suggestion. See #317.
  • Use _skbuild/platform-X.Y instead of _skbuild to build package. This allows to have a different build directory for each python version. Thanks @isuruf for the suggestion and @xoviat for contributing the feature. See #283.
  • Run cmake and develop command when command test is executed.

Bug fixes

  • Fix support of --hide-listing when building wheel.
  • CMake module Cython: Fix escaping of spaces associated with CYTHON_FLAGS when provided as command line arguments to the cython executable through CMake cache entries. See #265 fixed by @neok-m4700.
  • Ensure package data files specified in the setup() function using package_data keyword are packaged and installed.
  • Support specifying a default directory for all packages not already associated with one using syntax like package_dir={'':'src'} in Thanks @benjaminjack for reporting the issue. See #274.
  • Improve --skip-cmake command line option support so that it can re-generate a source distribution or a python wheel without having to run cmake executable to re-configure and build. Thanks to @jonwoodring for reporting the issue on the mailing list.
  • Set skbuild <version> as wheel generator. See PEP-0427 and #191.
  • Ensure is considered when generating source distribution. Thanks @seanlis for reporting the problem and providing an initial patch, and thanks @henryiii for implementing the corresponding test. See #260.
  • Support generation of source distribution for git repository having submodules. This works only for version of git >= 2.11 supporting the --recurse-submodules option with ls-files command.

Python Support

  • Tests using Python 3.3.x were removed and support for this version of python is not guaranteed anymore. Support was removed following the deprecation warnings reported by version 0.31.0 of wheel package, these were causing the tests test_source_distribution and test_wheel to fail.


  • Speedup execution of tests that do not require any CMake language enabled. This is achieved by (1) introducing the test project hello-no-language, (2) updating test utility functions execute_setup_py and project_setup_py_test to accept the optional parameter disable_languages_test allowing to skip unneeded compiler detection in test project used to verify that the selected CMake generator works as expected, and (3) updating relevant tests to use the new test project and parameters.

    Overall testing time on all continuous integration services was reduced:

    • AppVeyor:
      • from ~16 to ~7 minutes for 64 and 32-bit Python 2.7 tests done using Visual Studio Express 2008
      • from more than 2 hours to ~50 minutes for 64 and 32-bit Python 3.5 tests done using Visual Studio 2015. Improvement specific to Python 3.x were obtained by caching the results of slow calls to distutils.msvc9compiler.query_vcvarsall (for Python 3.3 and 3.4) and distutils._msvccompiler._get_vc_env (for Python 3.5 and above). These functions were called multiple times to create the list of used in
    • CircleCI: from ~7 to ~5 minutes.
    • TravisCI: from ~21 to ~10 minutes.
  • Update maximum line length specified in flake8 settings from 80 to 120 characters.

  • Add prepend_sys_path utility function.

  • Ensure that the project directory is prepended to sys.path when executing test building sample project with the help of execute_setup_py function.

  • Add codecov config file for better defaults and prevent associated Pull Request checks from reporting failure when coverage only slightly changes.



  • Fix miscellaneous pylint warnings.

Reply all
Reply to author
0 new messages