/** * hif_db_get_dir_for_package: **/ static gchar * hif_db_get_dir_for_package(HifDb *db, HifPackage *package) { const gchar *pkgid; HifDbPrivate *priv = GET_PRIVATE(db); const gchar *instroot; #ifdef BUILDOPT_USE_DNF_YUMDB static const gchar *yumdb_dir = "/var/lib/dnf/yumdb"; #else static const gchar *yumdb_dir = "/var/lib/yum/yumdb"; #endif pkgid = hif_package_get_pkgid(package); if (pkgid == NULL) return NULL; instroot = hif_context_get_install_root(priv->context); if (g_strcmp0(instroot, "/") == 0) instroot = ""; return g_strdup_printf("%s%s/%c/%s-%s-%s-%s-%s", instroot, yumdb_dir, hif_package_get_name(package)[0], pkgid, hif_package_get_name(package), hif_package_get_version(package), hif_package_get_release(package), hif_package_get_arch(package)); }
/** * hif_package_get_delta_from_evr: * @pkg: a #HifPackage instance. * @from_evr: the EVR string of what's installed * * Gets the package delta for the package given an existing EVR. * * Returns: a #HifPackageDelta, or %NULL * * Since: 0.7.0 */ HifPackageDelta * hif_package_get_delta_from_evr(HifPackage *pkg, const char *from_evr) { Pool *pool = hif_package_get_pool(pkg); Solvable *s = get_solvable(pkg); HifPackageDelta *delta = NULL; Dataiterator di; const char *name = hif_package_get_name(pkg); dataiterator_init(&di, pool, s->repo, SOLVID_META, DELTA_PACKAGE_NAME, name, SEARCH_STRING); dataiterator_prepend_keyname(&di, REPOSITORY_DELTAINFO); while (dataiterator_step(&di)) { dataiterator_setpos_parent(&di); if (pool_lookup_id(pool, SOLVID_POS, DELTA_PACKAGE_EVR) != s->evr || pool_lookup_id(pool, SOLVID_POS, DELTA_PACKAGE_ARCH) != s->arch) continue; const char * base_evr = pool_id2str(pool, pool_lookup_id(pool, SOLVID_POS, DELTA_BASE_EVR)); if (strcmp(base_evr, from_evr)) continue; // we have the right delta info, set up HifPackageDelta *and break out: delta = hif_packagedelta_new(pool); break; } dataiterator_free(&di); return delta; }
/** * hif_package_get_package_id: * @pkg: a #HifPackage *instance. * * Gets the package-id as used by PackageKit. * * Returns: the package_id string, or %NULL, e.g. "hal;2:0.3.4;i386;installed:fedora" * * Since: 0.1.0 **/ const gchar * hif_package_get_package_id(HifPackage *pkg) { HifPackagePrivate *priv; const gchar *reponame; g_autofree gchar *reponame_tmp = NULL; priv = hif_package_get_priv(pkg); if (priv == NULL) return NULL; if (priv->package_id != NULL) goto out; /* calculate and cache */ reponame = hif_package_get_reponame(pkg); if (g_strcmp0(reponame, HY_SYSTEM_REPO_NAME) == 0) { /* origin data to munge into the package_id data field */ if (priv->origin != NULL) { reponame_tmp = g_strdup_printf("installed:%s", priv->origin); reponame = reponame_tmp; } else { reponame = "installed"; } } else if (g_strcmp0(reponame, HY_CMDLINE_REPO_NAME) == 0) { reponame = "local"; } priv->package_id = hif_package_id_build(hif_package_get_name(pkg), hif_package_get_evr(pkg), hif_package_get_arch(pkg), reponame); out: return priv->package_id; }
/** * hif_package_is_installonly: * @pkg: a #HifPackage *instance. * * Returns: %TRUE if the package can be installed more than once * * Since: 0.1.0 */ gboolean hif_package_is_installonly(HifPackage *pkg) { const gchar **installonly_pkgs; const gchar *pkg_name; guint i; installonly_pkgs = hif_context_get_installonly_pkgs(NULL); pkg_name = hif_package_get_name(pkg); for (i = 0; installonly_pkgs[i] != NULL; i++) { if (g_strcmp0(pkg_name, installonly_pkgs[i]) == 0) return TRUE; } return FALSE; }
/** * hif_package_is_downloaded: * @pkg: a #HifPackage *instance. * * Returns: %TRUE if the package is already downloaded * * Since: 0.1.0 **/ gboolean hif_package_is_downloaded(HifPackage *pkg) { const gchar *filename; if (hif_package_installed(pkg)) return FALSE; filename = hif_package_get_filename(pkg); if (filename == NULL) { g_warning("Failed to get cache filename for %s", hif_package_get_name(pkg)); return FALSE; } return g_file_test(filename, G_FILE_TEST_EXISTS); }
/** * hif_package_is_devel: * @pkg: a #HifPackage *instance. * * Returns: %TRUE if the package is a development package * * Since: 0.1.0 **/ gboolean hif_package_is_devel(HifPackage *pkg) { const gchar *name; name = hif_package_get_name(pkg); if (g_str_has_suffix(name, "-debuginfo")) return TRUE; if (g_str_has_suffix(name, "-devel")) return TRUE; if (g_str_has_suffix(name, "-static")) return TRUE; if (g_str_has_suffix(name, "-libs")) return TRUE; return FALSE; }