This is the list of changes to scikit-build between each release. For full details, see the commit logs at http://github.com/scikit-build/scikit-build
- 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.
- Fix description and classifier list in setup.py.
- Fix link in README.
- 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.txtfile, (2) introducing a
CMake spec filestoring 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
f2pyexecutable 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_FROM_TEMPLATE_EXECUTABLE. Thanks @xoviat for the contribution. See #278.
- Setup keywords:
- Add support for cmake_languages setup keyword.
- Add support for
exclude_package_datasetup keywords as well as parsing of
MANIFEST.in. See #315. Thanks @reiver-dev for reporting the issue.
- Add support for
cmake_minimum_required_versionsetup keyword. See #312. Suggested by @henryiii.
- Install cmake if found in
setup_requireslist. See #313. Suggested by @henryiii.
- Add support for
--cmake-executablescikit-build command line option. Thanks @henryborchers for the suggestion. See #317.
_skbuildto 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
developcommand when command
- Fix support of
--hide-listingwhen building wheel.
- CMake module Cython: Fix escaping of spaces associated with
CYTHON_FLAGSwhen 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
package_datakeyword are packaged and installed.
- Support specifying a default directory for all packages not already associated with one using syntax like
setup.py. Thanks @benjaminjack for reporting the issue. See #274.
--skip-cmakecommand 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.
skbuild <version>as wheel generator. See PEP-0427 and #191.
MANIFEST.inis 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
- 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
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
project_setup_py_testto accept the optional parameter
disable_languages_testallowing 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:
- 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
- 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.
Ensure that the project directory is prepended to
sys.pathwhen executing test building sample project with the help of
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.
- 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/programare passed. See #256.
py_modulessupport: Python modules generated by CMake are now properly included in binary distribution.
- Improve developer mode support for
py_modulesgenerated by CMake.
- 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__.pyand a module
fooConfig.py, and only package
foowas listed in
fooConfig.pyis not installed anymore.
- CMake module targetLinkLibrariesWithDynamicLookup: Fix the caching of dynamic lookup variables. See #240 fixed by @blowekamp.
- wheel: As suggested by @thewtex, unpinning version of the package
==0.29.0will avoid uninstalling a newer version of wheel package on up-to-date system.
test_sdist_hide_listingto (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.
skbuild.setuptools_wrap.strip_package()to handle empty package.
skbuild.command.build_py.build_py.find_modules()function to look for py_module file in
skbuild.utils.PythonModuleFinderto search for python module in the CMake install tree.
skbuild.setuptools_wrap._consolidate()to copy file into the CMake tree only if it exists.
skbuild.setuptools_wrap._copy_file()to create directory only if there is one associated with the destination file.
- Improve user experience by running CMake only if needed. See #207
- Add support for cmake_with_sdist setup keyword argument.
- Add support for
--skip-cmakeglobal setup command-line options.
- scikit-build conda-forge recipe added by @isuruf. See conda-forge/staged-recipes#1989
- Add support for development mode. (#187).
- Improved C Runtime, Compiler and Build System Generator 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
NMake Makefilesgenerators 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 targetLinkLibrariesWithDynamicLookup CMake Module extending
the API of
- Update long signature:
<LinkFlagsVar>is now optional
- Add support for short signature:
check_dynamic_lookup(<ResultVar>). See SimpleITK/SimpleITK#80.
- add C Runtime, Compiler and Build System Generator section
- add Release Notes section
- allow github issues and users to easily be referenced using
:user:`username`markups. This functionality is enabled by the sphinx-issue sphinx extension
- make_a_release: Ensure uploaded distributions are signed
skbuild.cmaker.CMaker.configure(): Change parameter name from
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_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_specificsand is now returned by
skbuild.platform_specifics.get_best_generator(). This change breaks backward compatibility.
- Remove unused “on_failure: event logging” and “notifications: GitHubPullRequest”
- Remove unused SKIP env variable
- Add support for
- 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:
python_extension_module: add support for module suffix
- Do not package python modules under “purelib” dir in non-pure wheel
- CMake module:
- tests/samples: Simplify project removing unneeded install rules and file copy
- Simplify continuous integration
- Fix coverage target
- Add docs-only target allowing to regenerate the Sphinx documentation without opening a new page in the browser.
- 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
- Automatically set
package_dirto reasonable defaults
- Support building project without CMakeLists.txt
- Improvement of documentation published on http://scikit-build.readthedocs.io/en/latest/
- Add docstrings for most of the modules, classes and functions
- 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
- Relocate sample projects into a dedicated home: https://github.com/scikit-build/scikit-build-sample-projects
- Refactor commands introducing
- Remove unused code