-/* vim: sw=2 et cino=>4,n-2,{1s
- */
-
/*
* Copyright (c) 2009-2015, SUSE LLC
*
}
#if defined(ENABLE_SUSEREPO) || defined(ENABLE_RPMMD) || defined(ENABLE_DEBIAN) || defined(ENABLE_ARCHREPO)
-static int
+static size_t
strlen_comp(const char *str)
{
- size_t l = strlen(str);
- if (l > 3 && !strcmp(str + l - 3, ".gz"))
- return l - 3;
- if (l > 3 && !strcmp(str + l - 3, ".xz"))
- return l - 3;
- if (l > 4 && !strcmp(str + l - 4, ".bz2"))
- return l - 4;
- if (l > 5 && !strcmp(str + l - 4, ".lzma"))
- return l - 5;
- return l;
+ const char *suf = strrchr(str, '.');
+ return strlen(str) - (suf && solv_xfopen_iscompressed(suf) ? strlen(suf) : 0);
}
#endif
FILE *fp;
int r;
#if defined(ENABLE_SUSEREPO) || defined(ENABLE_RPMMD) || defined(ENABLE_DEBIAN) || defined(ENABLE_ARCHREPO)
- int l;
+ size_t l;
#endif
if (!strcmp(argv[i], "--withsrc"))
if (problemcount)
{
Id problem = 0;
- Solvable *s2;
status = 1;
printf("can't install %s:\n", pool_solvable2str(pool, s));
solver_allruleinfos(solv, probr, &rinfo);
for (k = 0; k < rinfo.count; k += 4)
{
- Id dep, source, target;
+ Id type, dep, source, target;
+ type = rinfo.elements[k];
source = rinfo.elements[k + 1];
target = rinfo.elements[k + 2];
dep = rinfo.elements[k + 3];
- switch (rinfo.elements[k])
+
+ /* special casing */
+ switch (type)
{
case SOLVER_RULE_DISTUPGRADE:
- break;
- case SOLVER_RULE_INFARCH:
- s = pool_id2solvable(pool, source);
- printf(" %s has inferior architecture\n", pool_solvable2str(pool, s));
- break;
- case SOLVER_RULE_UPDATE:
- s = pool_id2solvable(pool, source);
- printf(" %s can not be updated\n", pool_solvable2str(pool, s));
- break;
case SOLVER_RULE_JOB:
case SOLVER_RULE_JOB_PROVIDED_BY_SYSTEM:
case SOLVER_RULE_JOB_UNKNOWN_PACKAGE:
case SOLVER_RULE_JOB_UNSUPPORTED:
break;
- case SOLVER_RULE_RPM:
- printf(" some dependency problem\n");
- break;
- case SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP:
- printf(" nothing provides requested %s\n", pool_dep2str(pool, dep));
- break;
- case SOLVER_RULE_RPM_NOT_INSTALLABLE:
- s = pool_id2solvable(pool, source);
- printf(" package %s is not installable\n", pool_solvable2str(pool, s));
+ case SOLVER_RULE_UPDATE:
+ printf(" %s can not be updated\n", pool_solvid2str(pool, source));
break;
- case SOLVER_RULE_RPM_NOTHING_PROVIDES_DEP:
- s = pool_id2solvable(pool, source);
- printf(" nothing provides %s needed by %s\n", pool_dep2str(pool, dep), pool_solvable2str(pool, s));
+ case SOLVER_RULE_PKG_NOTHING_PROVIDES_DEP:
+ printf(" %s\n", solver_problemruleinfo2str(solv, type, source, target, dep));
if (ISRELDEP(dep))
{
Reldep *rd = GETRELDEP(pool, dep);
}
}
break;
- case SOLVER_RULE_RPM_SAME_NAME:
- s = pool_id2solvable(pool, source);
- s2 = pool_id2solvable(pool, target);
- printf(" cannot install both %s and %s\n", pool_solvable2str(pool, s), pool_solvable2str(pool, s2));
- break;
- case SOLVER_RULE_RPM_PACKAGE_CONFLICT:
- s = pool_id2solvable(pool, source);
- s2 = pool_id2solvable(pool, target);
- printf(" package %s conflicts with %s provided by %s\n", pool_solvable2str(pool, s), pool_dep2str(pool, dep), pool_solvable2str(pool, s2));
- break;
- case SOLVER_RULE_RPM_PACKAGE_OBSOLETES:
- s = pool_id2solvable(pool, source);
- s2 = pool_id2solvable(pool, target);
- printf(" package %s obsoletes %s provided by %s\n", pool_solvable2str(pool, s), pool_dep2str(pool, dep), pool_solvable2str(pool, s2));
- break;
- case SOLVER_RULE_RPM_PACKAGE_REQUIRES:
- s = pool_id2solvable(pool, source);
- printf(" package %s requires %s, but none of the providers can be installed\n", pool_solvable2str(pool, s), pool_dep2str(pool, dep));
- break;
- case SOLVER_RULE_RPM_SELF_CONFLICT:
- s = pool_id2solvable(pool, source);
- printf(" package %s conflicts with %s provided by itself\n", pool_solvable2str(pool, s), pool_dep2str(pool, dep));
+ default:
+ printf(" %s\n", solver_problemruleinfo2str(solv, type, source, target, dep));
break;
}
}