I'm attempting to learn something of snap desktop packaging by repackaging unity-tweak-tool as a snap. I am finding the docs to be less than stellar, but so far I've got a snapcraft.yaml file that looks like this:
name: unity-tweak-tool
version: 1
summary: configuration tool for the Unity desktop environment
description: |
Unity Tweak Tool is a settings manager for the Unity desktop.
It provides users with a fast, simple and easy-to-use interface
with which to access many useful and little known features and settings
of the desktop environment that one may want to configure.
apps:
unity-tweak-tool:
command: $SNAP/usr/bin/unity-tweak-tool
plugs: [unity7]
parts:
unity-tweak-tool:
plugin: python3
source: git://github.com/Seth-Johnson/unity-tweak-tool.git
source-type: git
build-packages:
- python3-distutils-extra
- python3-all
- python3-dbus
- python-dev
stage-packages:
- gir1.2-glib-2.0
- gir1.2-gtk-3.0
- python3-xdg
- python3-cairo
- unity-webapps-service
However when I run snapcraft snap
setup.py always fails because several python modules are missing:
Running setup.py install for unity-tweak-tool ... error
Complete output from command /home/sethj/projects/snappy-testing/parts/unity-tweak-tool/install/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-s6dwhgys-build/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-xxv1mi7p-record/install-record.txt --single-version-externally-managed --compile --home=/tmp/tmp2y5izah7:
ERROR: Python module values not found
ERROR: Python module apport not found
ERROR: Python module apport.hookutils not found
WARNING: syntax errors in notes/wizardry.py: Missing parentheses in call to 'print' (wizardry.py, line 9)
ERROR: Python module dbus not found
ERROR: Python module dbus.service not found
ERROR: Python module dbus.mainloop.glib not found
(full output here)
I admit I'm not 100% sure I doing this properly, but as far as I can tell it should be building the packages listed under build-packages, which satisfy the build requirements for unity-tweak-tool.
Where am I going wrong?
In the case of python you probably want some of those
build-packages
to bestage-packages
. The python plugin setsPYTHONPATH
to be within the snap which is why it's missing these packages (you have them installed on the host system instead).Byt the way, if this upstream had a proper
install_requires
insetup.py
these dependencies would have been taken care automatically for you.you can a find an explanation on how to get python to discover the GI repository here