libpamac issueshttps://gitlab.manjaro.org/applications/libpamac/-/issues2022-01-14T18:19:20Zhttps://gitlab.manjaro.org/applications/libpamac/-/issues/11autogenerate API documentation2022-01-14T18:19:20ZVitor Lopesautogenerate API documentationI wonder if in the future would be possible to auto generate documentation in HTML, even if it is only for the Vala language, that would make it easier to consult it.I wonder if in the future would be possible to auto generate documentation in HTML, even if it is only for the Vala language, that would make it easier to consult it.https://gitlab.manjaro.org/applications/libpamac/-/issues/31Use less tmp folder if possible2023-07-13T12:47:32ZPhilip MüllerUse less tmp folder if possibleBased on #28 and #29 we found out that some actions called by pamac apps may create folder rights other than those for **root** on `/var/tmp/pamac`. Having normal user rights might be useful for building AUR packages, but database tasks ...Based on #28 and #29 we found out that some actions called by pamac apps may create folder rights other than those for **root** on `/var/tmp/pamac`. Having normal user rights might be useful for building AUR packages, but database tasks seem to run just fine when root permissions are given to those files. Hence I suggest to use `/var/lib/pamac` instead, similar as **pacman** does.https://gitlab.manjaro.org/applications/libpamac/-/issues/33Flatpak Runtime Support2023-08-10T18:10:33Zusername227Flatpak Runtime Support## Pamac --version
Pamac 11.6.0-2 - libpamac 1:11.6.0-1
### Variant in use
GUI
## Distribution
Arch
## Desktop environment
Cinnamon
## What's not working
Flatkpak support works fine. However, it doesn't seem to update the runtimes. ...## Pamac --version
Pamac 11.6.0-2 - libpamac 1:11.6.0-1
### Variant in use
GUI
## Distribution
Arch
## Desktop environment
Cinnamon
## What's not working
Flatkpak support works fine. However, it doesn't seem to update the runtimes. I have a flatpak installed (plex) and every so often it will stop starting properly. Running "flatpak update" will update the runtimes and then it will start again. If you could get pamac to update runtimes (such as nvidia drivers) with the app that would be most helpful.
## How to reproduce?
* Wait for app to get updated with new nvidia runtimes, and then update the app through plex. Runtimes are not updated.
* Step 2
## More information (optional)https://gitlab.manjaro.org/applications/libpamac/-/issues/34add function: search installed pkgs(flatpak and snap)2023-08-25T09:54:28Zphoepsilonixadd function: search installed pkgs(flatpak and snap)[search-installed-flatpak-snap.patch](/uploads/e403b1e706db931ec4295f0878f1afae/search-installed-flatpak-snap.patch)
```
From f71ee413ea63670d99b36c9ec363b93c13176e88 Mon Sep 17 00:00:00 2001
From: Masato TOYOSHIMA <phoepsilonix@phoepsi...[search-installed-flatpak-snap.patch](/uploads/e403b1e706db931ec4295f0878f1afae/search-installed-flatpak-snap.patch)
```
From f71ee413ea63670d99b36c9ec363b93c13176e88 Mon Sep 17 00:00:00 2001
From: Masato TOYOSHIMA <phoepsilonix@phoepsilonix.love>
Date: Sat, 5 Aug 2023 15:46:14 +0900
Subject: [PATCH] Include the flatpak,snap packages in the search for installed
packages.
---
src/database.vala | 22 +++++++++++++++++-----
src/flatpak_interface.vala | 1 +
src/flatpak_plugin.vala | 27 +++++++++++++++++++++++++++
src/snap_interface.vala | 1 +
src/snap_plugin.vala | 19 +++++++++++++++++++
5 files changed, 65 insertions(+), 5 deletions(-)
diff --git a/src/database.vala b/src/database.vala
index 088daa2..3205bc4 100644
--- a/src/database.vala
+++ b/src/database.vala
@@ -1126,12 +1126,24 @@ namespace Pamac {
return pkgs;
}
- public async GenericArray<unowned AlpmPackage> search_installed_pkgs_async (string search_string) {
+ public async GenericArray<unowned Package> search_installed_pkgs_async (string search_string) {
string search_string_down = search_string.down ();
- var pkgs = new GenericArray<unowned AlpmPackage> ();
+ var all_pkgs = new GenericArray<unowned Package> ();
+ var pkgs_alpm = new GenericArray<unowned AlpmPackage> ();
+ var pkgs_flatpak = new GenericArray<unowned FlatpakPackage> ();
+ var pkgs_snaps = new GenericArray<unowned SnapPackage> ();
try {
new Thread<int>.try ("search_installed_pkgs", () => {
- search_installed_pkgs_real (search_string_down, ref pkgs);
+ search_installed_pkgs_real (search_string_down, ref pkgs_alpm);
+ all_pkgs.extend(pkgs_alpm, null);
+ if (config.enable_flatpak) {
+ flatpak_plugin.search_installed_flatpaks(search_string_down, ref pkgs_flatpak);
+ all_pkgs.extend(pkgs_flatpak, null);
+ }
+ if (config.enable_snap) {
+ snap_plugin.search_installed_snaps(search_string_down, ref pkgs_snaps);
+ all_pkgs.extend(pkgs_snaps, null);
+ }
context.invoke (search_installed_pkgs_async.callback);
return 0;
});
@@ -1139,7 +1151,7 @@ namespace Pamac {
} catch (Error e) {
warning (e.message);
}
- return pkgs;
+ return all_pkgs;
}
void search_repos_pkgs_real (string search_string, ref GenericArray<unowned AlpmPackage> pkgs) {
diff --git a/src/flatpak_interface.vala b/src/flatpak_interface.vala
index c8c9f9a..0e49246 100644
--- a/src/flatpak_interface.vala
+++ b/src/flatpak_interface.vala
@@ -30,6 +30,7 @@ namespace Pamac {
public abstract void load_appstream_data ();
public abstract void get_remotes_names (ref GenericArray<unowned string> remotes_names);
public abstract void search_flatpaks (string search_string, ref GenericArray<unowned FlatpakPackage> pkgs);
+ public abstract void search_installed_flatpaks (string search_string, ref GenericArray<unowned FlatpakPackage> pkgs);
public abstract void search_uninstalled_flatpaks_sync (string[] search_terms, ref GenericArray<unowned FlatpakPackage> pkgs);
public abstract bool is_installed_flatpak (string name);
public abstract unowned FlatpakPackage? get_flatpak_by_app_id (string app_id);
diff --git a/src/flatpak_plugin.vala b/src/flatpak_plugin.vala
index 72afdf7..d37f1b5 100644
--- a/src/flatpak_plugin.vala
+++ b/src/flatpak_plugin.vala
@@ -638,6 +638,28 @@ namespace Pamac {
}
}
+ public void search_installed_flatpaks (string search_string, ref GenericArray<unowned FlatpakPackage> pkgs) {
+ lock (stores_table) {
+ foreach (unowned HashTable<unowned string, AppStream.Component> apps in stores_table) {
+ var iter = HashTableIter<unowned string, AppStream.Component> (apps);
+ unowned AppStream.Component app;
+ while (iter.next (null, out app)) {
+ string[] search_tokens = search_string.split (" ");
+ uint match_score = app.search_matches_all (search_tokens);
+ unowned AppStream.Bundle bundle = app.get_bundle (AppStream.BundleKind.FLATPAK);
+ unowned string bundle_id = bundle.get_id ();
+ string id = "%s".printf (bundle_id);
+ if (is_installed_flatpak(id) && (match_score > 0 || search_string in app.get_id ())) {
+ unowned FlatpakPackage? pkg = get_flatpak_from_app (app);
+ if (pkg != null) {
+ pkgs.add (pkg);
+ }
+ }
+ }
+ }
+ }
+ }
+
public void search_uninstalled_flatpaks_sync (string[] search_terms, ref GenericArray<unowned FlatpakPackage> pkgs) {
lock (stores_table) {
foreach (unowned HashTable<unowned string, AppStream.Component> apps in stores_table) {
diff --git a/src/snap_interface.vala b/src/snap_interface.vala
index 7d137f5..9182e78 100644
--- a/src/snap_interface.vala
+++ b/src/snap_interface.vala
@@ -28,6 +28,7 @@ namespace Pamac {
public signal void stop_downloading (string sender);
public abstract void search_snaps (string search_string, ref GenericArray<unowned SnapPackage> pkgs);
+ public abstract void search_installed_snaps (string search_string, ref GenericArray<unowned SnapPackage> pkgs);
public abstract void search_uninstalled_snaps_sync (string search_string, ref GenericArray<unowned SnapPackage> pkgs);
public abstract bool is_installed_snap (string name);
public abstract unowned SnapPackage? get_snap (string name);
diff --git a/src/snap_plugin.vala b/src/snap_plugin.vala
index 7dd6643..40ad155 100644
--- a/src/snap_plugin.vala
+++ b/src/snap_plugin.vala
@@ -289,6 +289,25 @@ namespace Pamac {
warning (e.message);
}
}
+
+ public void search_installed_snaps (string search_string, ref GenericArray<unowned SnapPackage> pkgs) {
+ try {
+ lock (search_snaps_cache) {
+ GenericArray<unowned Snapd.Snap>? found = search_snaps_cache.lookup (search_string);
+ if (found == null) {
+ found = client.find_sync (Snapd.FindFlags.NONE, search_string, null, null);
+ search_snaps_cache.insert (search_string, found);
+ }
+ foreach (unowned Snapd.Snap snap in found) {
+ if (snap.snap_type == Snapd.SnapType.APP && snap.install_date != null) {
+ pkgs.add (initialize_snap (snap));
+ }
+ }
+ }
+ } catch (Error e) {
+ warning (e.message);
+ }
+ }
public void search_uninstalled_snaps_sync (string search_string, ref GenericArray<unowned SnapPackage> pkgs) {
try {
--
2.41.0
```