0.7.0
版本发布时间: 2018-10-03 22:22:40
scikit-build/scikit-build最新发布版本:0.18.1(2024-08-29 02:17:07)
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 aCMake 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
andNumPy_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
andexclude_package_data
setup keywords as well as parsing ofMANIFEST.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 commandtest
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 usingpackage_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'}
insetup.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 withls-files
command.
Internal API
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
andtest_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 functionsexecute_setup_py
andproject_setup_py_test
to accept the optional parameterdisable_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) anddistutils._msvccompiler._get_vc_env
(for Python 3.5 and above). These functions were called multiple times to create the list ofskbuild.platform_specifics.windows.CMakeVisualStudioCommandLineGenerator
used inskbuild.platform_specifics.windows.WindowsPlatform
.
- CircleCI: from ~7 to ~5 minutes.
- TravisCI: from ~21 to ~10 minutes.
- AppVeyor:
-
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 ofexecute_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:
- Split usage documentation into a Basic Usage and Advanced Usage sections.
Cleanups
- Fix miscellaneous pylint warnings.