Hello everyone and Merry Christmas!
I just started my adventure in the world of snap development and I’m trying to convert one of the few apps that I use and are missing from the Snap Store. After reading through the starter documentation and the Docs section in general, I have a few things that aren’t quite clear.
First off, I should explain what Enpass is. It’s my password manager of choice, it’s closed source so it comes in precompiled DEB and RPM packages by default. You can find the installation info here.
So far, my snapcraft.yaml looks like this:
name: enpass
base: core18
version: '6.5.1.723'
summary: Unofficial Snap for the Enpass Password Manager
description: Offline Password Manager and Secure Vault. Saves and fill in all your passwords, cards and other details. Free for Mac, Windows and Linux.
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: classic # use 'strict' once you have the right plugs and slots
apps:
enpass:
command: opt/enpass/Enpass
parts:
enpass-deb:
plugin: dump
source: "https://apt.enpass.io/pool/main/e/enpass/enpass_$SNAPCRAFT_PROJECT_VERSION_amd64.deb"
source-type: deb
stage-packages:
- libxss1
- libcups2
- libfreetype6
- libpng16-16
- libgl1-mesa-glx
- libice6
- libsm6
- libx11-xcb1
- libxrender1
- libfontconfig1
- libgtk-3-0
- libpango-1.0-0
- libpulse0
- libxcb-glx0
- libxkbcommon-x11-0
- libxkbcommon0
However I do have a couple of problems that I am quite confused about:
-
Should I be starting off with the deb package, rpm package or anything else? The documentation on the plugins was a little unclear as I couldn’t originally figure out originally that I should be using
dump
, even though I had a deb file. Also, I’m thinking about automating this in the future, so I would like to know what’s the best way to track updates to the official repositories.
If there’s an example from another Snapcrafter’s project that’s also precompiled, that would be really helpful. The only one that I found was Discord but they have direct downloads on their website and I couldn’t figure out where the script was that tracked the changes. -
What are the differences between
classic
anddevmode
? I think I understand the differences outlined here but by that logicclassic
confinement should be more confined thandevmode
, correct? I’m asking since this is how my app looks indevmode
:
Where as inclassic
mode, the text is properly rendered.
There are other differences as well, such as the fact thatclassic
mode launches any links in its own Firefox profile whereasdevmode
uses the already existing one. -
Is it correct that I am including so many stage packages? I followed the automatic dependency resolution that I got after running
snapcraft
where it reported there were number of missingso
files, so I tracked each dependency down. Should I be usingplugs
instead?
There’s still lots more to do and I’m learning as I go so, please, if you have any feedback, I would love to hear it! I’m still a complete noob when it comes to packaging applications, so I might be missing something extremely obvious.
Thanks for reading through all my text! Any and all feedback would be appreciated.
-Chris