]> git.saurik.com Git - apt.git/commitdiff
Merge remote-tracking branch 'upstream/debian/sid' into bugfix/update-progress-reporting
authorMichael Vogt <mvo@ubuntu.com>
Thu, 8 May 2014 07:18:39 +0000 (09:18 +0200)
committerMichael Vogt <mvo@ubuntu.com>
Thu, 8 May 2014 07:18:39 +0000 (09:18 +0200)
1  2 
apt-pkg/acquire-item.cc

diff --combined apt-pkg/acquire-item.cc
index 1443380a171dcff38fd664f61a8b31aa0078bc91,0178456a8d69487b4180a4ed15031b8ee8852670..d347efa54ad452083b4e5f9fd73b638342eaa8fc
@@@ -55,8 -55,7 +55,8 @@@ using namespace std
  /* */
  pkgAcquire::Item::Item(pkgAcquire *Owner) : Owner(Owner), FileSize(0),
                         PartialSize(0), Mode(0), ID(0), Complete(false), 
 -                       Local(false), QueueCounter(0)
 +                       Local(false), QueueCounter(0), 
 +                       ExpectedAdditionalItems(0)
  {
     Owner->Add(this);
     Status = StatIdle;
@@@ -343,24 -342,21 +343,24 @@@ bool pkgAcqSubIndex::ParseIndex(string 
   * the original packages file
   */
  pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire *Owner,
 -                               string URI,string URIDesc,string ShortDesc,
 -                               HashString ExpectedHash)
 -   : Item(Owner), RealURI(URI), ExpectedHash(ExpectedHash),
 -     Description(URIDesc)
 +                                 IndexTarget const *Target,
 +                               HashString ExpectedHash,
 +                                 indexRecords *MetaIndexParser)
 +   : Item(Owner), ExpectedHash(ExpectedHash), Target(Target),
 +     MetaIndexParser(MetaIndexParser)
 +     
  {
     
     Debug = _config->FindB("Debug::pkgAcquire::Diffs",false);
  
 -   Desc.Description = URIDesc + "/DiffIndex";
 +   RealURI = Target->URI;
     Desc.Owner = this;
 -   Desc.ShortDesc = ShortDesc;
 -   Desc.URI = URI + ".diff/Index";
 +   Desc.Description = Target->Description + "/DiffIndex";
 +   Desc.ShortDesc = Target->ShortDesc;
 +   Desc.URI = Target->URI + ".diff/Index";
  
     DestFile = _config->FindDir("Dir::State::lists") + "partial/";
 -   DestFile += URItoFileName(URI) + string(".DiffIndex");
 +   DestFile += URItoFileName(Target->URI) + string(".DiffIndex");
  
     if(Debug)
        std::clog << "pkgAcqDiffIndex: " << Desc.URI << std::endl;
@@@ -563,7 -559,8 +563,7 @@@ void pkgAcqDiffIndex::Failed(string Mes
        std::clog << "pkgAcqDiffIndex failed: " << Desc.URI << " with " << Message << std::endl
                << "Falling back to normal index file acquire" << std::endl;
  
 -   new pkgAcqIndex(Owner, RealURI, Description, Desc.ShortDesc, 
 -                 ExpectedHash);
 +   new pkgAcqIndex(Owner, Target, ExpectedHash, MetaIndexParser);
  
     Complete = false;
     Status = StatDone;
@@@ -922,8 -919,7 +922,8 @@@ void pkgAcqIndexMergeDiffs::Done(strin
  pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner,
                         string URI,string URIDesc,string ShortDesc,
                         HashString ExpectedHash, string comprExt)
 -   : Item(Owner), RealURI(URI), ExpectedHash(ExpectedHash)
 +   : Item(Owner), RealURI(URI), ExpectedHash(ExpectedHash), Target(0),
 +     MetaIndexParser(0)
  {
     if(comprExt.empty() == true)
     {
     }
     CompressionExtension = comprExt;
  
+    Verify = true;
     Init(URI, URIDesc, ShortDesc);
  }
  pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner, IndexTarget const *Target,
 -                       HashString const &ExpectedHash, indexRecords const *MetaIndexParser)
 +                       HashString const &ExpectedHash, indexRecords *MetaIndexParser)
     : Item(Owner), RealURI(Target->URI), ExpectedHash(ExpectedHash)
  {
     // autoselect the compression method
     else
       Verify = true;
  
 +   // we need this in Init()
 +   this->Target = Target;
 +   this->MetaIndexParser = MetaIndexParser;
 +
     Init(Target->URI, Target->Description, Target->ShortDesc);
  }
                                                                        /*}}}*/
