// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: orderlist.cc,v 1.7 1999/07/19 01:49:44 jgg Exp $
+// $Id: orderlist.cc,v 1.9 1999/11/04 06:05:02 jgg Exp $
/* ######################################################################
Order List - Represents and Manipulates an ordered list of packages.
{
FileList = 0;
- Primary = &DepUnPackPre;
+ Primary = &pkgOrderList::DepUnPackPre;
Secondary = 0;
RevDepends = 0;
Remove = 0;
{
this->FileList = FileList;
- Primary = &DepUnPackCrit;
- Secondary = &DepConfigure;
- RevDepends = &DepUnPackDep;
- Remove = &DepRemove;
+ Primary = &pkgOrderList::DepUnPackCrit;
+ Secondary = &pkgOrderList::DepConfigure;
+ RevDepends = &pkgOrderList::DepUnPackDep;
+ Remove = &pkgOrderList::DepRemove;
LoopCount = -1;
// Sort
return false;
LoopCount = 0;
- Primary = &DepUnPackPre;
+ Primary = &pkgOrderList::DepUnPackPre;
if (DoRun() == false)
return false;
bool pkgOrderList::OrderConfigure()
{
FileList = 0;
- Primary = &DepConfigure;
+ Primary = &pkgOrderList::DepConfigure;
Secondary = 0;
RevDepends = 0;
Remove = 0;
// ---------------------------------------------------------------------
/* This routine calls visit on all providing packages. */
bool pkgOrderList::VisitProvides(DepIterator D,bool Critical)
-{
+{
Version **List = D.AllTargets();
for (Version **I = List; *I != 0; I++)
{
VerIterator Ver(Cache,*I);
PkgIterator Pkg = Ver.ParentPkg();
-
- if (Cache[Pkg].Keep() == true)
+
+ if (Cache[Pkg].Keep() == true && Pkg.State() == PkgIterator::NeedsNothing)
continue;
if (D->Type != pkgCache::Dep::Conflicts && Cache[Pkg].InstallVer != *I)
// Skip over missing files
if (Critical == false && IsMissing(D.ParentPkg()) == true)
continue;
-
+
if (VisitNode(Pkg) == false)
{
delete [] List;
DepFunc Old = Primary;
// Perform immedate configuration of the package if so flagged.
- if (IsFlag(Pkg,Immediate) == true && Primary != &DepUnPackPre)
- Primary = &DepUnPackPreD;
+ if (IsFlag(Pkg,Immediate) == true && Primary != &pkgOrderList::DepUnPackPre)
+ Primary = &pkgOrderList::DepUnPackPreD;
if (IsNow(Pkg) == true)
{
DepFunc Old = Primary;
bool Res = false;
if (D->Type == pkgCache::Dep::PreDepends)
- Primary = &DepUnPackPreD;
+ Primary = &pkgOrderList::DepUnPackPreD;
Res = VisitProvides(D,true);
Primary = Old;
if (Res == false)