diff options
Diffstat (limited to 'lib/libalpm')
-rw-r--r-- | lib/libalpm/deps.c | 54 | ||||
-rw-r--r-- | lib/libalpm/deps.h | 5 |
2 files changed, 27 insertions, 32 deletions
diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c index 1f1e637f..2c2637ac 100644 --- a/lib/libalpm/deps.c +++ b/lib/libalpm/deps.c @@ -43,7 +43,7 @@ void _alpm_dep_free(pmdepend_t *dep) FREE(dep); } -pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdepend_t *dep, +static pmdepmissing_t *depmiss_new(const char *target, pmdepend_t *dep, const char *causingpkg) { pmdepmissing_t *miss; @@ -67,6 +67,18 @@ void _alpm_depmiss_free(pmdepmissing_t *miss) FREE(miss); } +/* Does pkg1 depend on pkg2, ie. does pkg2 satisfy a dependency of pkg1? */ +static int _alpm_dep_edge(pmpkg_t *pkg1, pmpkg_t *pkg2) +{ + alpm_list_t *i; + for(i = alpm_pkg_get_depends(pkg1); i; i = i->next) { + if(_alpm_depcmp(pkg2, i->data)) { + return(1); + } + } + return(0); +} + /* Convert a list of pmpkg_t * to a graph structure, * with a edge for each dependency. * Returns a list of vertices (one vertex = one package) @@ -192,7 +204,7 @@ alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, int reverse) return(newtargs); } -pmpkg_t *_alpm_find_dep_satisfier(alpm_list_t *pkgs, pmdepend_t *dep) +static pmpkg_t *find_dep_satisfier(alpm_list_t *pkgs, pmdepend_t *dep) { alpm_list_t *i; @@ -214,7 +226,7 @@ pmpkg_t *_alpm_find_dep_satisfier(alpm_list_t *pkgs, pmdepend_t *dep) pmpkg_t SYMEXPORT *alpm_find_satisfier(alpm_list_t *pkgs, const char *depstring) { pmdepend_t *dep = _alpm_splitdep(depstring); - pmpkg_t *pkg = _alpm_find_dep_satisfier(pkgs, dep); + pmpkg_t *pkg = find_dep_satisfier(pkgs, dep); _alpm_dep_free(dep); return(pkg); } @@ -257,15 +269,15 @@ alpm_list_t SYMEXPORT *alpm_checkdeps(alpm_list_t *pkglist, int reversedeps, pmdepend_t *depend = j->data; /* 1. we check the upgrade list */ /* 2. we check database for untouched satisfying packages */ - if(!_alpm_find_dep_satisfier(upgrade, depend) && - !_alpm_find_dep_satisfier(dblist, depend)) { + if(!find_dep_satisfier(upgrade, depend) && + !find_dep_satisfier(dblist, depend)) { /* Unsatisfied dependency in the upgrade list */ pmdepmissing_t *miss; char *missdepstring = alpm_dep_compute_string(depend); _alpm_log(PM_LOG_DEBUG, "checkdeps: missing dependency '%s' for package '%s'\n", missdepstring, alpm_pkg_get_name(tp)); free(missdepstring); - miss = _alpm_depmiss_new(alpm_pkg_get_name(tp), depend, NULL); + miss = depmiss_new(alpm_pkg_get_name(tp), depend, NULL); baddeps = alpm_list_add(baddeps, miss); } } @@ -278,19 +290,19 @@ alpm_list_t SYMEXPORT *alpm_checkdeps(alpm_list_t *pkglist, int reversedeps, pmpkg_t *lp = i->data; for(j = alpm_pkg_get_depends(lp); j; j = j->next) { pmdepend_t *depend = j->data; - pmpkg_t *causingpkg = _alpm_find_dep_satisfier(modified, depend); + pmpkg_t *causingpkg = find_dep_satisfier(modified, depend); /* we won't break this depend, if it is already broken, we ignore it */ /* 1. check upgrade list for satisfiers */ /* 2. check dblist for satisfiers */ if(causingpkg && - !_alpm_find_dep_satisfier(upgrade, depend) && - !_alpm_find_dep_satisfier(dblist, depend)) { + !find_dep_satisfier(upgrade, depend) && + !find_dep_satisfier(dblist, depend)) { pmdepmissing_t *miss; char *missdepstring = alpm_dep_compute_string(depend); _alpm_log(PM_LOG_DEBUG, "checkdeps: transaction would break '%s' dependency of '%s'\n", missdepstring, alpm_pkg_get_name(lp)); free(missdepstring); - miss = _alpm_depmiss_new(lp->name, depend, alpm_pkg_get_name(causingpkg)); + miss = depmiss_new(lp->name, depend, alpm_pkg_get_name(causingpkg)); baddeps = alpm_list_add(baddeps, miss); } } @@ -538,7 +550,7 @@ void _alpm_recursedeps(pmdb_t *db, alpm_list_t *targs, int include_explicit) * an error code without prompting * @return the resolved package **/ -pmpkg_t *_alpm_resolvedep(pmdepend_t *dep, alpm_list_t *dbs, +static pmpkg_t *resolvedep(pmdepend_t *dep, alpm_list_t *dbs, alpm_list_t *excluding, int prompt) { alpm_list_t *i, *j; @@ -645,7 +657,7 @@ pmpkg_t SYMEXPORT *alpm_find_dbs_satisfier(alpm_list_t *dbs, const char *depstri dep = _alpm_splitdep(depstring); ASSERT(dep, return(NULL)); - pkg = _alpm_resolvedep(dep, dbs, NULL, 1); + pkg = resolvedep(dep, dbs, NULL, 1); _alpm_dep_free(dep); return(pkg); } @@ -705,16 +717,16 @@ int _alpm_resolvedeps(alpm_list_t *localpkgs, alpm_list_t *dbs_sync, pmpkg_t *pk pmdepend_t *missdep = alpm_miss_get_dep(miss); /* check if one of the packages in the [*packages] list already satisfies * this dependency */ - if(_alpm_find_dep_satisfier(*packages, missdep)) { + if(find_dep_satisfier(*packages, missdep)) { _alpm_depmiss_free(miss); continue; } /* check if one of the packages in the [preferred] list already satisfies * this dependency */ - pmpkg_t *spkg = _alpm_find_dep_satisfier(preferred, missdep); + pmpkg_t *spkg = find_dep_satisfier(preferred, missdep); if(!spkg) { /* find a satisfier package in the given repositories */ - spkg = _alpm_resolvedep(missdep, dbs_sync, *packages, 0); + spkg = resolvedep(missdep, dbs_sync, *packages, 0); } if(!spkg) { pm_errno = PM_ERR_UNSATISFIED_DEPS; @@ -747,18 +759,6 @@ int _alpm_resolvedeps(alpm_list_t *localpkgs, alpm_list_t *dbs_sync, pmpkg_t *pk return(ret); } -/* Does pkg1 depend on pkg2, ie. does pkg2 satisfy a dependency of pkg1? */ -int _alpm_dep_edge(pmpkg_t *pkg1, pmpkg_t *pkg2) -{ - alpm_list_t *i; - for(i = alpm_pkg_get_depends(pkg1); i; i = i->next) { - if(_alpm_depcmp_tolerant(pkg2, i->data)) { - return(1); - } - } - return(0); -} - const char SYMEXPORT *alpm_miss_get_target(const pmdepmissing_t *miss) { ALPM_LOG_FUNC; diff --git a/lib/libalpm/deps.h b/lib/libalpm/deps.h index 86070ab4..11ad2462 100644 --- a/lib/libalpm/deps.h +++ b/lib/libalpm/deps.h @@ -44,18 +44,13 @@ struct __pmdepmissing_t { void _alpm_dep_free(pmdepend_t *dep); pmdepend_t *_alpm_dep_dup(const pmdepend_t *dep); -pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdepend_t *dep, - const char *causinpkg); void _alpm_depmiss_free(pmdepmissing_t *miss); alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, int reverse); void _alpm_recursedeps(pmdb_t *db, alpm_list_t *targs, int include_explicit); -pmpkg_t *_alpm_resolvedep(pmdepend_t *dep, alpm_list_t *dbs, alpm_list_t *excluding, int prompt); int _alpm_resolvedeps(alpm_list_t *localpkgs, alpm_list_t *dbs_sync, pmpkg_t *pkg, alpm_list_t *preferred, alpm_list_t **packages, alpm_list_t *remove, alpm_list_t **data); -int _alpm_dep_edge(pmpkg_t *pkg1, pmpkg_t *pkg2); pmdepend_t *_alpm_splitdep(const char *depstring); -pmpkg_t *_alpm_find_dep_satisfier(alpm_list_t *pkgs, pmdepend_t *dep); int _alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep); int _alpm_depcmp_tolerant(pmpkg_t *pkg, pmdepend_t *dep); |