Skip to content

Latest commit

 

History

History
1284 lines (856 loc) · 47.1 KB

CHANGES.rst

File metadata and controls

1284 lines (856 loc) · 47.1 KB

Release Notes

This is the list of changes to scikit-build between each release. For full details, see the commit logs at https://github.com/scikit-build/scikit-build

Next Release

We are hard at work on the next generation of scikit-build scikit-build-core, which will eventually replace the backend here. We are also continuing to fix bugs, make improvements, and backport changes here.

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 in 983.
  • Support added for AIX (with recent CMake) by bhuntsman in 988.

Testing

  • Tests now pass on CPython 3.12.0b1 in 879.
  • Tests no longer use pytest-virtualenv in 879.
  • isolated marker now includes test_distribution tests in 879.
  • Tests avoid incorrect get_map match by keszybz in 990.
  • Fedora testing fix by LecrisUT in 986 and 938.

Miscellaneous

  • Docs improvements in 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.
  • Add support for netbsd & pyodide (future) in 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.

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.
  • Avoid 'not found' warning if libs are not found by FindPythonExtensions in 960.
  • FindNumPy should not call FindPythonLibs in 958.

Scikit-build 0.17.2

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

Bug fixes

  • RPM spec fix by LecrisUT in 937.
  • Validate value before returning library path by dlech in 942.
  • Only add Python_LIBRARY on Windows MSVC in 943 and 944.
  • Slightly nicer traceback for failed compiler in 947.

