- // Consider all depends
- if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
- {
- List->Flag(I,pkgOrderList::Immediate);
- if (Cache[I].InstallVer != 0)
- for (DepIterator D = Cache[I].InstVerIter(Cache).DependsList();
- D.end() == false; D++)
- if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends)
- List->Flag(D.TargetPkg(),pkgOrderList::Immediate);
- if (I->CurrentVer != 0)
- for (DepIterator D = I.CurrentVer().DependsList();
- D.end() == false; D++)
- if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends)
- List->Flag(D.TargetPkg(),pkgOrderList::Immediate);
- }
-
- // Not interesting
- if ((Cache[I].Keep() == true ||
- Cache[I].InstVerIter(Cache) == I.CurrentVer()) &&
- I.State() == pkgCache::PkgIterator::NeedsNothing)
- continue;
-
- // Append it to the list
- List->push_back(I);
-
- if ((I->Flags & pkgCache::Flag::ImmediateConf) == pkgCache::Flag::ImmediateConf)
- List->Flag(I,pkgOrderList::Immediate);