Building LuxCoreRender

From LuxCoreRender Wiki
Jump to navigation Jump to search

This page is under construction

This page documents 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 publishing the various binaries;
  • 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 the Conan package management system may 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

LuxCoreRender contains multiple targets, with dependency links:

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 binaries built from sources. 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