comparison flatpak/libervia_wrapper-dbus_keep.py @ 171:a213053a03be

flatpak: update files following names change + Python 3 update: - `build_manifest.py` has been fixed to work with recent SàT/Libervia - filenames/scripts have been udpated to reflect project name change - installation now uses `requirements.txt` when dev version is requested - there are now 3 types of commands wrapper: * `libervia_wrapper.py` uses `pb` bridge, starts backend before frontend, and stops it when frontend is stopped. It's used by `Libervia Desktop` (Cagou) * `libervia_wrapper-dbus.py` uses `dbus` bridge, starts backend before frontend, and stops it when frontend is stopped. It's used for `Libervia TUI` (Primitivus) * `libervia_wrapper-dbus.py` uses `dbus` bridge, starts backend if necessary and doesn't stop it (to avoid waiting for backend start next time). It's used by `Libervia CLI` (jp).
author Goffi <goffi@goffi.org>
date Tue, 30 Nov 2021 21:42:06 +0100
parents
children
comparison
equal deleted inserted replaced
170:e38a968cb873 171:a213053a03be
1 #!/usr/bin/env python3
2
3 """This script launch Libervia backend if it's not before running command, and keep it running afterwards"""
4
5 # We keep the backend running to avoid the backend launching cost each time the frontend is used
6
7 import os
8 import sys
9 import dbus
10 import subprocess
11 from sat.tools import config
12
13 command = "##COMMAND##"
14 const_INT_PREFIX = "org.libervia.LiberviaCLI"
15 const_OBJ_PATH = '/org/libervia/Libervia/bridge'
16
17 const_INT_PREFIX = config.getConfig(
18 config.parseMainConf(),
19 "",
20 "bridge_dbus_int_prefix",
21 "org.libervia.Libervia")
22
23 # we remove any path with "/home" from PYTHONPATH because we have
24 # "--filesystem=home" permission and packages in .local/lib/pythonX/site-packages may
25 # conflict with the ones from flatpak
26 clean_pythonpath = ':'.join(p for p in sys.path if p and not p.startswith('/home'))
27 os.environ['PYTHONPATH'] = clean_pythonpath
28 os.environ['PYTHONNOUSERSITE'] = '1'
29
30 try:
31 sessions_bus = dbus.SessionBus()
32 db_object = sessions_bus.get_object(const_INT_PREFIX,
33 const_OBJ_PATH)
34 except dbus.exceptions.DBusException as e:
35 if e._dbus_error_name != 'org.freedesktop.DBus.Error.ServiceUnknown':
36 raise e
37 # backend not found, we need to launch it
38 print("Launching Libervia backend")
39 subprocess.check_call("libervia-backend")
40
41 os.execlp(command, command, *sys.argv[1:])