summaryrefslogtreecommitdiffstats
path: root/libopkg
diff options
context:
space:
mode:
Diffstat (limited to 'libopkg')
-rw-r--r--libopkg/pkg_hash.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/libopkg/pkg_hash.c b/libopkg/pkg_hash.c
index 3259eef..ccd3197 100644
--- a/libopkg/pkg_hash.c
+++ b/libopkg/pkg_hash.c
@@ -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)