From: Michael Tremer Date: Wed, 23 Jun 2021 16:08:49 +0000 (+0000) Subject: db: Read userinstalled packages when loading database X-Git-Tag: 0.9.28~1191 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c9c03e6a54a74ac41a2052b56750bdec4cd0ed5d;p=pakfire.git db: Read userinstalled packages when loading database Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/db.c b/src/libpakfire/db.c index 9ef7b7d3c..779eb147b 100644 --- a/src/libpakfire/db.c +++ b/src/libpakfire/db.c @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -650,6 +651,16 @@ ssize_t pakfire_db_packages(struct pakfire_db* db) { return packages; } +static void pakfire_db_add_userinstalled(Pakfire pakfire, const char* name) { + Pool* pool = pakfire_get_solv_pool(pakfire); + + // Convert name to ID + Id id = pool_str2id(pool, name, 1); + + // Append it to pooljobs + queue_push2(&pool->pooljobs, SOLVER_USERINSTALLED|SOLVER_SOLVABLE_NAME, id); +} + static int pakfire_db_add_dependencies(struct pakfire_db* db, unsigned long id, PakfirePackage pkg) { sqlite3_stmt* stmt = NULL; int r = 1; @@ -1455,8 +1466,13 @@ static int pakfire_db_load_package(struct pakfire_db* db, PakfireRepo repo, sqli pakfire_package_set_install_time(pkg, install_time); } + // installed by user? + int userinstalled = sqlite3_column_int(stmt, 16); + if (userinstalled) + pakfire_db_add_userinstalled(db->pakfire, name); + // Files - const char* files = (const char*)sqlite3_column_text(stmt, 16); + const char* files = (const char*)sqlite3_column_text(stmt, 17); if (files) { r = pakfire_package_set_filelist_from_string(pkg, files); if (r) @@ -1469,15 +1485,15 @@ static int pakfire_db_load_package(struct pakfire_db* db, PakfireRepo repo, sqli unsigned int field; void (*func)(PakfirePackage pkg, const char* dep); } dependencies[] = { - { 17, pakfire_package_add_provides }, - { 18, pakfire_package_add_prerequires }, - { 10, pakfire_package_add_requires }, - { 20, pakfire_package_add_conflicts }, - { 21, pakfire_package_add_obsoletes }, - { 22, pakfire_package_add_recommends }, - { 23, pakfire_package_add_suggests }, - { 24, pakfire_package_add_supplements }, - { 25, pakfire_package_add_enhances }, + { 18, pakfire_package_add_provides }, + { 19, pakfire_package_add_prerequires }, + { 20, pakfire_package_add_requires }, + { 21, pakfire_package_add_conflicts }, + { 22, pakfire_package_add_obsoletes }, + { 23, pakfire_package_add_recommends }, + { 24, pakfire_package_add_suggests }, + { 25, pakfire_package_add_supplements }, + { 26, pakfire_package_add_enhances }, { 0, NULL }, }; @@ -1515,7 +1531,7 @@ int pakfire_db_load(struct pakfire_db* db, PakfireRepo repo) { "SELECT " "name, evr, arch, groups, filename, size, inst_size, hash1, license, summary, " "description, uuid, vendor, build_host, build_time, " - "strftime('%s', installed) AS installed, " + "strftime('%s', installed) AS installed, userinstalled, " "(" "SELECT group_concat(path, '\n') FROM files WHERE files.pkg = packages.id" ") AS files, "