Create Wheel from CMake projects
Project description
CMake Wheel: cmeel
Wheel build backend using CMake, to package any CMake project with pip and distribute on PyPI.
Following those relevant PEPs:
- PEP 427, The Wheel Binary Package Format 1.0
- PEP 517, A build-system independent format for source trees
- PEP 518, Specifying Minimum Build System Requirements for Python Projects
- PEP 600, Future ‘manylinux’ Platform Tags for Portable Linux Built Distributions
- PEP 621, Storing project metadata in pyproject.toml
- PEP 639, Improving License Clarity with Better Package Metadata
- PEP 660, Editable installs for pyproject.toml based builds (wheel based)
Chat
https://matrix.to/#/#cmake-wheel:matrix.org
Basic idea
Glue between PEP 517 & 660 entry points and modern CMake standard project configuration / build / test / install, and
install in ${PYTHON_SITELIB}/cmeel.prefix/:
- As there is a dot, it is not a valid python module name, so no risk of importing anything there by mistake
- Play well with others, as everything is confined to
${PYTHON_SITELIB}/cmeel.prefix ${PYTHON_SITELIB}/cmeel.pthautomatically load${PYTHON_SITELIB}/cmeel.prefix/${PYTHON_SITELIB}, so python packages work out of the box- Existing
${PYTHON_SITELIB}/cmeel.prefixare automatically added to$CMAKE_PREFIX_PATH, so we can build CMake packages whose dependencies are provided by other packages installed with cmeel - Stuff in
${PYTHON_SITELIB}/cmeel.prefix/binis exposed viacmeel.run:cmeel_run, or copied if start with a shebang
Basic pyproject.toml example
extract from https://github.com/cmake-wheel/cmeel-example/blob/main/pyproject.toml:
[build-system]
build-backend = "cmeel"
requires = ["cmeel[build]"]
[project]
authors = [{email = "guilhem.saurel@laas.fr", name = "Guilhem Saurel"}]
description = "This is an example project, to show how to use cmeel"
license = "BSD-2-Clause"
name = "cmeel-example"
requires-python = ">= 3.8"
version = "0.7.0"
[project.urls]
changelog = "https://github.com/cmake-wheel/cmeel-example/blob/main/CHANGELOG.md"
homepage = "https://github.com/cmake-wheel/cmeel-example"
repository = "https://github.com/cmake-wheel/cmeel-example.git"
Complete specification is available at: https://packaging.python.org/en/latest/specifications/declaring-project-metadata
Install
If you want to use the helpers provided by cmeel, to eg. test building a project in a manylinux container with
cmeel docker, the best way to install cmeel is to use pipx: pipx install cmeel
Otherwise, if you just want to use the build backend, there is no need to install anything: your frontent (eg. pip)
should do this for you
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cmeel-0.59.0.tar.gz.
File metadata
- Download URL: cmeel-0.59.0.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9871f96ad0499c1cf8671e69622c805265a6be4383a1abfd18f20b4a33e3e3a
|
|
| MD5 |
f74c98cbdd8f5a7ff62f74839cba448b
|
|
| BLAKE2b-256 |
85582448af92b3761a1b321014a653f79d322026681728f96ebe9f419ae0d6b8
|
Provenance
The following attestation bundles were made for cmeel-0.59.0.tar.gz:
Publisher:
release.yml on cmake-wheel/cmeel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cmeel-0.59.0.tar.gz -
Subject digest:
d9871f96ad0499c1cf8671e69622c805265a6be4383a1abfd18f20b4a33e3e3a - Sigstore transparency entry: 834756390
- Sigstore integration time:
-
Permalink:
cmake-wheel/cmeel@b0e1084a3870789f9ad5f3293ea1a393fddede25 -
Branch / Tag:
refs/tags/v0.59.0 - Owner: https://github.com/cmake-wheel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b0e1084a3870789f9ad5f3293ea1a393fddede25 -
Trigger Event:
push
-
Statement type:
File details
Details for the file cmeel-0.59.0-py3-none-any.whl.
File metadata
- Download URL: cmeel-0.59.0-py3-none-any.whl
- Upload date:
- Size: 21.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04a24b960e602484306721ce148610ddda4cbc83b8c5f27ef915366a86901e06
|
|
| MD5 |
b3ac61fd848b969a0915cd5f9d813da9
|
|
| BLAKE2b-256 |
90c7f7a2ea2e88cba4828c9b5bba5b8448ad6e6cbd652d782cc97bb14a54e6a6
|
Provenance
The following attestation bundles were made for cmeel-0.59.0-py3-none-any.whl:
Publisher:
release.yml on cmake-wheel/cmeel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cmeel-0.59.0-py3-none-any.whl -
Subject digest:
04a24b960e602484306721ce148610ddda4cbc83b8c5f27ef915366a86901e06 - Sigstore transparency entry: 834756402
- Sigstore integration time:
-
Permalink:
cmake-wheel/cmeel@b0e1084a3870789f9ad5f3293ea1a393fddede25 -
Branch / Tag:
refs/tags/v0.59.0 - Owner: https://github.com/cmake-wheel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b0e1084a3870789f9ad5f3293ea1a393fddede25 -
Trigger Event:
push
-
Statement type: