Metadata-Version: 2.4
Name: circuitpython-build-tools
Version: 1.20.1
Summary: CircuitPython library build tools
Author-email: Scott Shawcroft <scott@adafruit.com>
License-Expression: MIT
Project-URL: Homepage, https://www.adafruit.com/
Project-URL: Source, https://github.com/adafruit/circuitpython-build-tools
Project-URL: Tracker, https://github.com/adafruit/circuitpython-build-tools/issues
Keywords: circuitpython
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Click
Requires-Dist: requests
Requires-Dist: semver
Requires-Dist: tomli; python_version < "3.11"
Requires-Dist: platformdirs
Dynamic: license-file

# Adafruit CircuitPython Build Tools

[![Discord](https://img.shields.io/discord/327254708534116352.svg)](https://adafru.it/discord)

This repo contains build scripts used to build the
[Adafruit CircuitPython bundle](https://github.com/adafruit/Adafruit_CircuitPython_Bundle), [CircuitPython Community bundle](https://github.com/adafruit/CircuitPython_Community_Bundle)
and individual library release zips. Its focused on Github Actions support but will also work locally
when a gcc compiler is present.

The scripts will either fetch a pre-built mpy-cross from s3 or
automatically clone the [CircuitPython repo](https://github.com/adafruit/circuitpython) and attempt
to build mpy-cross. You'll need some version of gcc for this to work.

## Setting up libraries

These build tools automatically build .mpy files and zip them up for
CircuitPython when a new tagged release is created. To add support to a repo
you need to use the [CircuitPython
cookiecutter](https://github.com/adafruit/cookiecutter-adafruit-circuitpython)
to generate `.github/workflows/*.yml`.

The bundle build will produce one zip file for every major CircuitPython
release supported containing compatible mpy files and a zip with human readable py files.
It'll also "release" a `z-build_tools_version-x.x.x.ignore` file that will be
used to determine when a library needs new release files because the build tools
themselves changed, such as when a new major CircuitPython release happens.

## Building libraries locally

To build libraries built with the build tools you'll need to install the
circuitpython-build-tools package.

```shell
python3 -m venv .env
source .env/bin/activate
pip install circuitpython-build-tools
circuitpython-build-bundles --filename_prefix <output file prefix> --library_location .
```

When making changes to `circuitpython-build-tools` itself, you can test your changes
locally like so:

```shell
cd circuitpython-build-tools # this will be specific to your storage location
python3 -m venv .env
source .env/bin/activate
pip install -e .  # '-e' is pip's "development" install feature
circuitpython-build-bundles --filename_prefix <output file prefix> --library_location <library location> --library_depth 2
```

## Contributing

Contributions are welcome! Please read our [Code of Conduct](https://github.com/adafruit/circuitpython-build-tools/blob/main/CODE_OF_CONDUCT.md)
before contributing to help this project stay welcoming.
