/** * hif_package_is_gui: * @pkg: a #HifPackage *instance. * * Returns: %TRUE if the package is a GUI package * * Since: 0.1.0 **/ gboolean hif_package_is_gui(HifPackage *pkg) { gboolean ret = FALSE; gchar *tmp; gint idx; HyReldepList reldeplist; HyReldep reldep; int size; /* find if the package depends on GTK or KDE */ reldeplist = hif_package_get_requires(pkg); size = hy_reldeplist_count(reldeplist); for (idx = 0; idx < size && !ret; idx++) { reldep = hy_reldeplist_get_clone(reldeplist, idx); tmp = hy_reldep_str(reldep); if (g_strstr_len(tmp, -1, "libgtk") != NULL || g_strstr_len(tmp, -1, "libQt5Gui.so") != NULL || g_strstr_len(tmp, -1, "libQtGui.so") != NULL || g_strstr_len(tmp, -1, "libqt-mt.so") != NULL) { ret = TRUE; } free(tmp); hy_reldep_free(reldep); } hy_reldeplist_free(reldeplist); return ret; }
static PyObject * get_reldep(_PackageObject *self, void *closure) { HyReldepList (*func)(HyPackage) = (HyReldepList (*)(HyPackage))closure; HyReldepList reldeplist = func(self->package); assert(reldeplist); PyObject *list = reldeplist_to_pylist(reldeplist, self->sack); hy_reldeplist_free(reldeplist); return list; }
END_TEST START_TEST(test_get_more_requires) { HySack sack = test_globals.sack; HyPackage pkg = by_name(sack, "walrus"); HyReldepList reldeplist = hy_package_get_requires(pkg); fail_unless(hy_reldeplist_count(reldeplist) == 2); hy_reldeplist_free(reldeplist); hy_package_free(pkg); }
END_TEST START_TEST(test_get_requires) { HySack sack = test_globals.sack; HyPackage pkg = by_name(sack, "flying"); HyReldepList reldeplist = hy_package_get_requires(pkg); fail_unless(hy_reldeplist_count(reldeplist) == 1); HyReldep reldep = hy_reldeplist_get_clone(reldeplist, 0); char *depstr = hy_reldep_str(reldep); ck_assert_str_eq(depstr, "P-lib >= 3"); hy_free(depstr); hy_reldep_free(reldep); hy_reldeplist_free(reldeplist); hy_package_free(pkg); }
END_TEST START_TEST(test_query_reldep) { HySack sack = test_globals.sack; HyPackage flying = by_name(sack, "flying"); HyReldepList reldeplist = hy_package_get_requires(flying); HyReldep reldep = hy_reldeplist_get_clone(reldeplist, 0); HyQuery q = hy_query_create(test_globals.sack); fail_if(hy_query_filter_reldep(q, HY_PKG_PROVIDES, reldep)); fail_unless(query_count_results(q) == 3); hy_reldep_free(reldep); hy_reldeplist_free(reldeplist); hy_package_free(flying); hy_query_free(q); }
static void execute_print(HySack sack, HyQuery q, int show_obsoletes) { HyPackageList plist; plist = hy_query_run(q); const int count = hy_packagelist_count(plist); for (int i = 0; i < count; ++i) { HyPackage pkg = hy_packagelist_get(plist, i); char *nvra = hy_package_get_nevra(pkg); const char *reponame = hy_package_get_reponame(pkg); printf("found package: %s [%s]\n", nvra, reponame); if (strcmp(reponame, HY_SYSTEM_REPO_NAME) == 0) { int type; const unsigned char * hdrid = hy_package_get_hdr_chksum(pkg, &type); char *str = hy_chksum_str(hdrid, type); printf("\tsha1 header id: %s\n", str); hy_free(str); } if (show_obsoletes) { HyReldepList obsoletes = hy_package_get_obsoletes(pkg); HyQuery qobs = hy_query_create(sack); hy_query_filter(qobs, HY_PKG_REPONAME, HY_NEQ, HY_SYSTEM_REPO_NAME); hy_query_filter_reldep_in(qobs, HY_PKG_PROVIDES, obsoletes); HyPackageList olist = hy_query_run(qobs); const int ocount = hy_packagelist_count(olist); for (int j = 0; j < ocount; ++j) { HyPackage opkg = hy_packagelist_get(olist, j); char *onvra = hy_package_get_nevra(opkg); printf("obsoleting: %s\n", onvra); hy_free(onvra); } hy_packagelist_free(olist); hy_query_free(qobs); hy_reldeplist_free(obsoletes); } hy_free(nvra); } hy_packagelist_free(plist); }