Building LuxCoreRender: Difference between revisions

From LuxCoreRender Wiki
Jump to navigation Jump to search
Line 161: Line 161:


To build a new release of Dependencies:
To build a new release of Dependencies:
* Go to [https://github.com/LuxCoreRender/LuxCoreDeps <code>LuxCoreRender/LuxCoreDeps</code>] repository and open [https://github.com/LuxCoreRender/LuxCoreDeps/actions Actions menu]
 
* Select [https://github.com/LuxCoreRender/LuxCoreDeps/actions/workflows/release.yml <code>LuxCore Dependency Releaser</code>]
{{#mermaid: flowchart TD
* Click on <code>Run workflow</code> button, in the upper-right corner
 
* Choose the branch (should be <code>main</code>), enter the release version, set the options, and click <code>Run workflow</code>
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

Caption text
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