Testing

  • Hide a few warnings that are expected in 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.
  • An error output was missing formatting in 931.
  • Make empty CMAKE_OSX_DEPLOYMENT_TARGET a warning (bug in conda-forge's clang activation fixed upstream) in 934.
  • Remove unused variable warnings by in 930.

Testing

  • Add Fedora packaging with packit automation by LecrisUT in 928.
  • Fix codecov ci by LecrisUT in 929.
  • Update some coverage settings in 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 in 873.
  • Misc. fixes for F2PY and PythonExtensions modules by benbovy in 495.
  • Provide more useful error if user provides CMAKE_INSTALL_PREFIX by vyasr in 872.
  • Stop assuming that .pyx files are in the same directory as CMakeLists.txt by vyasr in 871.
  • Allow build type overriding in 902.
  • Detect PyPy library correctly on Windows by user:gershnik in 904.
  • Include library for FindPython for better Windows cross-compiles in 913. Thanks to user:maxbachmann for testing.
  • Fix logic for default generator when cross-compiling for ARM on Windows in 917 by dlech.
  • Use f2py's get_include if present in 877.
  • Fix support for cross-compilation exception using targetLinkLibrariesWithDynamicLookup by erykoff in 901.
  • Treat empty MACOSX_DEPLOYMENT_TARGET as if it was unset in 918.

Testing

  • Add hello fortran sample package + tests by benbovy in 493.
  • Add sdist check & fix in 906.
  • Fix some setuptools types in 888.
  • Add PyPy Win & macOS to the CI in 907.
  • Add tests for Python 3.12 Linux alphas in 922.

Miscellaneous

  • Drop Python 3.6 in 862.
  • Move building backend to hatchling in 870.
  • Avoid mutating function input parameters in 899.
  • Use _compat/typing name in 869.

Scikit-build 0.16.7

This is expected to be the final release series supporting Python 3.6. 0.17 will require Python 3.7+ and start removing deprecated functionality.

  • Added SKBUILD_GNU_SKIP_LOCAL_SYMBOL_EXPORT_OVERRIDE to disable script in 848, thanks to aaron-bray and vyasr.
  • Address a new warning from setuptools in our test suite in 859.
  • Move to using Ruff, update to Black 23, and use Flynt to move more code to f-strings.

Scikit-build 0.16.6

  • Fix a discovery regression in 0.16.5 when a cmake folder or cmake.py was present in 848.
  • Correct an issue in the tests where a generator wasn't expanded into a list in 850.

Scikit-build 0.16.5

  • Use cmake module if installed over system installs in 839.
  • Support setting of -DCMAKE_SYSTEM_PROCESSOR if passed for selecting an arch, useful for cross compiling on conda-forge in 843.
  • Fixed a rare encoded error output string on Windows in 842.
  • Better granularity in extras in 838.
  • Add test markers for nosetuptoolsscm and isolated (helpful for package distributions building scikit-build itself like conda) in 837.

Scikit-build 0.16.4

This releases backports additions for Windows ARM cross-compiling via cibuildwheel from scikit-build-core 0.1.4.

  • Initial experimental support for Windows ARM cross-compile in 824 and 818
  • Replace mailing list with GitHub Discussions board in 823
  • Some CI updates in 811 and 812

Scikit-build 0.16.3

This release fixes logging issues using setuptools 65.6+ affecting our tests. Pytest 7.2+ is now supported. setup.py <command> and setup_requires are deprecated, and tests are marked as such.

  • Fix typo in usage.rst in 795, thanks to chohner.
  • Support pytest 7.2+ in 801.
  • Change warning filtering in 802.
  • Handle logging changes in setuptools 65.6+ in 807.
  • Add deprecated markers to some tests in 807.
  • Allow known warnings to show up in the tests 807.

Scikit-build 0.16.2

This addresses one more small regression with the FindPython change from 0.16.0 that was affecting conda. 793.

Scikit-build 0.16.1

This was a quick patch release that fixed a missing Python requires setting and some missing files 790, and addressed a warning from setuptools in the tests.

  • Ignored distutils warning 785. thanks to bnavigator.

Scikit-build 0.16.0

This release adds support for Python 3.11 and removes support for Python 2.7 and 3.5 (688). Testing and static checking improved, including being fully statically typed internally (though setuptools is not fully typed, so it is of limited use).

All deprecated setuptools/distutils features are also deprecated in scikit-build, like the test command, easy_install, etc. Editable mode is still unsupported. Python 3.6 support is deprecated. 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.

New Features

  • Cython module now supports FindPython mode. 743
  • PyPy is discovered without extra settings in FindPython mode 744

Bug fixes

  • FindPython mode uses a new path specification, should help make it usable. 774
  • Better flushing and output streams for more consistent output ordering. 781

Documentation

  • scikit-build mailing list transitioned to the scikit-build GitHub Discussions board. See 800.
    • Transitioning away from the mailing list and adopting the GitHub Discussions will provide a more integrated platform enabling us to more effectively engage with the community.
    • After sending a last message describing the transition, the mailing list was updated to be read-only and the welcome message was updated to redirect visitor toward the Discussions board.

Scikit-build 0.15.0

This release is the final (again) release for Python < 3.6 and MSVC<2017. Support for FindPython from CMake 3.12+ was added, including FindPython2. Support for Cygwin added.

New Features

  • Add support for FindPython (including 2 and 3). Thanks hameerabbasi for the contribution. See 712.
  • Add support for Cygwin. Thanks ax3l and DWesl and poikilos for the help! See 485.

Bug fixes

  • Fixed issue with distutils usage in Python 3.10. Thanks to SuperSandro2000 for the contribution in 700.

Scikit-build 0.14.1

This release fixes a regression, and reverts a fix in 0.14.0. Some changes made to CI to fix recent removals.

Bug fixes

  • Fix issue with SKBUILD_CONFIGURE_OPTIONS not being read.
  • Reverted manifest install changes.

Scikit-build 0.14.0

This is the final release for Python < 3.6 and MSVC<2017.

New Features

  • Add support for --install-target scikit-build command line option. And cmake_install_target in setup.py. Allows providing an install target different than the default install. Thanks phcerdan for the contribution. See 477.

Bug fixes

  • The manifest install location computation was fixed. Thanks kratsg for the contribution in 682. (Reverted in 0.14.1)
  • Byte-compilation was skipped due to a missing return. Thanks pekkarr in 678.
  • Packages can now be computed from the same shared collections, before this could confuse Scikit-build. Thanks vyasr in 675.
  • Fixed library detection for PyPy 3.9. Thanks rkaminsk in 673.

Internal

  • Scikit-build now uses pyproject.toml and setuptools_scm to build. If you are packaging scikit-build itself, you might need to update your requirements. See 634.
  • The codebase is now formatted with Black. 665

Scikit-build 0.13.1

This release fixes two bugs affecting Windows. Users should use "ninja; platform_system!='Windows", at least for now, since MSVC ships with Ninja, and that Ninja is better at finding the matching MSVC than the Python package is. Including it may slow down the search and force the IDE generator instead, but will at least no longer discover GCC instead.

Bug fixes

  • On Windows, don't let Ninja find something other than what it's supposed to look for. Ensure the Ninja package is used for the search, just like normal runs, if installed. 652.
  • Do not throw an error when printing info and a logger is disconnected. 652

Scikit-build 0.13.0

This is likely one of the final releases to support Python 2.7 and 3.5; future releases will likely target at least Python 3.6+ and MSCV 2017+.

If you are using scikit-build via pyproject.toml, please remember to include setuptools and wheel. A future version of scikit-build may remove the setuptools install-time hard requirement.

New Features

  • CMake module /cmake-modules/Cython now uses Cython default arguments. This no longer adds --no-docstrings in Release and MinSizeRel builds, so Cython docstrings are now retained by default. Additionally, --embed-positions is no longer added to Debug and RelWithDebInfo builds. Users can enable these and other Cython arguments via the option CYTHON_FLAGS. See 518 and 519, thanks to bdice for the improvement.
  • Experimental support for ARM64 on Windows. Thanks to gaborkertesz-linaro in 612.
  • Support for MSVC 2022. Thanks to tttapa for the contribution in 627.
  • Support the modern form of target_link_libraries, via SKBUILD_LINK_LIBRARIES_KEYWORD (somewhat experimental). Thanks to maxbachmann in 611.

Bug fixes

  • Update the Ninja path if using the ninja package. This fixes repeated isolated builds. Further path inspection and updates for isolated builds may be considered in the future. 631, thanks to RUrlus and segevfiner for help in tracking this down.
  • Allow OpenBSD to pass the platform check (untested). See 586.
  • Avoid forcing the min macOS version. Behaviour is now inline with setuptools. Users should set MACOSX_DEPLOYMENT_TARGET when building (automatic with cibuildwheel), otherwise you will get the same value Python was compiled with. Note: This may seem like a regression for PyPy until the next release (7.3.8), since it was compiled with 10.7, which is too old to build with on modern macOS - manually set MACOSX_DEPLOYMENT_TARGET (including setting it if unset in your setup.py) for PyPy until 7.3.8. 607
  • Fix logging issue when using Setuptools 60.2+. 623
  • MacOS cross compiling support fix (for conda-forge) for built-in modules. Thanks to isuruf for the contribution in 622.
  • Better detection of the library path, fixes some issues with PyPy. Thanks to rkaminsk for the contribution in 620 and 630. PyPy is now part of our testing matrix as of 624. Also robtaylor in 632.
  • Fixed issue when cross-compiling on conda-forge (probably upstream bug, but easy to avoid). 646.

Scikit-build 0.12.0

The scikit-build GitHub organization welcomes henryiii and mayeut as core contributors and maintainers. Both are also maintainers of cibuildwheel.

henryiii is a pybind11 and pypa/build maintainer, has been instrumental in adding Apple Silicon support, adding support for Visual Studio 2019, updating the Continuous Integration infrastructure, as well as helping review & integrate contributions, and addressing miscellaneous issues. Additionally, henryiii has worked on an example project to build with pybind11 and scikit-build.

mayeut is a manylinux maintainer and focused his effort on updating the cmake-python-distributions and ninja-python-distributions so that the corresponding wheels are available on all supported platforms including Apple Silicon and all flavors of manylinux.

New Features

  • Support Apple Silicon, including producing Universal2 wheels (530) and respecting standard setuptools cross-compile variables (555). Thanks to YannickJadoul for the contributions.
  • Support MSVC 2019 without having to run it with the MSVC activation variables, just like 2017 and earlier versions. Thanks to YannickJadoul for the contribution in 526.

Bug fixes

  • Support -A and -T internally when setting up MSVC generators. Architecture now always passed through -A to MSVC generators. Thanks YannickJadoul for the contribution. See 557 and 536.
  • Fixed a regression that caused setuptools to complain about unknown setup option (cmake_process_manifest_hook). Thanks Jmennius for the contribution. See 498.
  • If it applies, ensure generator toolset is used to configure the project. Thanks YannickJadoul for the contributions. See 526.
  • Read CYTHON_FLAGS where needed, instead of once, allowing the user to define multiple modules with different flags. Thanks oiffrig for the contributions in 536.
  • Avoid an IndexError if prefix was empty. Thanks dfaure for the contributions in 522.

Documentation

  • Update Conda: Step-by-step release guide available in /make_a_release section.
  • Update links to CMake documentation pages in /generators. Thanks Eothred for the contributions in 508.

Tests

  • Improve and simplify Continuous Integration infrastructure.
    • Support nox for running the tests locally. See 540.
    • Use GitHub Actions for Continuous Integration and remove use of scikit-ci, tox, TravisCI, AppVeyor and CircleCI. See 549, 551 and 552.
    • Add support for testing against Python 3.10. See 565.
    • Style checking handled by pre-commit. See 541.
    • Check for misspellings adding GitHub Actions workflow using codespell. See 541.
  • Fix linting error F522 reported with flake8 >= 3.8.x. Thanks benbovy for the contributions. See 494.
  • Fix regex in tests to support Python 3.10. Thanks mgorny for the contributions in 544.

Scikit-build 0.11.1

Bug fixes

  • Support using scikit-build with conan where distro<1.2.0 is required. Thanks AntoinePrv and Chrismarsh for reporting issues 472 and 488.

Documentation

  • Fix link in Conda: Step-by-step release guide available in /make_a_release section.

Scikit-build 0.11.0

New Features

  • Add a hook to process the cmake install manifest building the wheel. The hook function can be specified as an argument to the setup() function. This can be used e.g. to prevent installing cmake configuration files, headers, or static libraries with the wheel. Thanks SylvainCorlay for the contribution. See 473.
  • Add support for passing CMake configure options <usage_cmake_configure_options> like -DFOO:STRING:bar as global setuptools or pip options.
  • Add support for building project using PyPy or PyPy3. See https://pypy.org See 407.
  • Add support for OS/400 (now known as IBM i). Thanks jwoehr for the contribution. See 444.
  • Display CMake command used to configure the project. Thanks native-api for the contribution. See 443.
  • CMake modules:
    • Improve CMake module /cmake-modules/F2PY adding add_f2py_target() CMake function allowing to generate *-f2pywrappers.f and *module.c files from *.pyf files. Thanks xoviat for the contribution.
    • Update CMake module /cmake-modules/PythonExtensions adding add_python_library() and add_python_extension(). Thanks xoviat for the contribution.

Bug fixes

  • Fix python 2.7 installation ensuring setuptools < 45 is required. See 478.
  • Fix unclosed file resource in skbuild.cmaker.CMaker.check_for_bad_installs. Thanks Nic30 for the suggestion. See 429.
  • Update CMake module /cmake-modules/PythonExtensions:
    • Ensure correct suffix is used for compiled python module on windows. See 383.
    • Fix warning using EXT_SUFFIX config variable instead of deprecated SO variable. See 381.
  • Honor the MACOSX_DEPLOYMENT_TARGET environment variable if it is defined on macOS. Thanks certik for the contribution. See 441.
  • Fix CMake module /cmake-modules/F2PY to ensure the f2py executable specific to the python version being used is found. See 449. Thanks bnavigator for the contribution.
  • Replace platform.linux_distribution() which was removed in Python 3.8 by a call to distro.id(). This adds the distro package as dependency. See 458. Thanks bnavigator for the contribution.

Documentation

  • Add notes section to the For maintainers top-level category that includes a comparison between sysconfig and distutils.sysconfig modules.
  • Remove obsolete comment in cmaker.py. See 439. Thanks isuruf

Tests

  • Update initialize_git_repo_and_commit to prevent signing message on system with commit signing enabled globally.

Scikit-build 0.10.0

New Features

  • Improve message displayed when discovering a working environment for building projects. For example, instead of displaying -- Trying "Ninja" generator, it now displays a message like -- Trying "Ninja (Visual Studio 15 2017 Win64 v140)" generator.

Bug fixes

  • Checking generator candidates can now handle handle paths and binaries with spaces, so that setup.py --cmake-executable "C:/Program Files (x86)/cmake/cmake.exe" works as expected. Contributed by jokva. See 400.
  • Fix sdist command to ensure symlinks in original source tree are maintained. Contributed by anibali. See 401.
  • Ensure use of bdist_egg or bdist_rpm commands trigger build using cmake.
  • Fix default value returned by skbuild.constants.skbuild_plat_name() on macOS. See 417.

Internal API

  • Add skbuild.platform_specifics.windows.find_visual_studio.

Documentation

  • Fix typo in example associated with /cmake-modules/PythonExtensions. Thanks eirrgang for the contribution.
  • Update /make_a_release section to include Conda: Step-by-step release guide.

Tests

  • Introduce check_sdist_content() and fix tests that are checking content of sdist to account for changes introduced in Python 3.8 and backported to python 2.7, 3.6 and 3.7. The changes introduced in python/cpython#9419 adds directory entries to ZIP files created by distutils. Thanks anibali for the contribution. See 404.
  • Fix check_wheel_content() to consider changes in 0.33.1 < wheel.__version__ < 0.33.4 where directory entries are included when building wheel. See _pypa/wheel#294 <pypa/wheel#294>.
  • Fix reporting of AssertionError raised in check_wheel_content() function by relocating the source code into a dedicated module tests.pytest_helpers and by adding a conftest.py configuration file registering it for pytest assertion rewriting. See https://docs.pytest.org/en/latest/writing_plugins.html#assertion-rewriting and 403.
  • Fix test_generator_selection when building with "Visual C++ for Python 2.7" installed for all users. This addresses failure associated with win_c_compilervs2008cxx_compilervs2008python2.7 when running test in scikit-build-feedstock where "Visual C++ for Python 2.7" is installed using (vcpython27 chocolatey package.
  • Continuous Integration
    • Add support for Azure Pipelines for Python 3.7 32-bit and 64-bit
    • AppVeyor: Disable test for Python 3.7 32-bit and 64-bit.
    • CircleCI: Update version of docker images from jessie to stretch. This addresses issue circleci/circleci-images#370.
    • TravisCI: Remove obsolete Python 3.4 testing. It reached end-of-life on March 18 2019.

Scikit-build 0.9.0

New Features

  • Add support for building distutils based extensions associated with ext_modules setup keyword along side skbuild based extensions. This means using build_ext command (and associated --inplace argument) is supported. Thanks Erotemic for the contribution. See 284.

Bug fixes

  • Fix build of wheels if path includes spaces. See issue 375. Thanks padraic-padraic for the contribution.
  • Ensure wheel platform name is correctly set when providing custom CMAKE_OSX_DEPLOYMENT_TARGET and CMAKE_OSX_ARCHITECTURES values are provided. Thanks nonhermitian for the contribution. See 377.
  • Fix testing with recent version of pytest by updating the pytest-runner requirements expression in setup.py. Thanks mackelab for the contribution.

Scikit-build 0.8.1

Bug fixes

  • Fix bdist_wheel command to support wheel >= 0.32.0. Thanks fbudin69500 for reporting issue 360.

Tests

  • Fix test_distribution.py updating use of Path.files() and requiring path.py>=11.5.0.

Scikit-build 0.8.0

New Features

  • Introduced skbuild.constants.CMAKE_DEFAULT_EXECUTABLE to facilitate distribution of scikit-build in package manager like Nixpkgs where all paths to dependencies are hardcoded. Suggested by FRidh.
  • Setup keywords:
    • If not already set, zip_safe option is set to False. Suggested by blowekamp.
  • Add support for --skip-generator-test when a generator is explicitly selected using --generator. This allows to speed up overall build when the build environment is known.

Bug fixes

  • Fix support for building project with CMake source directory outside of the setup.py directory. See 335 fixed by massich.
  • Fix reading of .cmake files having any character not available in CP-1252 (the default code page on windows). See 334 fixed by bgermann.
  • Fix parsing of macOS specific arguments like --plat-name macosx-X.Y-x86_64 and -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=X.Y and ensure that the ones specified as command line arguments override the default values or the one hard-coded in the cmake_args setup keyword. Thanks yonip for the help addressing 342.
  • Support case where relative directory set in package_dir has an ending slash. For example, specifying package_dir={'awesome': 'src/awesome/'}, is now properly handled.
  • Fix support for isolated build environment ensuring the CMake project is reconfigured when pip install -e . is called multiple times. See 352.

Documentation

  • README: Update overall download count.
  • Add logo and update sphinx configuration. Thanks SteveJordanKW for the design work.
  • Update CMake installation <installation_cmake> section. Thanks thewtex.
  • Add support_isolated_build section.
  • Add optimized_incremental_build section.
  • Update usage documentation <usage-setuptools_options> to specify that --universal and --python-tags have no effect. Thanks bgermann for the suggestion. See 353.
  • Simplify documentation merging Extension Build System section with the Advanced Usage section. Thanks thewtex for the suggestion.

Tests

  • Add check_wheel_content utility function.
  • Skip test_setup_requires_keyword_include_cmake if running in conda test environment or if https://pypi.org is not reachable. Suggested by Luthaf.
  • Continuous Integration
    • TravisCI:
      • Remove testing of linux now covered by CircleCI, add testing for Python 3.5, 3.6 and 3.7 on macOS.
      • Ensure system python uses latest version of pip
    • AppVeyor, CircleCI: Add testing for Python 3.7
    • Remove uses of unneeded $<RUN_ENV> command wrapper. scikit-build should already take care of setting up the expected environment.
    • Always install up-to-date scikit-ci and scikit-ci-addons.
    • Simplify release process managing versioning with python-versioneer and update making_a_release documentation.

Scikit-build 0.7.1

Documentation

  • Fix description and classifier list in setup.py.
  • 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 <skbuild.constants.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 /cmake-modules/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 /cmake-modules/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 /cmake-modules/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 <usage-cmake_languages> setup keyword.
    • Add support for include_package_data and exclude_package_data setup keywords as well as parsing of MANIFEST.in. 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 /cmake-modules/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 setup.py. 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 MANIFEST.in 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.

Internal API

  • Add skbuild.cmaker.get_cmake_version.

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.

Tests

  • 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 skbuild.platform_specifics.windows.CMakeVisualStudioCommandLineGenerator used in skbuild.platform_specifics.windows.WindowsPlatform.
    • 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.

Documentation

  • Improve internal API documentation:
    • skbuild.platform_specifics.windows
    • skbuild.command
    • skbuild.command.generate_source_manifest
    • skbuild.utils
  • Split usage documentation into a Basic Usage and Advanced Usage sections.

Cleanups

  • Fix miscellaneous pylint warnings.

Scikit-build 0.6.1

Bug fixes

  • Ensure CMake arguments passed to scikit-build and starting with -DCMAKE_* are passed to the test project allowing to determine which generator to use. For example, this ensures that arguments like -DCMAKE_MAKE_PROGRAM:FILEPATH=/path/to/program are passed. See 256.

Documentation

  • Update /make_a_release section including instructions to update README.rst with up-to-date pypi download statistics based on Google big table.

Scikit-build 0.6.0

New features

  • Improve py_modules support: Python modules generated by CMake are now properly included in binary distribution.
  • Improve developer mode support for py_modules generated by CMake.

Bug fixes

  • Do not implicitly install python modules when the beginning of their name match a package explicitly listed. For example, if a project has a package foo/__init__.py and a module fooConfig.py, and only package foo was listed in setup.py, fooConfig.py is not installed anymore.
  • CMake module /cmake-modules/targetLinkLibrariesWithDynamicLookup: Fix the caching of dynamic lookup variables. See 240 fixed by blowekamp.

Requirements

  • wheel: As suggested by thewtex, unpinning version of the package by requiring >=0.29.0 instead of ==0.29.0 will avoid uninstalling a newer version of wheel package on up-to-date system.

Documentation

  • Add a command line CMake Options <usage_cmake_options> section to Usage <\usage>.
  • Fix table <Visual Studio IDE> listing Visual Studio IDE version and corresponding with CPython version in /generators.
  • Improve /make_a_release section.

Tests

  • Extend test_hello, test_setup, and test_sdist_hide_listing to (1) check if python modules are packaged into source and wheel distributions and (2) check if python modules are copied into the source tree when developer mode is enabled.

Internal API

  • Fix skbuild.setuptools_wrap.strip_package to handle empty package.
  • Teach skbuild.command.build_py.build_py.find_modules function to look for py_module file in CMAKE_INSTALL_DIR.
  • Teach skbuild.utils.PythonModuleFinder to search for python module in the CMake install tree.
  • Update skbuild.setuptools_wrap._consolidate to copy file into the CMake tree only if it exists.
  • Update skbuild.setuptools_wrap._copy_file to create directory only if there is one associated with the destination file.

Scikit-build 0.5.1

Bug fixes

  • Ensure file copied in "develop" mode have "mode bits" maintained.

Scikit-build 0.5.0

New features

  • Improve user experience by running CMake only if needed. See 207
  • Add support for cmake_with_sdist <usage-cmake_with_sdist> setup keyword argument.
  • Add support for --force-cmake and --skip-cmake global setup command-line options <usage-setuptools_options>.
  • scikit-build conda-forge recipe added by isuruf. See conda-forge/staged-recipes#1989
  • Add support for development mode. (187).
  • Improved /generators selection:
  • If available, uses Ninja build system generator on all platforms. An advantages is that ninja automatically parallelizes the build based on the number of CPUs.
  • Automatically set the expected Visual Studio environment when Ninja or NMake Makefiles generators are used.
  • Support Microsoft Visual C++ Compiler for Python 2.7. See 216.
  • Prompt for user to install the required compiler if it is not available. See 27.
  • Improve /cmake-modules/targetLinkLibrariesWithDynamicLookup CMake Module extending the API of check_dynamic_lookup function:
  • Update long signature: <LinkFlagsVar> is now optional
  • Add support for short signature: check_dynamic_lookup(<ResultVar>). See SimpleITK/SimpleITK#80.

Bug fixes

  • Fix scikit-build source distribution and add test. See 214 Thanks isuruf for reporting the issue.
  • Support building extension within a virtualenv on windows. See 119.

Documentation

  • add /generators section
  • add /history section
  • allow github issues and users to easily be referenced using :issue:`XY and :user:`username` markups. This functionality is enabled by the `sphinx-issue <https://github.com/sloria/sphinx-issues>_ sphinx extension
  • make_a_release: Ensure uploaded distributions are signed
  • usage:
  • Add empty cross-compilation / wheels building sections
  • Add Why should I use scikit-build ? <why>
  • Add Setup options <usage-setup_options> section
  • hacking:
  • Add internal_api section generated using sphinx-apidoc.
  • Add internal_cmake_modules to document /cmake-modules/targetLinkLibrariesWithDynamicLookup CMake module.

Requirements

  • setuptools: As suggested by mivade in 212, remove the hard requirement for ==28.8.0 and require version >= 28.0.0. This allows to "play" nicely with conda where it is problematic to update the version of setuptools. See pypa/pip#2751 and ContinuumIO/anaconda-issues#542.

Tests

  • Improve "push_dir" tests to not rely on build directory name. Thanks isuruf for reporting the issue.
  • travis/install_pyenv: Improve MacOSX build time updating scikit-ci-addons
  • Add get_cmakecache_variables utility function.

Internal API

  • skbuild.cmaker.CMaker.configure: Change parameter name from generator_id to generator_name. This is consistent with how generator are identified in CMake documentation. This change breaks backward compatibility.
  • skbuild.platform_specifics.abstract.CMakePlatform.get_best_generator: Change parameter name from generator to generator_name. Note that this function is also directly importable from skbuild.platform_specifics. This change breaks backward compatibility.
  • skbuild.platform_specifics.abstract.CMakeGenerator: This class allows to handle generators as sophisticated object instead of simple string. This is done anticipating the support for CMAKE_GENERATOR_PLATFORM and CMAKE_GENERATOR_TOOLSET. Note also that the class is directly importable from skbuild.platform_specifics and is now returned by skbuild.platform_specifics.get_best_generator. This change breaks backward compatibility.

Cleanups

  • appveyor.yml:
  • Remove unused "on_failure: event logging" and "notifications: GitHubPullRequest"
  • Remove unused SKIP env variable

Scikit-build 0.4.0

New features

  • Add support for --hide-listing option
  • allow to build distributions without displaying files being included
  • useful when building large project on Continuous Integration service limiting the amount of log produced by the build
  • CMake module: skbuild/resources/cmake/FindPythonExtensions.cmake
  • Function python_extension_module: add support for module suffix

Bug fixes

  • Do not package python modules under "purelib" dir in non-pure wheel
  • CMake module: skbuild/resources/cmake/targetLinkLibrariesWithDynamicLookup.cmake:
  • Fix the logic checking for cross-compilation (the regression was introduced by 51 and 47
  • It configure the text project setting CMAKE_ENABLE_EXPORTS to ON. Doing so ensure the executable compiled in the test exports symbols (if supported by the underlying platform)

Docs

Tests

  • tests/samples: Simplify project removing unneeded install rules and file copy
  • Simplify continuous integration
  • Makefile:
  • Fix coverage target
  • Add docs-only target allowing to regenerate the Sphinx documentation without opening a new page in the browser.

Scikit-build 0.3.0

New features

  • Improve support for "pure", "CMake" and "hybrid" python package
  • a "pure" package is a python package that have all files living in the project source tree
  • an "hybrid" package is a python package that have some files living in the project source tree and some files installed by CMake
  • a "CMake" package is a python package that is fully generated and installed by CMake without any of his files existing in the source tree
  • Add support for source distribution. See 84
  • Add support for setup arguments specific to scikit-build:
  • cmake_args: additional option passed to CMake
  • cmake_install_dir: relative directory where the CMake project being built should be installed
  • cmake_source_dir: location of the CMake project
  • Add CMake module FindNumPy.cmake
  • Automatically set package_dir to reasonable defaults
  • Support building project without CMakeLists.txt

Bug fixes

  • Fix dispatch of arguments to setuptools, CMake and build tool. See 118
  • Force binary wheel generation. See 106
  • Fix support for py_modules (6716723)
  • Do not raise error if calling "clean" command twice

Documentation

Tests

  • Ensure each test run in a dedicated temporary directory
  • Add tests to raise coverage from 70% to 91%
  • Refactor CI testing infrastructure introducing CI drivers written in python for AppVeyor, CircleCI and TravisCI
  • Switch from nose to py.test
  • Relocate sample projects into a dedicated home: https://github.com/scikit-build/scikit-build-sample-projects

Cleanups

  • Refactor commands introducing set_build_base_mixin and new_style
  • Remove unused code