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
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.
A small fix release with some new platforms and better testing, including CPython 3.12.0b1.
- Support added for SunOS by
mtelka
in983
. - Support added for AIX (with recent CMake) by
bhuntsman
in988
.
- Tests now pass on CPython 3.12.0b1 in
879
. - Tests no longer use
pytest-virtualenv
in879
. isolated
marker now includestest_distribution
tests in879
.- Tests avoid incorrect
get_map
match bykeszybz
in990
. - Fedora testing fix by
LecrisUT
in986
and938
.
- Docs improvements in
979
.
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.
- Generator args were missing for actual compile in
975
. - Add support for netbsd & pyodide (future) in
977
.
A followup fix to the issue 0.17.3 tried to fix. We now have a method to manually test downstream packages, too.
- Make sure include dir is found even if the lib is not present in
974
.
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.
- Keep
get_python_library
return type string if python lib non-existing for now in959
. - Avoid 'not found' warning if libs are not found by FindPythonExtensions in
960
. - FindNumPy should not call FindPythonLibs in
958
.
Another small release with fixes for non-MSVC Windows platforms.
- RPM spec fix by
LecrisUT
in937
. - Validate value before returning library path by
dlech
in942
. - Only add
Python_LIBRARY
on Windows MSVC in943
and944
. - Slightly nicer traceback for failed compiler in
947
.
- Hide a few warnings that are expected in
948
.
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.
- 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) in934
. - Remove unused variable warnings by in
930
.
- Add Fedora packaging with packit automation by
LecrisUT
in928
. - Fix codecov ci by
LecrisUT
in929
. - Update some coverage settings in
933
.
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+.
- Match setuptools behavior for
include_package_data
default. byvyasr
in873
. - Misc. fixes for F2PY and PythonExtensions modules by
benbovy
in495
. - Provide more useful error if user provides
CMAKE_INSTALL_PREFIX
byvyasr
in872
. - Stop assuming that
.pyx
files are in the same directory asCMakeLists.txt
byvyasr
in871
. - 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
bydlech
. - Use f2py's
get_include
if present in877
. - Fix support for cross-compilation exception using
targetLinkLibrariesWithDynamicLookup
byerykoff
in901
. - Treat empty
MACOSX_DEPLOYMENT_TARGET
as if it was unset in918
.
- Add hello fortran sample package + tests by
benbovy
in493
. - 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
.
- 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
.
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 in848
, thanks toaaron-bray
andvyasr
. - 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.
- Fix a discovery regression in 0.16.5 when a
cmake
folder orcmake.py
was present in848
. - Correct an issue in the tests where a generator wasn't expanded into a list in
850
.
- 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 in843
. - 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
.
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
and818
- Replace mailing list with GitHub Discussions board in
823
- Some CI updates in
811
and812
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 tochohner
. - 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
.
This addresses one more small regression with the FindPython change from 0.16.0 that was affecting conda. 793
.
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 tobnavigator
.
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.
- Cython module now supports FindPython mode.
743
- PyPy is discovered without extra settings in FindPython mode
744
- FindPython mode uses a new path specification, should help make it usable.
774
- Better flushing and output streams for more consistent output ordering.
781
- 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.
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.
- Add support for FindPython (including 2 and 3). Thanks
hameerabbasi
for the contribution. See712
. - Add support for Cygwin. Thanks
ax3l
andDWesl
andpoikilos
for the help! See485
.
- Fixed issue with distutils usage in Python 3.10. Thanks to
SuperSandro2000
for the contribution in700
.
This release fixes a regression, and reverts a fix in 0.14.0. Some changes made to CI to fix recent removals.
- Fix issue with
SKBUILD_CONFIGURE_OPTIONS
not being read. - Reverted manifest install changes.
This is the final release for Python < 3.6 and MSVC<2017.
- Add support for
--install-target
scikit-build command line option. Andcmake_install_target
insetup.py
. Allows providing an install target different than the defaultinstall
. Thanksphcerdan
for the contribution. See477
.
- The manifest install location computation was fixed. Thanks
kratsg
for the contribution in682
. (Reverted in 0.14.1) - Byte-compilation was skipped due to a missing return. Thanks
pekkarr
in678
. - Packages can now be computed from the same shared collections, before this could confuse Scikit-build. Thanks
vyasr
in675
. - Fixed library detection for PyPy 3.9. Thanks
rkaminsk
in673
.
- Scikit-build now uses
pyproject.toml
andsetuptools_scm
to build. If you are packaging scikit-build itself, you might need to update your requirements. See634
. - The codebase is now formatted with Black.
665
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.
- 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
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.
- 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 optionCYTHON_FLAGS
. See518
and519
, thanks tobdice
for the improvement. - Experimental support for ARM64 on Windows. Thanks to
gaborkertesz-linaro
in612
. - Support for MSVC 2022. Thanks to
tttapa
for the contribution in627
. - Support the modern form of
target_link_libraries
, viaSKBUILD_LINK_LIBRARIES_KEYWORD
(somewhat experimental). Thanks tomaxbachmann
in611
.
- 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 toRUrlus
andsegevfiner
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 setMACOSX_DEPLOYMENT_TARGET
(including setting it if unset in yoursetup.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 in622
. - Better detection of the library path, fixes some issues with PyPy. Thanks to
rkaminsk
for the contribution in620
and630
. PyPy is now part of our testing matrix as of624
. Alsorobtaylor
in632
. - Fixed issue when cross-compiling on conda-forge (probably upstream bug, but easy to avoid).
646
.
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.
- Support Apple Silicon, including producing Universal2 wheels (
530
) and respecting standard setuptools cross-compile variables (555
). Thanks toYannickJadoul
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 in526
.
- Support
-A
and-T
internally when setting up MSVC generators. Architecture now always passed through-A
to MSVC generators. ThanksYannickJadoul
for the contribution. See557
and536
. - Fixed a regression that caused setuptools to complain about unknown setup option (cmake_process_manifest_hook). Thanks
Jmennius
for the contribution. See498
. - If it applies, ensure generator toolset is used to configure the project. Thanks
YannickJadoul
for the contributions. See526
. - Read
CYTHON_FLAGS
where needed, instead of once, allowing the user to define multiple modules with different flags. Thanksoiffrig
for the contributions in536
. - Avoid an IndexError if prefix was empty. Thanks
dfaure
for the contributions in522
.
- Update
Conda: Step-by-step
release guide available in/make_a_release
section. - Update links to CMake documentation pages in
/generators
. ThanksEothred
for the contributions in508
.
- Improve and simplify Continuous Integration infrastructure.
- Support
nox
for running the tests locally. See540
. - Use GitHub Actions for Continuous Integration and remove use of scikit-ci, tox, TravisCI, AppVeyor and CircleCI. See
549
,551
and552
. - 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
.
- Support
- Fix linting error F522 reported with flake8 >= 3.8.x. Thanks
benbovy
for the contributions. See494
. - Fix regex in tests to support Python 3.10. Thanks
mgorny
for the contributions in544
.
- Support using scikit-build with conan where
distro<1.2.0
is required. ThanksAntoinePrv
andChrismarsh
for reporting issues472
and488
.
- Fix link in
Conda: Step-by-step
release guide available in/make_a_release
section.
- 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. ThanksSylvainCorlay
for the contribution. See473
. - Add support for passing
CMake configure options <usage_cmake_configure_options>
like-DFOO:STRING:bar
as globalsetuptools
orpip
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. See444
. - Display CMake command used to configure the project. Thanks
native-api
for the contribution. See443
. - CMake modules:
- Improve CMake module
/cmake-modules/F2PY
addingadd_f2py_target()
CMake function allowing to generate*-f2pywrappers.f
and *module.c files from*.pyf
files. Thanksxoviat
for the contribution. - Update CMake module
/cmake-modules/PythonExtensions
addingadd_python_library()
andadd_python_extension()
. Thanksxoviat
for the contribution.
- Improve CMake module
- Fix python 2.7 installation ensuring setuptools < 45 is required. See
478
. - Fix unclosed file resource in
skbuild.cmaker.CMaker.check_for_bad_installs
. ThanksNic30
for the suggestion. See429
. - 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 deprecatedSO
variable. See381
.
- Ensure correct suffix is used for compiled python module on windows. See
- Honor the
MACOSX_DEPLOYMENT_TARGET
environment variable if it is defined on macOS. Thankscertik
for the contribution. See441
. - Fix CMake module
/cmake-modules/F2PY
to ensure thef2py
executable specific to the python version being used is found. See449
. Thanksbnavigator
for the contribution. - Replace
platform.linux_distribution()
which was removed in Python 3.8 by a call todistro.id()
. This adds thedistro
package as dependency. See458
. Thanksbnavigator
for the contribution.
- Add notes section to the
For maintainers
top-level category that includes a comparison betweensysconfig
anddistutils.sysconfig
modules. - Remove obsolete comment in
cmaker.py
. See439
. Thanksisuruf
- Update
initialize_git_repo_and_commit
to prevent signing message on system with commit signing enabled globally.
- 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
.
- 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 byjokva
. See400
. - Fix sdist command to ensure symlinks in original source tree are maintained. Contributed by
anibali
. See401
. - Ensure use of
bdist_egg
orbdist_rpm
commands trigger build using cmake. - Fix default value returned by
skbuild.constants.skbuild_plat_name()
on macOS. See417
.
- Add
skbuild.platform_specifics.windows.find_visual_studio
.
- Fix typo in example associated with
/cmake-modules/PythonExtensions
. Thankseirrgang
for the contribution. - Update
/make_a_release
section to includeConda: Step-by-step
release guide.
- 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. Thanksanibali
for the contribution. See404
. - Fix
check_wheel_content()
to consider changes in0.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 incheck_wheel_content()
function by relocating the source code into a dedicated moduletests.pytest_helpers
and by adding aconftest.py
configuration file registering it for pytest assertion rewriting. See https://docs.pytest.org/en/latest/writing_plugins.html#assertion-rewriting and403
. - Fix
test_generator_selection
when building with "Visual C++ for Python 2.7" installed for all users. This addresses failure associated withwin_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.
- Add support for building distutils based extensions associated with
ext_modules
setup keyword along side skbuild based extensions. This means usingbuild_ext
command (and associated--inplace
argument) is supported. ThanksErotemic
for the contribution. See284
.
- Fix build of wheels if path includes spaces. See issue
375
. Thankspadraic-padraic
for the contribution. - Ensure wheel platform name is correctly set when providing custom
CMAKE_OSX_DEPLOYMENT_TARGET
andCMAKE_OSX_ARCHITECTURES
values are provided. Thanksnonhermitian
for the contribution. See377
. - Fix testing with recent version of pytest by updating the pytest-runner requirements expression in
setup.py
. Thanksmackelab
for the contribution.
- Fix
bdist_wheel
command to supportwheel >= 0.32.0
. Thanksfbudin69500
for reporting issue360
.
- Fix
test_distribution.py
updating use ofPath.files()
and requiringpath.py>=11.5.0
.
- 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 byFRidh
. - Setup keywords:
- If not already set,
zip_safe
option is set toFalse
. Suggested byblowekamp
.
- If not already set,
- 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.
- Fix support for building project with CMake source directory outside of the
setup.py
directory. See335
fixed bymassich
. - Fix reading of
.cmake
files having any character not available in CP-1252 (the default code page on windows). See334
fixed bybgermann
. - 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 thecmake_args
setup keyword. Thanksyonip
for the help addressing342
. - Support case where relative directory set in
package_dir
has an ending slash. For example, specifyingpackage_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. See352
.
- README: Update overall download count.
- Add logo and update sphinx configuration. Thanks
SteveJordanKW
for the design work. - Update
CMake installation <installation_cmake>
section. Thanksthewtex
. - 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. Thanksbgermann
for the suggestion. See353
. - Simplify documentation merging
Extension Build System
section with theAdvanced Usage
section. Thanksthewtex
for the suggestion.
- 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 byLuthaf
. - 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 updatemaking_a_release
documentation.
- TravisCI:
- 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.txt
file, (2) introducing aCMake 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. Thanksxoviat
for the contribution. See301
. - CMake modules:
- CMake module
/cmake-modules/PythonExtensions
: Set symbol visibility to export only the module init function. This applies to GNU and MSVC compilers. Thanksxoviat
. See299
. - Add CMake module
/cmake-modules/F2PY
useful to find thef2py
executable for building Python extensions with Fortran. Thanks toxoviat
for moving forward with the integration. Concept for the module comes from the work ofscopatz
done in PyNE project. See273
. - Update CMake module
/cmake-modules/NumPy
setting variablesNumPy_CONV_TEMPLATE_EXECUTABLE
andNumPy_FROM_TEMPLATE_EXECUTABLE
. Thanksxoviat
for the contribution. See278
.
- CMake module
- Setup keywords:
- Add support for
cmake_languages <usage-cmake_languages>
setup keyword. - Add support for
include_package_data
andexclude_package_data
setup keywords as well as parsing ofMANIFEST.in
. See315
. Thanksreiver-dev
for reporting the issue. - Add support for
cmake_minimum_required_version
setup keyword. See312
. Suggested byhenryiii
. - Install cmake if found in
setup_requires
list. See313
. Suggested byhenryiii
.
- Add support for
- Add support for
--cmake-executable
scikit-build command line option. Thankshenryborchers
for the suggestion. See317
. - Use
_skbuild/platform-X.Y
instead of_skbuild
to build package. This allows to have a different build directory for each python version. Thanksisuruf
for the suggestion andxoviat
for contributing the feature. See283
. - Run cmake and
develop
command when commandtest
is executed.
- Fix support of
--hide-listing
when building wheel. - CMake module
/cmake-modules/Cython
: Fix escaping of spaces associated withCYTHON_FLAGS
when provided as command line arguments to the cython executable through CMake cache entries. See265
fixed byneok-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
. Thanksbenjaminjack
for reporting the issue. See274
. - 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 tojonwoodring
for reporting the issue on the mailing list. - Set
skbuild <version>
as wheel generator. See PEP-0427 and191
. - Ensure
MANIFEST.in
is considered when generating source distribution. Thanksseanlis
for reporting the problem and providing an initial patch, and thankshenryiii
for implementing the corresponding test. See260
. - 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.
- Add
skbuild.cmaker.get_cmake_version
.
- 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.
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.
- Improve internal API documentation:
skbuild.platform_specifics.windows
skbuild.command
skbuild.command.generate_source_manifest
skbuild.utils
- Split usage documentation into a
Basic Usage
andAdvanced Usage
sections.
- 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/program
are passed. See256
.
- Update
/make_a_release
section including instructions to updateREADME.rst
with up-to-date pypi download statistics based on Google big table.
- 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.
- 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 modulefooConfig.py
, and only packagefoo
was listed insetup.py
,fooConfig.py
is not installed anymore. - CMake module
/cmake-modules/targetLinkLibrariesWithDynamicLookup
: Fix the caching of dynamic lookup variables. See240
fixed byblowekamp
.
- 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.
- Add a command line
CMake Options <usage_cmake_options>
section toUsage <\usage>
. - Fix
table <Visual Studio IDE>
listing Visual Studio IDE version and corresponding with CPython version in/generators
. - Improve
/make_a_release
section.
- Extend
test_hello
,test_setup
, andtest_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.
- Fix
skbuild.setuptools_wrap.strip_package
to handle empty package. - Teach
skbuild.command.build_py.build_py.find_modules
function to look forpy_module
file inCMAKE_INSTALL_DIR
. - Teach
skbuild.utils.PythonModuleFinder
to search forpython 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.
- Ensure file copied in "develop" mode have "mode bits" maintained.
- 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
globalsetup 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 whenNinja
orNMake 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 ofcheck_dynamic_lookup
function:
- Update long signature:
<LinkFlagsVar>
is now optional- Add support for short signature:
check_dynamic_lookup(<ResultVar>)
. See SimpleITK/SimpleITK#80.
- Fix scikit-build source distribution and add test. See
214
Thanksisuruf
for reporting the issue. - Support building extension within a virtualenv on windows. See
119
.
- 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 usingsphinx-apidoc
.- Add
internal_cmake_modules
to document/cmake-modules/targetLinkLibrariesWithDynamicLookup
CMake module.
- setuptools: As suggested by
mivade
in212
, 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.
- 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.
skbuild.cmaker.CMaker.configure
: Change parameter name fromgenerator_id
togenerator_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 fromgenerator
togenerator_name
. Note that this function is also directly importable fromskbuild.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 fromskbuild.platform_specifics
and is now returned byskbuild.platform_specifics.get_best_generator
. This change breaks backward compatibility.
- appveyor.yml:
- Remove unused "on_failure: event logging" and "notifications: GitHubPullRequest"
- Remove unused SKIP env variable
- 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
- 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
and47
- 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)
- Add short note explaining how to include scikit-build CMake module
- Move "Controlling CMake using scikit-build" into a "hacking" section
- Add initial version of "extension_build_system" documentation
- tests/samples: Simplify project removing unneeded install rules and file copy
- Simplify continuous integration
- use scikit-ci and scikit-ci-addons
- speed up build setting up caching
- Makefile:
- 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 CMakecmake_install_dir
: relative directory where the CMake project being built should be installedcmake_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
- 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
- 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
nose
topy.test
- Relocate sample projects into a dedicated home: https://github.com/scikit-build/scikit-build-sample-projects
- Refactor commands introducing
set_build_base_mixin
andnew_style
- Remove unused code