1# SPDX-License-Identifier: GPL-2.0-or-later
2name: inkscape
3adopt-info: inkscape
4license: GPL-3.0
5confinement: strict
6grade: stable
7base: core20
8
9plugs:
10  dot-config-inkscape:
11    interface: personal-files
12    write: [ $HOME/.config/inkscape ]
13  gtk-3-themes:
14    interface: content
15    target: $SNAP/data-dir/themes
16    default-provider: gtk-common-themes
17  icon-themes:
18    interface: content
19    target: $SNAP/data-dir/icons
20    default-provider: gtk-common-themes
21
22slots:
23  inkscape-dbus:
24    interface: dbus
25    bus: session
26    name: org.inkscape.Inkscape
27
28assumes: [ command-chain ]
29
30parts:
31  inkscape:
32    plugin: cmake
33    source: .
34    cmake-parameters:
35      - '-DCMAKE_INSTALL_PREFIX='
36    build-packages:
37      - build-essential
38      - cmake
39      - g++
40      - intltool
41      - libart-2.0-dev
42      - libboost-all-dev
43      - libcdr-dev
44      - libdouble-conversion-dev
45      - libgc-dev
46      - libglib2.0-dev
47      - libgsl-dev
48      - libgspell-1-dev
49      - libgtk-3-dev
50      - libgtkmm-3.0-dev
51      - libharfbuzz-dev
52      - liblcms2-dev
53      - libmagick++-dev
54      - libpango1.0-dev
55      - libpoppler-glib-dev
56      - libpoppler-private-dev
57      - libpotrace-dev
58      - librevenge-dev
59      - libsigc++-2.0-dev
60      - libsoup2.4-dev
61      - libtool
62      - libvisio-dev
63      - libwpg-dev
64      - libxml-parser-perl
65      - libxml2-dev
66      - libxslt1-dev
67      - pkg-config
68      - zlib1g-dev
69    stage-packages:
70      - git # For master extension manager, remove before releasing
71      - libatkmm-1.6-1v5
72      - libboost-filesystem1.71.0
73      - libcairomm-1.0-1v5
74      - libcdr-0.1-1
75      - libdouble-conversion3
76      - libgc1c2
77      - libgdk-pixbuf2.0-0
78      - libglibmm-2.4-1v5
79      - libglib2.0-bin
80      - libgsl23
81      - libgslcblas0
82      - libgspell-1-2
83      - libgtkmm-3.0-1v5
84      - liblcms2-2
85      - libmagick++-6.q16-8
86      - libpangomm-1.4-1v5
87      - libpoppler-glib8
88      - libpotrace0
89      - librevenge-0.0-0
90      - libvisio-0.1-1
91      - libwpg-0.3-3
92      - libxslt1.1
93      - aspell
94      - imagemagick
95      - libimage-magick-perl
96      - libwmf-bin
97      - transfig
98      - libsvg-perl
99      - libxml-xql-perl
100      - python3-gi
101      - python3-gi-cairo
102    prime:
103      - -lib/inkscape/*.a
104    override-build: |
105      sed -i.bak -e 's|Icon=${INKSCAPE_ICONPATH}|Icon=${SNAP}/share/inkscape/branding/inkscape.svg|g' $SNAPCRAFT_PART_SRC/org.inkscape.Inkscape.desktop.template
106      snapcraftctl build
107      INKSCAPE_VERSION=`g++ -I${SNAPCRAFT_PART_SRC}/src ${SNAPCRAFT_PART_BUILD}/src/inkscape-version.cpp ${SNAPCRAFT_PROJECT_DIR}/snap/local/print-inkscape-version.cpp -o print-inkscape-version && ./print-inkscape-version`
108      echo "Inkscape Version: ${INKSCAPE_VERSION}"
109      snapcraftctl set-version "${INKSCAPE_VERSION}"
110    parse-info: [ share/metainfo/org.inkscape.Inkscape.appdata.xml ]
111  python-deps:
112    plugin: python
113    python-packages:
114      - lxml
115      - numpy
116      - pip
117      - pyserial
118      - scour
119      - virtualenv
120    stage-packages:
121      - pstoedit
122  snap-helpers:
123    plugin: dump
124    source: snap/local/scripts
125  desktop-helpers:
126    source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
127    source-subdir: gtk
128    plugin: make
129    make-parameters: ["FLAVOR=gtk3"]
130    build-packages:
131      - libgtk-3-dev
132    stage-packages:
133      - libxkbcommon0  # XKB_CONFIG_ROOT
134      - ttf-ubuntu-font-family
135      - dmz-cursor-theme
136      - light-themes
137      - adwaita-icon-theme
138      - gnome-themes-standard
139      - shared-mime-info
140      - libgtk-3-0
141      - libgtk2.0-0
142      - libgdk-pixbuf2.0-0
143      - libglib2.0-bin
144      - libgtk-3-bin
145      - unity-gtk3-module
146      - libappindicator3-1
147      - locales-all
148      - xdg-user-dirs
149      - ibus-gtk3
150      - libibus-1.0-5
151      - fcitx-frontend-gtk3
152
153apps:
154  inkscape:
155    command: bin/inkscape
156    command-chain: [ bin/desktop-launch, inkscape-variables, private-fontcache ]
157    plugs:
158      - desktop
159      - desktop-legacy
160      - gsettings
161      - wayland
162      - x11
163      - unity7
164      - dot-config-inkscape
165# TODO: Remove with portals
166      - home
167      - cups-control
168      - removable-media
169      - raw-usb # plotter support
170      - network # extension maanager
171    slots:
172      - inkscape-dbus
173    desktop: share/applications/org.inkscape.Inkscape.desktop
174    common-id: org.inkscape.Inkscape
175  viewer:
176    command: bin/inkview
177    command-chain: [ bin/desktop-launch, inkscape-variables, private-fontcache ]
178    plugs:
179      - desktop
180      - desktop-legacy
181      - gsettings
182      - wayland
183      - x11
184      - unity7
185      - dot-config-inkscape
186# TODO: Remove with portals
187      - home
188      - cups-control
189      - removable-media
190
191hooks:
192  configure:
193    plugs:
194      - desktop
195