|
| 1 | +# Pixi Build Backends |
| 2 | + |
| 3 | +**Work in Progress: Backend Implementations for Building Pixi Projects from Source** |
| 4 | + |
| 5 | +This repository contains backend implementations designed to facilitate the building of pixi projects directly from their source code. These backends aim to enhance the functionality of Pixi, a cross-platform, multi-language package manager and workflow tool built on the foundation of the conda ecosystem. |
| 6 | + |
| 7 | +## Available Build Backends |
| 8 | +The idea is that a backend should be able to build a certain type of so |
| 9 | +The repository provides the following build backends: |
| 10 | + |
| 11 | +1. **pixi-build-python**: A backend tailored for building Python-based projects. |
| 12 | +2. **pixi-build-cmake**: A backend designed for projects utilizing CMake as their build system. |
| 13 | +3. **pixi-build-rattler-build**: A backend for building [`recipe.yaml`](https://rattler.build/latest/) directly |
| 14 | + |
| 15 | +These backends are located in the `crates/*` directory of the repository. |
| 16 | + |
| 17 | +## Features |
| 18 | +* **Backend Implementations**: Provides the necessary components to build Pixi projects from source, integrating seamlessly with the Pixi ecosystem. |
| 19 | +* **Schema Definitions**: Includes schema definitions to standardize and validate project configurations. |
| 20 | + |
| 21 | +## Getting Started |
| 22 | + |
| 23 | +**Note**: This project is currently a work in progress. Functionality and documentation are under active development. |
| 24 | +All of these backends are directly uploaded to the [Pixi Build Backends](https://prefix.dev/channels/pixi-build-backends). |
| 25 | +So will be utilized in pixi directly. We want to move these to conda-forge eventually. |
| 26 | + |
| 27 | +For example, this `build-section` will use the python backend to build a python project: |
| 28 | + |
| 29 | +```toml |
| 30 | +[build-system] |
| 31 | +# The name of the build backend to use. This name refers both to the name of |
| 32 | +# the package that provides the build backend and the name of the executable |
| 33 | +# inside the package that is invoked. |
| 34 | +# |
| 35 | +# The `build-backend` key also functions as a dependency declaration. At least |
| 36 | +# a version specifier must be added. |
| 37 | +build-backend = { name = "pixi-build-python", version = "*" } |
| 38 | +# These are the conda channels that are used to resolve the dependencies of the |
| 39 | +# build backend package. |
| 40 | +channels = [ |
| 41 | + "https://prefix.dev/pixi-build-backends", |
| 42 | + "https://prefix.dev/conda-forge", |
| 43 | +] |
| 44 | +``` |
| 45 | + |
| 46 | + |
| 47 | +### Developing on Backends |
| 48 | + |
| 49 | +Even though binary versions are available on the prefix channels, its also quite easy to get started on developing a new backend or work on an existing one. |
| 50 | +To start development make sure you have installed [pixi](https://pixi.sh). After which, a number of command should be available: |
| 51 | + |
| 52 | +```bash |
| 53 | +# To build the backens |
| 54 | +pixi run build |
| 55 | +# .. to install a backend, for example the python one: |
| 56 | +pixi r install-pixi-build-python |
| 57 | +``` |
| 58 | + |
| 59 | +You can make use of these backends to overwrite any existing backend in pixi. For example, to overwrite the python backend with a local version, you can do the following: |
| 60 | + |
| 61 | +```bash |
| 62 | +PIXI_BUILD_BACKEND_OVERRIDE=/path/to/pixi-build-python pixi install |
| 63 | +``` |
| 64 | + |
| 65 | +## Contributing |
| 66 | +Contributions are welcome! Please refer to the contributing guidelines for more information. |
| 67 | +License |
| 68 | + |
| 69 | +This project is licensed under the BSD-3-Clause License. See the LICENSE file for details. |
| 70 | +Acknowledgements |
| 71 | + |
| 72 | +## Acknowledgemts |
| 73 | +Developed by prefix.dev. |
| 74 | +For more information about Pixi and related projects, visit the [prefix-dev](https://github.com/prefix-dev) organization on GitHub. |
0 commit comments