]> git.saurik.com Git - apt.git/commitdiff
Merge remote-tracking branch 'upstream/debian/experimental' into feature/acq-trans
authorMichael Vogt <mvo@debian.org>
Mon, 29 Sep 2014 07:58:38 +0000 (09:58 +0200)
committerMichael Vogt <mvo@debian.org>
Mon, 29 Sep 2014 07:58:38 +0000 (09:58 +0200)
Conflicts:
apt-pkg/acquire-item.cc
apt-pkg/acquire-item.h
methods/gpgv.cc

1  2 
apt-pkg/acquire-item.cc
apt-pkg/acquire-item.h
apt-pkg/acquire.cc
methods/copy.cc
methods/gpgv.cc

index b8317b13de849f048b65d25c48a4e79865068858,f46c8a6e46f9f2c8534d32f7269a52a5fe39c218..923a153a785ff762974f1bb3c7006048f75f32c0
@@@ -64,18 -64,21 +64,25 @@@ static void printHashSumComparision(std
                                                                        /*}}}*/
  
  // Acquire::Item::Item - Constructor                                  /*{{{*/
 -pkgAcquire::Item::Item(pkgAcquire *Owner, HashStringList const &ExpectedHashes) :
 -   Owner(Owner), FileSize(0), PartialSize(0), Mode(0), ID(0), Complete(false),
 -   Local(false), QueueCounter(0), ExpectedAdditionalItems(0),
 -   ExpectedHashes(ExpectedHashes)
+ #if __GNUC__ >= 4
+       #pragma GCC diagnostic push
+       #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ #endif
 +pkgAcquire::Item::Item(pkgAcquire *Owner,
 +                       HashStringList const &ExpectedHashes,
 +                       pkgAcqMetaBase *TransactionManager)
 +   : Owner(Owner), FileSize(0), PartialSize(0), Mode(0), ID(0), Complete(false),
 +     Local(false), QueueCounter(0), TransactionManager(TransactionManager),
 +     ExpectedAdditionalItems(0), ExpectedHashes(ExpectedHashes)
  {
     Owner->Add(this);
     Status = StatIdle;
 +   if(TransactionManager != NULL)
 +      TransactionManager->Add(this);
  }
+ #if __GNUC__ >= 4
+       #pragma GCC diagnostic pop
+ #endif
                                                                        /*}}}*/
  // Acquire::Item::~Item - Destructor                                  /*{{{*/
  // ---------------------------------------------------------------------
@@@ -1062,34 -1117,30 +1086,34 @@@ void pkgAcqIndex::Failed(string Message
  }
                                                                        /*}}}*/
  // pkgAcqIndex::GetFinalFilename - Return the full final file path      /*{{{*/
 -std::string pkgAcqIndex::GetFinalFilename(std::string const &URI,
 -                                          std::string const &compExt)
 +// ---------------------------------------------------------------------
 +/* */
 +std::string pkgAcqIndex::GetFinalFilename() const
  {
 +   std::string const compExt = CompressionExtension.substr(0, CompressionExtension.find(' '));
     std::string FinalFile = _config->FindDir("Dir::State::lists");
 -   FinalFile += URItoFileName(URI);
 +   FinalFile += URItoFileName(RealURI);
-    if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz")
-       FinalFile += ".gz";
+    if (_config->FindB("Acquire::GzipIndexes",false) == true)
+       FinalFile += '.' + compExt;
     return FinalFile;
  }
 -                                                                      /*}}}*/
 -// AcqIndex::ReverifyAfterIMS - Reverify index after an ims-hit               /*{{{*/
 -void pkgAcqIndex::ReverifyAfterIMS(std::string const &FileName)
 +                                                                       /*}}}*/
 +// AcqIndex::ReverifyAfterIMS - Reverify index after an ims-hit        /*{{{*/
 +// ---------------------------------------------------------------------
 +/* */
 +void pkgAcqIndex::ReverifyAfterIMS()
  {
     std::string const compExt = CompressionExtension.substr(0, CompressionExtension.find(' '));
-    if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz")
-       DestFile += ".gz";
+    if (_config->FindB("Acquire::GzipIndexes",false) == true)
+       DestFile += compExt;
  
 -   string FinalFile = GetFinalFilename(RealURI, compExt);
 -   Rename(FinalFile, FileName);
 +   // copy FinalFile into partial/ so that we check the hash again
 +   string FinalFile = GetFinalFilename();
     Decompression = true;
 -   Desc.URI = "copy:" + FileName;
 +   Desc.URI = "copy:" + FinalFile;
     QueueURI(Desc);
  }
 -                                                                      /*}}}*/
 +                                                                       /*}}}*/
  // AcqIndex::Done - Finished a fetch                                  /*{{{*/
  // ---------------------------------------------------------------------
  /* This goes through a number of states.. On the initial fetch the
@@@ -1201,11 -1246,19 +1233,21 @@@ void pkgAcqIndex::Done(string Message, 
         StringToBool(LookupTag(Message,"IMS-Hit"),false) == true)
        return;
  
 -   // The files timestamp matches, for non-local URLs reverify the local
 -   // file, for local file, uncompress again to ensure the hashsum is still
 -   // matching the Release file
 -   if (!Local && StringToBool(LookupTag(Message,"IMS-Hit"),false) == true)
 +   // The files timestamp matches, reverify by copy into partial/
 +   if (StringToBool(LookupTag(Message,"IMS-Hit"),false) == true)
     {
 +      Erase = false;
 +      ReverifyAfterIMS();
++#if 0 // ???
+       // set destfile to the final destfile
+       if(_config->FindB("Acquire::GzipIndexes",false) == false)
+       {
+          DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+          DestFile += URItoFileName(RealURI);
+       }
+       ReverifyAfterIMS(FileName);
++#endif
        return;
     }
     string decompProg;
@@@ -1785,22 -1706,19 +1842,26 @@@ void pkgAcqMetaIndex::AuthDone(string M
              URItoFileName((*Target)->URI);
           unlink(index.c_str());
           // and also old gzipindexes
-          index += ".gz";
-          unlink(index.c_str());
+          std::vector<std::string> types = APT::Configuration::getCompressionTypes();
+          for (std::vector<std::string>::const_iterator t = types.begin(); t != types.end(); ++t)
+          {
+             index += '.' + (*t);
+             unlink(index.c_str());
+          }
        }
     }
 +#endif
  
 -
 -   // Download further indexes with verification
 +   // Download further indexes with verification 
 +   //
 +   // it would be really nice if we could simply do
 +   //    if (IMSHit == false) QueueIndexes(true)
 +   // and skip the download if the Release file has not changed
 +   // - but right now the list cleaner will needs to be tricked
 +   //   to not delete all our packages/source indexes in this case
     QueueIndexes(true);
  
 +#if 0
     // is it a clearsigned MetaIndex file?
     if (DestFile == SigFile)
        return;
index cc156cf17d2469dae7bc261dba44bca462ea659b,74b5de67582fa4a6d3a33acc0360569bc4139a75..e6a22ce7b7ec92ec6113aefab23e8dec868ee348
@@@ -417,169 -352,24 +422,169 @@@ class pkgAcqMetaSig : public pkgAcqMeta
     virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf);
     virtual void Done(std::string Message,unsigned long long Size, HashStringList const &Hashes,
                     pkgAcquire::MethodConfig *Cnf);
 -   virtual std::string DescURI() {return Desc.URI;};
     virtual std::string Custom600Headers() const;
-    virtual std::string DescURI() const {return RealURI; };
 -   virtual bool ParseIndex(std::string const &IndexFile);
++   virtual std::string DescURI() {return RealURI; };
 +
 +   /** \brief Create a new pkgAcqMetaSig. */
 +   pkgAcqMetaSig(pkgAcquire *Owner,
 +                 pkgAcqMetaBase *TransactionManager,
 +                 std::string URI,std::string URIDesc, std::string ShortDesc,
 +                 std::string MetaIndexFile,
 +               const std::vector<IndexTarget*>* IndexTargets,
 +               indexRecords* MetaIndexParser);
 +   virtual ~pkgAcqMetaSig();
 +};
 +                                                                      /*}}}*/
 +
 +/** \brief An item that is responsible for downloading the meta-index {{{
 + *  file (i.e., Release) itself and verifying its signature.
 + *
 + *  Once the download and verification are complete, the downloads of
 + *  the individual index files are queued up using pkgAcqDiffIndex.
 + *  If the meta-index file had a valid signature, the expected hashsums
 + *  of the index files will be the md5sums listed in the meta-index;
 + *  otherwise, the expected hashsums will be "" (causing the
 + *  authentication of the index files to be bypassed).
 + */
 +class pkgAcqMetaIndex : public pkgAcqMetaBase
 +{
 +   void *d;
 +
 +   protected:
 +   /** \brief The URI that is actually being downloaded; never
 +    *  modified by pkgAcqMetaIndex.
 +    */
 +   std::string RealURI;
  
 -   /** \brief Create a new pkgAcqSubIndex.
 +   /** \brief The file in which the signature for this index was stored.
      *
 -    *  \param Owner The Acquire object that owns this item.
 +    *  If empty, the signature and the md5sums of the individual
 +    *  indices will not be checked.
 +    */
 +   std::string SigFile;
 +
 +   /** \brief The index files to download. */
 +   const std::vector<IndexTarget*>* IndexTargets;
 +
 +   /** \brief The parser for the meta-index file. */
 +   indexRecords* MetaIndexParser;
 +
 +   /** \brief If \b true, the index's signature is currently being verified.
 +    */
 +   bool AuthPass;
 +   // required to deal gracefully with problems caused by incorrect ims hits
 +   bool IMSHit; 
 +
 +   /** \brief Check that the release file is a release file for the
 +    *  correct distribution.
      *
 -    *  \param URI The URI of the list file to download.
 +    *  \return \b true if no fatal errors were encountered.
 +    */
 +   bool VerifyVendor(std::string Message);
 +
 +   /** \brief Called when a file is finished being retrieved.
      *
 -    *  \param URIDesc A long description of the list file to download.
 +    *  If the file was not downloaded to DestFile, a copy process is
 +    *  set up to copy it to DestFile; otherwise, Complete is set to \b
 +    *  true and the file is moved to its final location.
      *
 -    *  \param ShortDesc A short description of the list file to download.
 +    *  \param Message The message block received from the fetch
 +    *  subprocess.
 +    */
 +   void RetrievalDone(std::string Message);
 +
 +   /** \brief Called when authentication succeeded.
      *
 -    *  \param ExpectedHashes The list file's hashsums which are expected.
 +    *  Sanity-checks the authenticated file, queues up the individual
 +    *  index files for download, and saves the signature in the lists
 +    *  directory next to the authenticated list file.
 +    *
 +    *  \param Message The message block received from the fetch
 +    *  subprocess.
      */
 -   pkgAcqSubIndex(pkgAcquire *Owner, std::string const &URI,std::string const &URIDesc,
 -                 std::string const &ShortDesc, HashStringList const &ExpectedHashes);
 +   void AuthDone(std::string Message);
 +
 +   std::string URIDesc;
 +   std::string ShortDesc;
 +
 +   /** \brief The URI of the meta-index file for the detached signature */
 +   std::string MetaIndexSigURI;
 +
 +   /** \brief A "URI-style" description of the meta-index file */
 +   std::string MetaIndexSigURIDesc;
 +
 +   /** \brief A brief description of the meta-index file */
 +   std::string MetaIndexSigShortDesc;
 +
 +   /** \brief delayed constructor */
 +   void Init(std::string URIDesc, std::string ShortDesc);
 +   
 +   public:
 +
 +   /** \brief Starts downloading the individual index files.
 +    *
 +    *  \param verify If \b true, only indices whose expected hashsum
 +    *  can be determined from the meta-index will be downloaded, and
 +    *  the hashsums of indices will be checked (reporting
 +    *  #StatAuthError if there is a mismatch).  If verify is \b false,
 +    *  no hashsum checking will be performed.
 +    */
 +   void QueueIndexes(bool verify);
 +
 +   // Specialized action members
 +   virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf);
 +   virtual void Done(std::string Message,unsigned long long Size, HashStringList const &Hashes,
 +                   pkgAcquire::MethodConfig *Cnf);
 +   virtual std::string Custom600Headers() const;
