diff options
author | Guillem Jover <guillem@debian.org> | 2019-01-19 01:54:11 +0100 |
---|---|---|
committer | Guillem Jover <guillem@debian.org> | 2019-01-21 13:21:27 +0100 |
commit | 61bbb77adb5f2c8d6a6d9bff18efa63a4cd2047f (patch) | |
tree | 297e80c623371cf9faf6b2388847afdcb8e7ae02 /src | |
parent | d4f6b91fda91803b62972c186a81cd07edf300e4 (diff) | |
download | dpkg-61bbb77adb5f2c8d6a6d9bff18efa63a4cd2047f.tar.gz |
dpkg: Switch dependtry from an int to an enum
Thiw makes the code way easier to understand as there no magic numbers
anymore. It will also make it trivial to add new levels in-between.
Diffstat (limited to 'src')
-rw-r--r-- | src/configure.c | 2 | ||||
-rw-r--r-- | src/main.h | 11 | ||||
-rw-r--r-- | src/packages.c | 22 | ||||
-rw-r--r-- | src/remove.c | 5 | ||||
-rw-r--r-- | src/trigproc.c | 4 |
5 files changed, 33 insertions, 11 deletions
diff --git a/src/configure.c b/src/configure.c index 0da9723f6..99fc81634 100644 --- a/src/configure.c +++ b/src/configure.c @@ -608,7 +608,7 @@ deferred_configure(struct pkginfo *pkg) vdew_nonambig)); } - if (dependtry > 1) + if (dependtry >= DEPEND_TRY_CYCLES) if (findbreakcycle(pkg)) sincenothing = 0; diff --git a/src/main.h b/src/main.h index d1b31b196..b0d08f9da 100644 --- a/src/main.h +++ b/src/main.h @@ -217,7 +217,16 @@ enum dep_check breakses_ok(struct pkginfo *pkg, struct varbuf *aemsgs); void deferred_remove(struct pkginfo *pkg); void deferred_configure(struct pkginfo *pkg); -extern int sincenothing, dependtry; +enum dependtry { + DEPEND_TRY_NORMAL = 1, + DEPEND_TRY_CYCLES = 2, + DEPEND_TRY_FORCE_DEPENDS_VERSION = 3, + DEPEND_TRY_FORCE_DEPENDS = 4, + DEPEND_TRY_LAST, +}; + +extern enum dependtry dependtry; +extern int sincenothing; /* from cleanup.c (most of these are declared in archives.h) */ diff --git a/src/packages.c b/src/packages.c index f735ec3e1..7ca003433 100644 --- a/src/packages.c +++ b/src/packages.c @@ -49,7 +49,8 @@ static struct pkginfo *progress_bytrigproc; static struct pkg_queue queue = PKG_QUEUE_INIT; -int sincenothing = 0, dependtry = 1; +enum dependtry dependtry = DEPEND_TRY_NORMAL; +int sincenothing = 0; void enqueue_package(struct pkginfo *pkg) @@ -231,7 +232,7 @@ void process_queue(void) { * trigger processing, w/o jumping into the next dependtry. */ dependtry++; sincenothing = 0; - if (dependtry > 4) + if (dependtry >= DEPEND_TRY_LAST) internerr("exceeded dependtry %d (sincenothing=%d; queue.length=%d)", dependtry, sincenothing, queue.length); } else if (sincenothing > queue.length * 2 + 2) { @@ -243,7 +244,7 @@ void process_queue(void) { } else { dependtry++; sincenothing = 0; - if (dependtry > 4) + if (dependtry >= DEPEND_TRY_LAST) internerr("exceeded dependtry %d (sincenothing=%d, queue.length=%d)", dependtry, sincenothing, queue.length); } @@ -349,6 +350,15 @@ enum found_status { FOUND_OK = 3, }; +static enum found_status +found_forced_on(enum dependtry dependtry_forced) +{ + if (dependtry >= dependtry_forced) + return FOUND_FORCED; + else + return FOUND_DEFER; +} + /* * Return values: * 0: cannot be satisfied. @@ -406,7 +416,7 @@ deppossi_ok_found(struct pkginfo *possdependee, struct pkginfo *requiredby, pkg_name(possdependee, pnaw_always), versiondescribe(&provider->version, vdew_nonambig)); if (fc_dependsversion) - thisf = (dependtry >= 3) ? FOUND_FORCED : FOUND_DEFER; + thisf = found_forced_on(DEPEND_TRY_FORCE_DEPENDS_VERSION); debug(dbg_depcondetail, " bad version"); goto unsuitable; } @@ -419,7 +429,7 @@ deppossi_ok_found(struct pkginfo *possdependee, struct pkginfo *requiredby, versiondescribe(&possdependee->installed.version, vdew_nonambig)); if (fc_dependsversion) - thisf = (dependtry >= 3) ? FOUND_FORCED : FOUND_DEFER; + thisf = found_forced_on(DEPEND_TRY_FORCE_DEPENDS_VERSION); debug(dbg_depcondetail, " bad version"); goto unsuitable; } @@ -688,7 +698,7 @@ dependencies_ok(struct pkginfo *pkg, struct pkginfo *removing, if (thisf > found) found= thisf; } if (fc_depends) { - thisf = (dependtry >= 4) ? FOUND_FORCED : FOUND_DEFER; + thisf = found_forced_on(DEPEND_TRY_FORCE_DEPENDS); if (thisf > found) { found = thisf; debug(dbg_depcondetail, " rescued by force-depends, found %d", found); diff --git a/src/remove.c b/src/remove.c index fb27341f6..75f9c0f86 100644 --- a/src/remove.c +++ b/src/remove.c @@ -71,7 +71,10 @@ static void checkforremoval(struct pkginfo *pkgtoremove, pkg_name(depender, pnaw_always)); continue; } - if (dependtry > 1) { if (findbreakcycle(pkgtoremove)) sincenothing= 0; } + if (dependtry >= DEPEND_TRY_CYCLES) { + if (findbreakcycle(pkgtoremove)) + sincenothing = 0; + } varbuf_snapshot(raemsgs, &raemsgs_state); ok= dependencies_ok(depender,pkgtoremove,raemsgs); if (ok == DEP_CHECK_HALT && diff --git a/src/trigproc.c b/src/trigproc.c index 14b0814a6..76d901176 100644 --- a/src/trigproc.c +++ b/src/trigproc.c @@ -390,7 +390,7 @@ trigproc(struct pkginfo *pkg, enum trigproc_type type) pkg_name(pkg, pnaw_always), pkg_status_name(pkg)); - if (dependtry > 1) { + if (dependtry >= DEPEND_TRY_CYCLES) { gaveup = check_trigger_cycle(pkg); if (gaveup == pkg) return; @@ -436,7 +436,7 @@ trigproc(struct pkginfo *pkg, enum trigproc_type type) varbuf_destroy(&depwhynot); } - if (dependtry <= 1) { + if (dependtry < DEPEND_TRY_CYCLES) { gaveup = check_trigger_cycle(pkg); if (gaveup == pkg) return; |