{
case REL_ARCH:
if (s->arch != evr)
- return 0;
+ {
+ if (evr != ARCH_SRC || s->arch != ARCH_NOSRC)
+ return 0;
+ }
return pool_match_nevr(pool, s, name);
case REL_OR:
if (pool_match_nevr(pool, s, name))
* we have to iterate over the solvables as src packages do not
* provide anything, thus they are not indexed in our
* whatprovides hash */
- if (evr == ARCH_SRC)
+ if (evr == ARCH_SRC || evr == ARCH_NOSRC)
{
Solvable *s;
for (p = 1, s = pool->solvables + p; p < pool->nsolvables; p++, s++)
{
- if (s->arch != ARCH_SRC && s->arch != ARCH_NOSRC)
+ if (!s->repo)
+ continue;
+ if (s->arch != evr && s->arch != ARCH_NOSRC)
continue;
if (pool_match_nevr(pool, s, name))
queue_push(&plist, p);
return solvable_lookup_checksum(pool->solvables + entry, keyname, typep);
}
+const char *
+pool_lookup_deltalocation(Pool *pool, Id entry, unsigned int *medianrp)
+{
+ const char *loc;
+ if (medianrp)
+ *medianrp = 0;
+ if (entry != SOLVID_POS)
+ return 0;
+ loc = pool_lookup_str(pool, entry, DELTA_LOCATION_DIR);
+ loc = pool_tmpjoin(pool, loc, loc ? "/" : 0, pool_lookup_str(pool, entry, DELTA_LOCATION_NAME));
+ loc = pool_tmpappend(pool, loc, "-", pool_lookup_str(pool, entry, DELTA_LOCATION_EVR));
+ loc = pool_tmpappend(pool, loc, ".", pool_lookup_str(pool, entry, DELTA_LOCATION_SUFFIX));
+ return loc;
+}
+
void
pool_add_fileconflicts_deps(Pool *pool, Queue *conflicts)
{