-    virtual std::string DescURI() const {return RealURI; };
++   virtual std::string DescURI() {return RealURI; };
 +   virtual void Finished();
 +
 +   /** \brief Create a new pkgAcqMetaIndex. */
 +   pkgAcqMetaIndex(pkgAcquire *Owner,
 +                   pkgAcqMetaBase *TransactionManager,
 +                 std::string URI,std::string URIDesc, std::string ShortDesc,
 +                   std::string MetaIndexSigURI, std::string MetaIndexSigURIDesc, std::string MetaIndexSigShortDesc,
 +                 const std::vector<IndexTarget*>* IndexTargets,
 +                 indexRecords* MetaIndexParser);
 +};
 +                                                                      /*}}}*/
 +/** \brief An item repsonsible for downloading clearsigned metaindexes        {{{*/
 +class pkgAcqMetaClearSig : public pkgAcqMetaIndex
 +{
 +   void *d;
 +
 +   /** \brief The URI of the meta-index file for the detached signature */
 +   std::string MetaIndexURI;
 +
 +   /** \brief A "URI-style" description of the meta-index file */
 +   std::string MetaIndexURIDesc;
 +
 +   /** \brief A brief description of the meta-index file */
 +   std::string MetaIndexShortDesc;
 +
 +   /** \brief The URI of the detached meta-signature file if the clearsigned one failed. */
 +   std::string MetaSigURI;
 +
 +   /** \brief A "URI-style" description of the meta-signature file */
 +   std::string MetaSigURIDesc;
 +
 +   /** \brief A brief description of the meta-signature file */
 +   std::string MetaSigShortDesc;
 +
 +public:
 +   virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf);
 +   virtual std::string Custom600Headers() const;
 +   virtual void Done(std::string Message,unsigned long long Size, HashStringList const &Hashes,
 +                   pkgAcquire::MethodConfig *Cnf);
 +
 +   /** \brief Create a new pkgAcqMetaClearSig. */
 +   pkgAcqMetaClearSig(pkgAcquire *Owner,
 +              std::string const &URI, std::string const &URIDesc, std::string const &ShortDesc,
 +              std::string const &MetaIndexURI, std::string const &MetaIndexURIDesc, std::string const &MetaIndexShortDesc,
 +              std::string const &MetaSigURI, std::string const &MetaSigURIDesc, std::string const &MetaSigShortDesc,
 +              const std::vector<IndexTarget*>* IndexTargets,
 +              indexRecords* MetaIndexParser);
 +   virtual ~pkgAcqMetaClearSig();
  };
                                                                        /*}}}*/
  