@@@ -982,27 -976,10 +984,27 @@@ void pkgAcqIndex::Init(string const &UR
     DestFile += URItoFileName(URI);
  
     std::string const comprExt = CompressionExtension.substr(0, CompressionExtension.find(' '));
 +   std::string MetaKey;
     if (comprExt == "uncompressed")
 +   {
        Desc.URI = URI;
 +      if(Target)
 +         MetaKey = string(Target->MetaKey);
 +   }
     else
 +   {
        Desc.URI = URI + '.' + comprExt;
 +      if(Target)
 +         MetaKey = string(Target->MetaKey) + '.' + comprExt;
 +   }
 +
 +   // load the filesize
 +   if(MetaIndexParser)
 +   {
 +      indexRecords::checkSum *Record = MetaIndexParser->Lookup(MetaKey);
 +      if(Record)
 +         FileSize = Record->Size;
 +   }
  
     Desc.Description = URIDesc;
     Desc.Owner = this;
@@@ -1104,7 -1081,7 +1106,7 @@@ void pkgAcqIndex::Done(string Message,u
        FinalFile += URItoFileName(RealURI);
        Rename(DestFile,FinalFile);
        chmod(FinalFile.c_str(),0644);
 -      
 +
        /* We restore the original name to DestFile so that the clean operation
           will work OK */
        DestFile = _config->FindDir("Dir::State::lists") + "partial/";
        // Remove the compressed version.
        if (Erase == true)
         unlink(DestFile.c_str());
 +
        return;
     }
  
@@@ -1201,13 -1177,9 +1203,13 @@@ pkgAcqIndexTrans::pkgAcqIndexTrans(pkgA
  {
  }
  pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire *Owner, IndexTarget const *Target,
 -                       HashString const &ExpectedHash, indexRecords const *MetaIndexParser)
 +                       HashString const &ExpectedHash, indexRecords *MetaIndexParser)
    : pkgAcqIndex(Owner, Target, ExpectedHash, MetaIndexParser)
  {
 +   // load the filesize
 +   indexRecords::checkSum *Record = MetaIndexParser->Lookup(string(Target->MetaKey));
 +   if(Record)
 +      FileSize = Record->Size;
  }
                                                                        /*}}}*/
  // AcqIndexTrans::Custom600Headers - Insert custom request headers    /*{{{*/
@@@ -1287,9 -1259,6 +1289,9 @@@ pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquir
        Rename(Final,LastGoodSig);
     }
  
 +   // we expect the indextargets + one additional Release file
 +   ExpectedAdditionalItems = IndexTargets->size() + 1;
 +
     QueueURI(Desc);
  }
                                                                        /*}}}*/
@@@ -1342,9 -1311,6 +1344,9 @@@ void pkgAcqMetaSig::Done(string Message
  
     Complete = true;
  
 +   // at this point pkgAcqMetaIndex takes over
 +   ExpectedAdditionalItems = 0;
 +
     // put the last known good file back on i-m-s hit (it will
     // be re-verified again)
     // Else do nothing, we have the new file in DestFile then
@@@ -1362,9 -1328,6 +1364,9 @@@ void pkgAcqMetaSig::Failed(string Messa
  {
     string Final = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI);
  
 +   // at this point pkgAcqMetaIndex takes over
 +   ExpectedAdditionalItems = 0;
 +
     // if we get a network error we fail gracefully
     if(Status == StatTransientNetworkError)
     {
@@@ -1415,9 -1378,6 +1417,9 @@@ pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcq
     Desc.ShortDesc = ShortDesc;
     Desc.URI = URI;
  
 +   // we expect more item
 +   ExpectedAdditionalItems = IndexTargets->size();
 +
     QueueURI(Desc);
  }
                                                                        /*}}}*/
@@@ -1596,15 -1556,12 +1598,15 @@@ void pkgAcqMetaIndex::QueueIndexes(boo
         }
     }
  
 +   // at this point the real Items are loaded in the fetcher
 +   ExpectedAdditionalItems = 0;
 +
     for (vector <struct IndexTarget*>::const_iterator Target = IndexTargets->begin();
          Target != IndexTargets->end();
          ++Target)
     {
        HashString ExpectedIndexHash;
 -      const indexRecords::checkSum *Record = MetaIndexParser->Lookup((*Target)->MetaKey);
 +      indexRecords::checkSum *Record = MetaIndexParser->Lookup((*Target)->MetaKey);
        bool compressedAvailable = false;
        if (Record == NULL)
        {
         {
            if (_config->FindB("Acquire::PDiffs",true) == true && transInRelease == true &&
                MetaIndexParser->Exists((*Target)->MetaKey + ".diff/Index") == true)
 -             new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description,
 -                                 (*Target)->ShortDesc, ExpectedIndexHash);
 +             new pkgAcqDiffIndex(Owner, *Target, ExpectedIndexHash, MetaIndexParser);
            else
               new pkgAcqIndexTrans(Owner, *Target, ExpectedIndexHash, MetaIndexParser);
         }
           instead, but passing the required info to it is to much hassle */
        if(_config->FindB("Acquire::PDiffs",true) == true && (verify == false ||
          MetaIndexParser->Exists((*Target)->MetaKey + ".diff/Index") == true))
 -       new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description,
 -                           (*Target)->ShortDesc, ExpectedIndexHash);
 +       new pkgAcqDiffIndex(Owner, *Target, ExpectedIndexHash, MetaIndexParser);
        else
         new pkgAcqIndex(Owner, *Target, ExpectedIndexHash, MetaIndexParser);
     }
@@@ -1827,10 -1786,6 +1829,10 @@@ pkgAcqMetaClearSig::pkgAcqMetaClearSig(
  {
     SigFile = DestFile;
  
 +   // index targets + (worst case:) Release/Release.gpg
 +   ExpectedAdditionalItems = IndexTargets->size() + 2;
 +
 +
     // keep the old InRelease around in case of transistent network errors
     string const Final = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI);
     if (RealFileExists(Final) == true)
@@@ -1873,9 -1828,6 +1875,9 @@@ string pkgAcqMetaClearSig::Custom600Hea
                                                                        /*}}}*/
  void pkgAcqMetaClearSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*/
  {
 +   // we failed, we will not get additional items from this method
 +   ExpectedAdditionalItems = 0;
 +
     if (AuthPass == false)
     {
        // Remove the 'old' InRelease file if we try Release.gpg now as otherwise