pkg_hash: don't suggest incompatible packages
[project/opkg-lede.git] / libopkg / pkg_hash.c
index 52c64ff137ba49f38d7bc31d0601f3037ad8a10d..6715ebd112da012c12cdc552d271b96bde0505c9 100644 (file)
@@ -20,6 +20,7 @@
 #include "hash_table.h"
 #include "pkg.h"
 #include "opkg_message.h"
+#include "pkg_depends.h"
 #include "pkg_vec.h"
 #include "pkg_hash.h"
 #include "parse_util.h"
@@ -376,10 +377,23 @@ pkg_t *pkg_hash_fetch_best_installation_candidate(abstract_pkg_t * apkg,
                                if ((arch_priority > 0)
                                    &&
                                    (!pkg_vec_contains(matching_pkgs, maybe))) {
-                                       max_count++;
-                                       abstract_pkg_vec_insert(matching_apkgs,
-                                                               maybe->parent);
-                                       pkg_vec_insert(matching_pkgs, maybe);
+                                       char **unresolved = NULL;
+                                       pkg_vec_t *depends = pkg_vec_alloc();
+                                       pkg_hash_fetch_unsatisfied_dependencies(maybe, depends,
+                                               &unresolved);
+
+                                       if (!unresolved) {
+                                               max_count++;
+                                               abstract_pkg_vec_insert(matching_apkgs,
+                                                                       maybe->parent);
+                                               pkg_vec_insert(matching_pkgs, maybe);
+                                       } else {
+                                               char **tmp = unresolved;
+                                               while (tmp)
+                                                       free(*(tmp++));
+                                               free(unresolved);
+                                       }
+                                       pkg_vec_free(depends);
                                }
                        }