}
else
{
+ int flags = REPO_USE_LOADING|REPO_EXTEND_SOLVABLES;
/* make sure repodata contains complete repo */
/* (this is how repodata_write saves it) */
repodata_extend_block(info, repo->start, repo->end - repo->start);
info->state = REPODATA_LOADING;
- /* no need for LOCALPOOL as pool already contains ids */
- repo_add_solv(repo, fp, REPO_USE_LOADING|REPO_EXTEND_SOLVABLES);
+ if (strcmp(repoext, "DL") != 0)
+ flags |= REPO_LOCALPOOL;
+ repo_add_solv(repo, fp, flags);
info->state = REPODATA_AVAILABLE; /* in case the load failed */
}
fclose(fp);
if ((fp = curlfopen(cinfo, filename, iscompressed(filename), filechksum, filechksumtype, 0)) == 0)
return 0;
if (!strcmp(ext, "FL"))
- r = repo_add_rpmmd(repo, fp, ext, REPO_USE_LOADING|REPO_EXTEND_SOLVABLES);
+ r = repo_add_rpmmd(repo, fp, ext, REPO_USE_LOADING|REPO_EXTEND_SOLVABLES|REPO_LOCALPOOL);
else if (!strcmp(ext, "DL"))
r = repo_add_deltainfoxml(repo, fp, REPO_USE_LOADING);
fclose(fp);
struct repoinfo *cinfo;
const unsigned char *filechksum;
Id filechksumtype;
+ int flags;
cinfo = repo->appdata;
filename = repodata_lookup_str(data, SOLVID_META, SUSETAGS_FILE_NAME);
filechksum = repodata_lookup_bin_checksum(data, SOLVID_META, SUSETAGS_FILE_CHECKSUM, &filechksumtype);
if ((fp = curlfopen(cinfo, pool_tmpjoin(repo->pool, descrdir, "/", filename), iscompressed(filename), filechksum, filechksumtype, 0)) == 0)
return 0;
- if (repo_add_susetags(repo, fp, defvendor, ext, REPO_USE_LOADING|REPO_EXTEND_SOLVABLES))
+ flags = REPO_USE_LOADING|REPO_EXTEND_SOLVABLES;
+ if (strcmp(ext, "DL") != 0)
+ flags |= REPO_LOCALPOOL;
+ if (repo_add_susetags(repo, fp, defvendor, ext, flags))
{
fclose(fp);
printf("%s\n", pool_errstr(repo->pool));
if (cinfo->repo_gpgcheck)
{
filename = solv_dupjoin("dists/", cinfo->name, "/Release.gpg");
- if (!downloadchecksig(cinfo, fp, filename, &sigpool))
+ if (!downloadchecksig(cinfo, fpr, filename, &sigpool))
{
fclose(fpr);
solv_free((char *)filename);
Queue addedfileprovides_inst;
Queue repofilter;
int cleandeps = 0;
+ int forcebest = 0;
char *rootdir = 0;
argc--;
argc--;
argv++;
}
+ else if (argc > 1 && !strcmp(argv[1], "--best"))
+ {
+ forcebest = 1;
+ argc--;
+ argv++;
+ }
else
break;
}
job.elements[i] ^= SOLVER_UPDATE ^ SOLVER_INSTALL;
if (cleandeps)
job.elements[i] |= SOLVER_CLEANDEPS;
+ if (forcebest)
+ job.elements[i] |= SOLVER_FORCEBEST;
}
// multiversion test
solver_set_flag(solv, SOLVER_FLAG_SPLITPROVIDES, 1);
if (mainmode == MODE_ERASE)
solver_set_flag(solv, SOLVER_FLAG_ALLOW_UNINSTALL, 1); /* don't nag */
+ solver_set_flag(solv, SOLVER_FLAG_BEST_OBEY_POLICY, 1);
if (!solver_solve(solv, &job))
break;
chksum = pool_lookup_bin_checksum(pool, SOLVID_POS, DELTA_CHECKSUM, &chksumtype);
if (!chksumtype)
continue; /* no way! */
- dloc = pool_lookup_deltalocation(pool, SOLVID_POS);
+ dloc = pool_lookup_deltalocation(pool, SOLVID_POS, 0);
if (!dloc)
continue;
if (cinfo->type == TYPE_SUSETAGS)