static int rangesOverlap(const char *AName, const char *AEVR, int AFlags,
const char *BName, const char *BEVR, int BFlags)
{
+ const char *aDepend = printDepend(AName, AEVR, AFlags);
+ const char *bDepend = printDepend(BName, BEVR, BFlags);
char *aEVR, *bEVR;
const char *aE, *aV, *aR, *bE, *bV, *bR;
int result;
sense = 0;
if (aE && *aE && bE && *bE)
sense = rpmvercmp(aE, bE);
- else if (aE && *aE)
- sense = 1;
- else if (bE && *bE)
+ else if (aE && *aE && atol(aE) > 0)
+ sense = 0; /* XXX legacy epoch-less requires/conflicts compatibility */
+ else if (bE && *bE && atol(bE) > 0)
sense = -1;
+
if (sense == 0) {
sense = rpmvercmp(aV, bV);
if (sense == 0 && aR && *aR && bR && *bR) {
}
exit:
+ rpmMessage(RPMMESS_DEBUG, _(" %s A %s\tB %s\n"),
+ (result ? "YES" : "NO "), aDepend, bDepend);
+ if (aDepend) xfree(aDepend);
+ if (bDepend) xfree(bDepend);
return result;
}
}
static /*@exposed@*/ struct availablePackage * alSatisfiesDepend(struct availableList * al,
- const char * keyName, const char * keyEVR, int keyFlags)
+ const char *keyType, const char *keyDepend,
+ const char * keyName, const char * keyEVR, int keyFlags)
{
struct availableIndexEntry needle, * match;
struct availablePackage *p;
pEVR = buildEVR(p->epoch, p->version, p->release);
rc = rangesOverlap(p->name, pEVR, pFlags, keyName, keyEVR, keyFlags);
free(pEVR);
+ if (keyType && keyDepend && rc)
+ rpmMessage(RPMMESS_DEBUG, _("%s: %s satisfied by added package.\n"), keyType, keyDepend);
} break;
case IET_PROVIDES:
for (i = 0; i < p->providesCount; i++) {
keyName, keyEVR, keyFlags);
if (rc) break;
}
+ if (keyType && keyDepend && rc)
+ rpmMessage(RPMMESS_DEBUG, _("%s: %s satisfied by added provide.\n"), keyType, keyDepend);
break;
case IET_FILE:
rc = 1;
+ if (keyType && keyDepend && rc)
+ rpmMessage(RPMMESS_DEBUG, _("%s: %s satisfied by added file list.\n"), keyType, keyDepend);
break;
}
/* 2 == error */
/* 1 == dependency not satisfied */
-static int unsatisfiedDepend(rpmTransactionSet rpmdep, const char * keyName,
- const char * keyEVR, int keyFlags,
- /*@out@*/struct availablePackage ** suggestion)
+static int unsatisfiedDepend(rpmTransactionSet rpmdep, const char *keyType,
+ const char * keyName, const char * keyEVR, int keyFlags,
+ /*@out@*/struct availablePackage ** suggestion)
{
const char *keyDepend = printDepend(keyName, keyEVR, keyFlags);
dbiIndexSet matches;
int rc = 0; /* assume dependency is satisfied */
int i;
- rpmMessage(RPMMESS_DEBUG, _("dependencies: looking for %s\n"), keyDepend);
-
if (suggestion) *suggestion = NULL;
{ const char * rcProvidesString;
(rcProvidesString = rpmGetVar(RPMVAR_PROVIDES))) {
i = strlen(keyName);
while ((start = strstr(rcProvidesString, keyName))) {
- if (isspace(start[i]) || start[i] == '\0' || start[i] == ',')
+ if (isspace(start[i]) || start[i] == '\0' || start[i] == ',') {
+ rpmMessage(RPMMESS_DEBUG, _("%s: %s satisfied by rpmrc provides.\n"), keyType, keyDepend);
goto exit;
+ }
rcProvidesString = start + 1;
}
}
}
- if (alSatisfiesDepend(&rpmdep->addedPackages, keyName, keyEVR, keyFlags))
+ if (alSatisfiesDepend(&rpmdep->addedPackages, keyType, keyDepend, keyName, keyEVR, keyFlags)) {
goto exit;
+ }
if (rpmdep->db != NULL) {
if (*keyName == '/') {
}
dbiFreeIndexRecord(matches);
- if (i < dbiIndexSetCount(matches)) goto exit;
+ if (i < dbiIndexSetCount(matches)) {
+ rpmMessage(RPMMESS_DEBUG, _("%s: %s satisfied by db file lists.\n"), keyType, keyDepend);
+ goto exit;
+ }
}
}
}
dbiFreeIndexRecord(matches);
- if (i < dbiIndexSetCount(matches)) goto exit;
+ if (i < dbiIndexSetCount(matches)) {
+ rpmMessage(RPMMESS_DEBUG, _("%s: %s satisfied by db provides.\n"), keyType, keyDepend);
+ goto exit;
+ }
}
if (!rpmdbFindPackage(rpmdep->db, keyName, &matches)) {
}
dbiFreeIndexRecord(matches);
- if (i < dbiIndexSetCount(matches)) goto exit;
+ if (i < dbiIndexSetCount(matches)) {
+ rpmMessage(RPMMESS_DEBUG, _("%s: %s satisfied by db packages.\n"), keyType, keyDepend);
+ goto exit;
+ }
}
/*
* version. Provide implicit rpm version in last ditch effort to
* satisfy an rpm dependency.
*/
- if (rangesOverlap(keyName, keyEVR, keyFlags, rpmName, rpmEVR, rpmFlags))
- goto exit;
+ if (!strcmp(keyName, rpmName)) {
+ i = rangesOverlap(keyName, keyEVR, keyFlags, rpmName, rpmEVR, rpmFlags);
+ if (i) {
+ rpmMessage(RPMMESS_DEBUG, _("%s: %s satisfied by rpmlib version.\n"), keyType, keyDepend);
+ goto exit;
+ }
+ }
}
if (suggestion)
- *suggestion = alSatisfiesDepend(&rpmdep->availablePackages, keyName,
- keyEVR, keyFlags);
+ *suggestion = alSatisfiesDepend(&rpmdep->availablePackages, NULL, NULL,
+ keyName, keyEVR, keyFlags);
+ rpmMessage(RPMMESS_DEBUG, _("%s: %s unsatisfied.\n"), keyType, keyDepend);
rc = 1; /* dependency is unsatisfied */
exit:
keyDepend = printDepend(requires[i], requiresEVR[i], requireFlags[i]);
- rc = unsatisfiedDepend(rpmdep, requires[i], requiresEVR[i],
+ rc = unsatisfiedDepend(rpmdep, " requires", requires[i], requiresEVR[i],
requireFlags[i], &suggestion);
switch (rc) {
keyDepend = printDepend(conflicts[i], conflictsEVR[i], conflictFlags[i]);
- rc = unsatisfiedDepend(rpmdep, conflicts[i], conflictsEVR[i],
+ rc = unsatisfiedDepend(rpmdep, "conflicts", conflicts[i], conflictsEVR[i],
conflictFlags[i], NULL);
/* 1 == unsatisfied, 0 == satsisfied */
for (i = 0; rc == 0 && i < requiresCount; i++) {
if (!(satisfyDepends || (requireFlags[i] & RPMSENSE_PREREQ)))
continue;
- match = alSatisfiesDepend(&rpmdep->addedPackages,
+ match = alSatisfiesDepend(&rpmdep->addedPackages, NULL, NULL,
requires[i], requiresEVR[i], requireFlags[i]);
/* broken dependencies don't concern us */
if (!match) continue;
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 1999-09-23 18:29-0400\n"
+"POT-Creation-Date: 1999-09-24 10:26-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid "error removing record %s into %s"
msgstr ""
-#: ../lib/depends.c:450
+#: ../lib/depends.c:365
+#, c-format
+msgid " %s A %s\tB %s\n"
+msgstr ""
+
+#: ../lib/depends.c:457
msgid "dbrecMatchesDepFlags() failed to read header"
msgstr ""
-#: ../lib/depends.c:721
+#: ../lib/depends.c:691
+#, c-format
+msgid "%s: %s satisfied by added package.\n"
+msgstr ""
+
+#: ../lib/depends.c:708
+#, c-format
+msgid "%s: %s satisfied by added provide.\n"
+msgstr ""
+
+#: ../lib/depends.c:713
+#, c-format
+msgid "%s: %s satisfied by added file list.\n"
+msgstr ""
+
+#: ../lib/depends.c:743
+#, c-format
+msgid "%s: %s satisfied by rpmrc provides.\n"
+msgstr ""
+
+#: ../lib/depends.c:771
+#, c-format
+msgid "%s: %s satisfied by db file lists.\n"
+msgstr ""
+
+#: ../lib/depends.c:793
+#, c-format
+msgid "%s: %s satisfied by db provides.\n"
+msgstr ""
+
+#: ../lib/depends.c:815
+#, c-format
+msgid "%s: %s satisfied by db packages.\n"
+msgstr ""
+
+#: ../lib/depends.c:828
+#, c-format
+msgid "%s: %s satisfied by rpmlib version.\n"
+msgstr ""
+
+#: ../lib/depends.c:838
#, c-format
-msgid "dependencies: looking for %s\n"
+msgid "%s: %s unsatisfied.\n"
msgstr ""
#. requirements are not satisfied.
-#: ../lib/depends.c:860
+#: ../lib/depends.c:889
#, c-format
msgid "package %s require not satisfied: %s\n"
msgstr ""
#. conflicts exist.
-#: ../lib/depends.c:922
+#: ../lib/depends.c:951
#, c-format
msgid "package %s conflicts: %s\n"
msgstr ""
-#: ../lib/depends.c:977 ../lib/depends.c:1281
+#: ../lib/depends.c:1006 ../lib/depends.c:1310
#, c-format
msgid "cannot read header at %d for dependency check"
msgstr ""
-#: ../lib/depends.c:1072
+#: ../lib/depends.c:1101
#, c-format
msgid "loop in prerequisite chain: %s"
msgstr ""
msgid "File %s is smaller than %d bytes"
msgstr ""
-#: ../lib/messages.c:51
+#: ../lib/messages.c:55
msgid "warning: "
msgstr ""
-#: ../lib/messages.c:57
+#: ../lib/messages.c:64
msgid "error: "
msgstr ""
-#: ../lib/messages.c:63
+#: ../lib/messages.c:73
msgid "fatal error: "
msgstr ""
-#: ../lib/messages.c:70
+#: ../lib/messages.c:82
msgid "internal error (rpm bug?): "
msgstr ""