diff options
author | Mufeed Ali | 2021-03-21 21:50:46 +0530 |
---|---|---|
committer | Mufeed Ali | 2021-03-21 21:50:46 +0530 |
commit | 115ae65a79271da2474ee64e762cb8f33dc3a4d8 (patch) | |
tree | 981cefdb2b1279485433c4d93b48733ae1e54cb5 | |
parent | d2715c0d29c9a7a19ef100865a85fb4388e7cad4 (diff) | |
download | aur-115ae65a79271da2474ee64e762cb8f33dc3a4d8.tar.gz |
Switch patch to upstream version
- Add secretservice optdepend
- Remove kwallet support
- Fix komga servers support as a result of above changes
-rw-r--r-- | .SRCINFO | 5 | ||||
-rw-r--r-- | PKGBUILD | 5 | ||||
-rw-r--r-- | keyring.patch | 60 |
3 files changed, 50 insertions, 20 deletions
@@ -1,7 +1,7 @@ pkgbase = komikku pkgdesc = Online/offline Manga reader for GNOME, built for the Librem 5 pkgver = 0.27.0 - pkgrel = 2 + pkgrel = 3 url = https://gitlab.com/valos/Komikku arch = any license = GPL3 @@ -25,10 +25,11 @@ pkgbase = komikku depends = python-unidecode depends = python-wheel depends = webkit2gtk + optdepends = org.freedesktop.secrets: store passwords safely source = https://gitlab.com/valos/Komikku/-/archive/v0.27.0/Komikku-v0.27.0.tar.gz source = keyring.patch sha256sums = d4ecd12d7fc3a6a3e5fde3ed03608ff48045c2e7425b66ef0fadf04941643da2 - sha256sums = 80721f96268b77c3b4a7ae4d782dcd9ba6cd8915f16e8ea92b6fc8a747f036b8 + sha256sums = 43ac878f5c1f0f42e3958b0470a1af062def0715c08f661b38a996c06aff32b5 pkgname = komikku @@ -4,7 +4,7 @@ pkgname=komikku _author=valos _gitname=Komikku pkgver=0.27.0 -pkgrel=2 +pkgrel=3 pkgdesc='Online/offline Manga reader for GNOME, built for the Librem 5' arch=(any) url=https://gitlab.com/valos/Komikku @@ -33,12 +33,13 @@ makedepends=( gobject-introspection meson ) +optdepends=('org.freedesktop.secrets: store passwords safely') source=( "https://gitlab.com/$_author/$_gitname/-/archive/v$pkgver/$_gitname-v$pkgver.tar.gz" "keyring.patch" ) sha256sums=('d4ecd12d7fc3a6a3e5fde3ed03608ff48045c2e7425b66ef0fadf04941643da2' - '80721f96268b77c3b4a7ae4d782dcd9ba6cd8915f16e8ea92b6fc8a747f036b8') + '43ac878f5c1f0f42e3958b0470a1af062def0715c08f661b38a996c06aff32b5') prepare() { cd $_gitname-v$pkgver diff --git a/keyring.patch b/keyring.patch index 032ea3dade0a..5f6d4855d3fb 100644 --- a/keyring.patch +++ b/keyring.patch @@ -1,40 +1,68 @@ diff --git a/komikku/utils.py b/komikku/utils.py -index 23b584c..c1042a2 100644 +index 23b584c..efbc9e5 100644 --- a/komikku/utils.py +++ b/komikku/utils.py -@@ -300,7 +300,12 @@ class KeyringHelper: +@@ -292,7 +292,7 @@ class KeyringHelper: + + @property + def has_recommended_backend(self): +- return not isinstance(self.keyring, keyring.backends.fail.Keyring) ++ return self.keyring is not None and not isinstance(self.keyring, keyring.backends.fail.Keyring) + + @property + def is_disabled(self): +@@ -300,7 +300,17 @@ class KeyringHelper: @property def keyring(self): - return keyring.get_keyring() -+ current_keyring = keyring.get_keyring() -+ if isinstance(current_keyring, keyring.backends.chainer.ChainerBackend): -+ # If several backends are available, use first (the one with the highest priority) -+ current_keyring = current_keyring.backends[0] ++ current_keyring_backend = keyring.get_keyring() ++ ++ if isinstance(current_keyring_backend, keyring.backends.chainer.ChainerBackend): ++ # Search SecretService backend ++ for backend in current_keyring_backend.backends: ++ if isinstance(backend, keyring.backends.SecretService.Keyring): ++ return backend ++ ++ return None + -+ return current_keyring ++ return current_keyring_backend def get(self, service): if self.is_disabled: -@@ -321,6 +326,8 @@ class KeyringHelper: - username = item.get_attributes().get('login') +@@ -322,6 +332,7 @@ class KeyringHelper: if username: credential = CustomCredential(username, item.get_secret().decode('utf-8'), item.get_attributes().get('address')) -+ elif isinstance(self.keyring, keyring.backends.kwallet.DBusKeyring): -+ credential = self.keyring.get_credential(f"komikku-{service}", None) else: ++ # Fallback on PlaintextKeyring credential = self.keyring.get_credential(service, None) -@@ -352,6 +359,8 @@ class KeyringHelper: - item.delete() + if credential is None or credential.username is None: +@@ -334,6 +345,15 @@ class KeyringHelper: + return + + if isinstance(self.keyring, keyring.backends.SecretService.Keyring): ++ # At this time, SecretService is the only backend that support a collection of items with arbitrary attributes ++ # Known working implementations are: ++ # - GNOME Keyring ++ # - KeePassXC Secret Service integration (tested, work well) ++ ++ # Freedesktop.org Secret Service specification was written by both GNOME and KDE projects together ++ # but it’s supported by the GNOME Keyring only ++ # ksecretservice (https://community.kde.org/KDE_Utils/ksecretsservice) exists but is unfinished and seems unmaintained ++ + collection = self.keyring.get_preferred_collection() + + label = f'{self.appid}: {username}@{service}' +@@ -353,6 +373,7 @@ class KeyringHelper: collection.create_item(label, attributes, password) -+ elif isinstance(self.keyring, keyring.backends.kwallet.DBusKeyring): -+ self.keyring.set_password(f"komikku-{service}", username, password) else: ++ # Fallback on PlaintextKeyring self.keyring.set_password(service, username, password, address) -@@ -364,6 +373,9 @@ class PlaintextKeyring(keyring.backend.KeyringBackend): + +@@ -364,6 +385,9 @@ class PlaintextKeyring(keyring.backend.KeyringBackend): priority = 1 |