Jump to content
Ultimaker Community of 3D Printing Experts
  • Sign Up

CDK - CuraDevelopmentKit (unreleased)

Recommended Posts

Posted (edited) · CDK - CuraDevelopmentKit (unreleased)

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
Posted · CDK - CuraDevelopmentKit (unreleased)

Link doesn't work.  [edit - works now]


I have ubuntu and windows so building in either environment would be great.  Preferably ubuntu but most people will perfer windows of course.

Share this post

Link to post
Share on other sites
Posted · CDK - CuraDevelopmentKit (unreleased)

I am intrigued. What do you mean by "building" a plugin? Plugins are python classes that don't need building, right?

Share this post

Link to post
Share on other sites
Posted (edited) · CDK - CuraDevelopmentKit (unreleased)

@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
Posted · CDK - CuraDevelopmentKit (unreleased)

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
Posted · CDK - CuraDevelopmentKit (unreleased)

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
Posted · CDK - CuraDevelopmentKit (unreleased)

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

    • Talking additive | The 3D printing podcast
      Why should we be the only ones asking questions? Join us and ask Jabil all your questions on September 22nd 5pm CET
        • Like
      • 2 replies
    • Ultimaker masterclass: Optimizing your Ultimaker Cura workflow
      Save your seat for either broadcast on September 23.
      What will you learn?
      · Best practices for iterative print preparation and every lesson you should learn from each print
      · The right way to use per-object settings and when they are most useful
      · Easy-to-use resources for anyone who wants to develop their own printer definitions, plugins, or print profiles
      · How to optimize print profile settings and whether to “keep” or “discard” changes
      · When is the right time to export your drawing from CAD? (Based on Ultimaker Cura’s surprising power as 3D control software)
      · And a whole lot more tips and tricks!
      How can I join?
      This free masterclass will take place twice:
      1. 11am CEST (5pm SGT, 5am EDT)
      2. 5pm CEST (11am EDT, 8am PDT, 11pm SGT)
        • Like
      • 0 replies
    • Do you use 3D printing at work? Let us know
      It doesn't matter if you are using 1 Ultimaker or 10, there is inspiration in everything. We're looking for ...
      • 1 reply
  • Create New...