summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMufeed Ali2021-03-21 21:50:46 +0530
committerMufeed Ali2021-03-21 21:50:46 +0530
commit115ae65a79271da2474ee64e762cb8f33dc3a4d8 (patch)
tree981cefdb2b1279485433c4d93b48733ae1e54cb5
parentd2715c0d29c9a7a19ef100865a85fb4388e7cad4 (diff)
downloadaur-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--.SRCINFO5
-rw-r--r--PKGBUILD5
-rw-r--r--keyring.patch60
3 files changed, 50 insertions, 20 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 877419266859..fa5ae1ba22dd 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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
diff --git a/PKGBUILD b/PKGBUILD
index 858fba7977f7..9ceec36faccf 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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