// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: apt-get.cc,v 1.147 2003/12/20 23:39:54 mdz Exp $
+// $Id: apt-get.cc,v 1.156 2004/08/28 01:05:16 mdz Exp $
/* ######################################################################
apt-get - Cover for dpkg
// Compute a single dependency element (glob or)
pkgCache::DepIterator Start;
pkgCache::DepIterator End;
- D.GlobOr(Start,End);
+ D.GlobOr(Start,End); // advances D
if (Cache->IsImportantDep(End) == false)
continue;
List += string(I.Name()) + " ";
VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n";
}
- ShowList(out,_("The following packages have been kept back"),List,VersionsList);
+ ShowList(out,_("The following packages have been kept back:"),List,VersionsList);
}
/*}}}*/
// ShowUpgraded - Show upgraded packages /*{{{*/
List += string(I.Name()) + " ";
VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n";
}
- ShowList(out,_("The following packages will be upgraded"),List,VersionsList);
+ ShowList(out,_("The following packages will be upgraded:"),List,VersionsList);
}
/*}}}*/
// ShowDowngraded - Show downgraded packages /*{{{*/
List += string(I.Name()) + " ";
VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n";
}
- return ShowList(out,_("The following packages will be DOWNGRADED"),List,VersionsList);
+ return ShowList(out,_("The following packages will be DOWNGRADED:"),List,VersionsList);
}
/*}}}*/
// ShowHold - Show held but changed packages /*{{{*/
/* This displays the informative messages describing what is going to
happen and then calls the download routines */
bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true,
- bool Saftey = true)
+ bool Safety = true)
{
if (_config->FindB("APT::Get::Purge",false) == true)
{
return _error->Error(_("There are problems and -y was used without --force-yes"));
}
- if (Essential == true && Saftey == true)
+ if (Essential == true && Safety == true)
{
if (_config->FindB("APT::Get::Trivial-Only",false) == true)
return _error->Error(_("Trivial Only specified but this is not a trivial operation."));
else
{
ioprintf(c1out,
- _("Package %s has no available version, but exists in the database.\n"
- "This typically means that the package was mentioned in a dependency and\n"
- "never uploaded, has been obsoleted or is not available with the contents\n"
- "of sources.list\n"),Pkg.Name());
+ _("Package %s is not available, but is referred to by another package.\n"
+ "This may mean that the package is missing, has been obsoleted, or\n"
+ "is only available from another source\n"),Pkg.Name());
string List;
string VersionsList;
continue;
for (pkgCache::VerIterator V = I.VersionList(); V.end() == false; V++)
- {
- for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; D++)
- {
+ {
+ for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; )
+ {
pkgCache::DepIterator Start;
pkgCache::DepIterator End;
- D.GlobOr(Start,End);
+ D.GlobOr(Start,End); // advances D
/*
* If this is a virtual package, we need to check the list of
* packages that provide it and see if any of those are
* installed
*/
- pkgCache::PrvIterator Prv = Start.TargetPkg().ProvidesList();
+
bool providedBySomething = false;
- for (; Prv.end() != true; Prv++)
- if ((*Cache)[Prv.OwnerPkg()].InstVerIter(*Cache).end() == false) {
+ for (pkgCache::PrvIterator Prv = Start.TargetPkg().ProvidesList();
+ Prv.end() != true;
+ Prv++)
+ if ((*Cache)[Prv.OwnerPkg()].InstVerIter(*Cache).end() == false)
+ {
providedBySomething = true;
break;
}
if (providedBySomething) continue;
- do
- {
- if (Start->Type == pkgCache::Dep::Suggests) {
+ for(;;)
+ {
+ /* Skip if package is installed already, or is about to be */
+ string target = string(Start.TargetPkg().Name()) + " ";
+
+ if ((*Start.TargetPkg()).SelectedState == pkgCache::State::Install
+ || Cache[Start.TargetPkg()].Install())
+ break;
- /* A suggests relations, let's see if we have it
- installed already */
+ /* Skip if we already saw it */
+ if (int(SuggestsList.find(target)) != -1 || int(RecommendsList.find(target)) != -1)
+ break;
- string target = string(Start.TargetPkg().Name()) + " ";
- if ((*Start.TargetPkg()).SelectedState == pkgCache::State::Install || Cache[Start.TargetPkg()].Install())
- break;
- /* Does another package suggest it as well? If so,
- don't print it twice */
- if (int(SuggestsList.find(target)) > -1)
- break;
+ if (Start->Type == pkgCache::Dep::Suggests) {
SuggestsList += target;
SuggestsVersions += string(Cache[Start.TargetPkg()].CandVersion) + "\n";
}
if (Start->Type == pkgCache::Dep::Recommends) {
-
- /* A recommends relation, let's see if we have it
- installed already */
-
- string target = string(Start.TargetPkg().Name()) + " ";
- if ((*Start.TargetPkg()).SelectedState == pkgCache::State::Install || Cache[Start.TargetPkg()].Install())
- break;
-
- /* Does another package recommend it as well? If so,
- don't print it twice */
-
- if (int(RecommendsList.find(target)) > -1)
- break;
RecommendsList += target;
RecommendsVersions += string(Cache[Start.TargetPkg()].CandVersion) + "\n";
}
- if (Start == End)
- break;
- Start++;
- } while (1);
- }
- }
+
+ if (Start >= End)
+ break;
+ Start++;
+ }
+ }
+ }
}
ShowList(c1out,_("Suggested packages:"),SuggestsList,SuggestsVersions);
ShowList(c1out,_("Recommended packages:"),RecommendsList,RecommendsVersions);
// Now we check the state of the packages,
if (Cache->BrokenCount() != 0)
- return _error->Error(_("Some broken packages were found while trying to process build-dependencies for %s.\n"
- "You might want to run `apt-get -f install' to correct these."),*I);
+ return _error->Error(_("Build-dependencies for %s could not be satisfied."),*I);
}
if (InstallPackages(Cache, false, true) == false)
_config->Set("APT::Get::Assume-Yes",false);
_config->Set("APT::Get::Fix-Broken",false);
_config->Set("APT::Get::Force-Yes",false);
- _config->Set("APT::Get::APT::Get::No-List-Cleanup",true);
+ _config->Set("APT::Get::List-Cleanup",true);
}
/*}}}*/
// SigWinch - Window size change signal handler /*{{{*/