Building LuxCoreRender: Difference between revisions
No edit summary |
|||
Line 161: | Line 161: | ||
To build a new release of Dependencies: | To build a new release of Dependencies: | ||
<!-- External Dependencies --> | |||
{{#mermaid: flowchart TD | {{#mermaid: flowchart TD | ||
Line 230: | Line 231: | ||
==== Standard Build ==== | ==== Standard Build ==== | ||
<!-- Python Wheels --> | |||
''Caveat: if you provide an already-existing release version number during the process, this action will replace the existing release with the newly-built one. This can be what you expected... or not. Be cautious.'' | |||
Prerequisite: you must have release a compatible version of External Dependencies (LuxCoreDeps) before building Python Wheels. | |||
To build a new release of Python Wheels: | To build a new release of Python Wheels: | ||
Line 241: | Line 244: | ||
action(Open <a href='https://github.com/LuxCoreRender/LuxCore/actions'><code>Actions</code></a> menu) | action(Open <a href='https://github.com/LuxCoreRender/LuxCore/actions'><code>Actions</code></a> menu) | ||
select(Select <a href='https://github.com/LuxCoreRender/LuxCore/actions/workflows/wheel-releaser.yml'><code>LuxCore Wheels Releaser</code></a> workflow) | select(Select <a href='https://github.com/LuxCoreRender/LuxCore/actions/workflows/wheel-releaser.yml'><code>LuxCore Wheels Releaser</code></a> workflow) | ||
runwf(Click on <code>Run workflow</code> button, in the upper-right corner) | runwf(Click on <code>Run workflow</code> drop-down button, in the upper-right corner) | ||
choice(Set branch, release version and other options) | choice(Set branch, release version and other options) | ||
validate(Click <code>Run workflow</code>) | validate(Click <code>Run workflow</code>) | ||
Line 261: | Line 264: | ||
}} | }} | ||
==== Deploy Wheels to Pypi ==== | |||
As far as wheels are concerned, in addition to building them, it is also necessary to upload them to PyPi, so that they are available for pip installation. This action is described here. | |||
Prerequisite: you must have released a set of Python Wheels beforehand. | |||
==== Test & Debug Build ==== | ==== Test & Debug Build ==== | ||
Line 268: | Line 279: | ||
== Developper Workflow == | == Developper Workflow == | ||
== Package | == A few words to Package Maintainers == | ||
= Miscellaneous = | |||
TODO | |||
Python Wheels: Pointer to deps |
Revision as of 21:49, 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 build approaches, depending on the use case. This document therefore distinguishes 2 different build 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
- git
- Github
- 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, below represented with dependency links:
Target | Source Repository | Content |
---|---|---|
External Dependencies | LuxCoreRender/LuxCoreDeps |
A bundled Conan cache populated with LuxCoreRender external dependency binaries, built from sources. Please refer to LuxCoreDeps README for more information. |
LuxCore | LuxCoreRender/LuxCore |
LuxCore core binaries, in the form of static and shared libraries: luxcore.so, luxcore_static.lib, luxcore.dll etc. |
Samples | LuxCoreRender/LuxCore |
Sample C++ programs, illustrating luxcore use, namely luxcoreconsole and luxcoreui
|
Python Wheels | LuxCoreRender/LuxCore |
Python bindings of core binaries, in the form of Python wheels (1 per pair OS/Python version). As a byproduct, a Pythonized version of LuxCore shared library is also built (pyluxcore.so). |
Plugins | LuxCoreRender/<plugin-name> |
Plugins to expose LuxCore in various external applications, notably Blender. Mostly written in Python and relying on Python Wheels as runtime dependency. |
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.
Running this workflow is restricted to users granted of extended rights on LuxCoreRender repositories.
External Dependencies Target
Standard Build
Caveat: if you provide an already-existing release version number during the process, this action will replace the existing release with the newly-built one. This can be what you expected... or not. Be cautious.
To build a new release of Dependencies:
Test & Debug Build
Canonical build may not be suitable for testing and debugging needs (for instance, when adding, updating or removing dependencies...). In such situations, there are 2 options:
- Server build: run workflow on server, but without creating any release
- Local build: run workflow on local computer (user PC)
Server build
The process is nearly the same as canonical build, but the release creation steps are skipped. For that purpose, another Github workflow is executed: LuxCore Dependency Checker.
Please note that your changes must have been committed to repository beforehands.
If build succeeds, you will find the expected outputs in Artifacts section of the action run.
Local build
Thanks to nektos/act, it is possible Github Workflows locally.
After installation (left to the reader), act
can be called directly on command line. For more convenience, a script is also provided in LuxCoreDeps
repository: utils/debug.sh
(Linux only, at the moment).
Python Wheels Target
Standard Build
Caveat: if you provide an already-existing release version number during the process, this action will replace the existing release with the newly-built one. This can be what you expected... or not. Be cautious.
Prerequisite: you must have release a compatible version of External Dependencies (LuxCoreDeps) before building Python Wheels.
To build a new release of Python Wheels:
Deploy Wheels to Pypi
As far as wheels are concerned, in addition to building them, it is also necessary to upload them to PyPi, so that they are available for pip installation. This action is described here.
Prerequisite: you must have released a set of Python Wheels beforehand.
Test & Debug Build
Samples Target
Developper Workflow
A few words to Package Maintainers
Miscellaneous
TODO Python Wheels: Pointer to deps