@@@ -873,7 -646,7 +878,7 @@@ class pkgAcqIndexDiffs : public pkgAcqB
  
     virtual void Done(std::string Message,unsigned long long Size, HashStringList const &Hashes,
                     pkgAcquire::MethodConfig *Cnf);
-    virtual std::string DescURI() const {return RealURI + "IndexDiffs";};
 -   virtual std::string DescURI() {return RealURI + "Index";};
++   virtual std::string DescURI() {return RealURI + "IndexDiffs";};
  
     /** \brief Create an index diff item.
      *
@@@ -1064,7 -828,211 +1069,6 @@@ class OptionalIndexTarget : public Inde
     }
  };
                                                                        /*}}}*/
 -/** \brief Information about an subindex index file. */                       /*{{{*/
 -class SubIndexTarget : public IndexTarget
 -{
 -   virtual bool IsSubIndex() const {
 -      return true;
 -   }
 -};
 -                                                                      /*}}}*/
 -/** \brief Information about an subindex index file. */                       /*{{{*/
 -class OptionalSubIndexTarget : public OptionalIndexTarget
 -{
 -   virtual bool IsSubIndex() const {
 -      return true;
 -   }
 -};
 -                                                                      /*}}}*/
 -
 -/** \brief An acquire item that downloads the detached signature      {{{
 - *  of a meta-index (Release) file, then queues up the release
 - *  file itself.
 - *
 - *  \todo Why protected members?
 - *
 - *  \sa pkgAcqMetaIndex
 - */
 -class pkgAcqMetaSig : public pkgAcquire::Item
 -{
 -   protected:
 -   /** \brief The last good signature file */
 -   std::string LastGoodSig;
 -
 -   /** \brief The URI of the signature file.  Unlike Desc.URI, this is
 -    *  never modified; it is used to determine the file that is being
 -    *  downloaded.
 -    */
 -   std::string RealURI;
 -
 -   /** \brief The URI of the meta-index file to be fetched after the signature. */
 -   std::string MetaIndexURI;
 -
 -   /** \brief A "URI-style" description of the meta-index file to be
 -    *  fetched after the signature.
 -    */
 -   std::string MetaIndexURIDesc;
 -
 -   /** \brief A brief description of the meta-index file to be fetched
 -    *  after the signature.
 -    */
 -   std::string MetaIndexShortDesc;
 -
 -   /** \brief A package-system-specific parser for the meta-index file. */
 -   indexRecords* MetaIndexParser;
 -
 -   /** \brief The index files which should be looked up in the meta-index
 -    *  and then downloaded.
 -    *
 -    *  \todo Why a list of pointers instead of a list of structs?
 -    */
 -   const std::vector<IndexTarget*>* IndexTargets;
 -
 -   public:
 -   
 -   // Specialized action members
 -   virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf);
 -   virtual void Done(std::string Message,unsigned long long Size, HashStringList const &Hashes,
 -                   pkgAcquire::MethodConfig *Cnf);
 -   virtual std::string Custom600Headers() const;
 -   virtual std::string DescURI() {return RealURI; };
 -
 -   /** \brief Create a new pkgAcqMetaSig. */
 -   pkgAcqMetaSig(pkgAcquire *Owner,std::string URI,std::string URIDesc, std::string ShortDesc,
 -               std::string MetaIndexURI, std::string MetaIndexURIDesc, std::string MetaIndexShortDesc,
 -               const std::vector<IndexTarget*>* IndexTargets,
 -               indexRecords* MetaIndexParser);
 -   virtual ~pkgAcqMetaSig();
 -};
 -                                                                      /*}}}*/
 -/** \brief An item that is responsible for downloading the meta-index {{{
 - *  file (i.e., Release) itself and verifying its signature.
 - *
 - *  Once the download and verification are complete, the downloads of
 - *  the individual index files are queued up using pkgAcqDiffIndex.
 - *  If the meta-index file had a valid signature, the expected hashsums
 - *  of the index files will be the md5sums listed in the meta-index;
 - *  otherwise, the expected hashsums will be "" (causing the
 - *  authentication of the index files to be bypassed).
 - */
 -class pkgAcqMetaIndex : public pkgAcquire::Item
 -{
 -   protected:
 -   /** \brief The URI that is actually being downloaded; never
 -    *  modified by pkgAcqMetaIndex.
 -    */
 -   std::string RealURI;
 -
 -   /** \brief The file in which the signature for this index was stored.
 -    *
 -    *  If empty, the signature and the md5sums of the individual
 -    *  indices will not be checked.
 -    */
 -   std::string SigFile;
 -
 -   /** \brief The index files to download. */
 -   const std::vector<IndexTarget*>* IndexTargets;
 -
 -   /** \brief The parser for the meta-index file. */
 -   indexRecords* MetaIndexParser;
 -
 -   /** \brief If \b true, the index's signature is currently being verified.
 -    */
 -   bool AuthPass;
 -   // required to deal gracefully with problems caused by incorrect ims hits
 -   bool IMSHit; 
 -
 -   /** \brief Check that the release file is a release file for the
 -    *  correct distribution.
 -    *
 -    *  \return \b true if no fatal errors were encountered.
 -    */
 -   bool VerifyVendor(std::string Message);
 -
 -   /** \brief Called when a file is finished being retrieved.
 -    *
 -    *  If the file was not downloaded to DestFile, a copy process is
 -    *  set up to copy it to DestFile; otherwise, Complete is set to \b
 -    *  true and the file is moved to its final location.
 -    *
 -    *  \param Message The message block received from the fetch
 -    *  subprocess.
 -    */
 -   void RetrievalDone(std::string Message);
 -
 -   /** \brief Called when authentication succeeded.
 -    *
 -    *  Sanity-checks the authenticated file, queues up the individual
 -    *  index files for download, and saves the signature in the lists
 -    *  directory next to the authenticated list file.
 -    *
 -    *  \param Message The message block received from the fetch
 -    *  subprocess.
 -    */
 -   void AuthDone(std::string Message);
 -
 -   /** \brief Starts downloading the individual index files.
 -    *
 -    *  \param verify If \b true, only indices whose expected hashsum
 -    *  can be determined from the meta-index will be downloaded, and
 -    *  the hashsums of indices will be checked (reporting
 -    *  #StatAuthError if there is a mismatch).  If verify is \b false,
 -    *  no hashsum checking will be performed.
 -    */
 -   void QueueIndexes(bool verify);
 -   
 -   public:
 -   
 -   // Specialized action members
 -   virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf);
 -   virtual void Done(std::string Message,unsigned long long Size, HashStringList const &Hashes,
 -                   pkgAcquire::MethodConfig *Cnf);
 -   virtual std::string Custom600Headers() const;
 -   virtual std::string DescURI() {return RealURI; };
 -
 -   /** \brief Create a new pkgAcqMetaIndex. */
 -   pkgAcqMetaIndex(pkgAcquire *Owner,
 -                 std::string URI,std::string URIDesc, std::string ShortDesc,
 -                 std::string SigFile,
 -                 const std::vector<IndexTarget*>* IndexTargets,
 -                 indexRecords* MetaIndexParser);
 -};
 -                                                                      /*}}}*/
 -/** \brief An item repsonsible for downloading clearsigned metaindexes        {{{*/
 -class pkgAcqMetaClearSig : public pkgAcqMetaIndex
 -{
 -   /** \brief The URI of the meta-index file for the detached signature */
 -   std::string MetaIndexURI;
 -
 -   /** \brief A "URI-style" description of the meta-index file */
 -   std::string MetaIndexURIDesc;
 -
 -   /** \brief A brief description of the meta-index file */
 -   std::string MetaIndexShortDesc;
 -
 -   /** \brief The URI of the detached meta-signature file if the clearsigned one failed. */
 -   std::string MetaSigURI;
 -
 -   /** \brief A "URI-style" description of the meta-signature file */
 -   std::string MetaSigURIDesc;
 -
 -   /** \brief A brief description of the meta-signature file */
 -   std::string MetaSigShortDesc;
 -
 -public:
 -   void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf);
 -   virtual std::string Custom600Headers() const;
--
 -   /** \brief Create a new pkgAcqMetaClearSig. */
 -   pkgAcqMetaClearSig(pkgAcquire *Owner,
 -              std::string const &URI, std::string const &URIDesc, std::string const &ShortDesc,
 -              std::string const &MetaIndexURI, std::string const &MetaIndexURIDesc, std::string const &MetaIndexShortDesc,
 -              std::string const &MetaSigURI, std::string const &MetaSigURIDesc, std::string const &MetaSigShortDesc,
 -              const std::vector<IndexTarget*>* IndexTargets,
 -              indexRecords* MetaIndexParser);
 -   virtual ~pkgAcqMetaClearSig();
 -};
 -                                                                      /*}}}*/
  /** \brief An item that is responsible for fetching a package file.   {{{
   *
   *  If the package file already exists in the cache, nothing will be
Simple merge
diff --cc methods/copy.cc
Simple merge
diff --cc methods/gpgv.cc
Simple merge