{
PkgIterator Pkg(Cache,*I);
- if (ConfigurePkgs == true && VerifyAndConfigure(Pkg,OList) == false)
+ if (ConfigurePkgs == true && VerifyAndConfigure(Pkg,OList) == false) {
+ _error->Error("Internal error, packages left unconfigured. %s",Pkg.Name());
return false;
+ }
List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States);
}
}
// Sanity Check
- if (List->IsFlag(Pkg,pkgOrderList::Configured) == false)
- return _error->Error(_("Could not perform immediate configuration on '%s'. "
+ if (List->IsFlag(Pkg,pkgOrderList::Configured) == false && Debug)
+ _error->Error(_("Could not perform immediate configuration on '%s'. "
"Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.Name(),1);
return true;
} else {
cout << OutputInDepth(Depth )<< " InstallVer " << InstallVer.VerStr() << endl;
}
- if (CandVer != 0)
- cout << " CandVer " << CandVer.VerStr() << endl;
+ if (CandVer != 0)
+ cout << OutputInDepth(Depth ) << " CandVer " << CandVer.VerStr() << endl;
cout << OutputInDepth(Depth) << " Keep " << Cache[Pkg].Keep() << " Unpacked " << List->IsFlag(Pkg,pkgOrderList::UnPacked) << " Configured " << List->IsFlag(Pkg,pkgOrderList::Configured) << endl;
if (Immediate == true &&
List->IsFlag(Pkg,pkgOrderList::Immediate) == true)
if (SmartConfigure(Pkg) == false)
- return _error->Error(_("Could not perform immediate configuration on already unpacked '%s'. "
+ _error->Warning(_("Could not perform immediate configuration on already unpacked '%s'. "
"Please see man 5 apt.conf under APT::Immediate-Configure for details."),Pkg.Name());
return true;
}
/* Because of the ordered list, most dependancies should be unpacked,
however if there is a loop this is not the case, so check for dependancies before configuring.
This is done after the package installation as it makes it easier to deal with conflicts problems */
+ bool Bad = true;
for (DepIterator D = instVer.DependsList();
D.end() == false; )
{
pkgCache::DepIterator Start;
pkgCache::DepIterator End;
D.GlobOr(Start,End);
+
+ if (End->Type == pkgCache::Dep::Depends)
+ Bad = true;
// Check for dependanices that have not been unpacked, probably due to loops.
- bool Bad = true;
while (End->Type == pkgCache::Dep::Depends) {
PkgIterator DepPkg;
VerIterator InstallVer;
}
if (Start==End) {
- if (Bad) {
- //return
- _error->Error("Could not satisfy dependancies for %s",Pkg.Name());
+ if (Bad && Debug) {
+ if (!List->IsFlag(DepPkg,pkgOrderList::Loop)) {
+ _error->Warning("Could not satisfy dependancies for %s",Pkg.Name());
+ }
}
break;
}
}
}
-
+
// Perform immedate configuration of the package.
if (Immediate == true &&
- List->IsFlag(Pkg,pkgOrderList::Immediate) == true)
+ List->IsFlag(Pkg,pkgOrderList::Immediate) == true && !Bad)
if (SmartConfigure(Pkg) == false)
- //return
- _error->Error(_("Could not perform immediate configuration on '%s'. "
+ _error->Warning(_("Could not perform immediate configuration on '%s'. "
"Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.Name(),2);
return true;
if (List->IsNow(Pkg) == false)
{
- if (Debug == true)
- clog << "Skipping already done " << Pkg.Name() << endl;
+ if (!List->IsFlag(Pkg,pkgOrderList::Configured)) {
+ if (SmartConfigure(Pkg) == false && Debug)
+ _error->Warning("Internal Error, Could not configure %s",Pkg.Name());
+ // FIXME: The above warning message might need changing
+ } else {
+ if (Debug == true)
+ clog << "Skipping already done " << Pkg.Name() << endl;
+ }
continue;
+
}
if (List->IsMissing(Pkg) == true)