]> git.saurik.com Git - apt.git/commitdiff
rename Calculate- to GetIndexTargets and use it as official API
authorDavid Kalnischkies <david@kalnischkies.de>
Wed, 10 Jun 2015 21:53:36 +0000 (23:53 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Wed, 10 Jun 2015 21:53:36 +0000 (23:53 +0200)
We need a general way to get from a sources.list entry to IndexTargets
and with this change we can move from pkgSourceList over the list of
metaIndexes it includes to the IndexTargets each metaIndex can have.

Git-Dch: Ignore

apt-pkg/deb/debmetaindex.cc
apt-pkg/deb/debmetaindex.h
apt-pkg/metaindex.h

index 44d66a7253df0f3e379c47fb5c088e60ddb1d612..e1f86d20f01fa76fd078914bf169c10ef01e9aa1 100644 (file)
@@ -229,7 +229,7 @@ struct ComputeIndexTargetsClass
    }
 };
 
-std::vector<IndexTarget> debReleaseIndex::ComputeIndexTargets() const
+std::vector<IndexTarget> debReleaseIndex::GetIndexTargets() const
 {
    ComputeIndexTargetsClass comp;
    foreachTarget(URI, Dist, ArchEntries, comp);
@@ -247,7 +247,7 @@ bool debReleaseIndex::GetIndexes(pkgAcquire *Owner, bool const &GetAll) const
       iR->SetTrusted(false);
 
    // special case for --print-uris
-   std::vector<IndexTarget> const targets = ComputeIndexTargets();
+   std::vector<IndexTarget> const targets = GetIndexTargets();
 #define APT_TARGET(X) IndexTarget("", X, MetaIndexInfo(X), MetaIndexURI(X), false, std::map<std::string,std::string>())
    pkgAcqMetaBase * const TransactionManager = new pkgAcqMetaClearSig(Owner,
         APT_TARGET("InRelease"), APT_TARGET("Release"), APT_TARGET("Release.gpg"),
@@ -396,6 +396,7 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type
 
       map<string, string>::const_iterator const trusted = Options.find("trusted");
 
+      debReleaseIndex *Deb = NULL;
       for (vector<metaIndex *>::const_iterator I = List.begin();
           I != List.end(); ++I)
       {
@@ -403,34 +404,23 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type
         if (strcmp((*I)->GetType(), "deb") != 0)
            continue;
 
-        debReleaseIndex *Deb = (debReleaseIndex *) (*I);
-        if (trusted != Options.end())
-           Deb->SetTrusted(StringToBool(trusted->second, false));
-
         /* This check insures that there will be only one Release file
            queued for all the Packages files and Sources files it
            corresponds to. */
-        if (Deb->GetURI() == URI && Deb->GetDist() == Dist)
+        if ((*I)->GetURI() == URI && (*I)->GetDist() == Dist)
         {
-           if (IsSrc == true)
-              Deb->PushSectionEntry("source", new debReleaseIndex::debSectionEntry(Section, IsSrc));
-           else
-           {
-              if (Dist[Dist.size() - 1] == '/')
-                 Deb->PushSectionEntry("any", new debReleaseIndex::debSectionEntry(Section, IsSrc));
-              else
-                 Deb->PushSectionEntry(Archs, new debReleaseIndex::debSectionEntry(Section, IsSrc));
-           }
-           return true;
+           Deb = dynamic_cast<debReleaseIndex*>(*I);
+           if (Deb != NULL)
+              break;
         }
       }
 
       // No currently created Release file indexes this entry, so we create a new one.
-      debReleaseIndex *Deb;
-      if (trusted != Options.end())
-        Deb = new debReleaseIndex(URI, Dist, StringToBool(trusted->second, false));
-      else
+      if (Deb == NULL)
+      {
         Deb = new debReleaseIndex(URI, Dist);
+        List.push_back(Deb);
+      }
 
       if (IsSrc == true)
         Deb->PushSectionEntry ("source", new debReleaseIndex::debSectionEntry(Section, IsSrc));
@@ -441,7 +431,10 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type
         else
            Deb->PushSectionEntry (Archs, new debReleaseIndex::debSectionEntry(Section, IsSrc));
       }
-      List.push_back(Deb);
+
+      if (trusted != Options.end())
+        Deb->SetTrusted(StringToBool(trusted->second, false));
+
       return true;
    }
 };
index 4e630cf5d280ad3b175ed2a25fa2096d4e8218f4..0b1b08432b371da7ad4f85796e28e7aac2d079d5 100644 (file)
@@ -46,7 +46,7 @@ class APT_HIDDEN debReleaseIndex : public metaIndex {
 
    virtual std::string ArchiveURI(std::string const &File) const {return URI + File;};
    virtual bool GetIndexes(pkgAcquire *Owner, bool const &GetAll=false) const;
-   std::vector<IndexTarget> ComputeIndexTargets() const;
+   virtual std::vector<IndexTarget> GetIndexTargets() const;
 
    std::string MetaIndexInfo(const char *Type) const;
    std::string MetaIndexFile(const char *Types) const;
@@ -78,6 +78,9 @@ class APT_HIDDEN debDebFileMetaIndex : public metaIndex
    virtual bool GetIndexes(pkgAcquire* /*Owner*/, const bool& /*GetAll=false*/) const {
       return true;
    }
+   virtual std::vector<IndexTarget> GetIndexTargets() const {
+      return std::vector<IndexTarget>();
+   }
    virtual std::vector<pkgIndexFile *> *GetIndexFiles() {
       return Indexes;
    }
index 6c3d2880b2f0bb09dc76a086ece1883867a580af..4e5de8be05f68df6559d8471c276ca05f87f3f54 100644 (file)
@@ -22,6 +22,7 @@ using std::string;
 #endif
 
 class pkgAcquire;
+class IndexTarget;
 
 class metaIndex
 {
@@ -40,16 +41,13 @@ class metaIndex
    virtual const char* GetType() const {return Type;}
 
    // interface to to query it
-#if APT_PKG_ABI >= 413
    /** \return the path of the local file (or "" if its not available) */
    virtual std::string LocalFileName() const;
-#else
-   std::string LocalFileName() const;
-#endif
 
    // Interface for acquire
    virtual std::string ArchiveURI(std::string const& File) const = 0;
    virtual bool GetIndexes(pkgAcquire *Owner, bool const &GetAll=false) const = 0;
+   virtual std::vector<IndexTarget> GetIndexTargets() const = 0;
    virtual std::vector<pkgIndexFile *> *GetIndexFiles() = 0;
    virtual bool IsTrusted() const = 0;