-
-
Notifications
You must be signed in to change notification settings - Fork 187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added support for Conan as a dependency manager #720
Closed
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Added a conanfile.py for dependency manager Conan - Updated gitignore for cmake-build-* - Use find_package Python3 since we're now using CMake 3.13 - Allow setting Python_VERSION to specify an exact Python version (3.8 default)
jellespijker
changed the title
Added Conan support
Added support for Conan as a dependency manager
Aug 8, 2021
This was referenced Aug 8, 2021
This is basically a header only recipe and can be seen as a pure Python package. just copying the UM, plugins and resources should be enough
Although Uranium isn't compiled its dependency Arcus is. Since Arcus is also used by CuraEngine. Setting the version here should ensure that they same python version is used by both.
Some messages may already provide a QUrl as the image source. In such cases, Cura would crash because the `QUrl.fromLocalFile()` expects a string and not a QUrl as input. This is now accounted for to make sure that in the image source will not be converted to QUrl again. CURA-8500
As suggested by @nallath Co-authored-by: Jaime van Kessel <[email protected]>
CURA-8500
2 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is part of the following PRs:
The purpose of these changes is to set up a dependency manager for Cura and here repositories. Cura uses both third-party and Ultimaker maintained dependencies, written in both Python and C++ (or mixtures of both). Not all of these dependencies can be downloaded with the help of a dependency manager such as pip. This makes setting up Cura from source, a pain in the$%^#$ $%^. See the graph below for the current dependencies. Adding to the complexity is the way how we're currently consuming third-party dependencies; Some have to be present on the system/provided by the user, some are shipped within the repo, while others are downloaded by CMake.
All of the above-mentioned PRs and this one, add a
conanfile.py
to the root of this project. This is a recipe written in Python which instructs Conan (https://docs.conan.io/en/latest/) how to build and package the repository in such a way that it can be reused by other dependencies. If a required dependency has no binary for your OS and compiler it will build that dependency from scratch and store it in the cache. Making installing Cura from source as simple as:For a more detailed description see the README.md in this repository https://github.com/jellespijker/conan-um
For testing purposes, I have set up a small home server that can be used by Ultimaker employees. Other developers can test this by cloning the above-mentioned repositories and performing a
conan export . ultimaker/testing
in each root. That only leaves the SIP package, if you execute aconan export . riverbankingcomputing/testing
in this folder https://github.com/jellespijker/conan-um/tree/main/recipes/sip it creates a Conan package for SIP 4.19.25You can use your own profiles for this, but I have personally tested and developed them with my own
jinja
template profiles on Linux Manjaro with a GCC compiler, Mac OS Big Sur with a Clang compiler and Windows 11 with a Visual Studio 2019 compiler.These profiles can be installed with the
conan config install https://github.com/jellespijker/conan-config
. Make sure you add-pr:b cura_release.jinja -pr:h cura_release.jinja
to your install instructionsConan allows for multiple ways of working. Either the exiting package can be used from the cache, or if you want to work on multiple repositories you can put that repo in editable mode such that the xxx-config.cmake in the project that is depending on the other, will point to the paths of your repo, see https://docs.conan.io/en/latest/developing_packages/editable_packages.html
Because the best practice method to use Conan, which is also the preferred way in Conan 2.0, is to use ( https://docs.conan.io/en/latest/reference/conanfile/tools/cmake.html ) With the tools
CMakeDeps
,CMakeToolchain
, andCMake
. TheCMakeDeps
class will generate xxx-config.cmake files per dependency, while theCMakeToolchain
will generate a toolchain to be passed to CMake-DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake
These two prepare the way forCMake
to actually build the project such that it won't need to change the CMakeLists.txt. Allowing Conan to be optional and not mandatory.Use a modern way of finding Python if you want to link to a specific version pass
-DPython_version=3.9
now it will link to 3.8 by default.Still, WIP at the moment, since I'm finalizing some last changes across all repos.