Building LuxCoreRender: Difference between revisions
Line 161: | Line 161: | ||
To build a new release of Dependencies: | To build a new release of Dependencies: | ||
{{#mermaid: flowchart TD | |||
repo(Go to <a href='https://github.com/LuxCoreRender/LuxCoreDeps'><code>LuxCoreRender/LuxCoreDeps</code></a> Github repository) | |||
action(Open <a href='https://github.com/LuxCoreRender/LuxCoreDeps/actions'><code>Actions</code></a> menu) | |||
select(Select <a href='https://github.com/LuxCoreRender/LuxCoreDeps/actions/workflows/release.yml'><code>LuxCore Dependency Releaser</code></a> workflow) | |||
runwf(Click on <code>Run workflow</code> button, in the upper-right corner) | |||
choice(Set branch, release version and other options) | |||
validate(Click <code>Run workflow</code>) | |||
repo-->action | |||
action-->select | |||
select-->runwf | |||
runwf-->choice | |||
choice-->validate | |||
}} | |||
This action will run the build, create a release (or reuse an existing one, depending on your settings) and upload the build artifacts to the release. | This action will run the build, create a release (or reuse an existing one, depending on your settings) and upload the build artifacts to the release. |
Revision as of 17:00, 19 April 2025
This page is under construction
This document describes the various processes involved in building LuxCoreRender, starting with version 2.10 “Back-on-track”.
LuxCoreRender's build system has been significantly modified for version 2.10. This document therefore renders obsolete all previous documents related to the compilation of older versions (<=2.9).
For most targets, there are several construction approaches, depending on the use case. This document therefore distinguishes three different construction workflows.
Audience
This document is primarily intended for:
- LuxCoreRender administrators in charge of releasing the various LuxCoreRender end-products;
- Developers wishing to contribute to the project;
- Package maintainers wishing to integrate all or part of LuxCoreRender into a distribution;
This document assumes that the reader is skilled in the following areas:
- C/C++ compilation
- cmake
- Python Wheels
Familiarity with Conan dependency manager may also make this document easier to understand.
This document is not intended for end-users without any knowledge about application building. Such users are invited to look for already compiled binaries.
Build Targets
Synoptics
LuxCoreRender contains multiple targets, with dependency links:
Details
TODO
Header text | Header text | Header text |
---|---|---|
Example | Example | Example |
Example | Example | Example |
Example | Example | Example |
Targeted platforms
We aim to make LuxCoreRender available on the following 4 platforms:
- Linux (glibc 2.28+)
- Windows
- MacOS Intel (>=10.15)
- MacOS Arm (>=12.0)
For Python-related targets, we aim to make LuxCoreRender available for all Python versions supported at a given time (https://devguide.python.org/versions/), i.e. 5 versions in general.
Build Workflows
Publisher Workflow
This workflow is designed to be used by LuxCoreRender administrators to publish a new release of one or more LuxCoreRender components. This workflow takes place in a CI/CD Github pipeline.
Dependencies
Expected outputs
The expected output of Dependencies build is a bundled Conan cache populated with dependency binaries built from sources, embedded into a new Github release. Please refer to LuxCoreDeps README for more information.
Canonical build
Caveat: depending on your settings, this action can replace an existing release with a fresh one. Be cautious.
To build a new release of Dependencies:
This action will run the build, create a release (or reuse an existing one, depending on your settings) and upload the build artifacts to the release.
Python Wheels
Samples
=== Dependency
Developper Workflow
Package Maintainer Workflow
LuxCore Dependencies
Outputs
The output of this target is a Conan cache populated with binaries
Principles
LuxCore dependencies are built by LuxCoreDeps.
The process is:
- LuxCoreDeps populates a Conan cache by building each of the required dependencies from its sources.
- This cache is published in LuxCoreDeps releases.
- On LuxCore side, during the build, the cache is retrieved from the release and made available (restored) for LuxCore build.
Server build
LuxCoreDeps is intended to be run by Github CI/CD pipeline.
You will find all workflows in repository actions.:
- LuxCore Dependency Builder: build dependencies, triggered on-demand
- LuxCore Dependency Checker: test dependency build, triggered by push (call Builder)
- LuxCore Dependency Releaser: publish release of dependencies
In a typical workflow: Testing: Releasing
Local build
Local build is