Finding a provider which is has an incompatible arch should not prevent
authorgraham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>
Fri, 27 Nov 2009 05:32:37 +0000 (05:32 +0000)
committergraham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>
Fri, 27 Nov 2009 05:32:37 +0000 (05:32 +0000)
the installation of others which are compatible.

git-svn-id: http://opkg.googlecode.com/svn/trunk@396 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358

libopkg/pkg_hash.c

index 3259eef..ccd3197 100644 (file)
@@ -166,6 +166,7 @@ pkg_hash_fetch_best_installation_candidate(opkg_conf_t *conf,
      int i;
      int nprovides = 0;
      int nmatching = 0;
+     int wrong_arch_found = 0;
      pkg_vec_t *matching_pkgs;
      abstract_pkg_vec_t *matching_apkgs;
      abstract_pkg_vec_t *provided_apkg_vec;
@@ -253,14 +254,22 @@ pkg_hash_fetch_best_installation_candidate(opkg_conf_t *conf,
               }
 
                if (vec->len > 0 && matching_pkgs->len < 1)
-               {
-                 opkg_message (conf, OPKG_ERROR, "Packages were found, but none compatible with the architectures configured\n");
-                 if (err)
-                   *err = -1;
-               }
+                       wrong_arch_found = 1;
          }
      }
 
+     if (matching_pkgs->len < 1) {
+         if (wrong_arch_found)
+               opkg_message (conf, OPKG_ERROR, "Packages for %s found, but"
+                       " incompatible with the architectures configured\n",
+                       apkg->name);
+          pkg_vec_free(matching_pkgs);
+          abstract_pkg_vec_free(matching_apkgs);
+          abstract_pkg_vec_free(providers);
+         return NULL;
+     }
+
+
      if (matching_pkgs->len > 1)
          pkg_vec_sort(matching_pkgs, pkg_name_version_and_architecture_compare);
      if (matching_apkgs->len > 1)