A minimal framework for fast, secure, and reliable build and dependency management for OpenCore EFIs.
OCE-Build is designed to help enable projects to be highly composable and easily maintainable, prioritizing a small git-friendly footprint. It is designed to be flexible and extensible for existing projects, while also providing a simple configuration and interface for new projects to get started quickly.
[!NOTE] This project is still in early development and is not yet ready for general use. The following is a list of features that are planned for the initial release.
This section is for users looking to integrate this tool with their own project. For information on contributing to this project, refer to the Developer Docs
This project is distributed as both a standalone CLI and a Python library on
PyPI. The CLI is intended to be used for simple projects or for CI/CD, while the
library is intended to be used for supporting Python library development or
complex build pipelines. The library also comes bundled with the CLI and it's
source code is available under the ocebuild.cli
module.
The recommended way to install the CLI is from GitHub releases. This will provide you with a standalone executable that can be used without installing Python or any other dependencies. The CLI is available for Windows, macOS, and Linux.
To install the CLI / library from PyPI, you will need to have Python 3.8 or later installed. You can install Python from python.org or from your package manager. For more information on installing Python, refer to the Python documentation.
To install the library directly from PyPI using pip
, simply run the following
command in your terminal:
pip install ocebuild
Or when using the poetry
package manager, run:
poetry add ocebuild
Depending on your system, you may need to use pip3
instead of pip
when
installing the library. You may also need to use sudo
or pip install --user
to install the library globally or locally, respectively.
After installing the library, the CLI will also be available in your PATH, which
you can invoke by simply running ocebuild
in your terminal (or poetry run ocebuild
).
To get started, you will need to create a build.yml
file in the root of your
project. This file will contain all of the information needed to build your EFI.
You can follow along with the below example or reference one of the example projects included in this repository.
The following is a minimal example of a build.yml
file located under a src/
directory:
# src/build.yml
---
build: DEBUG
version: latest
---
ACPI:
Drivers:
- AudioDxe
- HfsPlus
- OpenRuntime
- ResetNvramEntry
Kexts:
Lilu: latest
VirtualSMC: latest
Resources:
Tools:
- OpenShell
Once you have created your build.yml
file, you can run the build command to
build your EFI:
ocebuild build --cwd src/build.yml
This will create a new dist/
directory in your project containing your EFI.
You can also specify a custom output directory by using the -o
/ --output
option. To view all available commands and options, run ocebuild --help
or run
ocebuild <command> --help
for more information on a specific command.
Refer to docs/configuration.md for more information on how to setup your build configuration.
Note that this does not output a config.plist file. To generate a config.plist
file, you will need to create a config.yml
file in the same directory as your
build.yml
file. The config.yml
file contains only the changes you wish to
make to the default Sample.plist file (located under dist/Docs/Sample.plist
).
Refer to docs/configuration.md for more information.
This section is for developers looking to contribute to this project. This is only meant to be a brief overview of the project structure and development guidelines. For more information, refer to the contributing documentation.
The general philosophy for this project is to keep things as simple as possible. This means that the project should be easy to understand, easy to maintain, and easy to contribute to.
A summary of the contributing guidelines for this project are as follows: