Snapcraft wishlist shortlist

A couple of weeks back we kicked off a discussion to identify new and interesting things to snap. That thread sparked further discussions over on on OMG!Ubuntu!, in Telegram channels, on RocketChat and IRC. Thanks to everyone who took part in those threads, it was fascinating for us to see what people might come up with. There were some surprises in there.

We took a little time to process all the suggestions and come up with a shortlist of applications, listed below, which we agreed would be interesting or challenging to snap. We’re inviting our snapcraft community to work with upstreams listed below and help them snap their software, have them publish it in the store and get upstream documentation updated with snap install instructions

Next steps are straightforward. Pick one project from the list, and reply to this thread so everyone knows who’s working on which application. Using the docs as your guide, and these forums for discussion. Let us know if you get stuck, here on the forums. When you make progress, share that too, and let’s celebrate successes together!

6 Likes

I don’t mind giving some spare time to Snap up Calibre. It can’t be anymore of a pain than SuperTux Kart…still working on that one :confused:

3 Likes

I’ll take KeeWeb since I’ve tried to snap an Electron app before, hopefully will have more luck this time!

2 Likes

Awesome. Calibre is one of those apps which is a perfect fit for snaps. They’re super active upstream with a popular application that is the only one in its class. The version in various repos is outdated, and users want the latest version to support their hardware and get new features. The current install process is a bit fraught, and could be a lot easier.

Let us know if you need any help. Looks like it could be relatively straightforward.

1 Like

I know @Wimpress has quite a lot of experience in snapping electron apps, taking account of their idiosyncratic build systems. Do give him a shout if you get stuck there, he’s probably seen most issues before :slight_smile:

1 Like

For anyone interestede in picking up Gimp here is a snapcraft.yaml that was started and never finished, probably a useful starting point. Anyone interested in picking up Gimp?

name: gimp
version: '2.8.20'
summary: GNU Image Manipulation Program
description: |

grade: stable
confinement: devmode

apps:
  gimp:
    command: desktop-launch $SNAP/bin/gimp
    plugs: [unity7, opengl]

parts:
  gimp:
    after: [desktop-gtk2]
    plugin: autotools
    source: git://git.gnome.org/gimp
    source-tag: 'GIMP_2_8_20'
    build: |
      wget https://raw.githubusercontent.com/ostroproject/ostro-os/master/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/bump_Babl-GEGL_versions.patch
      patch -p 1 < bump_Babl-GEGL_versions.patch
      ./autogen.sh
      ./configure --prefix=$SNAPCRAFT_PART_INSTALL
      make
    install: |
      make install
    build-packages:
      - gettext
      - gnome-pkg-tools
      - gtk-doc-tools
      - intltool
      - iso-codes
      - libaa1-dev
      - libart-2.0-dev
      - libasound2-dev
      - libatk1.0-dev
      - libbabl-dev
      - libbz2-dev
      - libcairo2-dev
      - libcurl4-gnutls-dev
      - libdbus-glib-1-dev
      - libexif-dev
      - libfreetype6-dev
      - libfontconfig1-dev
      - libglib2.0-dev
      - libglib2.0-doc
      - libgegl-dev
      - libgtk2.0-dev
      - libgtk2.0-doc
      - libgdk-pixbuf2.0-dev
      - libgdk-pixbuf2.0-doc
      - libgs-dev
      - libgudev-1.0-dev
      - libice-dev
      - libjasper-dev
      - libjpeg-dev
      - liblcms2-dev
      - libmng-dev
      - libpango1.0-dev
      - libpng12-dev
      - libpoppler-glib-dev
      - librsvg2-dev
      - libsm-dev
      - libtiff5-dev
      - libwmf-dev
      - libx11-dev
      - libxcursor-dev
      - libxmu-dev
      - libxpm-dev
      - libxt-dev
      - zlib1g-dev
      - patchutils
      - python-dev
      - python-gtk2-dev
      - xsltproc
2 Likes

@bashfulrobot @lucyllewy Are you interested in working on anything in this initial list?

I can look at the GIMP. Though I’m about to head into the depths of Wales for two weeks so may be disconnected for the duration. I will try to work on it if I can get the 'net to work up in the back of beyond :-). Watch this space for a definite yes I’m working come Saturday.

3 Likes

Which dev package has qtextengine_p.h in it. I seem to be having trouble finding it.

I used http://packages.ubuntu.com/ to find it. Apparently qtbase5-private-dev is the one.

1 Like

@Wimpress - I could have a go at mumble. Pretty green, but will take a swing of the bat.

4 Likes

Hey guys, working on the snap for mumble. Best to post questions in this thread (utilizing git submodules), or start a new one?

Here is what I have so far. Any red flags?

