]> git.saurik.com Git - apt.git/commitdiff
eipp: make no difference between remove & purge
authorDavid Kalnischkies <david@kalnischkies.de>
Fri, 3 Jun 2016 11:09:13 +0000 (13:09 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Mon, 27 Jun 2016 09:57:12 +0000 (11:57 +0200)
For the order there is no inherent difference between delete or purge,
so we don't tell the planer about this and instead decide in apt if a
package should be purged or not which also allows us to not tell the
planer about rc-only purges as we can trivially do this on our on as
there is no need to plan such purges.

apt-pkg/edsp.cc

index ae5c7a3733d88a6ffbf6a1dca6f51026b3372ae5..f2d728933db3aee3cb54f688ef12b08dc2f14c1c 100644 (file)
@@ -1094,6 +1094,14 @@ bool EIPP::OrderInstall(char const * const solver, pkgPackageManager * const PM,
 
    if (Progress != NULL)
       Progress->OverallProgress(25, 100, 75, _("Execute external planer"));
+
+   // we don't tell the external planers about boring things
+   for (auto Pkg = PM->Cache.PkgBegin(); Pkg.end() == false; ++Pkg)
+   {
+      if (Pkg->CurrentState == pkgCache::State::ConfigFiles && PM->Cache[Pkg].Purge() == true)
+        PM->Remove(Pkg, true);
+   }
+
    if (Okay && EIPP::ReadResponse(solver_out, PM, Progress) == false)
       return false;
 
@@ -1108,15 +1116,15 @@ bool EIPP::WriteRequest(pkgDepCache &Cache, FileFd &output,             /*{{{*/
    if (Progress != NULL)
       Progress->SubProgress(Cache.Head().PackageCount, _("Send request to planer"));
    unsigned long p = 0;
-   string del, purge, inst, reinst;
+   string del, inst, reinst;
    for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg, ++p)
    {
       if (Progress != NULL && p % 100 == 0)
          Progress->Progress(p);
       string* req;
       pkgDepCache::StateCache &P = Cache[Pkg];
-      if (P.Purge() == true)
-        req = &purge;
+      if (P.Purge() == true && Pkg->CurrentState == pkgCache::State::ConfigFiles)
+        continue;
       if (P.Delete() == true)
         req = &del;
       else if (P.NewInstall() == true || P.Upgrade() == true || P.Downgrade() == true)
@@ -1137,8 +1145,6 @@ bool EIPP::WriteRequest(pkgDepCache &Cache, FileFd &output,               /*{{{*/
        WriteOkay(Okay, output, " ", *a);
    WriteOkay(Okay, output, "\n");
 
-   if (purge.empty() == false)
-      WriteOkay(Okay, output, "Purge:", purge, "\n");
    if (del.empty() == false)
       WriteOkay(Okay, output, "Remove:", del, "\n");
    if (inst.empty() == false)