]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/deb/dpkgpm.cc
The modification to orderlist.cc is from a patch DonKult (David) gave me, The modific...
[apt.git] / apt-pkg / deb / dpkgpm.cc
index eb9abe909fef1d4b2505a4579842f096443cec27..b37980b7ecbbdae96d210bb6ffca6a700c94d23b 100644 (file)
@@ -391,8 +391,9 @@ void pkgDPkgPM::DoTerminalPty(int master)
    {
       // this happens when the child is about to exit, we
       // give it time to actually exit, otherwise we run
-      // into a race
-      usleep(500000);
+      // into a race so we sleep for half a second.
+      struct timespec sleepfor = { 0, 500000000 };
+      nanosleep(&sleepfor, NULL);
       return;
    }  
    if(len <= 0) 
@@ -1002,6 +1003,7 @@ bool pkgDPkgPM::Go(int OutStatusFd)
       else
       {
         string const nativeArch = _config->Find("APT::Architecture");
+        unsigned long const oldSize = I->Op == Item::Configure ? Size : 0;
         for (;I != J && Size < MaxArgBytes; I++)
         {
            if((*I).Pkg.end() == true)
@@ -1016,8 +1018,11 @@ bool pkgDPkgPM::Go(int OutStatusFd)
               Args[n++] = Packages[pkgcount++];
            }
            Size += strlen(Args[n-1]);
-        }       
-      }      
+        }
+        // skip configure action if all sheduled packages disappeared
+        if (oldSize == Size)
+           continue;
+      }
       Args[n] = 0;
       J = I;