if (satisfier_entry_pkg != pkg &&
!is_pkg_in_pkg_vec(unsatisfied, satisfier_entry_pkg))
{
- pkg_vec_insert(unsatisfied, satisfier_entry_pkg);
pkg_hash_fetch_unsatisfied_dependencies(
satisfier_entry_pkg, unsatisfied, &newstuff);
+ pkg_vec_insert(unsatisfied, satisfier_entry_pkg);
the_lost = merge_unresolved(the_lost, newstuff);
if (newstuff)
free(newstuff);
return 0;
}
-int pkg_dependence_satisfied(depend_t * depend)
-{
- abstract_pkg_t *apkg = depend->pkg;
- abstract_pkg_vec_t *provider_apkgs = apkg->provided_by;
- int n_providers = provider_apkgs->len;
- abstract_pkg_t **apkgs = provider_apkgs->pkgs;
- int i;
- int n_pkgs;
- int j;
-
- for (i = 0; i < n_providers; i++) {
- abstract_pkg_t *papkg = apkgs[i];
- pkg_vec_t *pkg_vec = papkg->pkgs;
- if (pkg_vec) {
- n_pkgs = pkg_vec->len;
- for (j = 0; j < n_pkgs; j++) {
- pkg_t *pkg = pkg_vec->pkgs[j];
- if (version_constraints_satisfied(depend, pkg)) {
- if (pkg->state_status == SS_INSTALLED
- || pkg->state_status == SS_UNPACKED)
- return 1;
- }
- }
- }
- }
- return 0;
-}
-
static int is_pkg_in_pkg_vec(pkg_vec_t * vec, pkg_t * pkg)
{
int i;
provided_abpkg = ensure_abstract_pkg_by_name(item);
+ if (provided_abpkg->state_flag & SF_NEED_DETAIL) {
+ if (!(ab_pkg->state_flag & SF_NEED_DETAIL)) {
+ opkg_msg(DEBUG, "propagating provided abpkg flag to "
+ "provider abpkg %s\n", ab_pkg->name);
+ ab_pkg->state_flag |= SF_NEED_DETAIL;
+ }
+ }
+
if (!abstract_pkg_vec_contains(provided_abpkg->provided_by, ab_pkg))
abstract_pkg_vec_insert(provided_abpkg->provided_by, ab_pkg);