Skip to content

Commit

Permalink
build,snap,CI: create a snap package
Browse files Browse the repository at this point in the history
For now it is a single package that just runs the GTK frontend.
Further commits will separate this into different snap packages
for the server, and other frontends.
  • Loading branch information
knocte committed Apr 11, 2024
1 parent 75e581c commit 9d1541f
Show file tree
Hide file tree
Showing 4 changed files with 148 additions and 0 deletions.
22 changes: 22 additions & 0 deletions .github/workflows/auto-ci-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -339,3 +339,25 @@ jobs:
- name: build nix pkg
run: |
nix-build --expr 'let pkgs = import <nixpkgs> { }; in pkgs.callPackage ./nix/default.nix { gitBranch = "${{ github.ref_name }}"; }'
snap_build:
needs: build_Mono-6_8_0_105
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v1
- name: Install snap tools
run: |
sudo apt update --yes
./build/install-snapcraft.sh
- name: Generate snap package
run: |
sudo ./build/snap-build.sh
- name: Test snap package
run: |
sudo snap install --dangerous *.snap
smuxi --version
- uses: actions/upload-artifact@v3
name: Upload snap package as artifact
with:
name: snap
path: ./*.snap
14 changes: 14 additions & 0 deletions build/install-snapcraft.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -euxo pipefail

sudo apt install -y snapd
snap version

# we can switch to a newer channel when we're ready to upgrade
# to use SNAPCRAFT_STORE_CREDENTIALS instead of --with when pushing
sudo snap install --classic snapcraft

# workaround for GithubActionsCI+snapcraft, see https://forum.snapcraft.io/t/permissions-problem-using-snapcraft-in-azure-pipelines/13258/14?u=knocte
sudo chown root:root /

snapcraft --version
15 changes: 15 additions & 0 deletions build/snap-build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
set -euxo pipefail

# this is the equivalent of using the 'build-packages' (not stage-packages) section in snapcraft
# but as we're not using the 'make' plugin, we need to this manually now
DEBIAN_FRONTEND=noninteractive sudo apt install -y build-essential pkg-config cli-common-dev mono-devel libgtk2.0-cil-dev

# just in case this is a retry-run, we want to clean artifacts from previous try
rm -rf ./staging

./configure.sh --prefix=./staging "$@"
make
make install

snapcraft --destructive-mode
97 changes: 97 additions & 0 deletions snap/snapcraft.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: smuxi
base: core22 # the base snap is the execution environment for this snap
version: '1.2.1' # just for humans, typically '1.2+git' or '1.3.2'
summary: User-friendly and free IRC client for Linux/Windows/macOS based on GNOME/GTK+ # 79 char long summary
description: |
Smuxi is an irssi-inspired, flexible, user-friendly and
cross-platform IRC client for sophisticated users, targeting the GNOME desktop.
Smuxi is based on the client-server model: The core application (engine) can be
placed onto a server which is connected to the Internet around-the-clock; one
or more frontends then connect to the core. This way, the connection to IRC can
be kept up even when all frontends have been closed. The combination of screen
and irssi served as example for this architecture.
Smuxi also supports the regular single application mode. This behaves like a
typical IRC client; it doesn't need separate core management and utilizes a
local engine that is used by the local frontend client.
Smuxi's GNOME homepage: https://wiki.gnome.org/Apps/Smuxi
license: GPL-2.0
icon: logo.png

# grade must be 'stable' (without the quotes) to release into candidate/stable channels
grade: stable
confinement: strict

layout:
/usr/share/.mono:
symlink: $SNAP/etc/mono/certstore
/usr/lib/cli:
symlink: $SNAP/usr/lib/cli

apps:
smuxi:
command: bin/desktop-launch $SNAP/bin/smuxi-gtk
plugs:
- network
- desktop
- desktop-legacy
- wayland
- unity7

parts:
smuxi:
plugin: dump
source: ./staging
stage-packages:
- mono-devel
- libgtk2.0-cil

certs:
plugin: dump
source: /etc/mono
organize:
certstore: etc/mono/certstore

gtk2:
source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
source-subdir: gtk
plugin: make
make-parameters: ["FLAVOR=gtk2"]
build-packages:
- libgtk2.0-dev
stage-packages:
- libxkbcommon0 # XKB_CONFIG_ROOT
- dmz-cursor-theme
- light-themes
- adwaita-icon-theme
- gnome-themes-standard
- shared-mime-info
- libgtk2.0-0
- libgdk-pixbuf2.0-0
- libglib2.0-bin
- libgtk2.0-bin
- unity-gtk2-module
- libappindicator1
- locales-all
- ibus-gtk
- libibus-1.0-5

plugs:
gtk-2-engines:
interface: content
target: $SNAP/lib/gtk-2.0
default-provider: gtk2-common-themes
gtk-2-themes:
interface: content
target: $SNAP/data-dir/themes
default-provider: gtk-common-themes
icon-themes:
interface: content
target: $SNAP/data-dir/icons
default-provider: gtk-common-themes
sound-themes:
interface: content
target: $SNAP/data-dir/sounds
default-provider: gtk-common-themes

0 comments on commit 9d1541f

Please sign in to comment.