1name: openscad-nightly
2title: OpenSCAD-Nightly
3base: core
4version: "git"
5summary: OpenSCAD - Design. Code. Create.
6description: >
7    OpenSCAD is a software for creating solid 3D CAD models. It is free software and
8    available for Mac, Windows, Linux and other UNIX-like OS’es. Unlike most 3D design
9    software, the focus is not on the artistic aspects of 3D design but instead on the
10    CAD aspects. This might be the application you are looking for when you are planning
11    to create 3D designs for machine parts but is probably not what you are looking for
12    when you are more interested in creating computer-animated movies. OpenSCAD is not
13    an interactive modeller. Instead it is something like a 3D-compiler that reads in
14    a script file that describes your object and renders the 3D model from this script
15    file. This gives you, the designer, full control over the modelling process and
16    enables you to easily change any step in your process or make designs that are
17    defined by configurable parameters.
18
19    OpenSCAD provides two primary modelling techniques: Constructive solid geometry
20    (aka CSG) as well as extrusion of 2D outlines. We support reading, both 2D outlines
21    and 3D object from external design files, in a variety of file formats.
22
23    NOTE: This is the development snapshot, automatically built from the source
24    repository.
25confinement: strict
26icon: icons/openscad-nightly-256.png
27license: GPL-3.0
28grade: stable
29architectures:
30  - build-on: amd64
31    run-on: amd64
32  - build-on: i386
33    run-on: i386
34  - build-on: arm64
35    run-on: arm64
36  - build-on: s390x
37    run-on: s390x
38  - build-on: ppc64el
39    run-on: ppc64el
40
41apps:
42  openscad-nightly:
43    command: desktop-launch openscad-nightly
44    plugs: [desktop, x11, wayland, opengl, home, audio-playback, pulseaudio, network, removable-media, joystick]
45    desktop: usr/share/applications/openscad-nightly.desktop
46    environment:
47      DISABLE_WAYLAND: 1
48
49parts:
50  opencsg:
51    disable-parallel: true
52    source: http://www.opencsg.org/OpenCSG-1.4.2.tar.gz
53    plugin: qmake
54    override-build: |
55      ( cd src && qmake INSTALLDIR=/usr && sed -i 's,-isystem /usr/include,,' Makefile )
56      make -C src
57      make -C src INSTALL_ROOT="${SNAPCRAFT_PART_INSTALL}" install
58    qt-version: qt5
59    build-packages:
60    - freeglut3-dev
61    stage-packages:
62    - libglew1.13
63
64  cgal:
65    disable-parallel: true
66    source: https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.14.3/CGAL-4.14.3.tar.xz
67    plugin: cmake
68    configflags: [ "-DCMAKE_BUILD_TYPE=Release" ]
69    build-packages:
70    - cmake
71    - libboost-dev
72    - libboost-thread-dev
73    stage-packages:
74    - libboost-system1.58.0
75    - libboost-thread1.58.0
76
77  lib3mf:
78    source: https://github.com/3MFConsortium/lib3mf/archive/v1.8.1.tar.gz
79    plugin: cmake
80    configflags: [ "-DCMAKE_BUILD_TYPE=RelWithDebInfo", "-DLIB3MF_TESTS=OFF" ]
81    override-pull: |
82        snapcraftctl pull
83        sed -i -e 's/\<DESCRIPTION.*/LANGUAGES CXX)/' CMakeLists.txt
84        cat -n CMakeLists.txt
85    build-packages:
86    - uuid-dev
87
88  openscad-nightly:
89    disable-parallel: true
90    source: .
91    plugin: qmake
92    qt-version: qt5
93    after: [ desktop-qt5, opencsg, cgal, lib3mf ]
94    project-files: [ "openscad.pro" ]
95    options: [ "PREFIX=/usr", "CONFIG+=experimental", "CONFIG-=debug", "SUFFIX=-nightly" ]
96    build-packages:
97    - git
98    - qt5-default
99    - qtbase5-dev
100    - qtmultimedia5-dev
101    - libqt5opengl5-dev
102    - qt5-qmake
103    - libeigen3-dev
104    - libglib2.0-dev
105    - bison
106    - flex
107    - libglew-dev
108    - libgmp-dev
109    - libmpfr-dev
110    - python
111    - cmake
112    - libcairo2-dev
113    - libboost-dev
114    - libboost-regex-dev
115    - libboost-system-dev
116    - libboost-filesystem-dev
117    - libboost-program-options-dev
118    - libdouble-conversion-dev
119    - chrpath
120    - gettext
121    - pkg-config
122    - imagemagick
123    - libzip-dev
124    - libgl-dev
125    - libxml2-dev
126    - libharfbuzz-dev
127    - libfreetype6-dev
128    - libfontconfig1-dev
129    - libqt5scintilla2-dev
130    stage-packages:
131    - qtwayland5
132    - libasyncns0
133    - libboost-filesystem1.58.0
134    - libboost-regex1.58.0
135    - libboost-system1.58.0
136    - libboost-program-options1.58.0
137    - libdouble-conversion1v5
138    - libflac8
139    - libglew1.13
140    - libglu1-mesa
141    - libmpfr4
142    - libogg0
143    - libpulse0
144    - libqt5scintilla2-12v5
145    - libqt5multimedia5
146    - libqt5printsupport5
147    - libsndfile1
148    - libvorbis0a
149    - libvorbisenc2
150    - libzip4
151
152  # https://github.com/ubuntu/snapcraft-desktop-helpers/blob/master/snapcraft.yaml
153  desktop-qt5:
154    source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
155    source-subdir: qt
156    plugin: make
157    make-parameters: ["FLAVOR=qt5"]
158    build-packages:
159      - build-essential
160      - qtbase5-dev
161      - dpkg-dev
162    stage-packages:
163      - libxkbcommon0
164      - ttf-ubuntu-font-family
165      - dmz-cursor-theme
166      - light-themes
167      - adwaita-icon-theme
168      - gnome-themes-standard
169      - shared-mime-info
170      - libqt5gui5
171      - libgdk-pixbuf2.0-0
172      - libqt5svg5 # for loading icon themes which are svg
173      - try: [appmenu-qt5] # not available on core18
174      - locales-all
175      - xdg-user-dirs
176      - fcitx-frontend-qt5
177