Skip to main content

just-buildit

CI Docs

The missing PEP 517 build backend for C extensions.

You know how to build your project. just-buildit knows how to package it. That's the whole deal.


The problem

Every existing Python build backend either wants to own your build system, assumes you're using setuptools extensions, or drags in a dependency tree bigger than your project. There's no option that just says:

"Here are your C files. Build them however you want. I'll ship the result."

just-buildit is that option.


Installation

pip install just-buildit

Quickstart

Flat layouts, nested packages, multiple extensions across subdirectories, mixed pure Python and C — whatever your build produces.

Zero config — a single C extension in src/mylib/:

[build-system]
requires = ["just-buildit"]
build-backend = "just_buildit"

[project]
name = "mylib"
version = "0.1.0"

Run pip install . and just-buildit finds src/mylib/, compiles every .c file it contains, and ships the result.

Custom build command — Make, CMake, Meson, Bazel, or anything else:

[tool.just-buildit]
command = "make"

just-buildit sets environment variables, calls your command, and packages everything written to $JUST_BUILDIT_OUTPUT_DIR.

Need a project scaffold? just-makeit generates a CMake-based C extension project pre-wired for just-buildit — see the examples.

CLI

uvx just-buildit inspect   # dry-run: show config and what would be built
uvx just-buildit build     # build wheel into dist/
uvx just-buildit sdist     # build source distribution into dist/

# For a project deriving its version from git tags, the number CI cannot
# read out of a file, because there is no longer a file carrying it:
uvx just-buildit --next-version   # -> 1.1.4  (the tag a release would push)

Documentation

Environment variables What just-buildit sets before calling your command
Examples Make, CMake, Meson, Bazel, mixed Python + C, nested packages
Configuration Full config reference, wheel repair, editable installs
Contributing Running tests, platform support, bootstrapping

Requirements

  • Python 3.8+
  • A compiler (you already have one)
  • uv for wheel repair (uvx auditwheel / uvx delocate-wheel / uvx delvewheel)

Authors

Matthew T. Hunter, Ph.D. and Claude Code


License

MIT

Release files for just-buildit 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for just-buildit 0.5.0
File Size Uploaded
just_buildit-0.5.0.tar.gz 195.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for just-buildit 0.5.0
File Interpreter ABI Platform
just_buildit-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 233.0 kB

Release files / just_buildit-0.5.0.tar.gz

Download URL just_buildit-0.5.0.tar.gz
Size 195.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e3096d52ca46c9ac907d04ba1be641401127f873f86cd901fa09e4919dccfdd1
BLAKE2b-256 checksum
How to use checksums
26f49fa1fff86a9a61308ecb7923c2a9830b3a9f4365e1a0eb68f9a2865ec2ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / just_buildit-0.5.0-py3-none-any.whl

Download URL just_buildit-0.5.0-py3-none-any.whl
Size 37.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d52dbd16a2374387f0091310a8598dc10f3122506bfb48ed788677400a656c5e
BLAKE2b-256 checksum
How to use checksums
d0914f5a2552b978f99418cb17160838096653c90b280b5329d3a6295e1a3d23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.1

2 release files

0.6.0

2 release files

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.3.10

1 release file

0.3.9

1 release file

0.3.8

1 release file

0.3.7

1 release file

0.3.6

1 release file

0.3.5

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.5

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page