mirror of
https://github.com/pybind/pybind11.git
synced 2026-04-20 06:49:25 +00:00
chore: use scikit-build-core for the build (#5598)
* chore: use scikit-build-core for the build Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * fix: support tests job Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * refactor: use tomlkit instead of manual parsing Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * tests: add tests for output Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * chore: remove more unused files Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * fix: restore global pin Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * fix: test and fix pinning Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> --------- Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
This commit is contained in:
33
tools/make_global.py
Executable file
33
tools/make_global.py
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env -S uv run -q
|
||||
|
||||
# /// script
|
||||
# dependencies = ["tomlkit"]
|
||||
# ///
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import tomlkit
|
||||
|
||||
DIR = Path(__file__).parent.resolve()
|
||||
PYPROJECT = DIR.parent / "pyproject.toml"
|
||||
|
||||
|
||||
def get_global() -> str:
|
||||
pyproject = tomlkit.parse(PYPROJECT.read_text())
|
||||
del pyproject["tool"]["scikit-build"]["generate"]
|
||||
del pyproject["project"]["entry-points"]
|
||||
del pyproject["project"]["scripts"]
|
||||
del pyproject["tool"]["scikit-build"]["metadata"]["optional-dependencies"]
|
||||
pyproject["project"]["name"] = "pybind11-global"
|
||||
pyproject["tool"]["scikit-build"]["experimental"] = True
|
||||
pyproject["tool"]["scikit-build"]["wheel"]["install-dir"] = "/data"
|
||||
pyproject["tool"]["scikit-build"]["wheel"]["packages"] = []
|
||||
|
||||
result = tomlkit.dumps(pyproject)
|
||||
assert isinstance(result, str)
|
||||
return result
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(get_global())
|
||||
@@ -1,3 +0,0 @@
|
||||
[build-system]
|
||||
requires = ["setuptools>=42", "wheel"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
@@ -1,66 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Setup script for pybind11-global (in the sdist or in tools/setup_global.py in the repository)
|
||||
# This package is targeted for easy use from CMake.
|
||||
|
||||
import glob
|
||||
import os
|
||||
import re
|
||||
|
||||
# Setuptools has to be before distutils
|
||||
from setuptools import setup
|
||||
|
||||
from distutils.command.install_headers import install_headers
|
||||
|
||||
class InstallHeadersNested(install_headers):
|
||||
def run(self):
|
||||
headers = self.distribution.headers or []
|
||||
for header in headers:
|
||||
# Remove pybind11/include/
|
||||
short_header = header.split("/", 2)[-1]
|
||||
|
||||
dst = os.path.join(self.install_dir, os.path.dirname(short_header))
|
||||
self.mkpath(dst)
|
||||
(out, _) = self.copy_file(header, dst)
|
||||
self.outfiles.append(out)
|
||||
|
||||
|
||||
main_headers = glob.glob("pybind11/include/pybind11/*.h")
|
||||
conduit_headers = sum([glob.glob(f"pybind11/include/pybind11/conduit/*.{ext}")
|
||||
for ext in ("h", "txt")], [])
|
||||
detail_headers = glob.glob("pybind11/include/pybind11/detail/*.h")
|
||||
eigen_headers = glob.glob("pybind11/include/pybind11/eigen/*.h")
|
||||
stl_headers = glob.glob("pybind11/include/pybind11/stl/*.h")
|
||||
cmake_files = glob.glob("pybind11/share/cmake/pybind11/*.cmake")
|
||||
pkgconfig_files = glob.glob("pybind11/share/pkgconfig/*.pc")
|
||||
headers = main_headers + conduit_headers + detail_headers + eigen_headers + stl_headers
|
||||
|
||||
cmdclass = {"install_headers": InstallHeadersNested}
|
||||
$extra_cmd
|
||||
|
||||
# This will _not_ affect installing from wheels,
|
||||
# only building wheels or installing from SDist.
|
||||
# Primarily intended on Windows, where this is sometimes
|
||||
# customized (for example, conda-forge uses Library/)
|
||||
base = os.environ.get("PYBIND11_GLOBAL_PREFIX", "")
|
||||
|
||||
# Must have a separator
|
||||
if base and not base.endswith("/"):
|
||||
base += "/"
|
||||
|
||||
setup(
|
||||
name="pybind11_global",
|
||||
version="$version",
|
||||
packages=[],
|
||||
headers=headers,
|
||||
data_files=[
|
||||
(base + "share/cmake/pybind11", cmake_files),
|
||||
(base + "share/pkgconfig", pkgconfig_files),
|
||||
(base + "include/pybind11", main_headers),
|
||||
(base + "include/pybind11/conduit", conduit_headers),
|
||||
(base + "include/pybind11/detail", detail_headers),
|
||||
(base + "include/pybind11/eigen", eigen_headers),
|
||||
(base + "include/pybind11/stl", stl_headers),
|
||||
],
|
||||
cmdclass=cmdclass,
|
||||
)
|
||||
@@ -1,50 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Setup script (in the sdist or in tools/setup_main.py in the repository)
|
||||
|
||||
from setuptools import setup
|
||||
|
||||
cmdclass = {}
|
||||
$extra_cmd
|
||||
|
||||
setup(
|
||||
name="pybind11",
|
||||
version="$version",
|
||||
download_url='https://github.com/pybind/pybind11/tarball/v$version',
|
||||
packages=[
|
||||
"pybind11",
|
||||
"pybind11.include.pybind11",
|
||||
"pybind11.include.pybind11.conduit",
|
||||
"pybind11.include.pybind11.detail",
|
||||
"pybind11.include.pybind11.eigen",
|
||||
"pybind11.include.pybind11.stl",
|
||||
"pybind11.share",
|
||||
"pybind11.share.cmake.pybind11",
|
||||
"pybind11.share.pkgconfig",
|
||||
],
|
||||
package_data={
|
||||
"pybind11": ["py.typed"],
|
||||
"pybind11.include.pybind11": ["*.h"],
|
||||
"pybind11.include.pybind11.conduit": ["*.h", "*.txt"],
|
||||
"pybind11.include.pybind11.detail": ["*.h"],
|
||||
"pybind11.include.pybind11.eigen": ["*.h"],
|
||||
"pybind11.include.pybind11.stl": ["*.h"],
|
||||
"pybind11.share.cmake.pybind11": ["*.cmake"],
|
||||
"pybind11.share.pkgconfig": ["*.pc"],
|
||||
},
|
||||
extras_require={
|
||||
"global": ["pybind11_global==$version"]
|
||||
},
|
||||
entry_points={
|
||||
"console_scripts": [
|
||||
"pybind11-config = pybind11.__main__:main",
|
||||
],
|
||||
"pipx.run": [
|
||||
"pybind11 = pybind11.__main__:main",
|
||||
],
|
||||
"pkg_config": [
|
||||
"pybind11 = pybind11.share.pkgconfig",
|
||||
],
|
||||
},
|
||||
cmdclass=cmdclass
|
||||
)
|
||||
Reference in New Issue
Block a user