Jump to content
Ultimaker Community of 3D Printing Experts

CDK - CuraDevelopmentKit (unreleased)

Recommended Posts

Hello everybody,


while working on Cura plugins, I worked for myself on a solution to make developing and building plugins as easy as possible. So I took cura-build-environment and expanded it with many dependencies, which are normally not built and need to be installed before.

Also to be able to build plugins automatically on mid-class[2] network-attached-storages (NAS), I was looking for a hassle-free way to build plugins or Cura itself there, too.

Now I ended up with a full prefix with all dependencies except a C/C++ compiler for Linux.

Once built, the development flavour comes with Git and CMake. On Linux, it comes with AppImageKit, like in cura-build-environment at the moment, but on Windows, it comes with dependencies you normally need to install or build yourself, like NSIS. All you should need to start Cura from source or your development at all is using one of the scripts to dive in.


Features (and already done):

* Comes with all dependencies needed to run Cura

* Provides possibility to compile different flavours (minimal, development, proposed)

* Allows overriding all download URLs with a local cache, so changed URLs won't break builds.


What is going to be done soon:

* Adding GCC or LLVM for compiling

* Adding scripts to fetch Cura from GitHub and run it directly.


At the moment there are no instructions and this thread is only meant for brainstorming basically. Before putting any further efforts into this and releasing any code, I would like to know what your overall thoughts are. However, anyone who is curious can download it builds from the link below [1].



[1]: https://thopiekar.eu:5443/Cura/cura-build-environment/pipelines

[2]: Which performance I define around: 2-Core CPU and >= 2GB RAM

Edited by thopiekar
  • Like 1

Share this post

Link to post
Share on other sites

@gr5: Good catch! Just posted the wrong URL. The correct one is: https://thopiekar.eu:5443/Cura/cura-build-environment/pipelines


@ahoeben: By "building" I meant creating a .{cura, um}plugin file. Also have a script lying around here called "CuraPluginOven", short CPO. It is a full command-line tool, so you can either pass a local or a remote git repo and it builds a plugin file. Also comes with come checks, whether all conventions are met. This could be added in theory, too.

By when writing the first post I had the situation in mind when you need additional (3rd party) Python modules (C-extensions).


Also as far as I remember, I managed to rebuild Numpy and SciPy in the early days (approx 3 months before). So Cura could be fully OpenSource *without* Intel MKL blobs.


In short: The bundle you can download is a rootstrap, which is fully usable with user-rights.

Had yesterday a talk at the booth in Hannover and got feedback, that people might be interested in this here.

Edited by thopiekar

Share this post

Link to post
Share on other sites

Yes, but more advanced. Checks whether the JSON is valid, whether there is a __init__.py in the root directory of the plugin, etc.

thopiekar@home:~$ python3 cpo.py -h
usage: cpo.py [-h] [--source SOURCE] [--exclude EXCLUDE]
              [--downloaddir DOWNLOADDIR] [--build BUILD]
              [--destination DESTINATION]
              [--variant {binary+source,binary,source}]
              [--compression {none,zlib,bzip2,lzma}] [--optimize {0,1,2}]
              [--gitargs GITARGS]

optional arguments:
  -h, --help            show this help message and exit
  --source SOURCE, --src SOURCE, -s SOURCE
                        Location of the source folder
  --exclude EXCLUDE, --excl EXCLUDE, -e EXCLUDE
                        Location of the source folder
                        Location of the download folder
  --build BUILD, --bld BUILD, -b BUILD
                        Location of the build folder
                        Location, where to place the resulting package                                                                                                                                                                                                         
  --variant {binary+source,binary,source}, --var {binary+source,binary,source}, -v {binary+source,binary,source}                                                                                                                                                               
                        Variant of build                                                                                                                                                                                                                                       
  --compression {none,zlib,bzip2,lzma}, --comp {none,zlib,bzip2,lzma}, -c {none,zlib,bzip2,lzma}                                                                                                                                                                               
                        Package compression                                                                                                                                                                                                                                    
  --optimize {0,1,2}, --opt {0,1,2}, -o {0,1,2}                                                                                                                                                                                                                                
                        Location of the build folder                                                                                                                                                                                                                           
  --gitargs GITARGS, -ga GITARGS                                                                                                                                                                                                                                               
                        git arguments

I'm close now to build a plugin package using GitLab on each commit I do. This way it is easy to distribute these packages to testers.


Share this post

Link to post
Share on other sites

Quick Update:

The minimal flavour can be built easily now. The development will flavour will include nano as command line editor and qtcreator for advanced designing and coding work.

Building it works on Ubuntu amd64 without issues, OSX should work too (?), but can test because of a leak of hardware and software.

Currently I'm trying to get it built for Windows amd64, but that really takes a lot of time whereas I only have 10min effectively recently.


Also will rename the repo soon and make it open when I made an upgrade to GitLab and I have no security concerns anymore.



Share this post

Link to post
Share on other sites

Anyone interested in helping out? Now I'm able to build everything needed for Cura and the Ultimaker dependencies (just like the old cura-build-environment, but with many dependencies directly included.


Additionally, I added socalled kickstart scripts to build everything directly in the source directory. Doing the same for Windows now, but most project only provide creapy buildscripts.

However, trying to get something together for Windows and, well, with macOS I can't help. Managed to keep in distance with these products so far, soothing to work with.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Our picks

    • Ultimaker Cura | a new interface
      We're not only trying to always make Ultimaker Cura better with the usual new features and improvements we build, but we're also trying to make it more pleasant to operate. The interface was the focus for the upcoming release, from which we would already like to present you the first glance. 
        • Like
      • 92 replies
    • "Back To The Future" using Generative Design & Investment Casting
      Designing for light-weight parts is becoming more important, and I’m a firm believer in the need to produce lighter weight, less over-engineered parts for the future. This is for sustainability reasons because we need to be using less raw materials and, in things like transportation, it impacts the energy usage of the product during it’s service life.
        • Like
      • 12 replies

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!