Browse Source

* apt-pkg/depcache.cc:

- SetCandidateVer for all pseudo packages
  - SetReInstall for the "all" package of a pseudo package
tags/debian/0.8.0
David Kalnischkies 11 years ago
parent
commit
1019948cea
3 changed files with 35 additions and 2 deletions
  1. +31
    -1
      apt-pkg/depcache.cc
  2. +1
    -1
      apt-pkg/depcache.h
  3. +3
    -0
      debian/changelog

+ 31
- 1
apt-pkg/depcache.cc View File

@@ -1453,6 +1453,9 @@ bool pkgDepCache::IsInstallOk(PkgIterator const &Pkg,bool AutoInst,
/* */
void pkgDepCache::SetReInstall(PkgIterator const &Pkg,bool To)
{
if (unlikely(Pkg.end() == true))
return;

ActionGroup group(*this);

RemoveSizes(Pkg);
@@ -1466,12 +1469,17 @@ void pkgDepCache::SetReInstall(PkgIterator const &Pkg,bool To)
AddStates(Pkg);
AddSizes(Pkg);

if (unlikely(Pkg.CurrentVer().end() == true) || Pkg.CurrentVer().Pseudo() == false)
return;

SetReInstall(Pkg.Group().FindPkg("all"), To);
}
/*}}}*/
// DepCache::SetCandidateVersion - Change the candidate version /*{{{*/
// ---------------------------------------------------------------------
/* */
void pkgDepCache::SetCandidateVersion(VerIterator TargetVer)
void pkgDepCache::SetCandidateVersion(VerIterator TargetVer, bool const &Pseudo)
{
ActionGroup group(*this);

@@ -1489,6 +1497,28 @@ void pkgDepCache::SetCandidateVersion(VerIterator TargetVer)
AddStates(Pkg);
Update(Pkg);
AddSizes(Pkg);

if (TargetVer.Pseudo() == false || Pseudo == false)
return;

// the version was pseudo: set all other pseudos also
pkgCache::GrpIterator Grp = Pkg.Group();
for (Pkg = Grp.FindPkg("any"); Pkg.end() == false; ++Pkg)
{
StateCache &P = PkgState[Pkg->ID];
if (TargetVer.SimilarVer(P.CandidateVerIter(*this)) == true ||
(P.CandidateVerIter(*this).Pseudo() == false &&
strcmp(Pkg.Arch(), "all") != 0))
continue;

for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver)
{
if (TargetVer.SimilarVer(Ver) == false)
continue;
SetCandidateVersion(Ver, false);
break;
}
}
}

void pkgDepCache::MarkAuto(const PkgIterator &Pkg, bool Auto)


+ 1
- 1
apt-pkg/depcache.h View File

@@ -405,7 +405,7 @@ class pkgDepCache : protected pkgCache::Namespace
bool ForceImportantDeps = false);

void SetReInstall(PkgIterator const &Pkg,bool To);
void SetCandidateVersion(VerIterator TargetVer);
void SetCandidateVersion(VerIterator TargetVer, bool const &Pseudo = true);

/** Set the "is automatically installed" flag of Pkg. */
void MarkAuto(const PkgIterator &Pkg, bool Auto);


+ 3
- 0
debian/changelog View File

@@ -10,6 +10,9 @@ apt (0.7.26~exp8) UNRELEASED; urgency=low
- packages that are not touched doesn't need to be unpacked
* debian/control:
- remove intltool's dependency as it is an ubuntu artefact
* apt-pkg/depcache.cc:
- SetCandidateVer for all pseudo packages
- SetReInstall for the "all" package of a pseudo package

-- David Kalnischkies <kalnischkies@gmail.com> Thu, 10 Jun 2010 16:36:58 +0200



Loading…
Cancel
Save