From d315c9019cf6e43dd7ecfe17e8d3896469396997 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Tue, 18 Jun 2013 16:24:48 +0300 Subject: upgrade: new option: --latest (-l) Select latest version of package (if it is not pinned), and print error if it cannot be installed due to other dependencies. Together with --available, it selects the latest package which is present at least in some repository. This also fixes few solver issues with ordering of package selection that got quite apparent with this flag. Namely, we cannot "lock" a package until it's reverse dependencies are locked or not all of the solver flags are propagated properly. --- src/commit.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src/commit.c') diff --git a/src/commit.c b/src/commit.c index 7136627fea..6a2580d3d2 100644 --- a/src/commit.c +++ b/src/commit.c @@ -370,13 +370,18 @@ static void print_pinning_errors(struct print_state *ps, struct apk_package *pkg if (pkg->ipkg != NULL) return; - if (pkg->repos & apk_db_get_pinning_mask_repos(db, APK_DEFAULT_PINNING_MASK | BIT(tag))) - return; - for (i = 0; i < db->num_repo_tags; i++) { - if (pkg->repos & db->repo_tags[i].allowed_repos) { - label_start(ps, "masked in:"); - apk_print_indented(&ps->i, db->repo_tags[i].tag); + if (!(pkg->repos & db->available_repos)) { + label_start(ps, "masked in:"); + apk_print_indented_fmt(&ps->i, "--no-network"); + } else { + if (pkg->repos & apk_db_get_pinning_mask_repos(db, APK_DEFAULT_PINNING_MASK | BIT(tag))) + return; + for (i = 0; i < db->num_repo_tags; i++) { + if (pkg->repos & db->repo_tags[i].allowed_repos) { + label_start(ps, "masked in:"); + apk_print_indented(&ps->i, db->repo_tags[i].tag); + } } } label_end(ps); -- cgit v1.2.3