Jump to content
Cura Connect | Survey Read more... ×
Ultimaker Community of 3D Printing Experts
thopiekar

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
  --downloaddir DOWNLOADDIR, --dldir DOWNLOADDIR, -dd DOWNLOADDIR
                        Location of the download folder
  --build BUILD, --bld BUILD, -b BUILD
                        Location of the build folder
  --destination DESTINATION, --dest DESTINATION, -d DESTINATION
                        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.

 

Cheers!

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

    • Architect Design Contest | People
      The goal of this contest is to design a set of people figurines that could be used in such a project to make an area, office or mall seem populated. 
      Think of different types of people in different environments, like walking people, people standing still, working people, and both men and women.
       
      • 9 replies
    • Taking Advantage of DfAM
      This is a statement that’s often made about AM/3DP. I'll focus on the way DfAM can take advantage of some of the unique capabilities that AM and 3DP have to offer. I personally think that the use of AM/3DP for light-weighting is one of it’s most exciting possibilities and one that could play a key part in the sustainability of design and manufacturing in the future.
        • Like
      • 3 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!