From 27473fba9c70257cf6e1ca741206377df1c05b32 Mon Sep 17 00:00:00 2001
From: SolveFinder <kwopleq@proton.me>
Date: Jul 17 2023 10:54:43 +0000
Subject: [PATCH 1/2] libre/ktorrent without qt5-webengine


Signed-off-by: SolveFinder <kwopleq@proton.me>

---

diff --git a/libre/ktorrent/PKGBUILD b/libre/ktorrent/PKGBUILD
new file mode 100644
index 0000000..5af3b8d
--- /dev/null
+++ b/libre/ktorrent/PKGBUILD
@@ -0,0 +1,42 @@
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Travis Willard <travisw@wmpub.ca>
+# Contributor: Georg Grabler <ggrabler@gmail.com>
+
+pkgname=ktorrent
+pkgver=23.04.3
+pkgrel=1
+pkgrel+=.parabola1
+pkgdesc='A powerful BitTorrent client for KDE'
+pkgdesc+=', without nonfree qt5-webengine support'
+arch=(x86_64)
+arch+=(i686 armv7h)
+url='https://apps.kde.org/ktorrent/'
+license=(GPL2)
+depends=(libktorrent kcmutils knotifyconfig kparts phonon-qt5)
+makedepends=(extra-cmake-modules kdoctools boost plasma-workspace kdnssd taglib syndication kplotting geoip)
+optdepends=('plasma-workspace: shutdown plugin' 'kdnssd: zeroconf plugin' 'taglib: mediaplayer plugin' 'geoip: info widget plugin'
+            'syndication: syndication plugin' 'kplotting: statistics plugin')
+groups=(kde-applications kde-network)
+source=(https://download.kde.org/stable/release-service/$pkgver/src/$pkgname-$pkgver.tar.xz{,.sig}
+       'libre.patch')
+sha256sums=('e507cb5b176b11bbe9293ee92cb026838498e1f8bfad5097c5fd13b8ec8e069f'
+            'SKIP'
+            'aa44d844895294799f5d52838af3dc314f2005a892b365beed76c5de6a374a10')
+validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7  # Albert Astals Cid <aacid@kde.org>
+              F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87  # Christoph Feck <cfeck@kde.org>
+              D81C0CB38EB725EF6691C385BB463350D6EF31EF) # Heiko Becker <heiko.becker@kde.org>
+
+prepare() {
+  cd "$pkgname-$pkgver"
+  patch -p1 -i ../libre.patch
+  cd ..
+}
+
+build() {
+  cmake -B build -S $pkgname-$pkgver
+  cmake --build build
+}
+
+package() {
+  DESTDIR="$pkgdir" cmake --install build
+}
diff --git a/libre/ktorrent/keys/pgp/CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7.asc b/libre/ktorrent/keys/pgp/CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7.asc
new file mode 100644
index 0000000..07050e6
--- /dev/null
+++ b/libre/ktorrent/keys/pgp/CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7.asc
@@ -0,0 +1,29 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFfNZD4BEACo0YKCUEhTY7v8VZVw3csAtnsRSFQ18G8xfYIt7mJEBrtfiGG4
+g28EjNeWQfN8wGIaAeRGl5nb7s9RRpxXStUu719jGX1Z9Sr8p/JOmBS5kdfAtYId
+9Cl3VsGRvf4Smg1ClrEv6tQ97j+d1FY8QfgW/GS46YBOEeOFVQRtfi7Yv9lZkiBF
+rzP0Nr7JV9u1GkBsFgNkVuYs/3RDYULItBwGFerduOyQCOt819QvHHSZkXqJWwNR
+OA6lc8gW36lKbDHoZ1jSkDnDV0bW0cX1/6WJSzWYdcPiceA1vj/VDg0Kr23SVQ1P
+yPvBirT7ToirQm6KrIiKHWLSg156ht8/K2C1Dgypf+YMseMbHQxVLrI2p4zpmxu3
+B2SrSj3ImM5FO0XGd1gxn/qywNVJDQBfcYnndksD2i/9/Es8I/F6OymBZl4HWBvx
+7ixm2JPXkmwVPEC/lJn3eCBb1fAaJSlroHtaAEteCWuE5/Mg/uYEh1UeAstP47N3
+P0B3l1E4Ccw1ne2/O1BdsnXeUaI3YVYz9aZkVlL7ywda3h/goRKxc1b18bmgu/Ed
+QmcTEMj29B3szMpetWNt1ZbaMJzfDw+z+SiQ3toOTUiqMuWq+l+JK0dVUzOvpGhG
+VHv5m9CtJFP671ivEc4it0hJRH5kdW9aNbeG0g9TxHQqQMJIpeLvRq5WKwARAQAB
+tCFBbGJlcnQgQXN0YWxzIENpZCA8YWFjaWRAa2RlLm9yZz6JAlQEEwEIAD4CGwMF
+CwkIBwIGFQgJCgsCBBYCAwECHgECF4AWIQTKJixsg95NL7KKMyo6ak24Oeqm1wUC
+XVO22wUJB2eGHQAKCRA6ak24Oeqm176hD/9QGNeGm0UX/X8PY6OManUuC5tl/RI2
+xo5ZbckxgSlNKgdhuE9hcrCOX74smdFKkk3EoxfXTa+YaarjXPq+ZfqgOiAk7TyU
+BjZiiRiqgg7rWvsUa0ifxP++oN8aV9bTT8+WvkU2nXEPLtvaoSTXn/zE1bv7dIhB
+13u2Du3PIVoUQBfcg9tyNkMQ+ifAQxjUghbPKeqsoql1bqY3v561SVg6D+IqeA5s
+3Q8xxve4wc8vFgwRsWm4ugFTGRHdLhAFc3LlFxmFDhPMNvQguPh9MifBGthFcHBd
+F2lUTdXffhiKpCQ3+qUP/YP0rurL+Ke8aBNBXlU68+2l0JrCjySnDj3a5RKWOgWk
+2SSadUia06GGHRBaTVs5AAOfL0vaIbeUMxSv7Itg8jkqH2/9PdoCDOFznNS1C6o+
+MxtPFmjZSGna5wSlyUobCrcRGL1mD5w4r16MKFICSVQM5ns617bm0tWS0qyAARid
+Ng3baLoStf64wyk5QUwfVj1huQzRmk7os3OOik44J+nF8BqloW0bAsJ3mFgJVqLW
+5U6GpbURaVsnxgnu4VuRedHg/JC1gy7JqNASq3vlExmBJDsNZjgPWKlnUezyxM0+
+UP3OGb4AVPm7yVUZWB3XuPyk2565rOWEFyXy1/oOrHAgijD5d4FPGe4sxy0WH88E
+z+nBNcht+1juVw==
+=t/sG
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/libre/ktorrent/keys/pgp/D81C0CB38EB725EF6691C385BB463350D6EF31EF.asc b/libre/ktorrent/keys/pgp/D81C0CB38EB725EF6691C385BB463350D6EF31EF.asc
new file mode 100644
index 0000000..ac8562f
--- /dev/null
+++ b/libre/ktorrent/keys/pgp/D81C0CB38EB725EF6691C385BB463350D6EF31EF.asc
@@ -0,0 +1,63 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=P9hR
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/libre/ktorrent/keys/pgp/F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87.asc b/libre/ktorrent/keys/pgp/F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87.asc
new file mode 100644
index 0000000..ea1f1fc
--- /dev/null
+++ b/libre/ktorrent/keys/pgp/F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87.asc
@@ -0,0 +1,30 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFlRpEYBCACecX3F5xzF6wzeXiuBAuHq74bVHON7I89U+ROloEWYUYMRNTz2
+l1BkNHWRTTqfmPO7LhMY6g4gOPeQVCwgTGVjI8bn6sJd3SFdeiRvvaFBpmn7SjBd
+s1rkKKJIjeMUl1w8dFnmf22V0PnhSSepmNwmd8RQnl1umCTSihDJydGxixw6ZNhr
+4tzbn+Rfadybli61H2hc6/JJHe91i+V1ltgkHwGcs6MUCqXgSL0dUIJs49gSrla0
+gkrcJYF5MWyGxKlajbCjkMCJtN+8bhEmpc4Oe8NZ33arEWnlyh1RVgi5p3RTNApY
+Pxctcg57ExczbKn9R8VLYmPJ7Di3gX0cmotrABEBAAG0HkNocmlzdG9waCBGZWNr
+IDxjZmVja0BrZGUub3JnPokBTgQTAQgAOBYhBPIydeS/EK/B32kUptvSzok+LRyH
+BQJZUaRGAhsDBQsJCAcCBhUICQoLAgQWAgMBAh4BAheAAAoJENvSzok+LRyHeWcH
+/A1E2d5UL2oHsrLIolIiWMmheRorcac+0Hgll1mMUQ5tfPH+LVzgrlMMG7g1Amky
+Hk1qZ5oszrXUg2H/28/cOF/WVlHgQcSGr7aQbHieUivPtZMua+lHUdILC3UV2l1V
+22Zz8HIDl4kxmK6EpoNIOK5Mo550S3e3AKYq5pa/FlckCV9/JoK9+thRCsoAAj3g
+oWwTx9RY5pmLPtklqyC5961Je7KHSIVqapJ/G5DX+yfOC1Psc+vIfyQVqnaefZPW
+dIxXQQhn46i6IRRimw94Gkwca+wslkimt/L/Z7ByZqBsXMyixSQPq+dtSO9CMgr0
+WxTX78wATkTGzh5oSwKCMga5AQ0EWVGkRgEIAMuUnfNfrdx8xn7Jjcm6MGkB/Yep
+XVysrlHxUUS6q7629JdSlVWnQo9GFO927GZClWI9rCGLQMfZZk/jfgKV/nkpLod3
+I51remOg7ohSkwRLAdwJ7xCuNrafhKntFh5/NxuaXxaVIY1muvZbTAsIRyks2jCE
+pUoK43Z8dr4/QPhBstssB8czDME1Tw4r7X+RwjFrQqDItFv6f0BIdEwR462khLEw
+vbXRN1nzs+6Y0foJbJCS3VDZC9scsrrMVMV+OEBF3DXp9ypSWsLnkuBPPIus6Y8G
+j7JvYUBtrUhKL5a7o5G3Te9YhwGgOKVqWlncs6ZLiOV6HnG0BO3xdPcn09cAEQEA
+AYkBNgQYAQgAIBYhBPIydeS/EK/B32kUptvSzok+LRyHBQJZUaRGAhsMAAoJENvS
+zok+LRyHaRMIAI5YaTfGeQDmR08I2LvztOEH/3YF63cNCP/Vp+WAtF/Kr8mMFpFS
+oTHJNMi7p964lHYTTPzPeQzLzV3ayiQjq+DHs6HFmYl73ukzlGGc7KDlyhugQjm6
+AqNtqqXAVykaixnFj8jf2WtQGl1hqpm8GhDRBmZycqMqne4tZokujhtpdC6suRvc
+AB0S+lRZUwrY05k6Nc1A8J8k/lxXXa9KzXNaqKsqppgBZoqKN3zS4146uEjvuLsh
+CarZ/6uUidvP0LBTR7HKye5A9Qdbjlg9qvtR7YF3hqy4g1PRNZWRlsQ1pkCdCTfN
+TA+HYUzK0ESVpY72lWvH49lNg+ufZ1bKvKI=
+=MZJ5
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/libre/ktorrent/libre.patch b/libre/ktorrent/libre.patch
new file mode 100644
index 0000000..9359af4
--- /dev/null
+++ b/libre/ktorrent/libre.patch
@@ -0,0 +1,33 @@
+From 4e021baa456b18cc7699145daed42d5aad961d58 Mon Sep 17 00:00:00 2001
+From: SolveFinder <kwopleq@proton.me>
+Date: Fri, 14 Jul 2023 14:50:31 +0300
+Subject: [PATCH] Removing WebEngineWidgets
+
+---
+ CMakeLists.txt | 10 +---------
+ 1 file changed, 1 insertion(+), 9 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8f0f9b0..c6762b6 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -123,15 +123,7 @@ if(KF5Syndication_FOUND)
+   set(HAVE_KF5Syndication 1)
+ endif()
+ 
+-find_package(Qt${QT_MAJOR_VERSION}WebEngineWidgets ${QT_MIN_VERSION})
+-set_package_properties(Qt${QT_MAJOR_VERSION}WebEngineWidgets
+-  PROPERTIES
+-  TYPE OPTIONAL
+-  PURPOSE "Required for KTorrent's search and syndication plugins"
+-)
+-if(Qt${QT_MAJOR_VERSION}WebEngineWidgets_FOUND)
+-  set(HAVE_Qt${QT_MAJOR_VERSION}WebEngineWidgets 1)
+-endif()
++set(HAVE_Qt${QT_MAJOR_VERSION}WebEngineWidgets 0)
+ 
+ find_package(KF5DNSSD ${KF5_MIN_VERSION})
+ set_package_properties(KF5DNSSD
+-- 
+2.41.0
+

From 3a26f99e72012951bbe4b1f0c4588dc70183da52 Mon Sep 17 00:00:00 2001
From: SolveFinder <kwopleq@proton.me>
Date: Jul 17 2023 11:46:13 +0000
Subject: [PATCH 2/2] libre/parabola-appstream-data without blacklisted packages


Signed-off-by: SolveFinder <kwopleq@proton.me>

---

diff --git a/libre/parabola-appstream-data/PKGBUILD b/libre/parabola-appstream-data/PKGBUILD
new file mode 100644
index 0000000..b510760
--- /dev/null
+++ b/libre/parabola-appstream-data/PKGBUILD
@@ -0,0 +1,51 @@
+# Maintainer (arch): Antonio Rojas <arojas@archlinux.org>
+
+_pkgname=archlinux-appstream-data
+pkgname=parabola-appstream-data
+pkgver=20230715
+pkgrel=1
+pkgrel+=.parabola1
+pkgdesc='Parabola application database for AppStream-based software centers'
+arch=(any)
+url='https://www.parabola.nu'
+license=(GPL)
+depends=()
+makedepends=(python)
+source=(https://git.parabola.nu/blacklist.git/plain/blacklist.txt
+        appstream_fix.py)
+noextract=()
+provides=(archlinux-appstream-data)
+for _repo in core extra multilib; do
+ source+=($_repo-$pkgver.xml.gz::https://sources.archlinux.org/other/packages/$_pkgname/$pkgver/$_repo/Components-x86_64.xml.gz
+          $_repo-icons-48x48-$pkgver.tar.gz::https://sources.archlinux.org/other/packages/$_pkgname/$pkgver/$_repo/icons-48x48.tar.gz
+          $_repo-icons-64x64-$pkgver.tar.gz::https://sources.archlinux.org/other/packages/$_pkgname/$pkgver/$_repo/icons-64x64.tar.gz
+          $_repo-icons-128x128-$pkgver.tar.gz::https://sources.archlinux.org/other/packages/$_pkgname/$pkgver/$_repo/icons-128x128.tar.gz)
+ noextract+=($_repo.xml.gz-$pkgver $_repo-icons-{48x48,64x64,128x128}-$pkgver.tar.gz)
+done
+sha256sums=('SKIP'
+            'b73f41e9823298a29e0ed3e05fd04ccec0606f02b667bc6a83469f57a24568ec'
+            'f32770b001d90903d45ac0ee05898e2c57d99bde560eac9ae2357b311300e681'
+            '7989bb311baa38ef545250282aa065d23281c46dfb8faabe4c653487bdbded5c'
+            '198c7aec4989984166174defe7b7eafda54d1f4ab4f83097e2d11ac1a9193fcf'
+            '7989bb311baa38ef545250282aa065d23281c46dfb8faabe4c653487bdbded5c'
+            'ae65e6fe2272545a91c04e3d59986ebe89cc984be19fc587d8e0afa1b1081cee'
+            '943b53894e561cc831d3e9b0ba323a56695befe1d0c2762be92953c54df6c2af'
+            '064f05c31e2eb7b2f5c54ee05a4701681860d35b5d376959775ff15382aca82a'
+            'c88cc504c99ddc31e34fe6af7a2c84a3ddf8d7573c6b8f4683e065b88c8621a4'
+            '9e364b5afec4390bc6aaa8e3ac385e49130b7224340f5c8cc57def89b5b85fa1'
+            '2e6562ca40e3c8f8fcd22c6a6b3e3aab513d3fa9f45ad36c74aa16a4466b61b1'
+            '4369ccd47698a55da9cfa441322b8b8250955683de4e6d496a568df4162e3625'
+            '242bacebf03766e06f6683c509a2f31e7e96e6878f1b2e936d0d2e16441e43a9')
+
+package() {
+  mkdir -p "$pkgdir"/usr/share/app-info/{icons/archlinux-arch-{core,extra,multilib}/{48x48,64x64,128x128},xmls}
+  for _repo in core extra multilib; do
+   tar -xzf $_repo-icons-48x48-$pkgver.tar.gz -C "$pkgdir"/usr/share/app-info/icons/archlinux-arch-$_repo/48x48
+   tar -xzf $_repo-icons-64x64-$pkgver.tar.gz -C "$pkgdir"/usr/share/app-info/icons/archlinux-arch-$_repo/64x64
+   tar -xzf $_repo-icons-128x128-$pkgver.tar.gz -C "$pkgdir"/usr/share/app-info/icons/archlinux-arch-$_repo/128x128
+   python appstream_fix.py $_repo-$pkgver.xml "$pkgdir"/usr/share/app-info/icons/archlinux-arch-$_repo
+   rm $_repo-$pkgver.xml.gz
+   gzip -k $_repo-$pkgver.xml
+   install -m644 $_repo-$pkgver.xml.gz "$pkgdir"/usr/share/app-info/xmls/$_repo.xml.gz
+  done
+}
diff --git a/libre/parabola-appstream-data/appstream_fix.py b/libre/parabola-appstream-data/appstream_fix.py
new file mode 100644
index 0000000..90c205a
--- /dev/null
+++ b/libre/parabola-appstream-data/appstream_fix.py
@@ -0,0 +1,59 @@
+from xml.etree import ElementTree
+from os import remove
+from sys import argv
+
+# With internet:
+# import requests
+# blacklist_url = 'https://git.parabola.nu/blacklist.git/plain/blacklist.txt'
+# blackdict = {i.split(':')[:2][0]: i.split(':')[:2][1] for i in requests.get(blacklist_url).text.split('\n') if len(i) > 1 and i.split(':')[:2][0] != i.split(':')[:2][1]}
+################
+
+# Without internet:
+blackdict = {i.split(':')[:2][0]: i.split(':')[:2][1] for i in open('blacklist.txt', 'r').read().split('\n') if len(i) > 1 and i.split(':')[:2][0] != i.split(':')[:2][1]}
+###################
+# blackdict: {'package': 'libre_replacement'}
+
+blacklist = [k for k, v in blackdict.items() if v == '']
+# blacklist: ['package_without_replacement1', ...]
+
+
+def fix(xml_path, icons_path):
+    tree = ElementTree.parse(xml_path)
+    xml = tree.getroot()
+    to_remove = {
+        'xml': [],
+        'icons': {
+            '48': [],
+            '64': [],
+            '128': []
+                  }
+    }
+    for c in xml.iter('component'):
+        pkg = c.find('pkgname').text
+        if pkg in blacklist:
+            for i in c.findall('icon'):
+                if i.get('type') == 'cached':
+                    to_remove['icons'][i.get('width')].append(i.text)
+            to_remove['xml'].append(c)
+        elif pkg in blackdict.keys():
+            c.find('pkgname').text = blackdict[pkg]
+            # This is not accurate, as description wasn't modified
+            print(f'Replaced "{pkg}" with "{blackdict[pkg]}"')
+        # else:
+        #     if c.find('project_license') is None:
+        #         print('Unknown license!', pkg)
+
+    for i in to_remove['xml']:
+        pkg = i.find('pkgname').text
+        xml.remove(i)
+        print(f'Removed blacklisted "{pkg}"')
+
+    for k, v in to_remove['icons'].items():
+        for i in set(v):
+            remove(f'{icons_path}/{k}x{k}/{i}')
+            print(f'Removed {k}x{k}/{i}')
+    # 'Unicode' reduces file size compared to default
+    tree.write(xml_path, encoding='Unicode')
+
+# Usage: python appstream_fix.py path_to_xml path_to_icon_dir
+fix(argv[1], argv[2])

