From 12bdec38a376f787a8aa621c965b561387b445ce Mon Sep 17 00:00:00 2001 From: Timo Teräs Date: Fri, 24 Feb 2012 18:27:55 +0200 Subject: solver, dot: elementary provides fixes implementation is still not near finished, but now at least it can handle it to a minimum degree. many cases are not done right yet, though. ref #574. --- src/database.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/database.c') diff --git a/src/database.c b/src/database.c index ed8b8ee..ae6810b 100644 --- a/src/database.c +++ b/src/database.c @@ -518,9 +518,15 @@ riif_done: return; } +static inline void add_provider(struct apk_name *name, struct apk_provider p) +{ + *apk_provider_array_add(&name->providers) = p; +} + struct apk_package *apk_db_pkg_add(struct apk_database *db, struct apk_package *pkg) { struct apk_package *idb; + int i; if (pkg->license == NULL) pkg->license = apk_blob_atomize(APK_BLOB_NULL); @@ -529,8 +535,11 @@ struct apk_package *apk_db_pkg_add(struct apk_database *db, struct apk_package * if (idb == NULL) { idb = pkg; apk_hash_insert(&db->available.packages, pkg); - *apk_provider_array_add(&pkg->name->providers) = - APK_PROVIDER_FROM_PACKAGE(pkg); + add_provider(pkg->name, APK_PROVIDER_FROM_PACKAGE(pkg)); + for (i = 0; i < pkg->provides->num; i++) { + struct apk_dependency *dep = &pkg->provides->item[i]; + add_provider(dep->name, APK_PROVIDER_FROM_PROVIDES(pkg, dep)); + } apk_db_pkg_rdepends(db, pkg); } else { idb->repos |= pkg->repos; -- cgit v1.2.3-70-g09d2