uint32_t TDNFLoadYumRepo( HySack hSack, HyRepo hRepo, int nFlags ) { uint32_t dwError = 0; if(!hSack || !hRepo) { dwError = ERROR_TDNF_INVALID_PARAMETER; BAIL_ON_TDNF_ERROR(dwError); } dwError = hy_sack_load_yum_repo(hSack, hRepo, nFlags); BAIL_ON_TDNF_HAWKEY_ERROR(dwError); cleanup: return dwError; error: if(hSack) { hy_sack_free(hSack); } goto cleanup; }
END_TEST START_TEST(test_load_yum_repo_err) { HySack sack = hy_sack_create(test_globals.tmpdir, NULL, NULL, HY_MAKE_CACHE_DIR); HyRepo repo = hy_repo_create("crabalocker"); hy_repo_set_string(repo, HY_REPO_MD_FN, "/non/existing"); fail_unless(hy_sack_load_yum_repo(sack, repo, 0) == HY_E_FAILED); fail_unless(hy_get_errno() == HY_E_IO); hy_repo_free(repo); hy_sack_free(sack); }
/** * hif_sack_add_source: */ gboolean hif_sack_add_source (HySack sack, HifSource *src, guint permissible_cache_age, HifSackAddFlags flags, HifState *state, GError **error) { gboolean ret = TRUE; GError *error_local = NULL; gint rc; HifState *state_local; int flags_hy = HY_BUILD_CACHE; /* set state */ ret = hif_state_set_steps (state, error, 5, /* check repo */ 95, /* load solv */ -1); if (!ret) return FALSE; /* check repo */ state_local = hif_state_get_child (state); ret = hif_source_check (src, permissible_cache_age, state_local, &error_local); if (!ret) { g_debug ("failed to check, attempting update: %s", error_local->message); g_clear_error (&error_local); hif_state_reset (state_local); ret = hif_source_update (src, HIF_SOURCE_UPDATE_FLAG_FORCE, state_local, &error_local); if (!ret) { if (g_error_matches (error_local, HIF_ERROR, HIF_ERROR_CANNOT_FETCH_SOURCE)) { g_warning ("Skipping refresh of %s: %s", hif_source_get_id (src), error_local->message); g_error_free (error_local); return TRUE; } g_propagate_error (error, error_local); return FALSE; } } /* done */ if (!hif_state_done (state, error)) return FALSE; /* only load what's required */ if ((flags & HIF_SACK_ADD_FLAG_FILELISTS) > 0) flags_hy |= HY_LOAD_FILELISTS; if ((flags & HIF_SACK_ADD_FLAG_UPDATEINFO) > 0) flags_hy |= HY_LOAD_UPDATEINFO; /* load solv */ g_debug ("Loading repo %s", hif_source_get_id (src)); hif_state_action_start (state, HIF_STATE_ACTION_LOADING_CACHE, NULL); rc = hy_sack_load_yum_repo (sack, hif_source_get_repo (src), flags_hy); if (rc == HY_E_FAILED) rc = hy_get_errno (); if (!hif_rc_to_gerror (rc, error)) { g_prefix_error (error, "Failed to load repo %s: ", hif_source_get_id (src)); return FALSE; } /* done */ return hif_state_done (state, error); }
int main(int argc, const char **argv) { HySack sack = hy_sack_create(NULL, NULL, NULL, HY_MAKE_CACHE_DIR); HyRepo repo; char *md_repo; char *md_primary_xml; char *md_filelists; char *md_repo_updates; char *md_primary_updates_xml; char *md_filelists_updates; int ret; if (read_repopaths(&md_repo, &md_primary_xml, &md_filelists, &md_repo_updates, &md_primary_updates_xml, &md_filelists_updates)) { fprintf(stderr, "This is hawkey testing hack, it needs a readable %s file " "containing the following paths on separate lines:\n" "<main repomd.xml path>\n" "<main primary.xml.gz path>\n" "<main filelist.xml.gz path>\n" "<updates repomd.xml path>\n" "<updates primary.xml.gz path>\n" "<updates filelists.xml.gz path>\n", CFG_FILE); return 1; } int load_flags = HY_BUILD_CACHE; /* rpmdb */ repo = hy_repo_create(HY_SYSTEM_REPO_NAME); hy_sack_load_system_repo(sack, NULL, load_flags); hy_repo_free(repo); if (need_filelists(argc, argv)) load_flags |= HY_LOAD_FILELISTS; /* Fedora repo */ repo = config_repo("Fedora", md_repo, md_primary_xml, md_filelists); ret = hy_sack_load_yum_repo(sack, repo, load_flags); assert(ret == 0); (void)ret; hy_repo_free(repo); /* Fedora updates repo */ repo = config_repo("updates", md_repo_updates, md_primary_updates_xml, md_filelists_updates); ret = hy_sack_load_yum_repo(sack, repo, load_flags); assert(ret == 0); (void)ret; hy_repo_free(repo); free(md_repo); free(md_primary_xml); free(md_filelists); free(md_repo_updates); free(md_primary_updates_xml); free(md_filelists_updates); hy_sack_set_installonly(sack, installonly); hy_sack_set_installonly_limit(sack, 3); if (argc == 2 && !strcmp(argv[1], "-o")) { obsoletes(sack); } else if (argc == 2) { search_and_print(sack, argv[1]); } else if (argc == 3 && !strcmp(argv[1], "-f")) { search_filter_files(sack, argv[2]); } else if (argc == 3 && !strcmp(argv[1], "-r")) { search_filter_repos(sack, argv[2]); } else if (argc == 3 && !strcmp(argv[1], "-u")) { updatables_query_name(sack, argv[2]); } else if (argc == 3 && !strcmp(argv[1], "-ul")) { update_local(sack, argv[2]); } else if (argc == 3 && !strcmp(argv[1], "-ur")) { update_remote(sack, argv[2]); } else if (argc == 3 && !strcmp(argv[1], "-e")) { erase(sack, argv[2]); } else if (argc == 3) { search_anded(sack, argv[1], argv[2]); } else if (argc == 4 && !strcmp(argv[1], "-p")) { search_provides(sack, argv[2], argv[3]); } hy_sack_free(sack); return 0; }