From 916e5cb41edfa015fd8ec42ba140eb7c0c4cb511 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 4 Dec 2013 17:58:36 +0100 Subject: add #ifdefed ABI break & cleaner solution once the abi break is in place --- apt-pkg/deb/debmetaindex.cc | 3 ++- apt-pkg/deb/debmetaindex.h | 5 +++++ apt-pkg/makefile | 2 +- apt-pkg/metaindex.cc | 44 ++++++++++++++++++++++++++++++++++++++++++++ apt-pkg/metaindex.h | 21 +++++++++++++++------ cmdline/apt-get.cc | 5 +++++ 6 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 apt-pkg/metaindex.cc diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc index b597b6f3c..345b1ec11 100644 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@ -1,4 +1,3 @@ -// ijones, walters #include #include @@ -36,6 +35,7 @@ string debReleaseIndex::Info(const char *Type, string const &Section, string con return Info; } +#if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR < 13) string debReleaseIndex::MetaIndexInfo(const char *Type) const { string Info = ::URI::SiteOnly(URI) + ' '; @@ -71,6 +71,7 @@ string debReleaseIndex::MetaIndexURI(const char *Type) const Res += Type; return Res; } +#endif string debReleaseIndex::IndexURISuffix(const char *Type, string const &Section, string const &Arch) const { diff --git a/apt-pkg/deb/debmetaindex.h b/apt-pkg/deb/debmetaindex.h index b9ecab97c..fc0b7f948 100644 --- a/apt-pkg/deb/debmetaindex.h +++ b/apt-pkg/deb/debmetaindex.h @@ -3,6 +3,7 @@ #define PKGLIB_DEBMETAINDEX_H #include +#include #include #include @@ -39,9 +40,13 @@ class debReleaseIndex : public metaIndex { virtual bool GetIndexes(pkgAcquire *Owner, bool const &GetAll=false) const; std::vector * ComputeIndexTargets() const; std::string Info(const char *Type, std::string const &Section, std::string const &Arch="") const; + +#if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR < 13) std::string MetaIndexInfo(const char *Type) const; std::string MetaIndexFile(const char *Types) const; std::string MetaIndexURI(const char *Type) const; +#endif + std::string IndexURI(const char *Type, std::string const &Section, std::string const &Arch="native") const; std::string IndexURISuffix(const char *Type, std::string const &Section, std::string const &Arch="native") const; std::string SourceIndexURI(const char *Type, const std::string &Section) const; diff --git a/apt-pkg/makefile b/apt-pkg/makefile index a90131f80..108632695 100644 --- a/apt-pkg/makefile +++ b/apt-pkg/makefile @@ -41,7 +41,7 @@ SOURCE+= pkgcache.cc version.cc depcache.cc \ pkgrecords.cc algorithms.cc acquire.cc\ acquire-worker.cc acquire-method.cc init.cc clean.cc \ srcrecords.cc cachefile.cc versionmatch.cc policy.cc \ - pkgsystem.cc indexfile.cc pkgcachegen.cc acquire-item.cc \ + pkgsystem.cc indexfile.cc metaindex.cc pkgcachegen.cc acquire-item.cc \ indexrecords.cc vendor.cc vendorlist.cc cdrom.cc indexcopy.cc \ aptconfiguration.cc cachefilter.cc cacheset.cc edsp.cc \ install-progress.cc upgrade.cc update.cc diff --git a/apt-pkg/metaindex.cc b/apt-pkg/metaindex.cc new file mode 100644 index 000000000..2292ac388 --- /dev/null +++ b/apt-pkg/metaindex.cc @@ -0,0 +1,44 @@ + +#include + +#include "init.h" +#include "metaindex.h" + + +#if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR >= 13) +string metaIndex::MetaIndexInfo(const char *Type) const +{ + string Info = ::URI::SiteOnly(URI) + ' '; + if (Dist[Dist.size() - 1] == '/') + { + if (Dist != "/") + Info += Dist; + } + else + Info += Dist; + Info += " "; + Info += Type; + return Info; +} + +string metaIndex::MetaIndexFile(const char *Type) const +{ + return _config->FindDir("Dir::State::lists") + + URItoFileName(MetaIndexURI(Type)); +} + +string metaIndex::MetaIndexURI(const char *Type) const +{ + string Res; + + if (Dist == "/") + Res = URI; + else if (Dist[Dist.size()-1] == '/') + Res = URI + Dist; + else + Res = URI + "dists/" + Dist + "/"; + + Res += Type; + return Res; +} +#endif diff --git a/apt-pkg/metaindex.h b/apt-pkg/metaindex.h index 0c2600c3a..6503f7dc8 100644 --- a/apt-pkg/metaindex.h +++ b/apt-pkg/metaindex.h @@ -5,6 +5,7 @@ #include #include #include +#include #ifndef APT_8_CLEANER_HEADERS #include @@ -28,24 +29,32 @@ class metaIndex public: - // Various accessors virtual std::string GetURI() const {return URI;} virtual std::string GetDist() const {return Dist;} virtual const char* GetType() const {return Type;} // Interface for acquire - virtual std::string ArchiveURI(std::string const& /*File*/) const = 0; + virtual std::string ArchiveURI(std::string const& File) const = 0; virtual bool GetIndexes(pkgAcquire *Owner, bool const &GetAll=false) const = 0; - virtual std::vector *GetIndexFiles() = 0; virtual bool IsTrusted() const = 0; - metaIndex(std::string const &URI, std::string const &Dist, char const * const Type) : - Indexes(NULL), Type(Type), URI(URI), Dist(Dist) { +#if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR >= 13) + virtual std::string MetaIndexInfo(const char *Type) const; + virtual std::string MetaIndexFile(const char *Types) const; + virtual std::string MetaIndexURI(const char *Type) const; +#endif + + metaIndex(std::string const &URI, std::string const &Dist, + char const * const Type) + : Indexes(NULL), Type(Type), URI(URI), Dist(Dist) + { + /* nothing */ } - virtual ~metaIndex() { + virtual ~metaIndex() + { if (Indexes == 0) return; for (std::vector::iterator I = (*Indexes).begin(); diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index f0405e75c..5f04135d2 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -136,10 +136,15 @@ bool TryToInstallBuildDep(pkgCache::PkgIterator Pkg,pkgCacheFile &Cache, /*}}}*/ // FIXME: move into more generic code (metaindex ?) +#if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR < 13) std::string MetaIndexFileName(metaIndex *metaindex) { // FIXME: this cast is the horror, the horror debReleaseIndex *r = (debReleaseIndex*)metaindex; +#else +std::string MetaIndexFileName(metaIndex *r) +{ +#endif // see if we have a InRelease file std::string PathInRelease = r->MetaIndexFile("InRelease"); -- cgit v1.2.3