|
@@ -575,6 +575,9 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg)
|
|
|
}
|
|
}
|
|
|
bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate)
|
|
bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate)
|
|
|
{
|
|
{
|
|
|
|
|
+ if (Debug == true)
|
|
|
|
|
+ clog << "SmartUnPack " << Pkg.Name() << endl;
|
|
|
|
|
+
|
|
|
// Check if it is already unpacked
|
|
// Check if it is already unpacked
|
|
|
if (Pkg.State() == pkgCache::PkgIterator::NeedsConfigure &&
|
|
if (Pkg.State() == pkgCache::PkgIterator::NeedsConfigure &&
|
|
|
Cache[Pkg].Keep() == true)
|
|
Cache[Pkg].Keep() == true)
|
|
@@ -674,6 +677,20 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // Check for breaks
|
|
|
|
|
+ if (End->Type == pkgCache::Dep::DpkgBreaks) {
|
|
|
|
|
+ SPtrArray<Version *> VList = End.AllTargets();
|
|
|
|
|
+ for (Version **I = VList; *I != 0; I++)
|
|
|
|
|
+ {
|
|
|
|
|
+ VerIterator Ver(Cache,*I);
|
|
|
|
|
+ PkgIterator Pkg = Ver.ParentPkg();
|
|
|
|
|
+ // Found a break, so unpack the package
|
|
|
|
|
+ if (List->IsNow(Pkg)) {
|
|
|
|
|
+ SmartUnPack(Pkg, false);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Check for reverse conflicts.
|
|
// Check for reverse conflicts.
|