From 47761d5aec3f27fcbb4acc7d0f4f1881cd0c0e6a Mon Sep 17 00:00:00 2001 From: Chantry Xavier Date: Sat, 5 Jan 2008 19:45:07 +0100 Subject: Move the fallback on providers from backend to frontend. This reverts commit e28973169d2e5eda8b64ebdda11ece0dc761d978. This code might fit better in the frontend than in the backend finally. Ref: http://www.archlinux.org/pipermail/pacman-dev/2007-November/010150.html I also changed it for fixing FS#8763 : if there is exactly one provider, pacman will pull it and print a warning. if there are several providers, pacman will list them and fail. It's up to the user to pick one. Add sync501 pactest to reflect that. --- lib/libalpm/sync.c | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-) (limited to 'lib') diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index ec4af9f4..50de07ef 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -301,16 +301,7 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy repo_found = 1; spkg = _alpm_db_get_pkgfromcache(db, targ); if(spkg == NULL) { - /* Search provides */ - _alpm_log(PM_LOG_DEBUG, "target '%s' not found in db '%s' -- looking for provisions\n", targ, db->treename); - alpm_list_t *p = _alpm_db_whatprovides(db, targ); - if(!p) { - RET_ERR(PM_ERR_PKG_NOT_FOUND, -1); - } - spkg = (pmpkg_t *) p->data; - _alpm_log(PM_LOG_DEBUG, "found '%s' as a provision for '%s'\n", - alpm_pkg_get_name(spkg), targ); - alpm_list_free(p); + RET_ERR(PM_ERR_PKG_NOT_FOUND, -1); } } } @@ -325,25 +316,10 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy spkg = _alpm_db_get_pkgfromcache(db, targ); } if(spkg == NULL) { - /* Search provides */ - _alpm_log(PM_LOG_DEBUG, "target '%s' not found -- looking for provisions\n", targ); - for(j = dbs_sync; j && !spkg; j = j->next) { - pmdb_t *db = j->data; - alpm_list_t *p = _alpm_db_whatprovides(db, targ); - if(p) { - spkg = (pmpkg_t *) p->data; - _alpm_log(PM_LOG_DEBUG, "found '%s' as a provision for '%s' in db '%s'\n", - alpm_pkg_get_name(spkg), targ, db->treename); - alpm_list_free(p); - } - } + RET_ERR(PM_ERR_PKG_NOT_FOUND, -1); } } - if(spkg == NULL) { - RET_ERR(PM_ERR_PKG_NOT_FOUND, -1); - } - if(_alpm_pkg_should_ignore(spkg)) { int resp; QUESTION(trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, spkg, NULL, NULL, &resp); -- cgit v1.2.3-70-g09d2