Index: dev/snapcraft.yaml ================================================================== --- dev/snapcraft.yaml +++ dev/snapcraft.yaml @@ -1,11 +1,13 @@ # Terrible idea. Snap isn't very fit to harbour python desktop apps. # Bloats up the whole package to 65MB (from 450K). The pyz→zip roundtrip -# is also fairly redundant. +# is also fairly redundant. (But the pyz is more relocatable than using +# the plain deb / make install setup.) + name: streamtuner2 -version: 2.2.1+2020-05 +version: 2.2.2-rc1 summary: Directory browser for internet radio, audio and video streams description: | Streamtuner2 is a GUI for browsing internet radio directories, music collections, and video services - grouped by genres or categories. It runs your preferred audio player or streamripper @@ -14,19 +16,19 @@ This SNAP package is just for testing. The DEB or PYZ are significantly smaller and faster to install. icon: ./icon.png grade: stable base: core18 -confinement: strict +confinement: classic # `strict` wouldn't allow exec of audacious/vlc/etc., which kinda defeats the purpose of st2 + parts: - # pull in python2 + libs python: plugin: python python-version: python2 - python-packages: [requests,pyquery,lxml,six,urllib3,pillow] + python-packages: [requests,pyquery,lxml,six,"urllib3[secure]",pillow] after: [desktop-gtk2] stage-packages: - python-gtk2 # use prepared pyz in zip @@ -54,25 +56,37 @@ - build-essential - libgtk2.0-dev stage-packages: - libxkbcommon0 # XKB_CONFIG_ROOT - ttf-ubuntu-font-family - - dmz-cursor-theme + #- 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 - - locales-all + #- locales-all - libappindicator1 - xdg-user-dirs - ibus-gtk - libibus-1.0-5 + + # https://forum.snapcraft.io/t/simple-trick-to-reduce-size-and-startup-time-of-gnome-based-snaps/12006 + cleanup: + after: [ python, st2, desktop-gtk2 ] + plugin: nil + build-snaps: [ gnome-3-28-1804 ] + override-prime: | + set -eux + cd /snap/gnome-3-28-1804/current + find . -type f,l -exec rm -f $SNAPCRAFT_PRIME/{} \; + #cd $SNAPCRAFT_PRIME/usr/lib/locale + #find . -type f,l -exec rm -f $SNAPCRAFT_PRIME/{} \; apps: pyz: command: desktop-launch $SNAP/streamtuner2.pyz plugs: @@ -79,10 +93,13 @@ - x11 - home - network - desktop # needed for a lot of gtk3 and glib interaction with the host system - desktop-legacy # needed for accessibility tools IIRC + - gtk-2-engines + - gtk-2-themes + #- gnome-3-28-1804 plugs: gtk-2-engines: interface: content target: $SNAP/lib/gtk-2.0 @@ -97,5 +114,9 @@ default-provider: gtk-common-themes sound-themes: interface: content target: $SNAP/data-dir/sounds default-provider: gtk-common-themes +# gnome-3-28-1804: +# interface: content +# target: $SNAP/gnome-platform +# default-provider: gnome-3-28-1804 Index: st2.py ================================================================== --- st2.py +++ st2.py @@ -1,21 +1,22 @@ #!/usr/bin/env python -# encoding: UTF-8 +# encoding: utf-8 # api: python # type: application # title: streamtuner2 # description: Directory browser for internet radio, audio and video streams -# version: 2.2.1+2020-05 +# version: 2.2.2-rc1 # state: stable # author: Mario Salzer # license: Public Domain # url: http://freshcode.club/projects/streamtuner2 # config: # { type: env, name: HTTP_PROXY, description: proxy for HTTP access } # { type: env, name: XDG_CONFIG_HOME, description: relocates user .config subdirectory } # category: sound -# depends: pygtk | gi, threading, requests, pyquery, lxml +# depends: python (>= 2.7) | python3 (>= 3.2), python:pygtk | python:gobject, +# python:requests (>= 1.1), python:pyquery, python:pillow, python:xdg # alias: streamtuner2, main # id: st2 # pack: *.py, gtk3.xml.gz, bin, channels/__init__.py, bundle/*.py, CREDITS, help/index.page, # streamtuner2.desktop, README, help/streamtuner2.1=/usr/share/man/man1/, # NEWS=/usr/share/doc/streamtuner2/, icon.png=/usr/share/pixmaps/streamtuner2.png @@ -30,12 +31,12 @@ # Python, can be more easily extended and fixed. The mix of # JSON APIs, regex or PyQuery extraction simplifies collecting # station lists. # # Primarily radio stations are displayed, some channels however -# are music collections. Commercial and sign-up services are not -# an objective. +# are music collections or video platforms. Commercial and sign-up +# services are not an objective. # standard modules import sys import os