I want to Flatpak this VPN app. The installation steps and dependencies are listed in their wiki.
The Python requirements are also listed. So simply running flatpak-pip-generator --yaml --requirements-file=doc/requirements.txt
and then include that python3-requirements.yaml
file as a module is a piece of cake.
I’ve went through the basic tutorial and a more elaborate one from YouTube. But I’m still left with a few questions and hurdles that block me from completing the Flatpak.
1 Like
Sorry, as a new user I couldn’t create this post in one go, I can only include a limited amount of links, so here is part 2
When looking at the runtimes and what they bundle, it seems like I should need the GNOME runtime. Since that one seem to perfectly align with most of the dependencies listed such as; notify, secret, introspection, dbus (since the GNOME runtime builds upon the FreeDesktop runtime) and gobject.
So with that information I guess the first bit of the Flatpak file is:
id: org.eduvpn.www
runtime: org.gnome.Platform
runtime-version: 44
sdk: org.gnome.Sdk
command: eduvpn-gui
modules:
- python3-requirements.yaml
But what would be the next sensible step? Apparently the eduvpn-client[gui]
packages pulls in the required dependency dbus-python
, which fails with dbus-gmain| Run-time dependency dbus-1 found: NO (tried pkgconfig and cmake)
. So, I cannot just generate another list of pip requirements in a Flatpak format. With some DNF magic I think the file that’s needed is /usr/include/dbus-1.0/dbus/dbus-python.h
, which is provided by dbus-python-devel
and is also listed by the EduVPN project as a dependency.
How would I package something like this? dbus-python-devel
is a package provided by python3-dbus
, which seems to be the same pip package (dbus-python
). So I’m a bit stuck in this recursive loop, or am I?
Any help would be appreciated.
Ah, this did it of course.
id: org.eduvpn.www
runtime: org.gnome.Platform
runtime-version: '44'
sdk: org.gnome.Sdk
command: eduvpn-gui
finish-args:
- --device=dri
- --share=ipc
- --share=network
- --socket=wayland
- --socket=fallback-x11
# To store credentials
- --talk-name=org.freedesktop.secrets
- --talk-name=org.gtk.vfs.*
- --filesystem=xdg-run/gvfsd
# To check the Network Manager status on the host system
- --system-talk-name=org.freedesktop.NetworkManager
# The downloaded OpenVPN profile hardcodes the certificate path
# --filesystem=~/.cert/nm-openvpn:create
# For DBus daemon reconnector
- --system-talk-name=org.freedesktop.login1
modules:
- python3-requirements.yaml
- name: eduvpn-client
buildsystem: simple
build-commands:
- pip3 install --verbose --exists-action=i --no-index --find-links="file://${PWD}"
--prefix=${FLATPAK_DEST} "eduvpn-client" --no-build-isolation
sources:
- type: file
url: https://files.pythonhosted.org/packages/20/ba/2353b67996f18af557c6c8f2d9fb04db4dc2d1c487129fa1567317366c51/eduvpn_client-4.1.1-py2.py3-none-any.whl
sha256: e89f0d5ad19488a7923b4b2e5d7936371b6a72dc825fb8fbdba684ab46f0257b
- type: file
url: https://files.pythonhosted.org/packages/52/13/aba67ef397a97b6f671f5361bc14a5fbd68492cdec83f56ce2ad34737154/eduvpn_common-1.1.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
sha256: fa4d14d1602e4bfc89de0369ff423ca3fa7980eb628efa20d6ee1e0a45a4fa1c
Now I only have to solve some internal application errors. Which for now is in this piece of code. Apparently it doesn’t look in /app
?
flatpak run --command=sh --devel org.eduvpn.www
and ran it interactively.
F: Running '/usr/bin/bwrap --args 40 eduvpn-gui'
Traceback (most recent call last):
File "/app/bin/eduvpn-gui", line 5, in <module>
from eduvpn.ui.__main__ import eduvpn
File "/app/lib/python3.10/site-packages/eduvpn/ui/__main__.py", line 12, in <module>
from eduvpn.i18n import country
File "/app/lib/python3.10/site-packages/eduvpn/i18n.py", line 7, in <module>
from eduvpn.settings import COUNTRY, COUNTRY_MAP, LANGUAGE
File "/app/lib/python3.10/site-packages/eduvpn/settings.py", line 5, in <module>
prefix = get_prefix()
File "/app/lib/python3.10/site-packages/eduvpn/utils.py", line 67, in get_prefix
raise Exception("Can't find eduVPN installation")
Exception: Can't find eduVPN installation
The docs threw me off I guess. I shouldn’t run flatpak run
, but just launch the application from the GNOME shell. Then it seems to work fine.