Create snap package
- Install snapcraft to your Ubuntu machine with sudo apt install snapcraft
- Create snap subdirectory in your project
- Execute snapcraft init to create snap/snapcraft.yaml initial file
- Example file:
name: myapp version: '1.0.0' summary: Short description of package. description: | Some more detailed multi-line description. confinement: devmode base: core20 grade: devel parts: myapp: plugin: nil source: . source-type: local build-packages: - fpc - lazarus - lcl - lcl-utils stage-packages: # Autodetected dependencies - libatk1.0-0 - libcairo2 - libdatrie1 - libfontconfig1 - libfreetype6 - libfribidi0 - libgdk-pixbuf2.0-0 - libgraphite2-3 - libgtk2.0-0 - libharfbuzz0b - libpango-1.0-0 - libpangocairo-1.0-0 - libpangoft2-1.0-0 - libpixman-1-0 - libpng16-16 - libthai0 - libx11-6 - libxau6 - libxcb-render0 - libxcb-shm0 - libxcb1 - libxcomposite1 - libxcursor1 - libxdamage1 - libxdmcp6 - libxext6 - libxfixes3 - libxi6 - libxinerama1 - libxrandr2 - libxrender1 override-build: | lazbuild --build-mode=Release myapp.lpi ROOT=/root/parts/myapp/install install -d -m 755 $ROOT/usr/share/myapp install -s -m 755 myapp $ROOT/usr/share/myapp install -d -m 755 $ROOT/usr/share/applications install -m 755 Install/deb/myapp.desktop $ROOT/usr/share/applications stage: - etc - lib - usr - usr/share/myapp - usr/share/applications/myapp.desktop apps: myapp: command: usr/share/myapp/myapp desktop: usr/share/applications/myapp.desktop plugs: - home - desktop
- See Snapcraft.yaml reference for full list of supported properties.
- Lazarus still uses old Gtk2 libraries. See GTK2 Applications page.
- Sample snapcraft.yaml files using lazbuild on Github
- Build snap using snapcraft command
- Install newly created snap with sudo snap install --dangerous --devmode myapp_1.0.0_amd64.snap
Publish your package in Snap Store
snapcraft push myapp.snap
snapcraft release myapp 1 edge
- Now your snap should be released and available on snapcraft.io store.
To get to console of snap virtual filesystem use:
snap run --shell myapp cd $SNAP
Type exit to leave snap environment. See Debugging snaps for more information.
Snap supports sound through audio-playback plug.
apps: myapp: plugs: - audio-playback
You can play wav and mp3 files from command line using play command. See Play Sound Multiplatform. Then you also need to add additional stage-packages to myapp part and setup sox player for pulseaudio:
parts: myapp: stage-packages: - sox - libsox-fmt-mp3 - libsox-fmt-pulse - libpulse0 environment: LD_LIBRARY_PATH: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pulseaudio PULSE_SERVER: unix:$XDG_RUNTIME_DIR/../pulse/native layout: /usr/lib/$SNAPCRAFT_ARCH_TRIPLET/sox: bind: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/sox
snapcraft.yaml file in non-standard subdirectory
Snapcraft normally expect snapcraft.yaml file in snap directory. If your project has packaging for multiple other packaging formats, then you need to use build workaround script. Such shell script can put into directory like myapp/install/snap/local as build.sh file.
#!/bin/bash ln -s install/snap ../../../snap pushd ../../.. snapcraft popd rm ../../../snap
Register app in snap store
- Login into https://snapcraft.io with your user account
- Register new snap package name https://snapcraft.io/account/register-snap
- Go to your newly registered package and fill all needed details https://snapcraft.io/snaps
Setup build on Launchpad
Snap packages can be built automatically on Launchpad. Open Create snap package link form your application branch page.