-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Build Process
Note: Most notable changes compared to the previous workflow is the deprecation of
cura-build
andcura-build-environment
.
Cura consists of a Python module in this repository and multiple other dependencies (C++, C++ Python bindings, Python modules) either owned by UltiMaker or third-parties. UltiMaker owned repositories which are party of Cura will be build or exported with a GitHub Action on a certain repository events, such as a push to a branch. These exported packages and/or binaries can then be used by other repositories when required. This workflow greatly reduces complexity, maintenance and build time. The figure below shows the sequence diagram for an individual repository.
C++ and C++ Python binding dependencies are now managed by Conan, while the Python modules are managed by Pip. Conan is the orchestrator for the complete installation and setting up the development environment. All dependencies are build, stored and used in such away that interaction and 'pollution' of the global system should be non-existing. Installing dependencies for Cura and initializing a Virtual Python environment should be as simple as executing a single command in the end.
Note: This is a work in progress and largely untested at the moment.
When you're working on Cura it could be needed to work on other repositories such as Uranium and/or CuraEngine in parallel. Conan allows you to put a package into editable mode Instead of pointing to a Conan package in the local Conan cache it will point to the working directory of the other repository.
You can find out which version of a package is used by Cura by examining the conandata.yml
file in the root directory of the Cura
repository. The specific data, including the version of a requirment is stored per version key, e.q.: cura/5.1.0-beta+1234
will use
curaengine/latest@ultimaker/stable
Make sure Cura and her dependencies are cloned locally and are located in the same workspace directory.
workspace_root
|
└─ Cura
└─ CuraEngine
└─ Uranium
└─ libSavitar
└─ libArcus
└─ libNest2D
└─ pynest2d
You can put a dependency, such as CuraEngine into editable mode by executing the following command in the root directory of the CuraEngine
conan editable add . curaengine/latest@ultimaker/stable
If you then perform a new conan install
command as usual (See: Initializing a Virtual Python Development Environment (All OSes)) the correct
paths should be set for the CuraEngine dependency, and you should be able to develop for Cura and CuraEngine simultaneously.
- Welcome
- Getting Started
- Reporting An Issue
- Core Development
- Plugins & Material Packages
- Printers
- Translations
- Best Practices
- Settings
- 3D Scene
- Profiling
- Cura User Files
- GitHub Actions