Skip to content

Version 1.1.0

Choose a tag to compare

@henryiii henryiii released this 25 Sep 20:23
· 11 commits to main since this release
0c3a237

Packages can now declare their own config-settings in a tool.scikit-build.config-setting table. This gives packages the opportunity to add a documented interface in place of raw CMake defines. The new scikit-build settings list command shows all the config-settings that a project accepts. New settings include cmake.fresh, if.not overrides, and sdist.resolve-symlinks = "error". import-names and import-namespaces (PEP 794) are filled from Python if set as dynamic. project.version is now kept exactly as written in the metadata (1.1+). Editable loaders expose their search paths, redirect mode gives a deterministic __path__ order, and you can set up a persistent install tree even without rebuild-on-import. Other bugs and performance issues are addressed.

Features:

  • New settings:
  • CLI:
    • scikit-build settings list lists supported config-settings by @henryiii in #1522
    • scikit-build build requires accepts -C/--config-setting to pass config-settings to the backend hook, and --type {static,dynamic,both} to select the static build-system.requires, the dynamic hook output, or both by @henryiii in #1584
  • SDist:
    • sdist.resolve-symlinks = "error" fails the SDist build if an included path is a symlink, and lists each link with its target. This includes sdist.force-include sources and the files under them. Directory links are not followed. Requires minimum-version 1.1 or unset (#1581) by @henryiii in #1583
  • Metadata:
    • import-names and import-namespaces (PEP 794) listed in project.dynamic are computed from the Python packages (#1536) by @henryiii in #1578
    • project.version is kept as written in the Version metadata field and in SKBUILD_PROJECT_VERSION_FULL, so a calendar version such as 2024.01.05 keeps its leading zeros. Filenames stay normalized. Requires minimum-version 1.1 or unset by @henryiii in #1572
  • Editable:
    • Loaders expose their search paths as a paths attribute by @henryiii in #1567
    • An explicit editable.rebuild = false is honored with editable.rebuild-dir, so a persistent install tree can be used without rebuild-on-import (#1576) by @henryiii in #1577
  • File API:
    • Complete the file-api models and keep reference data by @henryiii in #1521
  • Drop Python 3.8 by @henryiii in #1281

Fixes:

  • Builder:
    • Compute the wheel tag from the build environment (tool.scikit-build.env) by @henryiii in #1575
    • Honor a CMAKE_GENERATOR define when computing build requirements by @henryiii in #1557
    • Read Py_GIL_DISABLED="0" as not free-threaded by @henryiii in #1574
    • Set Python_FIND_ABI for free-threaded builds on CMake 3.30+ by @henryiii in #1532
    • Don't pass the Python_LIBRARY hint in SABI mode on Windows by @henryiii in #1533
    • Warn once for unsupported CMAKE_ARGS defines by @henryiii in #1573
    • Drop two-token -D CMAKE_BUILD_TYPE from CMAKE_ARGS by @r3wretrhy in #1543
    • Keep building when the CMake file-api reply is broken by @henryiii in #1562
  • CMake discovery:
  • Settings:
  • Editable:
    • Redirect installs give a package a deterministic __path__ order: the CMake install tree first, then the source tree, so importlib.resources no longer depends on PYTHONHASHSEED (#1565) by @henryiii in #1566
  • SDist:
    • Ignore rules no longer cross repository boundaries: a superproject's .gitignore does not apply inside a git submodule, matching git (#1582) by @henryiii in #1585
    • Scope the nested .gitignore scan to the walked subtree by @zklaus in #1542
  • File API:
    • Match CMake's install-rule paths and namelink spelling by @henryiii in #1520
  • Setuptools:
  • Init:
  • Variants:
  • Limit fastjsonschema on Python 3.9 by @henryiii in #1524

Performance:

Documentation:

CI and testing:

  • Test the matrix CMake version, fix pass job needs, coverage and test fixes by @henryiii in #1553
  • Install dynamic build requires in the downstream session by @henryiii in #1580
  • Stop rebuilding the wheelhouse wheel every session by @henryiii in #1549
  • Allow the setuptools-scm file_finders deprecation by @henryiii in #1568
  • Accept the new CPython 3.15rc1 abi3 suffix by @henryiii in #1529
  • Pin the wrapper's CMake install staging layout by @henryiii in #1512

Internal:

Full Changelog: v1.0.3...v1.1.0