Seems to work and helps to keep the main pool small.
die("internal error, cannot reload solv file\n") unless $self->{'handle'}->add_solv($f, $solv::Repo::SOLV_ADD_NO_STUBS);
} else {
$info->extend_to_repo();
- $info->add_solv($f, $solv::Repo::REPO_EXTEND_SOLVABLES);
+ my $flags = $solv::Repo::REPO_EXTEND_SOLVABLES;
+ $flags |= $solv::Repo::REPO_LOCALPOOL if $ext ne 'DL';
+ $info->add_solv($f, $flags);
}
}
}
my $f = $self->download($filename, 1, $filechksum);
return 0 unless $f;
if ($ext eq 'FL') {
- $self->{'handle'}->add_rpmmd($f, 'FL', $solv::Repo::REPO_USE_LOADING|$solv::Repo::REPO_EXTEND_SOLVABLES);
- } elsif ($ext eq 'FL') {
+ $self->{'handle'}->add_rpmmd($f, 'FL', $solv::Repo::REPO_USE_LOADING|$solv::Repo::REPO_EXTEND_SOLVABLES|$solv::Repo::REPO_LOCALPOOL);
+ } elsif ($ext eq 'DL') {
$self->{'handle'}->add_deltainfoxml($f, $solv::Repo::REPO_USE_LOADING);
}
$self->writecachedrepo($ext, $repodata);
my $filechksum = $repodata->lookup_checksum($solv::SOLVID_META, $solv::SUSETAGS_FILE_CHECKSUM);
my $f = $self->download("$descrdir/$filename", 1, $filechksum);
return 0 unless $f;
- $self->{'handle'}->add_susetags($f, $defvendorid, $ext, $solv::Repo::REPO_USE_LOADING|$solv::Repo::REPO_EXTEND_SOLVABLES);
+ my $flags = $solv::Repo::REPO_USE_LOADING|$solv::Repo::REPO_EXTEND_SOLVABLES;
+ $flags |= $solv::Repo::REPO_LOCALPOOL if $ext ne 'DL';
+ $self->{'handle'}->add_susetags($f, $defvendorid, $ext, $flags);
$self->writecachedrepo($ext, $repodata);
return 1;
}
# need to extend to repo boundaries, as this is how
# info.write() has written the data
info.extend_to_repo()
- # LOCALPOOL does not help as pool already contains all ids
- info.add_solv(nf, Repo.REPO_EXTEND_SOLVABLES)
+ flags = Repo.REPO_EXTEND_SOLVABLES
+ if ext != 'DL':
+ flags |= Repo.REPO_LOCALPOOL
+ info.add_solv(nf, flags)
os.rename(tmpname, self.cachepath(ext))
except IOError, e:
if tmpname:
if not f:
return False
if ext == 'FL':
- self.handle.add_rpmmd(f, 'FL', Repo.REPO_USE_LOADING|Repo.REPO_EXTEND_SOLVABLES)
+ self.handle.add_rpmmd(f, 'FL', Repo.REPO_USE_LOADING|Repo.REPO_EXTEND_SOLVABLES|Repo.REPO_LOCALPOOL)
elif ext == 'DL':
self.handle.add_deltainfoxml(f, Repo.REPO_USE_LOADING)
self.writecachedrepo(ext, repodata)
f = self.download(descrdir + '/' + filename, True, filechksum)
if not f:
return False
- self.handle.add_susetags(f, defvendorid, ext, Repo.REPO_USE_LOADING|Repo.REPO_EXTEND_SOLVABLES)
+ flags = Repo.REPO_USE_LOADING|Repo.REPO_EXTEND_SOLVABLES
+ if ext != 'DL':
+ flags |= Repo.REPO_LOCALPOOL
+ self.handle.add_susetags(f, defvendorid, ext, flags)
self.writecachedrepo(ext, repodata)
return True
abort("internal error, cannot reload solv file") unless @handle.add_solv(sf, Solv::Repo::SOLV_ADD_NO_STUBS)
else
info.extend_to_repo()
- info.add_solv(sf, Solv::Repo::REPO_EXTEND_SOLVABLES)
+ flags = Solv::Repo::REPO_EXTEND_SOLVABLES
+ flags |= Solv::Repo::REPO_LOCALPOOL if ext != 'DL'
+ info.add_solv(sf, flags)
end
sf.close
end
f = download(filename, true, filechksum)
return false unless f
if ext == 'FL'
- @handle.add_rpmmd(f, 'FL', Solv::Repo::REPO_USE_LOADING|Solv::Repo::REPO_EXTEND_SOLVABLES)
+ @handle.add_rpmmd(f, 'FL', Solv::Repo::REPO_USE_LOADING|Solv::Repo::REPO_EXTEND_SOLVABLES|Solv::Repo::REPO_LOCALPOOL)
elsif ext == 'DL'
@handle.add_deltainfoxml(f, Solv::Repo::REPO_USE_LOADING)
end
filechksum = repodata.lookup_checksum(Solv::SOLVID_META, Solv::SUSETAGS_FILE_CHECKSUM)
f = download("#{descrdir}/#{filename}", true, filechksum)
return false unless f
- @handle.add_susetags(f, defvendorid, ext, Solv::Repo::REPO_USE_LOADING|Solv::Repo::REPO_EXTEND_SOLVABLES)
+ flags = Solv::Repo::REPO_USE_LOADING|Solv::Repo::REPO_EXTEND_SOLVABLES
+ flags |= Solv::Repo::REPO_LOCALPOOL if ext != 'DL'
+ @handle.add_susetags(f, defvendorid, ext, flags)
f.close
writecachedrepo(ext, repodata)
return true
}
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));