name: mumble
version: '1.2.19'
summary: Mumble is an open source, low-latency, high quality voice chat software.
description: |
  Mumble is a voice chat application for groups. While it can be used for any kind of activity, it is primarily intended for gaming. It can be compared to programs like Ventrilo or TeamSpeak. People tend to simplify things, so when they talk about Mumble they either talk about "Mumble" the client application or about "Mumble & Murmur" the whole voice chat application suite.
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: devmode # use 'strict' once you have the right plugs and slots

apps:
  mumble:
    command: bin/mumble
parts:
  mumble:
    source: https://github.com/mumble-voip/mumble/archive/1.2.19.tar.gz
    plugin: qmake
    qt-version: qt4
    options:
      - "CONFIG+=no-server -recursive"
    project-files:
      - "main.pro"

Erg - my bad - referenced a source tarball vs the actual GIT repo. One step closer.
YAML:

name: mumble 
version: '1.2.19' 
summary: Mumble is an open source, low-latency, high quality voice chat software. 
description: |
  Mumble is a voice chat application for groups. While it can be used for any kind of activity, it is primarily intended for gaming. It can be compared to programs like Ventrilo or TeamSpeak. People tend to simplify things, so when they talk about Mumble they either talk about "Mumble" the client application or about "Mumble & Murmur" the whole voice chat application suite.
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: devmode # use 'strict' once you have the right plugs and slots

apps:
  mumble:
    command: bin/mumble
parts:
  mumble:
    source: https://github.com/mumble-voip/mumble.git
    # See 'snapcraft plugins'
    plugin: qmake
    qt-version: qt5
    options:
      - "CONFIG+=no-server -recursive"
    project-files:
      - "main.pro"

Now When I’m running snapcraft prime I’m hitting:

make[2]: Entering directory '/home/dustin/snapper-carr/mumble/parts/mumble/build/src/mumble_proto'
/usr/bin/protoc --cpp_out=. -I. -I.. -I../../../src/src ../../../src/src/Mumble.proto
../../../src/src/Mumble.proto: Input is shadowed in the --proto_path by "../Mumble.proto".  Either use the latter file as your input or reorder the --proto_path so that the former file's location comes first.
Makefile.Release:171: recipe for target 'Mumble.pb.cc' failed

I’m having a hell of a time with the proto_path. I must be missing something here…

I have been tracking issues on my own GitHub page (for those who are curious on the status - but will report back here), and opening issues upstream with the Mumble dev as well.

Below source, can you put source-tag: 1.2.19 please?

This will mean that it’ll build from the Git repo snapshot when it was tagged for the 1.2.19 release. There isn’t standard practice for version number if you build from the live repository without source-tag, I usually call it master (you don’t have to use numbers for the snapcraft version tag) but some would call it 1.2.19-git (though I’m not sure that’s correct, in a way if you’re building from the Git repo snapshot at 1.2.19 that’s 1.2.19-git and you can’t call it 1.2.20-git because the next version could be 1.3 or 2).

Here’s my progress with the KeeWeb snapcraft.yaml. I have to use

install:
  grunt --force

to get it past some errors (which is bad), then I get ENOENT: no such file or directory, open '/home/adam/Ubuntu/SnappyPackages/KeeWeb-ManualSnap/snap/package.json' when trying to run KeeWeb and I don’t know where to go from there.

I suggest opening a new thread for questions. By all means link to it from here, but you’ll get more eyes if you do a new one.

Thanks for the feedback. I have modified as suggested.

name: mumble # you probably want to 'snapcraft register <name>'
version: '1.2.19-git' # just for humans, typically '1.2+git' or '1.3.2'
summary: Mumble is an open source, low-latency, high quality voice chat software. # 79 char long summary
description: |
  Mumble is a voice chat application for groups. While it can be used for any kind of activity, it is primarily intended for gaming. It can be compared to programs like Ventrilo or TeamSpeak. People tend to simplify things, so when they talk about Mumble they either talk about "Mumble" the client application or about "Mumble & Murmur" the whole voice chat application suite.
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: devmode # use 'strict' once you have the right plugs and slots

apps:
  mumble:
    command: bin/mumble
parts:
  mumble:
    source: https://github.com/mumble-voip/mumble.git
    source-tag: 1.2.19
    # See 'snapcraft plugins'
    plugin: qmake
    qt-version: qt5
    options:
      - "CONFIG+=no-server -recursive"
    project-files:
      - "main.pro"

With that being said - do people generally prefer to build from the GIT repo vs targeting say a source tarball over http (or the like)?

Noted. :slight_smile: With that being said, I’m going to move one of my previous questions out of this thread then.

Regards.

To me it just makes sense to use the git repo and then add a source-tag for releases more stable than edge and just build straight from the repo for edge builds (when you have a release out). Use a source-tag so you’re testing against a stable codebase before you have a release out.

1 Like

Thanks for the feedback. I appreciate it.