From feab34c5216941ca95aae1a389238a77b662d1de Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 22 Apr 2014 17:59:09 +0200 Subject: add support for apt-get build-dep foo.dsc --- apt-pkg/deb/debsrcrecords.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'apt-pkg/deb/debsrcrecords.h') diff --git a/apt-pkg/deb/debsrcrecords.h b/apt-pkg/deb/debsrcrecords.h index b65d1480b..0cd664818 100644 --- a/apt-pkg/deb/debsrcrecords.h +++ b/apt-pkg/deb/debsrcrecords.h @@ -26,6 +26,7 @@ class debSrcRecordParser : public pkgSrcRecords::Parser /** \brief dpointer placeholder (for later in case we need it) */ void *d; + protected: FileFd Fd; pkgTagFile Tags; pkgTagSection Sect; @@ -60,4 +61,10 @@ class debSrcRecordParser : public pkgSrcRecords::Parser virtual ~debSrcRecordParser(); }; +class debDscRecordParser : public debSrcRecordParser +{ + public: + debDscRecordParser(std::string const &DscFile); +}; + #endif -- cgit v1.2.3-70-g09d2 From a49e7948029d8219d7cb182fbc1b0adb587691b8 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 23 Apr 2014 13:51:48 +0200 Subject: create debIFTypeDscFile type --- apt-pkg/deb/debindexfile.cc | 52 ++++++++++++++++++++++++++++++++++++++++++++ apt-pkg/deb/debindexfile.h | 18 +++++++++++++++ apt-pkg/deb/debsrcrecords.cc | 4 ++-- apt-pkg/deb/debsrcrecords.h | 2 +- apt-pkg/indexfile.h | 1 + apt-pkg/pkgsystem.h | 6 +++-- apt-pkg/sourcelist.h | 2 +- cmdline/apt-get.cc | 20 ++++++++--------- 8 files changed, 89 insertions(+), 16 deletions(-) (limited to 'apt-pkg/deb/debsrcrecords.h') diff --git a/apt-pkg/deb/debindexfile.cc b/apt-pkg/deb/debindexfile.cc index eee758b7a..e7e764dd4 100644 --- a/apt-pkg/deb/debindexfile.cc +++ b/apt-pkg/deb/debindexfile.cc @@ -667,6 +667,42 @@ APT_CONST bool debStatusIndex::Exists() const } /*}}}*/ + +// debDscFileIndex stuff +debDscFileIndex::debDscFileIndex(std::string &DscFile) + : pkgIndexFile(true), DscFile(DscFile) +{ +} + +bool debDscFileIndex::Exists() const +{ + return FileExists(DscFile); +} + +unsigned long debDscFileIndex::Size() const +{ + struct stat buf; + if(stat(DscFile.c_str(), &buf) == 0) + return buf.st_size; + return 0; +} + +// DscFileIndex::CreateSrcParser - Get a parser for the .dsc file /*{{{*/ +// --------------------------------------------------------------------- +/* */ +pkgSrcRecords::Parser *debDscFileIndex::CreateSrcParser() const +{ + if (!FileExists(DscFile)) + return NULL; + + return new debDscRecordParser(DscFile,this); +} + /*}}}*/ + + + + +// --------------------------------------------------------------------- // Index File types for Debian /*{{{*/ class debIFTypeSrc : public pkgIndexFile::Type { @@ -699,10 +735,22 @@ class debIFTypeStatus : public pkgIndexFile::Type }; debIFTypeStatus() {Label = "Debian dpkg status file";}; }; +class debIFTypeDscFile : public pkgIndexFile::Type +{ + public: + virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string DscFile) const + { + return new debDscRecordParser(DscFile, NULL); + }; + debIFTypeDscFile() {Label = "dsc File Source Index";}; +}; + static debIFTypeSrc _apt_Src; static debIFTypePkg _apt_Pkg; static debIFTypeTrans _apt_Trans; static debIFTypeStatus _apt_Status; +// file based pseudo indexes +static debIFTypeDscFile _apt_DscFile; const pkgIndexFile::Type *debSourcesIndex::GetType() const { @@ -720,5 +768,9 @@ const pkgIndexFile::Type *debStatusIndex::GetType() const { return &_apt_Status; } +const pkgIndexFile::Type *debDscFileIndex::GetType() const +{ + return &_apt_DscFile; +} /*}}}*/ diff --git a/apt-pkg/deb/debindexfile.h b/apt-pkg/deb/debindexfile.h index 017c69a0a..88abfdd9d 100644 --- a/apt-pkg/deb/debindexfile.h +++ b/apt-pkg/deb/debindexfile.h @@ -164,4 +164,22 @@ class debSourcesIndex : public pkgIndexFile virtual ~debSourcesIndex() {}; }; +class debDscFileIndex : public pkgIndexFile +{ + private: + std::string DscFile; + public: + virtual const Type *GetType() const APT_CONST; + virtual pkgSrcRecords::Parser *CreateSrcParser() const; + virtual bool Exists() const; + virtual bool HasPackages() const {return false;}; + virtual unsigned long Size() const; + virtual std::string Describe(bool /*Short*/) const { + return DscFile; + }; + + debDscFileIndex(std::string &DscFile); + virtual ~debDscFileIndex() {}; +}; + #endif diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc index fc748c40f..8aad81e3c 100644 --- a/apt-pkg/deb/debsrcrecords.cc +++ b/apt-pkg/deb/debsrcrecords.cc @@ -192,8 +192,8 @@ debSrcRecordParser::~debSrcRecordParser() /*}}}*/ -debDscRecordParser::debDscRecordParser(std::string const &DscFile) - : debSrcRecordParser(DscFile, NULL) +debDscRecordParser::debDscRecordParser(std::string const &DscFile, pkgIndexFile const *Index) + : debSrcRecordParser(DscFile, Index) { // support clear signed files if (OpenMaybeClearSignedFile(DscFile, Fd) == false) diff --git a/apt-pkg/deb/debsrcrecords.h b/apt-pkg/deb/debsrcrecords.h index 0cd664818..a0a151875 100644 --- a/apt-pkg/deb/debsrcrecords.h +++ b/apt-pkg/deb/debsrcrecords.h @@ -64,7 +64,7 @@ class debSrcRecordParser : public pkgSrcRecords::Parser class debDscRecordParser : public debSrcRecordParser { public: - debDscRecordParser(std::string const &DscFile); + debDscRecordParser(std::string const &DscFile, pkgIndexFile const *Index); }; #endif diff --git a/apt-pkg/indexfile.h b/apt-pkg/indexfile.h index b5c9ac77e..817165f08 100644 --- a/apt-pkg/indexfile.h +++ b/apt-pkg/indexfile.h @@ -59,6 +59,7 @@ class pkgIndexFile const char *Label; virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator /*File*/) const {return 0;}; + virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string /*File*/) const {return 0;}; Type(); virtual ~Type() {}; }; diff --git a/apt-pkg/pkgsystem.h b/apt-pkg/pkgsystem.h index 6e33c67ed..f88ffa7c8 100644 --- a/apt-pkg/pkgsystem.h +++ b/apt-pkg/pkgsystem.h @@ -85,10 +85,12 @@ class pkgSystem virtual bool AddStatusFiles(std::vector &List) = 0; virtual bool FindIndex(pkgCache::PkgFileIterator File, pkgIndexFile *&Found) const = 0; - + /* Evauluate how 'right' we are for this system based on the filesystem etc.. */ - virtual signed Score(Configuration const &/*Cnf*/) {return 0;}; + virtual signed Score(Configuration const &/*Cnf*/) { + return 0; + }; pkgSystem(); virtual ~pkgSystem() {}; diff --git a/apt-pkg/sourcelist.h b/apt-pkg/sourcelist.h index 9df0c1d74..0ebf4e080 100644 --- a/apt-pkg/sourcelist.h +++ b/apt-pkg/sourcelist.h @@ -86,7 +86,7 @@ class pkgSourceList typedef std::vector::const_iterator const_iterator; - protected: + public: std::vector SrcList; diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 92384931b..5418c351b 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -57,9 +57,6 @@ #include #include -// FIXME: direct include of deb specific header -#include - #include #include #include @@ -1057,22 +1054,25 @@ static bool DoBuildDep(CommandLine &CmdL) { string Src; pkgSrcRecords::Parser *Last = 0; - vector BuildDeps; - // support local .dsc files - if (FileExists(*I) && flExtension(*I) == "dsc") + // if its a local file (e.g. .dsc) use this + if (FileExists(*I)) { - // FIXME: add a layer of abstraction - Last = new debDscRecordParser(*I); - Src = *I; + // see if we can get a parser for this pkgIndexFile type + string TypeName = flExtension(*I) + " File Source Index"; + pkgIndexFile::Type *Type = pkgIndexFile::Type::GetType(TypeName.c_str()); + if(Type != NULL) + Last = Type->CreateSrcPkgParser(*I); } else { + // normal case, search the cache for the source file Last = FindSrc(*I,Recs,SrcRecs,Src,Cache); } + if (Last == 0) return _error->Error(_("Unable to find a source package for %s"),Src.c_str()); // Process the build-dependencies - + vector BuildDeps; // FIXME: Can't specify architecture to use for [wildcard] matching, so switch default arch temporary if (hostArch.empty() == false) { -- cgit v1.2.3-70-g09d2 From dce45dbe97531de6806707445da97d3f22285db8 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 6 Nov 2014 12:41:04 +0100 Subject: mark internal interfaces as hidden MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We have a bunch of classes which are of no use for the outside world, but were still exported and so needed to preserve ABI/API. Marking them as hidden to not export them any longer is a big API break in theory, but in practice nobody is using them – as if they would its a bug. --- apt-pkg/acquire-item.h | 33 ++-- apt-pkg/deb/debindexfile.cc | 28 +-- apt-pkg/deb/debindexfile.h | 14 +- apt-pkg/deb/deblistparser.h | 18 +- apt-pkg/deb/debmetaindex.cc | 15 +- apt-pkg/deb/debmetaindex.h | 4 +- apt-pkg/deb/debrecords.h | 4 +- apt-pkg/deb/debsrcrecords.h | 4 +- apt-pkg/deb/debsystem.cc | 2 +- apt-pkg/edsp/edspindexfile.cc | 4 +- apt-pkg/edsp/edspindexfile.h | 2 +- apt-pkg/edsp/edsplistparser.h | 2 +- apt-pkg/edsp/edspsystem.cc | 4 +- apt-pkg/edsp/edspsystem.h | 4 +- apt-pkg/init.cc | 2 +- apt-pkg/pkgcachegen.h | 10 +- debian/libapt-pkg4.15.symbols | 419 ------------------------------------------ 17 files changed, 72 insertions(+), 497 deletions(-) (limited to 'apt-pkg/deb/debsrcrecords.h') diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index 10d7e6a09..6fcb42c3a 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -342,7 +342,7 @@ class pkgAcquire::Item : public WeakPointable }; /*}}}*/ /** \brief Information about an index patch (aka diff). */ /*{{{*/ -struct DiffInfo { +struct APT_HIDDEN DiffInfo { /** The filename of the diff. */ std::string file; @@ -359,9 +359,7 @@ struct DiffInfo { unsigned long long patch_size; }; /*}}}*/ - /*}}}*/ - -class pkgAcqMetaBase : public pkgAcquire::Item +class pkgAcqMetaBase : public pkgAcquire::Item /*{{{*/ { void *d; @@ -441,12 +439,12 @@ class pkgAcqMetaBase : public pkgAcquire::Item bool TransactionHasError() APT_PURE; void CommitTransaction(); - /** \brief Stage (queue) a copy action when the transaction is commited + /** \brief Stage (queue) a copy action when the transaction is committed */ void TransactionStageCopy(Item *I, const std::string &From, const std::string &To); - /** \brief Stage (queue) a removal action when the transaction is commited + /** \brief Stage (queue) a removal action when the transaction is committed */ void TransactionStageRemoval(Item *I, const std::string &FinalFile); @@ -459,7 +457,7 @@ class pkgAcqMetaBase : public pkgAcquire::Item MetaIndexParser(MetaIndexParser), IndexTargets(IndexTargets), AuthPass(false), IMSHit(false) {}; }; - + /*}}}*/ /** \brief An acquire item that downloads the detached signature {{{ * of a meta-index (Release) file, then queues up the release * file itself. @@ -468,7 +466,7 @@ class pkgAcqMetaBase : public pkgAcquire::Item * * \sa pkgAcqMetaIndex */ -class pkgAcqMetaSig : public pkgAcqMetaBase +class APT_HIDDEN pkgAcqMetaSig : public pkgAcqMetaBase { void *d; @@ -512,7 +510,6 @@ class pkgAcqMetaSig : public pkgAcqMetaBase virtual ~pkgAcqMetaSig(); }; /*}}}*/ - /** \brief An item that is responsible for downloading the meta-index {{{ * file (i.e., Release) itself and verifying its signature. * @@ -523,7 +520,7 @@ class pkgAcqMetaSig : public pkgAcqMetaBase * otherwise, the expected hashsums will be "" (causing the * authentication of the index files to be bypassed). */ -class pkgAcqMetaIndex : public pkgAcqMetaBase +class APT_HIDDEN pkgAcqMetaIndex : public pkgAcqMetaBase { void *d; @@ -568,7 +565,7 @@ class pkgAcqMetaIndex : public pkgAcqMetaBase }; /*}}}*/ /** \brief An item repsonsible for downloading clearsigned metaindexes {{{*/ -class pkgAcqMetaClearSig : public pkgAcqMetaIndex +class APT_HIDDEN pkgAcqMetaClearSig : public pkgAcqMetaIndex { void *d; @@ -607,8 +604,6 @@ public: virtual ~pkgAcqMetaClearSig(); }; /*}}}*/ - - /** \brief Common base class for all classes that deal with fetching {{{ indexes */ @@ -652,7 +647,7 @@ class pkgAcqBaseIndex : public pkgAcquire::Item * * \sa pkgAcqIndexDiffs, pkgAcqIndex */ -class pkgAcqDiffIndex : public pkgAcqBaseIndex +class APT_HIDDEN pkgAcqDiffIndex : public pkgAcqBaseIndex { void *d; @@ -725,7 +720,7 @@ class pkgAcqDiffIndex : public pkgAcqBaseIndex * * \sa pkgAcqDiffIndex, pkgAcqIndex */ -class pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex +class APT_HIDDEN pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex { void *d; @@ -813,7 +808,7 @@ class pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex * * \sa pkgAcqDiffIndex, pkgAcqIndex */ -class pkgAcqIndexDiffs : public pkgAcqBaseIndex +class APT_HIDDEN pkgAcqIndexDiffs : public pkgAcqBaseIndex { void *d; @@ -929,7 +924,7 @@ class pkgAcqIndexDiffs : public pkgAcqBaseIndex * * \todo Why does pkgAcqIndex have protected members? */ -class pkgAcqIndex : public pkgAcqBaseIndex +class APT_HIDDEN pkgAcqIndex : public pkgAcqBaseIndex { void *d; @@ -1028,7 +1023,7 @@ class pkgAcqIndex : public pkgAcqBaseIndex }; /*}}}*/ /** \brief Information about an index file. */ /*{{{*/ -class IndexTarget +class APT_HIDDEN IndexTarget { void *d; @@ -1053,7 +1048,7 @@ class IndexTarget }; /*}}}*/ /** \brief Information about an optional index file. */ /*{{{*/ -class OptionalIndexTarget : public IndexTarget +class APT_HIDDEN OptionalIndexTarget : public IndexTarget { void *d; diff --git a/apt-pkg/deb/debindexfile.cc b/apt-pkg/deb/debindexfile.cc index 335f9d36e..cecfe41a9 100644 --- a/apt-pkg/deb/debindexfile.cc +++ b/apt-pkg/deb/debindexfile.cc @@ -802,13 +802,13 @@ pkgSrcRecords::Parser *debDscFileIndex::CreateSrcParser() const } /*}}}*/ // Index File types for Debian /*{{{*/ -class debIFTypeSrc : public pkgIndexFile::Type +class APT_HIDDEN debIFTypeSrc : public pkgIndexFile::Type { public: debIFTypeSrc() {Label = "Debian Source Index";}; }; -class debIFTypePkg : public pkgIndexFile::Type +class APT_HIDDEN debIFTypePkg : public pkgIndexFile::Type { public: @@ -818,12 +818,12 @@ class debIFTypePkg : public pkgIndexFile::Type }; debIFTypePkg() {Label = "Debian Package Index";}; }; -class debIFTypeTrans : public debIFTypePkg +class APT_HIDDEN debIFTypeTrans : public debIFTypePkg { public: debIFTypeTrans() {Label = "Debian Translation Index";}; }; -class debIFTypeStatus : public pkgIndexFile::Type +class APT_HIDDEN debIFTypeStatus : public pkgIndexFile::Type { public: @@ -833,7 +833,7 @@ class debIFTypeStatus : public pkgIndexFile::Type }; debIFTypeStatus() {Label = "Debian dpkg status file";}; }; -class debIFTypeDebPkgFile : public pkgIndexFile::Type +class APT_HIDDEN debIFTypeDebPkgFile : public pkgIndexFile::Type { public: virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator File) const @@ -842,7 +842,7 @@ class debIFTypeDebPkgFile : public pkgIndexFile::Type }; debIFTypeDebPkgFile() {Label = "deb Package file";}; }; -class debIFTypeDscFile : public pkgIndexFile::Type +class APT_HIDDEN debIFTypeDscFile : public pkgIndexFile::Type { public: virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string DscFile) const @@ -851,7 +851,7 @@ class debIFTypeDscFile : public pkgIndexFile::Type }; debIFTypeDscFile() {Label = "dsc File Source Index";}; }; -class debIFTypeDebianSourceDir : public pkgIndexFile::Type +class APT_HIDDEN debIFTypeDebianSourceDir : public pkgIndexFile::Type { public: virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string SourceDir) const @@ -861,14 +861,14 @@ class debIFTypeDebianSourceDir : public pkgIndexFile::Type debIFTypeDebianSourceDir() {Label = "debian/control File Source Index";}; }; -static debIFTypeSrc _apt_Src; -static debIFTypePkg _apt_Pkg; -static debIFTypeTrans _apt_Trans; -static debIFTypeStatus _apt_Status; -static debIFTypeDebPkgFile _apt_DebPkgFile; +APT_HIDDEN debIFTypeSrc _apt_Src; +APT_HIDDEN debIFTypePkg _apt_Pkg; +APT_HIDDEN debIFTypeTrans _apt_Trans; +APT_HIDDEN debIFTypeStatus _apt_Status; +APT_HIDDEN debIFTypeDebPkgFile _apt_DebPkgFile; // file based pseudo indexes -static debIFTypeDscFile _apt_DscFile; -static debIFTypeDebianSourceDir _apt_DebianSourceDir; +APT_HIDDEN debIFTypeDscFile _apt_DscFile; +APT_HIDDEN debIFTypeDebianSourceDir _apt_DebianSourceDir; const pkgIndexFile::Type *debSourcesIndex::GetType() const { diff --git a/apt-pkg/deb/debindexfile.h b/apt-pkg/deb/debindexfile.h index d727d9547..312e915f1 100644 --- a/apt-pkg/deb/debindexfile.h +++ b/apt-pkg/deb/debindexfile.h @@ -28,7 +28,7 @@ class pkgAcquire; class pkgCacheGenerator; -class debStatusIndex : public pkgIndexFile +class APT_HIDDEN debStatusIndex : public pkgIndexFile { /** \brief dpointer placeholder (for later in case we need it) */ void *d; @@ -55,7 +55,7 @@ class debStatusIndex : public pkgIndexFile virtual ~debStatusIndex(); }; -class debPackagesIndex : public pkgIndexFile +class APT_HIDDEN debPackagesIndex : public pkgIndexFile { /** \brief dpointer placeholder (for later in case we need it) */ void *d; @@ -92,7 +92,7 @@ class debPackagesIndex : public pkgIndexFile virtual ~debPackagesIndex(); }; -class debTranslationsIndex : public pkgIndexFile +class APT_HIDDEN debTranslationsIndex : public pkgIndexFile { /** \brief dpointer placeholder (for later in case we need it) */ void *d; @@ -126,7 +126,7 @@ class debTranslationsIndex : public pkgIndexFile virtual ~debTranslationsIndex(); }; -class debSourcesIndex : public pkgIndexFile +class APT_HIDDEN debSourcesIndex : public pkgIndexFile { /** \brief dpointer placeholder (for later in case we need it) */ void *d; @@ -163,7 +163,7 @@ class debSourcesIndex : public pkgIndexFile virtual ~debSourcesIndex(); }; -class debDebPkgFileIndex : public pkgIndexFile +class APT_HIDDEN debDebPkgFileIndex : public pkgIndexFile { private: void *d; @@ -193,7 +193,7 @@ class debDebPkgFileIndex : public pkgIndexFile virtual ~debDebPkgFileIndex(); }; -class debDscFileIndex : public pkgIndexFile +class APT_HIDDEN debDscFileIndex : public pkgIndexFile { private: std::string DscFile; @@ -211,7 +211,7 @@ class debDscFileIndex : public pkgIndexFile virtual ~debDscFileIndex() {}; }; -class debDebianSourceDirIndex : public debDscFileIndex +class APT_HIDDEN debDebianSourceDirIndex : public debDscFileIndex { public: virtual const Type *GetType() const APT_CONST; diff --git a/apt-pkg/deb/deblistparser.h b/apt-pkg/deb/deblistparser.h index a757e69f1..6279d8399 100644 --- a/apt-pkg/deb/deblistparser.h +++ b/apt-pkg/deb/deblistparser.h @@ -26,7 +26,7 @@ class FileFd; -class debListParser : public pkgCacheGenerator::ListParser +class APT_HIDDEN debListParser : public pkgCacheGenerator::ListParser { public: @@ -59,7 +59,7 @@ class debListParser : public pkgCacheGenerator::ListParser public: - static unsigned char GetPrio(std::string Str); + APT_PUBLIC static unsigned char GetPrio(std::string Str); // These all operate against the current section virtual std::string Package(); @@ -84,26 +84,26 @@ class debListParser : public pkgCacheGenerator::ListParser bool LoadReleaseInfo(pkgCache::PkgFileIterator &FileI,FileFd &File, std::string section); - static const char *ParseDepends(const char *Start,const char *Stop, + APT_PUBLIC static const char *ParseDepends(const char *Start,const char *Stop, std::string &Package,std::string &Ver,unsigned int &Op); - static const char *ParseDepends(const char *Start,const char *Stop, + APT_PUBLIC static const char *ParseDepends(const char *Start,const char *Stop, std::string &Package,std::string &Ver,unsigned int &Op, bool const &ParseArchFlags); - static const char *ParseDepends(const char *Start,const char *Stop, + APT_PUBLIC static const char *ParseDepends(const char *Start,const char *Stop, std::string &Package,std::string &Ver,unsigned int &Op, bool const &ParseArchFlags, bool const &StripMultiArch); - static const char *ParseDepends(const char *Start,const char *Stop, + APT_PUBLIC static const char *ParseDepends(const char *Start,const char *Stop, std::string &Package,std::string &Ver,unsigned int &Op, bool const &ParseArchFlags, bool const &StripMultiArch, bool const &ParseRestrictionsList); - static const char *ConvertRelation(const char *I,unsigned int &Op); + APT_PUBLIC static const char *ConvertRelation(const char *I,unsigned int &Op); debListParser(FileFd *File, std::string const &Arch = ""); virtual ~debListParser(); }; -class debDebFileParser : public debListParser +class APT_HIDDEN debDebFileParser : public debListParser { private: std::string DebFile; @@ -114,7 +114,7 @@ class debDebFileParser : public debListParser pkgCache::VerIterator &Ver); }; -class debTranslationsParser : public debListParser +class APT_HIDDEN debTranslationsParser : public debListParser { public: // a translation can never be a real package diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc index d99fd8393..81e067424 100644 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@ -392,7 +392,7 @@ debReleaseIndex::debSectionEntry::debSectionEntry (string const &Section, bool const &IsSrc): Section(Section), IsSrc(IsSrc) {} -class debSLTypeDebian : public pkgSourceList::Type +class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type { protected: @@ -484,7 +484,7 @@ debDebFileMetaIndex::debDebFileMetaIndex(std::string const &DebFile) } -class debSLTypeDeb : public debSLTypeDebian +class APT_HIDDEN debSLTypeDeb : public debSLTypeDebian { public: @@ -502,7 +502,7 @@ class debSLTypeDeb : public debSLTypeDebian } }; -class debSLTypeDebSrc : public debSLTypeDebian +class APT_HIDDEN debSLTypeDebSrc : public debSLTypeDebian { public: @@ -520,7 +520,7 @@ class debSLTypeDebSrc : public debSLTypeDebian } }; -class debSLTypeDebFile : public pkgSourceList::Type +class APT_HIDDEN debSLTypeDebFile : public pkgSourceList::Type { public: @@ -539,6 +539,7 @@ class debSLTypeDebFile : public pkgSourceList::Type Label = "Debian Deb File"; } }; -debSLTypeDeb _apt_DebType; -debSLTypeDebSrc _apt_DebSrcType; -debSLTypeDebFile _apt_DebFileType; + +APT_HIDDEN debSLTypeDeb _apt_DebType; +APT_HIDDEN debSLTypeDebSrc _apt_DebSrcType; +APT_HIDDEN debSLTypeDebFile _apt_DebFileType; diff --git a/apt-pkg/deb/debmetaindex.h b/apt-pkg/deb/debmetaindex.h index 4a8e454c7..94d005760 100644 --- a/apt-pkg/deb/debmetaindex.h +++ b/apt-pkg/deb/debmetaindex.h @@ -21,7 +21,7 @@ class pkgIndexFile; class debDebPkgFileIndex; class IndexTarget; -class debReleaseIndex : public metaIndex { +class APT_HIDDEN debReleaseIndex : public metaIndex { public: class debSectionEntry @@ -74,7 +74,7 @@ class debReleaseIndex : public metaIndex { void PushSectionEntry(const debSectionEntry *Entry); }; -class debDebFileMetaIndex : public metaIndex +class APT_HIDDEN debDebFileMetaIndex : public metaIndex { private: std::string DebFile; diff --git a/apt-pkg/deb/debrecords.h b/apt-pkg/deb/debrecords.h index 6b5f94334..7091c38e6 100644 --- a/apt-pkg/deb/debrecords.h +++ b/apt-pkg/deb/debrecords.h @@ -25,7 +25,7 @@ #include #endif -class debRecordParser : public pkgRecords::Parser +class APT_HIDDEN debRecordParser : public pkgRecords::Parser { /** \brief dpointer placeholder (for later in case we need it) */ void *d; @@ -64,7 +64,7 @@ class debRecordParser : public pkgRecords::Parser }; // custom record parser that reads deb files directly -class debDebFileRecordParser : public debRecordParser +class APT_HIDDEN debDebFileRecordParser : public debRecordParser { public: virtual std::string FileName() { diff --git a/apt-pkg/deb/debsrcrecords.h b/apt-pkg/deb/debsrcrecords.h index a0a151875..1a09f6546 100644 --- a/apt-pkg/deb/debsrcrecords.h +++ b/apt-pkg/deb/debsrcrecords.h @@ -21,7 +21,7 @@ class pkgIndexFile; -class debSrcRecordParser : public pkgSrcRecords::Parser +class APT_HIDDEN debSrcRecordParser : public pkgSrcRecords::Parser { /** \brief dpointer placeholder (for later in case we need it) */ void *d; @@ -61,7 +61,7 @@ class debSrcRecordParser : public pkgSrcRecords::Parser virtual ~debSrcRecordParser(); }; -class debDscRecordParser : public debSrcRecordParser +class APT_HIDDEN debDscRecordParser : public debSrcRecordParser { public: debDscRecordParser(std::string const &DscFile, pkgIndexFile const *Index); diff --git a/apt-pkg/deb/debsystem.cc b/apt-pkg/deb/debsystem.cc index 142f3a6e6..9a5da9da1 100644 --- a/apt-pkg/deb/debsystem.cc +++ b/apt-pkg/deb/debsystem.cc @@ -38,7 +38,7 @@ using std::string; debSystem debSys; -class debSystemPrivate { +class APT_HIDDEN debSystemPrivate { public: debSystemPrivate() : LockFD(-1), LockCount(0), StatusFile(0) { diff --git a/apt-pkg/edsp/edspindexfile.cc b/apt-pkg/edsp/edspindexfile.cc index c38f24567..d00536362 100644 --- a/apt-pkg/edsp/edspindexfile.cc +++ b/apt-pkg/edsp/edspindexfile.cc @@ -65,7 +65,7 @@ bool edspIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const } /*}}}*/ // Index File types for APT /*{{{*/ -class edspIFType: public pkgIndexFile::Type +class APT_HIDDEN edspIFType: public pkgIndexFile::Type { public: virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator) const @@ -75,7 +75,7 @@ class edspIFType: public pkgIndexFile::Type }; edspIFType() {Label = "EDSP scenario file";}; }; -static edspIFType _apt_Universe; +APT_HIDDEN edspIFType _apt_Universe; const pkgIndexFile::Type *edspIndex::GetType() const { diff --git a/apt-pkg/edsp/edspindexfile.h b/apt-pkg/edsp/edspindexfile.h index 609a2cde4..8c18d8cbd 100644 --- a/apt-pkg/edsp/edspindexfile.h +++ b/apt-pkg/edsp/edspindexfile.h @@ -18,7 +18,7 @@ class OpProgress; class pkgCacheGenerator; -class edspIndex : public debStatusIndex +class APT_HIDDEN edspIndex : public debStatusIndex { /** \brief dpointer placeholder (for later in case we need it) */ void *d; diff --git a/apt-pkg/edsp/edsplistparser.h b/apt-pkg/edsp/edsplistparser.h index 959fb587f..86cd77606 100644 --- a/apt-pkg/edsp/edsplistparser.h +++ b/apt-pkg/edsp/edsplistparser.h @@ -25,7 +25,7 @@ class FileFd; -class edspListParser : public debListParser +class APT_HIDDEN edspListParser : public debListParser { public: virtual bool NewVersion(pkgCache::VerIterator &Ver); diff --git a/apt-pkg/edsp/edspsystem.cc b/apt-pkg/edsp/edspsystem.cc index 92edb8d77..063517421 100644 --- a/apt-pkg/edsp/edspsystem.cc +++ b/apt-pkg/edsp/edspsystem.cc @@ -26,8 +26,6 @@ #include /*}}}*/ -edspSystem edspSys; - // System::debSystem - Constructor /*{{{*/ edspSystem::edspSystem() { @@ -126,3 +124,5 @@ bool edspSystem::FindIndex(pkgCache::PkgFileIterator File, return false; } /*}}}*/ + +APT_HIDDEN edspSystem edspSys; diff --git a/apt-pkg/edsp/edspsystem.h b/apt-pkg/edsp/edspsystem.h index 65e36d714..06a63f40c 100644 --- a/apt-pkg/edsp/edspsystem.h +++ b/apt-pkg/edsp/edspsystem.h @@ -22,7 +22,7 @@ class pkgIndexFile; class pkgPackageManager; class edspIndex; -class edspSystem : public pkgSystem +class APT_HIDDEN edspSystem : public pkgSystem { /** \brief dpointer placeholder (for later in case we need it) */ void *d; @@ -45,6 +45,4 @@ class edspSystem : public pkgSystem ~edspSystem(); }; -extern edspSystem edspSys; - #endif diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc index d04c51621..f756eab26 100644 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@ -89,7 +89,7 @@ bool pkgInitConfig(Configuration &Cnf) Cnf.Set("Dir::Ignore-Files-Silently::", "\\.distUpgrade$"); // Repository security - // FIXME: this is set to "true" for backward compatiblity, once + // FIXME: this is set to "true" for backward compatibility, once // jessie is out we want to change this to "false" to // improve security Cnf.CndSet("Acquire::AllowInsecureRepositories", true); diff --git a/apt-pkg/pkgcachegen.h b/apt-pkg/pkgcachegen.h index 93f30a703..c4ace713d 100644 --- a/apt-pkg/pkgcachegen.h +++ b/apt-pkg/pkgcachegen.h @@ -34,7 +34,7 @@ class pkgSourceList; class OpProgress; class pkgIndexFile; -class pkgCacheGenerator /*{{{*/ +class APT_HIDDEN pkgCacheGenerator /*{{{*/ { private: APT_HIDDEN map_stringitem_t WriteStringInMap(std::string const &String) { return WriteStringInMap(String.c_str()); }; @@ -111,10 +111,10 @@ class pkgCacheGenerator /*{{{*/ bool MergeFileProvides(ListParser &List); bool FinishCache(OpProgress *Progress) APT_DEPRECATED APT_CONST; - static bool MakeStatusCache(pkgSourceList &List,OpProgress *Progress, + APT_PUBLIC static bool MakeStatusCache(pkgSourceList &List,OpProgress *Progress, MMap **OutMap = 0,bool AllowMem = false); - static bool MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **OutMap); - static DynamicMMap* CreateDynamicMMap(FileFd *CacheF, unsigned long Flags = 0); + APT_PUBLIC static bool MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **OutMap); + APT_PUBLIC static DynamicMMap* CreateDynamicMMap(FileFd *CacheF, unsigned long Flags = 0); void ReMap(void const * const oldMap, void const * const newMap); @@ -136,7 +136,7 @@ class pkgCacheGenerator /*{{{*/ }; /*}}}*/ // This is the abstract package list parser class. /*{{{*/ -class pkgCacheGenerator::ListParser +class APT_HIDDEN pkgCacheGenerator::ListParser { pkgCacheGenerator *Owner; friend class pkgCacheGenerator; diff --git a/debian/libapt-pkg4.15.symbols b/debian/libapt-pkg4.15.symbols index a6c5c21ea..9888223a9 100644 --- a/debian/libapt-pkg4.15.symbols +++ b/debian/libapt-pkg4.15.symbols @@ -76,13 +76,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"stringcmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >)@Base" 0.8.0 (c++)"stringcmp(char const*, char const*, char const*, char const*)@Base" 0.8.0 (c++)"strprintf(std::basic_string, std::allocator >&, char const*, ...)@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 (c++)"HashString::SupportedHashes()@Base" 0.8.0 (c++)"HashString::_SupportedHashes@Base" 0.8.0 (c++)"HashString::HashString(std::basic_string, std::allocator >)@Base" 0.8.0 @@ -207,9 +200,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"PackageCopy::RewriteEntry(_IO_FILE*, std::basic_string, std::allocator >)@Base" 0.8.0 (c++)"PackageCopy::Type()@Base" 0.8.0 (c++)"PackageCopy::~PackageCopy()@Base" 0.8.0 - (c++)"pkgAcqIndex::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqIndex::DescURI()@Base" 0.8.0 - (c++)"pkgAcqIndex::~pkgAcqIndex()@Base" 0.8.0 (c++)"pkgDepCache::IsDeleteOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@Base" 0.8.0 (c++)"pkgDepCache::MarkDelete(pkgCache::PkgIterator const&, bool, unsigned long, bool)@Base" 0.8.0 (c++)"pkgDepCache::StateCache::StripEpoch(char const*)@Base" 0.8.0 @@ -252,9 +242,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgSimulate::Configure(pkgCache::PkgIterator)@Base" 0.8.0 (c++)"pkgSimulate::pkgSimulate(pkgDepCache*)@Base" 0.8.0 (c++)"pkgSimulate::~pkgSimulate()@Base" 0.8.0 - (c++)"debIFTypePkg::~debIFTypePkg()@Base" 0.8.0 - (c++)"debIFTypeSrc::~debIFTypeSrc()@Base" 0.8.0 - (c++)"debSLTypeDeb::~debSLTypeDeb()@Base" 0.8.0 (c++)"indexRecords::Load(std::basic_string, std::allocator >)@Base" 0.8.0 (c++)"indexRecords::Lookup(std::basic_string, std::allocator >)@Base" 0.8.0 (c++)"indexRecords::MetaKeys()@Base" 0.8.0 @@ -330,27 +317,9 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"Configuration::Configuration()@Base" 0.8.0 (c++)"Configuration::~Configuration()@Base" 0.8.0 (c++)"WeakPointable::~WeakPointable()@Base" 0.8.0 - (c++)"debListParser::NewVersion(pkgCache::VerIterator&)@Base" 0.8.0 - (c++)"debListParser::UsePackage(pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 0.8.0 - (c++)"debListParser::ParseStatus(pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 0.8.0 - (c++)"debListParser::VersionHash()@Base" 0.8.0 - (c++)"debListParser::Architecture()@Base" 0.8.0 (c++)"debListParser::ParseDepends(char const*, char const*, std::basic_string, std::allocator >&, std::basic_string, std::allocator >&, unsigned int&, bool const&, bool const&)@Base" 0.8.0 - (c++)"debListParser::ParseDepends(pkgCache::VerIterator&, char const*, unsigned int)@Base" 0.8.0 - (c++)"debListParser::ParseProvides(pkgCache::VerIterator&)@Base" 0.8.0 - (c++)"debListParser::ArchitectureAll()@Base" 0.8.0 (c++)"debListParser::ConvertRelation(char const*, unsigned int&)@Base" 0.8.0 - (c++)"debListParser::Description_md5()@Base" 0.8.0 - (c++)"debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator&, FileFd&, std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"debListParser::Size()@Base" 0.8.0 - (c++)"debListParser::Step()@Base" 0.8.0 - (c++)"debListParser::Offset()@Base" 0.8.0 (c++)"debListParser::GetPrio(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"debListParser::Package()@Base" 0.8.0 - (c++)"debListParser::Version()@Base" 0.8.0 - (c++)"debListParser::GrabWord(std::basic_string, std::allocator >, debListParser::WordList*, unsigned char&)@Base" 0.8.0 - (c++)"debListParser::debListParser(FileFd*, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"debListParser::~debListParser()@Base" 0.8.0 (c++)"pkgAcqArchive::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqArchive::DescURI()@Base" 0.8.0 (c++)"pkgAcqArchive::Finished()@Base" 0.8.0 @@ -358,9 +327,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgAcqArchive::ShortDesc()@Base" 0.8.0 (c++)"pkgAcqArchive::pkgAcqArchive(pkgAcquire*, pkgSourceList*, pkgRecords*, pkgCache::VerIterator const&, std::basic_string, std::allocator >&)@Base" 0.8.0 (c++)"pkgAcqArchive::~pkgAcqArchive()@Base" 0.8.0 - (c++)"pkgAcqMetaSig::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqMetaSig::DescURI()@Base" 0.8.0 - (c++)"pkgAcqMetaSig::~pkgAcqMetaSig()@Base" 0.8.0 (c++)"pkgSourceList::ReadAppend(std::basic_string, std::allocator >)@Base" 0.8.0 (c++)"pkgSourceList::ReadMainList()@Base" 0.8.0 (c++)"pkgSourceList::ReadSourceDir(std::basic_string, std::allocator >)@Base" 0.8.0 @@ -393,38 +359,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"OpTextProgress::Update()@Base" 0.8.0 (c++)"OpTextProgress::OpTextProgress(Configuration&)@Base" 0.8.0 (c++)"OpTextProgress::~OpTextProgress()@Base" 0.8.0 - (c++)"debIFTypeTrans::~debIFTypeTrans()@Base" 0.8.0 - (c++)"debStatusIndex::debStatusIndex(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"debStatusIndex::~debStatusIndex()@Base" 0.8.0 - (c++)"debIFTypeStatus::~debIFTypeStatus()@Base" 0.8.0 - (c++)"debRecordParser::Maintainer()@Base" 0.8.0 - (c++)"debRecordParser::Jump(pkgCache::VerFileIterator const&)@Base" 0.8.0 - (c++)"debRecordParser::Jump(pkgCache::DescFileIterator const&)@Base" 0.8.0 - (c++)"debRecordParser::Name()@Base" 0.8.0 - (c++)"debRecordParser::GetRec(char const*&, char const*&)@Base" 0.8.0 - (c++)"debRecordParser::FileName()@Base" 0.8.0 - (c++)"debRecordParser::Homepage()@Base" 0.8.0 - (c++)"debRecordParser::SourcePkg()@Base" 0.8.0 - (c++)"debRecordParser::SourceVer()@Base" 0.8.0 - (c++)"debRecordParser::debRecordParser(std::basic_string, std::allocator >, pkgCache&)@Base" 0.8.0 - (c++)"debRecordParser::~debRecordParser()@Base" 0.8.0 - (c++)"debReleaseIndex::GetIndexFiles()@Base" 0.8.0 - (c++)"debReleaseIndex::debSectionEntry::debSectionEntry(std::basic_string, std::allocator > const&, bool const&)@Base" 0.8.0 - (c++)"debReleaseIndex::PushSectionEntry(debReleaseIndex::debSectionEntry const*)@Base" 0.8.0 - (c++)"debReleaseIndex::PushSectionEntry(std::basic_string, std::allocator > const&, debReleaseIndex::debSectionEntry const*)@Base" 0.8.0 - (c++)"debReleaseIndex::PushSectionEntry(std::vector, std::allocator >, std::allocator, std::allocator > > > const&, debReleaseIndex::debSectionEntry const*)@Base" 0.8.0 - (c++)"debReleaseIndex::debReleaseIndex(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"debReleaseIndex::~debReleaseIndex()@Base" 0.8.0 - (c++)"debSLTypeDebSrc::~debSLTypeDebSrc()@Base" 0.8.0 - (c++)"debSourcesIndex::debSourcesIndex(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, bool)@Base" 0.8.0 - (c++)"debSourcesIndex::~debSourcesIndex()@Base" 0.8.0 - (c++)"pkgAcqDiffIndex::ParseDiffIndex(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"pkgAcqDiffIndex::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqDiffIndex::DescURI()@Base" 0.8.0 - (c++)"pkgAcqDiffIndex::~pkgAcqDiffIndex()@Base" 0.8.0 - (c++)"pkgAcqMetaIndex::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqMetaIndex::DescURI()@Base" 0.8.0 - (c++)"pkgAcqMetaIndex::~pkgAcqMetaIndex()@Base" 0.8.0 (c++)"pkgVersionMatch::ExpressionMatches(char const*, char const*)@Base" 0.8.0 (c++)"pkgVersionMatch::ExpressionMatches(std::basic_string, std::allocator > const&, char const*)@Base" 0.8.0 (c++)"pkgVersionMatch::Find(pkgCache::PkgIterator)@Base" 0.8.0 @@ -433,11 +367,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgVersionMatch::pkgVersionMatch(std::basic_string, std::allocator >, pkgVersionMatch::MatchType)@Base" 0.8.0 (c++)"pkgVersionMatch::~pkgVersionMatch()@Base" 0.8.0 (c++)"TranslationsCopy::CopyTranslations(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, pkgCdromStatus*)@Base" 0.8.0 - (c++)"debPackagesIndex::debPackagesIndex(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, bool const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"debPackagesIndex::~debPackagesIndex()@Base" 0.8.0 - (c++)"pkgAcqIndexDiffs::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqIndexDiffs::DescURI()@Base" 0.8.0 - (c++)"pkgAcqIndexDiffs::~pkgAcqIndexDiffs()@Base" 0.8.0 (c++)"pkgAcquireStatus::Done(pkgAcquire::ItemDesc&)@Base" 0.8.0 (c++)"pkgAcquireStatus::Fail(pkgAcquire::ItemDesc&)@Base" 0.8.0 (c++)"pkgAcquireStatus::Stop()@Base" 0.8.0 @@ -448,30 +377,9 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgAcquireStatus::pkgAcquireStatus()@Base" 0.8.0 (c++)"PreferenceSection::TrimRecord(bool, char const*&)@Base" 0.8.0 (c++)"pkgArchiveCleaner::Go(std::basic_string, std::allocator >, pkgCache&)@Base" 0.8.0 - (c++)"pkgCacheGenerator::ListParser::NewDepends(pkgCache::VerIterator&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, unsigned int, unsigned int)@Base" 0.8.0 - (c++)"pkgCacheGenerator::ListParser::NewProvides(pkgCache::VerIterator&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"pkgCacheGenerator::ListParser::CollectFileProvides(pkgCache&, pkgCache::VerIterator&)@Base" 0.8.0 - (c++)"pkgCacheGenerator::NewFileVer(pkgCache::VerIterator&, pkgCacheGenerator::ListParser&)@Base" 0.8.0 - (c++)"pkgCacheGenerator::NewPackage(pkgCache::PkgIterator&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"pkgCacheGenerator::SelectFile(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, pkgIndexFile const&, unsigned long)@Base" 0.8.0 - (c++)"pkgCacheGenerator::FinishCache(OpProgress*)@Base" 0.8.0 - (c++)"pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator&, pkgCacheGenerator::ListParser&)@Base" 0.8.0 (c++)"pkgCacheGenerator::MakeStatusCache(pkgSourceList&, OpProgress*, MMap**, bool)@Base" 0.8.0 (c++)"pkgCacheGenerator::CreateDynamicMMap(FileFd*, unsigned long)@Base" 0.8.0 - (c++)"pkgCacheGenerator::MergeFileProvides(pkgCacheGenerator::ListParser&)@Base" 0.8.0 (c++)"pkgCacheGenerator::MakeOnlyStatusCache(OpProgress*, DynamicMMap**)@Base" 0.8.0 - (c++)"pkgCacheGenerator::ReMap(void const*, void const*)@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::NewGroup(pkgCache::GrpIterator&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"pkgCacheGenerator::MergeList(pkgCacheGenerator::ListParser&, pkgCache::VerIterator*)@Base" 0.8.0 - (c++)"pkgCacheGenerator::pkgCacheGenerator(DynamicMMap*, OpProgress*)@Base" 0.8.0 - (c++)"pkgCacheGenerator::~pkgCacheGenerator()@Base" 0.8.0 (c++)"pkgPackageManager::FixMissing()@Base" 0.8.0 (c++)"pkgPackageManager::EarlyRemove(pkgCache::PkgIterator)@Base" 0.8.0 (c++)"pkgPackageManager::GetArchives(pkgAcquire*, pkgSourceList*, pkgRecords*)@Base" 0.8.0 @@ -492,15 +400,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgPackageManager::DoInstall(int)@Base" 0.8.0 (c++)"pkgPackageManager::pkgPackageManager(pkgDepCache*)@Base" 0.8.0 (c++)"pkgPackageManager::~pkgPackageManager()@Base" 0.8.0 - (c++)"debSrcRecordParser::BuildDepends(std::vector >&, bool const&, bool const&)@Base" 0.8.0 - (c++)"debSrcRecordParser::Jump(unsigned long const&)@Base" 0.8.0 - (c++)"debSrcRecordParser::Step()@Base" 0.8.0 - (c++)"debSrcRecordParser::AsStr()@Base" 0.8.0 - (c++)"debSrcRecordParser::Files(std::vector >&)@Base" 0.8.0 - (c++)"debSrcRecordParser::Offset()@Base" 0.8.0 - (c++)"debSrcRecordParser::Restart()@Base" 0.8.0 - (c++)"debSrcRecordParser::Binaries()@Base" 0.8.0 - (c++)"debSrcRecordParser::~debSrcRecordParser()@Base" 0.8.0 (c++)"pkgProblemResolver::InstallProtect()@Base" 0.8.0 (c++)"pkgProblemResolver::This@Base" 0.8.0 (c++)"pkgProblemResolver::pkgProblemResolver(pkgDepCache*)@Base" 0.8.0 @@ -521,8 +420,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgVersioningSystem::TestCompatibility(pkgVersioningSystem const&)@Base" 0.8.0 (c++)"pkgVersioningSystem::GetVS(char const*)@Base" 0.8.0 (c++)"pkgVersioningSystem::pkgVersioningSystem()@Base" 0.8.0 - (c++)"debTranslationsIndex::debTranslationsIndex(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, char const*)@Base" 0.8.0 - (c++)"debTranslationsIndex::~debTranslationsIndex()@Base" 0.8.0 (c++)"APT::CacheFilter::PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::basic_string, std::allocator > const&)@Base" 0.8.0 (c++)"APT::CacheFilter::PackageNameMatchesRegEx::~PackageNameMatchesRegEx()@Base" 0.8.0 (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::GrpIterator const&)@Base" 0.8.0 @@ -556,7 +453,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"Vendor::CheckDist(std::basic_string, std::allocator >)@Base" 0.8.0 (c++)"Vendor::Vendor(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector >*)@Base" 0.8.0 (c++)"Vendor::~Vendor()@Base" 0.8.0 - (c++)"DiffInfo::~DiffInfo()@Base" 0.8.0 (c++)"pkgCache::CompTypeDeb(unsigned char)@Base" 0.8.0 (c++)"pkgCache::DepIterator::GlobOr(pkgCache::DepIterator&, pkgCache::DepIterator&)@Base" 0.8.0 (c++)"pkgCache::DepIterator::operator++(int)@Base" 0.8.0 @@ -648,8 +544,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"HashString::toStr() const@Base" 0.8.0 (c++)"CommandLine::FileSize() const@Base" 0.8.0 (c++)"GlobalError::empty(GlobalError::MsgType const&) const@Base" 0.8.0 - (c++)"debIFTypePkg::CreatePkgParser(pkgCache::PkgFileIterator) const@Base" 0.8.0 - (c++)"debSLTypeDeb::CreateItem(std::vector >&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::map, std::allocator >, std::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::basic_string, std::allocator > > > > const&) const@Base" 0.8.0 (c++)"indexRecords::GetValidUntil() const@Base" 0.8.0 (c++)"indexRecords::GetExpectedDist() const@Base" 0.8.0 (c++)"indexRecords::Exists(std::basic_string, std::allocator > const&) const@Base" 0.8.0 @@ -660,10 +554,8 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgIndexFile::ArchiveInfo(pkgCache::VerIterator) const@Base" 0.8.0 (c++)"pkgIndexFile::FindInCache(pkgCache&) const@Base" 0.8.0 (c++)"pkgIndexFile::CreateSrcParser() const@Base" 0.8.0 - (c++)"pkgIndexFile::MergeFileProvides(pkgCacheGenerator&, OpProgress*) const@Base" 0.8.0 (c++)"pkgIndexFile::MergeFileProvides(pkgCacheGenerator&, OpProgress&) const@Base" 0.8.0 (c++)"pkgIndexFile::Type::CreatePkgParser(pkgCache::PkgFileIterator) const@Base" 0.8.0 - (c++)"pkgIndexFile::Merge(pkgCacheGenerator&, OpProgress*) const@Base" 0.8.0 (c++)"pkgIndexFile::Merge(pkgCacheGenerator&, OpProgress&) const@Base" 0.8.0 (c++)"Configuration::MatchAgainstConfig::Match(char const*) const@Base" 0.8.0 (c++)"Configuration::Find(char const*, char const*) const@Base" 0.8.0 @@ -685,56 +577,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgTagSection::FindS(char const*) const@Base" 0.8.0 (c++)"pkgTagSection::FindULL(char const*, unsigned long long const&) const@Base" 0.8.0 (c++)"pkgTagSection::FindFlag(char const*, unsigned long&, unsigned long) const@Base" 0.8.0 - (c++)"debStatusIndex::FindInCache(pkgCache&) const@Base" 0.8.0 - (c++)"debStatusIndex::HasPackages() const@Base" 0.8.0 - (c++)"debStatusIndex::Size() const@Base" 0.8.0 - (c++)"debStatusIndex::Merge(pkgCacheGenerator&, OpProgress*) const@Base" 0.8.0 - (c++)"debStatusIndex::Exists() const@Base" 0.8.0 - (c++)"debStatusIndex::GetType() const@Base" 0.8.0 - (c++)"debStatusIndex::Describe(bool) const@Base" 0.8.0 - (c++)"debIFTypeStatus::CreatePkgParser(pkgCache::PkgFileIterator) const@Base" 0.8.0 - (c++)"debReleaseIndex::ArchiveURI(std::basic_string, std::allocator > const&) const@Base" 0.8.0 - (c++)"debReleaseIndex::GetIndexes(pkgAcquire*, bool const&) const@Base" 0.8.0 - (c++)"debReleaseIndex::MetaIndexURI(char const*) const@Base" 0.8.0 - (c++)"debReleaseIndex::MetaIndexFile(char const*) const@Base" 0.8.0 - (c++)"debReleaseIndex::MetaIndexInfo(char const*) const@Base" 0.8.0 - (c++)"debReleaseIndex::IndexURISuffix(char const*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&) const@Base" 0.8.0 - (c++)"debReleaseIndex::SourceIndexURI(char const*, std::basic_string, std::allocator > const&) const@Base" 0.8.0 - (c++)"debReleaseIndex::ComputeIndexTargets() const@Base" 0.8.0 - (c++)"debReleaseIndex::SourceIndexURISuffix(char const*, std::basic_string, std::allocator > const&) const@Base" 0.8.0 - (c++)"debReleaseIndex::Info(char const*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&) const@Base" 0.8.0 - (c++)"debReleaseIndex::IndexURI(char const*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&) const@Base" 0.8.0 - (c++)"debReleaseIndex::IsTrusted() const@Base" 0.8.0 - (c++)"debSLTypeDebSrc::CreateItem(std::vector >&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::map, std::allocator >, std::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::basic_string, std::allocator > > > > const&) const@Base" 0.8.0 - (c++)"debSLTypeDebian::CreateItemInternal(std::vector >&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, bool const&, std::map, std::allocator >, std::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::basic_string, std::allocator > > > > const&) const@Base" 0.8.0 - (c++)"debSourcesIndex::ArchiveURI(std::basic_string, std::allocator >) const@Base" 0.8.0 - (c++)"debSourcesIndex::SourceInfo(pkgSrcRecords::Parser const&, pkgSrcRecords::File const&) const@Base" 0.8.0 - (c++)"debSourcesIndex::HasPackages() const@Base" 0.8.0 - (c++)"debSourcesIndex::CreateSrcParser() const@Base" 0.8.0 - (c++)"debSourcesIndex::Size() const@Base" 0.8.0 - (c++)"debSourcesIndex::Exists() const@Base" 0.8.0 - (c++)"debSourcesIndex::GetType() const@Base" 0.8.0 - (c++)"debSourcesIndex::Describe(bool) const@Base" 0.8.0 - (c++)"debPackagesIndex::ArchiveURI(std::basic_string, std::allocator >) const@Base" 0.8.0 - (c++)"debPackagesIndex::ArchiveInfo(pkgCache::VerIterator) const@Base" 0.8.0 - (c++)"debPackagesIndex::FindInCache(pkgCache&) const@Base" 0.8.0 - (c++)"debPackagesIndex::HasPackages() const@Base" 0.8.0 - (c++)"debPackagesIndex::Size() const@Base" 0.8.0 - (c++)"debPackagesIndex::Merge(pkgCacheGenerator&, OpProgress*) const@Base" 0.8.0 - (c++)"debPackagesIndex::Exists() const@Base" 0.8.0 - (c++)"debPackagesIndex::GetType() const@Base" 0.8.0 - (c++)"debPackagesIndex::Describe(bool) const@Base" 0.8.0 - (c++)"debSrcRecordParser::Maintainer() const@Base" 0.8.0 - (c++)"debSrcRecordParser::Package() const@Base" 0.8.0 - (c++)"debSrcRecordParser::Section() const@Base" 0.8.0 - (c++)"debSrcRecordParser::Version() const@Base" 0.8.0 - (c++)"debTranslationsIndex::FindInCache(pkgCache&) const@Base" 0.8.0 - (c++)"debTranslationsIndex::HasPackages() const@Base" 0.8.0 - (c++)"debTranslationsIndex::Size() const@Base" 0.8.0 - (c++)"debTranslationsIndex::Merge(pkgCacheGenerator&, OpProgress*) const@Base" 0.8.0 - (c++)"debTranslationsIndex::Exists() const@Base" 0.8.0 - (c++)"debTranslationsIndex::GetType() const@Base" 0.8.0 - (c++)"debTranslationsIndex::Describe(bool) const@Base" 0.8.0 (c++)"Vendor::GetVendorID() const@Base" 0.8.0 (c++)"Vendor::LookupFingerprint(std::basic_string, std::allocator >) const@Base" 0.8.0 (c++)"pkgCache::DepIterator::AllTargets() const@Base" 0.8.0 @@ -776,42 +618,22 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"typeinfo for pkgAcquire@Base" 0.8.0 (c++)"typeinfo for DynamicMMap@Base" 0.8.0 (c++)"typeinfo for PackageCopy@Base" 0.8.0 - (c++)"typeinfo for pkgAcqIndex@Base" 0.8.0 (c++)"typeinfo for pkgDepCache@Base" 0.8.0 (c++)"typeinfo for pkgSimulate@Base" 0.8.0 - (c++)"typeinfo for debIFTypePkg@Base" 0.8.0 - (c++)"typeinfo for debIFTypeSrc@Base" 0.8.0 - (c++)"typeinfo for debSLTypeDeb@Base" 0.8.0 (c++)"typeinfo for indexRecords@Base" 0.8.0 (c++)"typeinfo for pkgAcqMethod@Base" 0.8.0 (c++)"typeinfo for pkgCacheFile@Base" 0.8.0 (c++)"typeinfo for pkgIndexFile@Base" 0.8.0 (c++)"typeinfo for WeakPointable@Base" 0.8.0 - (c++)"typeinfo for debListParser@Base" 0.8.0 (c++)"typeinfo for pkgAcqArchive@Base" 0.8.0 - (c++)"typeinfo for pkgAcqMetaSig@Base" 0.8.0 (c++)"typeinfo for pkgTagSection@Base" 0.8.0 (c++)"typeinfo for OpTextProgress@Base" 0.8.0 - (c++)"typeinfo for debIFTypeTrans@Base" 0.8.0 - (c++)"typeinfo for debStatusIndex@Base" 0.8.0 - (c++)"typeinfo for debIFTypeStatus@Base" 0.8.0 - (c++)"typeinfo for debRecordParser@Base" 0.8.0 - (c++)"typeinfo for debReleaseIndex@Base" 0.8.0 - (c++)"typeinfo for debSLTypeDebSrc@Base" 0.8.0 - (c++)"typeinfo for debSLTypeDebian@Base" 0.8.0 - (c++)"typeinfo for debSourcesIndex@Base" 0.8.0 - (c++)"typeinfo for pkgAcqDiffIndex@Base" 0.8.0 - (c++)"typeinfo for pkgAcqMetaIndex@Base" 0.8.0 - (c++)"typeinfo for debPackagesIndex@Base" 0.8.0 - (c++)"typeinfo for pkgAcqIndexDiffs@Base" 0.8.0 (c++)"typeinfo for pkgAcquireStatus@Base" 0.8.0 (c++)"typeinfo for PreferenceSection@Base" 0.8.0 (c++)"typeinfo for pkgPackageManager@Base" 0.8.0 - (c++)"typeinfo for debSrcRecordParser@Base" 0.8.0 (c++)"typeinfo for debVersioningSystem@Base" 0.8.0 (c++)"typeinfo for pkgUdevCdromDevices@Base" 0.8.0 (c++)"typeinfo for pkgVersioningSystem@Base" 0.8.0 - (c++)"typeinfo for debTranslationsIndex@Base" 0.8.0 (c++)"typeinfo for MMap@Base" 0.8.0 (c++)"typeinfo for FileFd@Base" 0.8.0 (c++)"typeinfo for Vendor@Base" 0.8.0 @@ -832,7 +654,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"typeinfo for Configuration::MatchAgainstConfig@Base" 0.8.0 (c++)"typeinfo for pkgSourceList::Type@Base" 0.8.0 (c++)"typeinfo for pkgSrcRecords::Parser@Base" 0.8.0 - (c++)"typeinfo for pkgCacheGenerator::ListParser@Base" 0.8.0 (c++)"typeinfo for APT::CacheSetHelper@Base" 0.8.0 (c++)"typeinfo for pkgCache::DepIterator@Base" 0.8.0 (c++)"typeinfo for pkgCache::GrpIterator@Base" 0.8.0 @@ -859,42 +680,22 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"typeinfo name for pkgAcquire@Base" 0.8.0 (c++)"typeinfo name for DynamicMMap@Base" 0.8.0 (c++)"typeinfo name for PackageCopy@Base" 0.8.0 - (c++)"typeinfo name for pkgAcqIndex@Base" 0.8.0 (c++)"typeinfo name for pkgDepCache@Base" 0.8.0 (c++)"typeinfo name for pkgSimulate@Base" 0.8.0 - (c++)"typeinfo name for debIFTypePkg@Base" 0.8.0 - (c++)"typeinfo name for debIFTypeSrc@Base" 0.8.0 - (c++)"typeinfo name for debSLTypeDeb@Base" 0.8.0 (c++)"typeinfo name for indexRecords@Base" 0.8.0 (c++)"typeinfo name for pkgAcqMethod@Base" 0.8.0 (c++)"typeinfo name for pkgCacheFile@Base" 0.8.0 (c++)"typeinfo name for pkgIndexFile@Base" 0.8.0 (c++)"typeinfo name for WeakPointable@Base" 0.8.0 - (c++)"typeinfo name for debListParser@Base" 0.8.0 (c++)"typeinfo name for pkgAcqArchive@Base" 0.8.0 - (c++)"typeinfo name for pkgAcqMetaSig@Base" 0.8.0 (c++)"typeinfo name for pkgTagSection@Base" 0.8.0 (c++)"typeinfo name for OpTextProgress@Base" 0.8.0 - (c++)"typeinfo name for debIFTypeTrans@Base" 0.8.0 - (c++)"typeinfo name for debStatusIndex@Base" 0.8.0 - (c++)"typeinfo name for debIFTypeStatus@Base" 0.8.0 - (c++)"typeinfo name for debRecordParser@Base" 0.8.0 - (c++)"typeinfo name for debReleaseIndex@Base" 0.8.0 - (c++)"typeinfo name for debSLTypeDebSrc@Base" 0.8.0 - (c++)"typeinfo name for debSLTypeDebian@Base" 0.8.0 - (c++)"typeinfo name for debSourcesIndex@Base" 0.8.0 - (c++)"typeinfo name for pkgAcqDiffIndex@Base" 0.8.0 - (c++)"typeinfo name for pkgAcqMetaIndex@Base" 0.8.0 - (c++)"typeinfo name for debPackagesIndex@Base" 0.8.0 - (c++)"typeinfo name for pkgAcqIndexDiffs@Base" 0.8.0 (c++)"typeinfo name for pkgAcquireStatus@Base" 0.8.0 (c++)"typeinfo name for PreferenceSection@Base" 0.8.0 (c++)"typeinfo name for pkgPackageManager@Base" 0.8.0 - (c++)"typeinfo name for debSrcRecordParser@Base" 0.8.0 (c++)"typeinfo name for debVersioningSystem@Base" 0.8.0 (c++)"typeinfo name for pkgUdevCdromDevices@Base" 0.8.0 (c++)"typeinfo name for pkgVersioningSystem@Base" 0.8.0 - (c++)"typeinfo name for debTranslationsIndex@Base" 0.8.0 (c++)"typeinfo name for MMap@Base" 0.8.0 (c++)"typeinfo name for FileFd@Base" 0.8.0 (c++)"typeinfo name for Vendor@Base" 0.8.0 @@ -915,7 +716,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"typeinfo name for Configuration::MatchAgainstConfig@Base" 0.8.0 (c++)"typeinfo name for pkgSourceList::Type@Base" 0.8.0 (c++)"typeinfo name for pkgSrcRecords::Parser@Base" 0.8.0 - (c++)"typeinfo name for pkgCacheGenerator::ListParser@Base" 0.8.0 (c++)"typeinfo name for APT::CacheSetHelper@Base" 0.8.0 (c++)"typeinfo name for pkgCache::DepIterator@Base" 0.8.0 (c++)"typeinfo name for pkgCache::GrpIterator@Base" 0.8.0 @@ -942,41 +742,21 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"vtable for pkgAcquire@Base" 0.8.0 (c++)"vtable for DynamicMMap@Base" 0.8.0 (c++)"vtable for PackageCopy@Base" 0.8.0 - (c++)"vtable for pkgAcqIndex@Base" 0.8.0 (c++)"vtable for pkgDepCache@Base" 0.8.0 (c++)"vtable for pkgSimulate@Base" 0.8.0 - (c++)"vtable for debIFTypePkg@Base" 0.8.0 - (c++)"vtable for debIFTypeSrc@Base" 0.8.0 - (c++)"vtable for debSLTypeDeb@Base" 0.8.0 (c++)"vtable for indexRecords@Base" 0.8.0 (c++)"vtable for pkgAcqMethod@Base" 0.8.0 (c++)"vtable for pkgCacheFile@Base" 0.8.0 (c++)"vtable for pkgIndexFile@Base" 0.8.0 - (c++)"vtable for debListParser@Base" 0.8.0 (c++)"vtable for pkgAcqArchive@Base" 0.8.0 - (c++)"vtable for pkgAcqMetaSig@Base" 0.8.0 (c++)"vtable for pkgTagSection@Base" 0.8.0 (c++)"vtable for OpTextProgress@Base" 0.8.0 - (c++)"vtable for debIFTypeTrans@Base" 0.8.0 - (c++)"vtable for debStatusIndex@Base" 0.8.0 - (c++)"vtable for debIFTypeStatus@Base" 0.8.0 - (c++)"vtable for debRecordParser@Base" 0.8.0 - (c++)"vtable for debReleaseIndex@Base" 0.8.0 - (c++)"vtable for debSLTypeDebSrc@Base" 0.8.0 - (c++)"vtable for debSLTypeDebian@Base" 0.8.0 - (c++)"vtable for debSourcesIndex@Base" 0.8.0 - (c++)"vtable for pkgAcqDiffIndex@Base" 0.8.0 - (c++)"vtable for pkgAcqMetaIndex@Base" 0.8.0 - (c++)"vtable for debPackagesIndex@Base" 0.8.0 - (c++)"vtable for pkgAcqIndexDiffs@Base" 0.8.0 (c++)"vtable for pkgAcquireStatus@Base" 0.8.0 (c++)"vtable for PreferenceSection@Base" 0.8.0 (c++)"vtable for pkgPackageManager@Base" 0.8.0 - (c++)"vtable for debSrcRecordParser@Base" 0.8.0 (c++)"vtable for debVersioningSystem@Base" 0.8.0 (c++)"vtable for pkgUdevCdromDevices@Base" 0.8.0 (c++)"vtable for pkgVersioningSystem@Base" 0.8.0 - (c++)"vtable for debTranslationsIndex@Base" 0.8.0 (c++)"vtable for MMap@Base" 0.8.0 (c++)"vtable for FileFd@Base" 0.8.0 (c++)"vtable for Vendor@Base" 0.8.0 @@ -997,7 +777,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"vtable for Configuration::MatchAgainstConfig@Base" 0.8.0 (c++)"vtable for pkgSourceList::Type@Base" 0.8.0 (c++)"vtable for pkgSrcRecords::Parser@Base" 0.8.0 - (c++)"vtable for pkgCacheGenerator::ListParser@Base" 0.8.0 (c++)"vtable for APT::CacheSetHelper@Base" 0.8.0 (c++)"vtable for pkgCache::DepIterator@Base" 0.8.0 (c++)"vtable for pkgCache::GrpIterator@Base" 0.8.0 @@ -1020,8 +799,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"non-virtual thunk to pkgDepCache::DefaultRootSetFunc::~DefaultRootSetFunc()@Base" 0.8.0 (c++)"operator<<(std::basic_ostream >&, pkgCache::DepIterator)@Base" 0.8.0 (c++)"operator<<(std::basic_ostream >&, pkgCache::PkgIterator)@Base" 0.8.0 - _apt_DebSrcType@Base 0.8.0 - _apt_DebType@Base 0.8.0 _config@Base 0.8.0 _system@Base 0.8.0 debSys@Base 0.8.0 @@ -1082,59 +859,22 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string, std::allocator > const&)@Base" 0.8.11 (c++)"RealFileExists(std::basic_string, std::allocator >)@Base" 0.8.11 (c++)"StripEpoch(std::basic_string, std::allocator > const&)@Base" 0.8.11 - (c++)"pkgAcqIndex::Init(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.11 (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@Base" 0.8.11 - (c++)"pkgAcqMetaClearSig::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.11 - (c++)"pkgAcqMetaClearSig::pkgAcqMetaClearSig(pkgAcquire*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::vector > const*, indexRecords*)@Base" 0.8.11 - (c++)"pkgAcqMetaClearSig::~pkgAcqMetaClearSig()@Base" 0.8.11 - (c++)"IndexTarget::IsOptional() const@Base" 0.8.11 - (c++)"debReleaseIndex::TranslationIndexURI(char const*, std::basic_string, std::allocator > const&) const@Base" 0.8.11 - (c++)"debReleaseIndex::TranslationIndexURISuffix(char const*, std::basic_string, std::allocator > const&) const@Base" 0.8.11 - (c++)"typeinfo for pkgAcqMetaClearSig@Base" 0.8.11 - (c++)"typeinfo name for pkgAcqMetaClearSig@Base" 0.8.11 - (c++)"vtable for pkgAcqMetaClearSig@Base" 0.8.11 (c++)"FindMountPointForDevice(char const*)@Base" 0.8.12 (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@Base" 0.8.12 (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@Base" 0.8.12 (c++)"APT::Configuration::Compressor::~Compressor()@Base" 0.8.12 (c++)"APT::Configuration::getCompressors(bool)@Base" 0.8.12 (c++)"APT::Configuration::getCompressorExtensions()@Base" 0.8.12 - (c++)"debListParser::NewProvidesAllArch(pkgCache::VerIterator&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.13.2 (c++)"pkgCache::DepIterator::IsNegative() const@Base" 0.8.15~exp1 (c++)"Configuration::CndSet(char const*, int)@Base" 0.8.15.3 (c++)"pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator)@Base" 0.8.15.3 (c++)"DeEscapeString(std::basic_string, std::allocator > const&)@Base" 0.8.15.4 (c++)"GetModificationTime(std::basic_string, std::allocator > const&)@Base" 0.8.15.6 (c++)"pkgSourceList::GetLastModifiedTime()@Base" 0.8.15.6 - (c++)"pkgCacheGenerator::NewDepends(pkgCache::PkgIterator&, pkgCache::VerIterator&, std::basic_string, std::allocator > const&, unsigned int const&, unsigned int const&, unsigned int*&)@Base" 0.8.15.6 (c++)"pkgCacheFile::RemoveCaches()@Base" 0.8.15.7 (c++)"pkgOrderList::VisitNode(pkgCache::PkgIterator, char const*)@Base" 0.8.15.7 ### external dependency resolver ### - (c++)"edspIFType::~edspIFType()@Base" 0.8.16~exp2 - (c++)"edspSystem::Initialize(Configuration&)@Base" 0.8.16~exp2 - (c++)"edspSystem::AddStatusFiles(std::vector >&)@Base" 0.8.16~exp2 - (c++)"edspSystem::ArchiveSupported(char const*)@Base" 0.8.16~exp2 - (c++)"edspSystem::Lock()@Base" 0.8.16~exp2 - (c++)"edspSystem::Score(Configuration const&)@Base" 0.8.16~exp2 - (c++)"edspSystem::UnLock(bool)@Base" 0.8.16~exp2 - (c++)"edspSystem::edspSystem()@Base" 0.8.16~exp2 - (c++)"edspSystem::~edspSystem()@Base" 0.8.16~exp2 - (c++)"edspListParser::NewVersion(pkgCache::VerIterator&)@Base" 0.8.16~exp2 - (c++)"edspListParser::Description()@Base" 0.8.16~exp2 - (c++)"edspListParser::ParseStatus(pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 0.8.16~exp2 - (c++)"edspListParser::VersionHash()@Base" 0.8.16~exp2 - (c++)"edspListParser::Description_md5()@Base" 0.8.16~exp2 - (c++)"edspListParser::LoadReleaseInfo(pkgCache::PkgFileIterator&, FileFd&, std::basic_string, std::allocator >)@Base" 0.8.16~exp2 - (c++)"edspListParser::DescriptionLanguage()@Base" 0.8.16~exp2 - (c++)"edspListParser::edspListParser(FileFd*, std::basic_string, std::allocator > const&)@Base" 0.8.16~exp2 - (c++)"edspListParser::~edspListParser()@Base" 0.8.16~exp2 - (c++)"edspIndex::edspIndex(std::basic_string, std::allocator >)@Base" 0.8.16~exp2 - (c++)"edspIndex::~edspIndex()@Base" 0.8.16~exp2 - (c++)"edspIFType::CreatePkgParser(pkgCache::PkgFileIterator) const@Base" 0.8.16~exp2 - (c++)"edspSystem::CreatePM(pkgDepCache*) const@Base" 0.8.16~exp2 - (c++)"edspSystem::FindIndex(pkgCache::PkgFileIterator, pkgIndexFile*&) const@Base" 0.8.16~exp2 - (c++)"edspIndex::Merge(pkgCacheGenerator&, OpProgress*) const@Base" 0.8.16~exp2 - (c++)"edspIndex::GetType() const@Base" 0.8.16~exp2 (c++)"EDSP::WriteError(char const*, std::basic_string, std::allocator > const&, _IO_FILE*)@Base" 0.8.16~exp2 (c++)"EDSP::ReadRequest(int, std::list, std::allocator >, std::allocator, std::allocator > > >&, std::list, std::allocator >, std::allocator, std::allocator > > >&, bool&, bool&, bool&)@Base" 0.8.16~exp2 (c++)"EDSP::ApplyRequest(std::list, std::allocator >, std::allocator, std::allocator > > > const&, std::list, std::allocator >, std::allocator, std::allocator > > > const&, pkgDepCache&)@Base" 0.8.16~exp2 @@ -1149,19 +889,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"EDSP::PrioMap@Base" 0.8.16~exp2 (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgIterator const&)@Base" 0.8.16~exp6 (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgFileIterator const&)@Base" 0.8.16~exp6 - (c++)"typeinfo for edspIFType@Base" 0.8.16~exp2 - (c++)"typeinfo for edspSystem@Base" 0.8.16~exp2 - (c++)"typeinfo for edspListParser@Base" 0.8.16~exp2 - (c++)"typeinfo for edspIndex@Base" 0.8.16~exp2 - (c++)"typeinfo name for edspIFType@Base" 0.8.16~exp2 - (c++)"typeinfo name for edspSystem@Base" 0.8.16~exp2 - (c++)"typeinfo name for edspListParser@Base" 0.8.16~exp2 - (c++)"typeinfo name for edspIndex@Base" 0.8.16~exp2 - (c++)"vtable for edspIFType@Base" 0.8.16~exp2 - (c++)"vtable for edspSystem@Base" 0.8.16~exp2 - (c++)"vtable for edspListParser@Base" 0.8.16~exp2 - (c++)"vtable for edspIndex@Base" 0.8.16~exp2 - edspSys@Base 0.8.16~exp2 ### generalisation of checksums (with lfs) -- mostly api-compatible available (without sha512 in previous versions) (c++)"AddCRC16(unsigned short, void const*, unsigned long long)@Base" 0.8.16~exp2 (c++)"MD5Summation::Add(unsigned char const*, unsigned long long)@Base" 0.8.16~exp6 @@ -1207,39 +934,28 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"DynamicMMap::RawAllocate(unsigned long long, unsigned long)@Base" 0.8.16~exp6 (c++)"PackageCopy::GetFile(std::basic_string, std::allocator >&, unsigned long long&)@Base" 0.8.16~exp6 (c++)"pkgTagSection::~pkgTagSection()@Base" 0.8.16~exp6 - (c++)"debRecordParser::RecordField(char const*)@Base" 0.8.16~exp6 - (c++)"debReleaseIndex::SetTrusted(bool)@Base" 0.8.16~exp6 - (c++)"debReleaseIndex::debReleaseIndex(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, bool)@Base" 0.8.16~exp6 (c++)"pkgAcquireStatus::Fetched(unsigned long long, unsigned long long)@Base" 0.8.16~exp6 (c++)"PreferenceSection::~PreferenceSection()@Base" 0.8.16~exp6 - (c++)"pkgCacheGenerator::NewDescription(pkgCache::DescIterator&, std::basic_string, std::allocator > const&, HashSumValue<128> const&, unsigned int)@Base" 0.8.16~exp6 (c++)"FileFd::Read(void*, unsigned long long, unsigned long long*)@Base" 0.8.16~exp6 (c++)"FileFd::Seek(unsigned long long)@Base" 0.8.16~exp6 (c++)"FileFd::Skip(unsigned long long)@Base" 0.8.16~exp6 (c++)"FileFd::Write(void const*, unsigned long long)@Base" 0.8.16~exp6 (c++)"FileFd::Truncate(unsigned long long)@Base" 0.8.16~exp6 (c++)"pkgPolicy::GetPriority(pkgCache::PkgFileIterator const&)@Base" 0.8.16~exp6 - (c++)"OptionalIndexTarget::IsOptional() const@Base" 0.8.16~exp6 (c++)"typeinfo for pkgTagFile@Base" 0.8.16~exp6 - (c++)"typeinfo for IndexTarget@Base" 0.8.16~exp6 (c++)"typeinfo for pkgSrcRecords@Base" 0.8.16~exp6 - (c++)"typeinfo for OptionalIndexTarget@Base" 0.8.16~exp6 (c++)"typeinfo for pkgAcquire::UriIterator@Base" 0.8.16~exp6 (c++)"typeinfo for pkgAcquire::MethodConfig@Base" 0.8.16~exp6 (c++)"typeinfo for pkgAcquire::Queue@Base" 0.8.16~exp6 (c++)"typeinfo for pkgAcquire::Worker@Base" 0.8.16~exp6 (c++)"typeinfo name for pkgTagFile@Base" 0.8.16~exp6 - (c++)"typeinfo name for IndexTarget@Base" 0.8.16~exp6 (c++)"typeinfo name for pkgSrcRecords@Base" 0.8.16~exp6 - (c++)"typeinfo name for OptionalIndexTarget@Base" 0.8.16~exp6 (c++)"typeinfo name for pkgAcquire::UriIterator@Base" 0.8.16~exp6 (c++)"typeinfo name for pkgAcquire::MethodConfig@Base" 0.8.16~exp6 (c++)"typeinfo name for pkgAcquire::Queue@Base" 0.8.16~exp6 (c++)"typeinfo name for pkgAcquire::Worker@Base" 0.8.16~exp6 (c++)"vtable for pkgTagFile@Base" 0.8.16~exp6 - (c++)"vtable for IndexTarget@Base" 0.8.16~exp6 (c++)"vtable for pkgSrcRecords@Base" 0.8.16~exp6 - (c++)"vtable for OptionalIndexTarget@Base" 0.8.16~exp6 (c++)"vtable for pkgAcquire::UriIterator@Base" 0.8.16~exp6 (c++)"vtable for pkgAcquire::MethodConfig@Base" 0.8.16~exp6 (c++)"vtable for pkgAcquire::Queue@Base" 0.8.16~exp6 @@ -1381,102 +1097,16 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"APT::Progress::PackageManagerFancy::instances@Base" 0.9.14.2 (c++)"APT::Progress::PackageManagerFancy::Start(int)@Base" 0.9.14.2 (c++)"APT::Progress::PackageManager::Start(int)@Base" 0.9.14.2 -### client-side merged pdiffs - (c++)"pkgAcqIndexMergeDiffs::DescURI()@Base" 0.9.14.3~exp1 - (c++)"pkgAcqIndexMergeDiffs::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.9.14.3~exp1 - (c++)"pkgAcqIndexMergeDiffs::~pkgAcqIndexMergeDiffs()@Base" 0.9.14.3~exp1 - (c++)"typeinfo for pkgAcqIndexMergeDiffs@Base" 0.9.14.3~exp1 - (c++)"typeinfo name for pkgAcqIndexMergeDiffs@Base" 0.9.14.3~exp1 - (c++)"vtable for pkgAcqIndexMergeDiffs@Base" 0.9.14.3~exp1 ### deb822 sources.list format (c++)"pkgSourceList::ParseFileDeb822(std::basic_string, std::allocator >)@Base" 0.9.14.3~exp1 (c++)"pkgSourceList::ParseFileOldStyle(std::basic_string, std::allocator >)@Base" 0.9.14.3~exp1 (c++)"pkgSourceList::Type::ParseStanza(std::vector >&, pkgTagSection&, int, FileFd&)@Base" 0.9.14.3~exp1 ### install foo.deb support - (c++)"debDebFileMetaIndex::ArchiveURI(std::basic_string, std::allocator > const&) const@Base" 1.1~exp1 - (c++)"debDebFileMetaIndex::~debDebFileMetaIndex()@Base" 1.1~exp1 - (c++)"debDebFileMetaIndex::debDebFileMetaIndex(std::basic_string, std::allocator > const&)@Base" 1.1~exp1 - (c++)"debDebFileMetaIndex::GetIndexes(pkgAcquire*, bool const&) const@Base" 1.1~exp1 - (c++)"debDebFileMetaIndex::GetIndexFiles()@Base" 1.1~exp1 - (c++)"debDebFileMetaIndex::IsTrusted() const@Base" 1.1~exp1 - (c++)"debDebFileParser::~debDebFileParser()@Base" 1.1~exp1 - (c++)"debDebFileParser::debDebFileParser(FileFd*, std::basic_string, std::allocator > const&)@Base" 1.1~exp1 - (c++)"debDebFileParser::UsePackage(pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 1.1~exp1 - (c++)"debDebFileRecordParser::~debDebFileRecordParser()@Base" 1.1~exp1 - (c++)"debDebFileRecordParser::FileName()@Base" 1.1~exp1 - (c++)"debDebianSourceDirIndex::~debDebianSourceDirIndex()@Base" 1.1~exp1 - (c++)"debDebianSourceDirIndex::GetType() const@Base" 1.1~exp1 - (c++)"debDebPkgFileIndex::ArchiveURI(std::basic_string, std::allocator >) const@Base" 1.1~exp1 - (c++)"debDebPkgFileIndex::~debDebPkgFileIndex()@Base" 1.1~exp1 - (c++)"debDebPkgFileIndex::debDebPkgFileIndex(std::basic_string, std::allocator >)@Base" 1.1~exp1 - (c++)"debDebPkgFileIndex::Describe(bool) const@Base" 1.1~exp1 - (c++)"debDebPkgFileIndex::Exists() const@Base" 1.1~exp1 - (c++)"debDebPkgFileIndex::FindInCache(pkgCache&) const@Base" 1.1~exp1 - (c++)"debDebPkgFileIndex::GetType() const@Base" 1.1~exp1 - (c++)"debDebPkgFileIndex::HasPackages() const@Base" 1.1~exp1 - (c++)"debDebPkgFileIndex::Merge(pkgCacheGenerator&, OpProgress*) const@Base" 1.1~exp1 - (c++)"debDebPkgFileIndex::Size() const@Base" 1.1~exp1 - (c++)"debDscFileIndex::CreateSrcParser() const@Base" 1.1~exp1 - (c++)"debDscFileIndex::~debDscFileIndex()@Base" 1.1~exp1 - (c++)"debDscFileIndex::debDscFileIndex(std::basic_string, std::allocator >&)@Base" 1.1~exp1 - (c++)"debDscFileIndex::Describe(bool) const@Base" 1.1~exp1 - (c++)"debDscFileIndex::Exists() const@Base" 1.1~exp1 - (c++)"debDscFileIndex::GetType() const@Base" 1.1~exp1 - (c++)"debDscFileIndex::HasPackages() const@Base" 1.1~exp1 - (c++)"debDscFileIndex::Size() const@Base" 1.1~exp1 - (c++)"debDscRecordParser::~debDscRecordParser()@Base" 1.1~exp1 - (c++)"debDscRecordParser::debDscRecordParser(std::basic_string, std::allocator > const&, pkgIndexFile const*)@Base" 1.1~exp1 - (c++)"debIFTypeDebianSourceDir::CreateSrcPkgParser(std::basic_string, std::allocator >) const@Base" 1.1~exp1 - (c++)"debIFTypeDebianSourceDir::~debIFTypeDebianSourceDir()@Base" 1.1~exp1 - (c++)"debIFTypeDebPkgFile::CreatePkgParser(pkgCache::PkgFileIterator) const@Base" 1.1~exp1 - (c++)"debIFTypeDebPkgFile::~debIFTypeDebPkgFile()@Base" 1.1~exp1 - (c++)"debIFTypeDscFile::CreateSrcPkgParser(std::basic_string, std::allocator >) const@Base" 1.1~exp1 - (c++)"debIFTypeDscFile::~debIFTypeDscFile()@Base" 1.1~exp1 - (c++)"debListParser::AvailableDescriptionLanguages()@Base" 1.1~exp1 - (c++)"debListParser::Description(std::basic_string, std::allocator > const&)@Base" 1.1~exp1 - (c++)"debListParser::SameVersion(unsigned short, pkgCache::VerIterator const&)@Base" 1.1~exp1 - (c++)"debReleaseIndex::LocalFileName() const@Base" 1.1~exp1 - (c++)"debSLTypeDebFile::CreateItem(std::vector >&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::map, std::allocator >, std::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::basic_string, std::allocator > > > > const&) const@Base" 1.1~exp1 - (c++)"debSLTypeDebFile::~debSLTypeDebFile()@Base" 1.1~exp1 (c++)"flAbsPath(std::basic_string, std::allocator >)@Base" 1.1~exp1 (c++)"GetTempFile(std::basic_string, std::allocator > const&, bool)@Base" 1.1~exp1 (c++)"pkgIndexFile::Type::CreateSrcPkgParser(std::basic_string, std::allocator >) const@Base" 1.1~exp1 (c++)"metaIndex::LocalFileName() const@Base" 1.1~exp1 (c++)"metaIndex::~metaIndex()@Base" 1.1~exp1 - (c++)"typeinfo for debDebFileMetaIndex@Base" 1.1~exp1 - (c++)"typeinfo for debDebFileParser@Base" 1.1~exp1 - (c++)"typeinfo for debDebFileRecordParser@Base" 1.1~exp1 - (c++)"typeinfo for debDebianSourceDirIndex@Base" 1.1~exp1 - (c++)"typeinfo for debDebPkgFileIndex@Base" 1.1~exp1 - (c++)"typeinfo for debDscFileIndex@Base" 1.1~exp1 - (c++)"typeinfo for debDscRecordParser@Base" 1.1~exp1 - (c++)"typeinfo for debIFTypeDebianSourceDir@Base" 1.1~exp1 - (c++)"typeinfo for debIFTypeDebPkgFile@Base" 1.1~exp1 - (c++)"typeinfo for debIFTypeDscFile@Base" 1.1~exp1 - (c++)"typeinfo for debSLTypeDebFile@Base" 1.1~exp1 - (c++)"typeinfo name for debDebFileMetaIndex@Base" 1.1~exp1 - (c++)"typeinfo name for debDebFileParser@Base" 1.1~exp1 - (c++)"typeinfo name for debDebFileRecordParser@Base" 1.1~exp1 - (c++)"typeinfo name for debDebianSourceDirIndex@Base" 1.1~exp1 - (c++)"typeinfo name for debDebPkgFileIndex@Base" 1.1~exp1 - (c++)"typeinfo name for debDscFileIndex@Base" 1.1~exp1 - (c++)"typeinfo name for debDscRecordParser@Base" 1.1~exp1 - (c++)"typeinfo name for debIFTypeDebianSourceDir@Base" 1.1~exp1 - (c++)"typeinfo name for debIFTypeDebPkgFile@Base" 1.1~exp1 - (c++)"typeinfo name for debIFTypeDscFile@Base" 1.1~exp1 - (c++)"typeinfo name for debSLTypeDebFile@Base" 1.1~exp1 - (c++)"vtable for debDebFileMetaIndex@Base" 1.1~exp1 - (c++)"vtable for debDebFileParser@Base" 1.1~exp1 - (c++)"vtable for debDebFileRecordParser@Base" 1.1~exp1 - (c++)"vtable for debDebianSourceDirIndex@Base" 1.1~exp1 - (c++)"vtable for debDebPkgFileIndex@Base" 1.1~exp1 - (c++)"vtable for debDscFileIndex@Base" 1.1~exp1 - (c++)"vtable for debDscRecordParser@Base" 1.1~exp1 - (c++)"vtable for debIFTypeDebianSourceDir@Base" 1.1~exp1 - (c++)"vtable for debIFTypeDebPkgFile@Base" 1.1~exp1 - (c++)"vtable for debIFTypeDscFile@Base" 1.1~exp1 - (c++)"vtable for debSLTypeDebFile@Base" 1.1~exp1 - _apt_DebFileType@Base 1.1~exp1 ### CacheFilter functors (c++)"APT::CacheFilter::ANDMatcher::AND(APT::CacheFilter::Matcher*)@Base" 1.1~exp4 (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@Base" 1.1~exp4 @@ -1595,9 +1225,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# # (c++|optional=inline)"pkgRecords::Parser::SHA1Hash()@Base" 0.8.0 # (c++|optional=inline)"pkgRecords::Parser::SHA256Hash()@Base" 0.8.0 # (c++|optional=inline)"pkgRecords::Parser::SHA512Hash()@Base" 0.8.16~exp6 - (c++)"debRecordParser::Hashes() const@Base" 1.1~exp1 - (c++)"debRecordParser::LongDesc(std::basic_string, std::allocator > const&)@Base" 1.1~exp1 - (c++)"debRecordParser::ShortDesc(std::basic_string, std::allocator > const&)@Base" 1.1~exp1 (c++)"Hashes::AddFD(FileFd&, unsigned long long, unsigned int)@Base" 1.1~exp1 (c++)"Hashes::AddFD(int, unsigned long long, unsigned int)@Base" 1.1~exp1 (c++)"Hashes::Add(unsigned char const*, unsigned long long, unsigned int)@Base" 1.1~exp1 @@ -1616,21 +1243,9 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"indexRecords::GetSupportsAcquireByHash() const@Base" 1.1~exp1 (c++)"pkgAcqArchive::Done(std::basic_string, std::allocator >, unsigned long long, HashStringList const&, pkgAcquire::MethodConfig*)@Base" 1.1~exp1 (c++)"pkgAcqArchive::IsTrusted() const@Base" 1.1~exp1 - (c++)"pkgAcqDiffIndex::Custom600Headers() const@Base" 1.1~exp1 - (c++)"pkgAcqDiffIndex::Done(std::basic_string, std::allocator >, unsigned long long, HashStringList const&, pkgAcquire::MethodConfig*)@Base" 1.1~exp1 (c++)"pkgAcqFile::Custom600Headers() const@Base" 1.1~exp1 (c++)"pkgAcqFile::Done(std::basic_string, std::allocator >, unsigned long long, HashStringList const&, pkgAcquire::MethodConfig*)@Base" 1.1~exp1 (c++)"pkgAcqFile::pkgAcqFile(pkgAcquire*, std::basic_string, std::allocator >, HashStringList const&, unsigned long long, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, bool)@Base" 1.1~exp1 - (c++)"pkgAcqIndex::Custom600Headers() const@Base" 1.1~exp1 - (c++)"pkgAcqIndexDiffs::Done(std::basic_string, std::allocator >, unsigned long long, HashStringList const&, pkgAcquire::MethodConfig*)@Base" 1.1~exp1 - (c++)"pkgAcqIndex::Done(std::basic_string, std::allocator >, unsigned long long, HashStringList const&, pkgAcquire::MethodConfig*)@Base" 1.1~exp1 - (c++)"pkgAcqIndex::InitByHashIfNeeded(std::basic_string, std::allocator >)@Base" 1.1~exp1 - (c++)"pkgAcqIndexMergeDiffs::Done(std::basic_string, std::allocator >, unsigned long long, HashStringList const&, pkgAcquire::MethodConfig*)@Base" 1.1~exp1 - (c++)"pkgAcqMetaClearSig::Custom600Headers() const@Base" 1.1~exp1 - (c++)"pkgAcqMetaIndex::Custom600Headers() const@Base" 1.1~exp1 - (c++)"pkgAcqMetaIndex::Done(std::basic_string, std::allocator >, unsigned long long, HashStringList const&, pkgAcquire::MethodConfig*)@Base" 1.1~exp1 - (c++)"pkgAcqMetaSig::Custom600Headers() const@Base" 1.1~exp1 - (c++)"pkgAcqMetaSig::Done(std::basic_string, std::allocator >, unsigned long long, HashStringList const&, pkgAcquire::MethodConfig*)@Base" 1.1~exp1 (c++)"pkgAcqMethod::DropPrivsOrDie()@Base" 1.1~exp1 (c++)"pkgAcquire::Item::Custom600Headers() const@Base" 1.1~exp1 (c++)"pkgAcquire::Item::Done(std::basic_string, std::allocator >, unsigned long long, HashStringList const&, pkgAcquire::MethodConfig*)@Base" 1.1~exp1 @@ -1644,19 +1259,8 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"typeinfo for pkgAcqBaseIndex@Base" 1.1~exp1 (c++)"typeinfo name for pkgAcqBaseIndex@Base" 1.1~exp1 (c++)"vtable for pkgAcqBaseIndex@Base" 1.1~exp1 - (c++)"DiffInfo::DiffInfo(DiffInfo const&)@Base" 1.1~exp4 ### more transactional update (c++)"pkgAcqBaseIndex::VerifyHashByMetaKey(HashStringList const&)@Base" 1.1~exp4 - (c++)"pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire*, pkgAcqMetaBase*, IndexTarget const*, HashStringList const&, indexRecords*)@Base" 1.1~exp4 - (c++)"pkgAcqIndex::AutoSelectCompression()@Base" 1.1~exp4 - (c++)"pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire*, pkgAcqMetaBase*, IndexTarget const*, HashStringList const&, indexRecords*, std::vector >)@Base" 1.1~exp4 - (c++)"pkgAcqIndexMergeDiffs::pkgAcqIndexMergeDiffs(pkgAcquire*, pkgAcqMetaBase*, IndexTarget const*, HashStringList const&, indexRecords*, DiffInfo const&, std::vector > const*)@Base" 1.1~exp4 - (c++)"pkgAcqIndex::pkgAcqIndex(pkgAcquire*, pkgAcqMetaBase*, IndexTarget const*, HashStringList const&, indexRecords*)@Base" 1.1~exp4 - (c++)"pkgAcqIndex::pkgAcqIndex(pkgAcquire*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, HashStringList const&)@Base" 1.1~exp4 - (c++)"pkgAcqIndex::ReverifyAfterIMS()@Base" 1.1~exp4 - (c++)"pkgAcqIndex::StageDecompressDone(std::basic_string, std::allocator >, HashStringList const&, pkgAcquire::MethodConfig*)@Base" 1.1~exp4 - (c++)"pkgAcqIndex::StageDownloadDone(std::basic_string, std::allocator >, HashStringList const&, pkgAcquire::MethodConfig*)@Base" 1.1~exp4 - (c++)"pkgAcqIndex::ValidateFile(std::basic_string, std::allocator > const&)@Base" 1.1~exp4 (c++)"pkgAcqMetaBase::AbortTransaction()@Base" 1.1~exp4 (c++)"pkgAcqMetaBase::Add(pkgAcquire::Item*)@Base" 1.1~exp4 (c++)"pkgAcqMetaBase::CheckAuthDone(std::basic_string, std::allocator >, std::basic_string, std::allocator > const&)@Base" 1.1~exp4 @@ -1670,11 +1274,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgAcqMetaBase::TransactionStageCopy(pkgAcquire::Item*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 1.1~exp4 (c++)"pkgAcqMetaBase::TransactionStageRemoval(pkgAcquire::Item*, std::basic_string, std::allocator > const&)@Base" 1.1~exp4 (c++)"pkgAcqMetaBase::VerifyVendor(std::basic_string, std::allocator >, std::basic_string, std::allocator > const&)@Base" 1.1~exp4 - (c++)"pkgAcqMetaClearSig::Done(std::basic_string, std::allocator >, unsigned long long, HashStringList const&, pkgAcquire::MethodConfig*)@Base" 1.1~exp4 - (c++)"pkgAcqMetaIndex::Finished()@Base" 1.1~exp4 - (c++)"pkgAcqMetaIndex::Init(std::basic_string, std::allocator >, std::basic_string, std::allocator >)@Base" 1.1~exp4 - (c++)"pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcquire*, pkgAcqMetaBase*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector > const*, indexRecords*)@Base" 1.1~exp4 - (c++)"pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire*, pkgAcqMetaBase*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector > const*, indexRecords*)@Base" 1.1~exp4 (c++)"pkgAcquire::GetLock(std::basic_string, std::allocator > const&)@Base" 1.1~exp4 (c++)"pkgAcquire::Item::Dequeue()@Base" 1.1~exp4 (c++)"pkgAcquire::Item::Item(pkgAcquire*, HashStringList const&, pkgAcqMetaBase*)@Base" 1.1~exp4 @@ -1710,7 +1309,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgCdrom::DropTranslation(std::vector, std::allocator >, std::allocator, std::allocator > > >&)@Base" 0.9.7.5 (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::PrvIterator const&) const@Base" 0.9.8 (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::VerIterator const&) const@Base" 0.9.8 - (c++)"pkgCacheGenerator::NewDepends(pkgCache::PkgIterator&, pkgCache::VerIterator&, unsigned int, unsigned int const&, unsigned int const&, unsigned int*&)@Base" 0.9.8 (c++)"operator<<(std::basic_ostream >&, GlobalError::Item)@Base" 0.9.9 (c++)"pkgDepCache::IsDeleteOkProtectInstallRequests(pkgCache::PkgIterator const&, bool, unsigned long, bool)@Base" 0.9.9.1 (c++)"pkgDepCache::IsInstallOkMultiArchSameVersionSynced(pkgCache::PkgIterator const&, bool, unsigned long, bool)@Base" 0.9.9.1 @@ -1740,7 +1338,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"debListParser::ParseDepends(char const*, char const*, std::basic_string, std::allocator >&, std::basic_string, std::allocator >&, unsigned int&)@Base" 0.9.16 (c++)"debListParser::ParseDepends(char const*, char const*, std::basic_string, std::allocator >&, std::basic_string, std::allocator >&, unsigned int&, bool const&)@Base" 0.9.16 (c++)"debListParser::ParseDepends(char const*, char const*, std::basic_string, std::allocator >&, std::basic_string, std::allocator >&, unsigned int&, bool const&, bool const&, bool const&)@Base" 0.9.16 - (c++)"pkgCacheGenerator::ListParser::SameVersion(unsigned short, pkgCache::VerIterator const&)@Base" 0.9.16 (c++)"Rename(std::basic_string, std::allocator >, std::basic_string, std::allocator >)@Base" 0.9.16 (c++)"pkgDepCache::IsInstallOkDependenciesSatisfiableByCandidates(pkgCache::PkgIterator const&, bool, unsigned long, bool)@Base" 1.0 (c++)"APT::Progress::PackageManagerFancy::GetTerminalSize()@Base" 1.0 @@ -1749,12 +1346,6 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgCdromStatus::SetTotal(int)@Base" 1.0 (c++)"EDSP::ExecuteSolver(char const*, int*, int*, bool)@Base" 1.0.4 (c++)"pkgPackageManager::EarlyRemove(pkgCache::PkgIterator, pkgCache::DepIterator const*)@Base" 1.0.4 - (c++)"debTranslationsParser::Architecture()@Base" 1.0.4 - (c++)"debTranslationsParser::~debTranslationsParser()@Base" 1.0.4 - (c++)"debTranslationsParser::Version()@Base" 1.0.4 - (c++)"typeinfo for debTranslationsParser@Base" 1.0.4 - (c++)"typeinfo name for debTranslationsParser@Base" 1.0.4 - (c++)"vtable for debTranslationsParser@Base" 1.0.4 (c++)"pkgSrcRecords::Step()@Base" 1.0.4 (c++)"pkgDPkgPM::SetupSlavePtyMagic()@Base" 1.0.8 (c++)"APT::Progress::PackageManager::PackageManager()@Base" 1.1~exp1 @@ -1775,14 +1366,11 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"pkgDistUpgrade(pkgDepCache&, OpProgress*)@Base" 1.1~exp4 (c++)"pkgProblemResolver::Resolve(bool, OpProgress*)@Base" 1.1~exp4 (c++)"pkgProblemResolver::ResolveByKeep(OpProgress*)@Base" 1.1~exp4 - (c++)"pkgCacheGenerator::NewVersion(pkgCache::VerIterator&, std::basic_string, std::allocator > const&, unsigned int, unsigned short, unsigned int)@Base" 1.1~exp4 - (c++)"pkgCacheGenerator::StoreString(pkgCacheGenerator::StringType, char const*, unsigned int)@Base" 1.1~exp4 (c++)"pkgCache::PkgIterator::Section() const@Base" 1.1~exp4 (c++)"APT::PackageContainer, std::allocator > >::iterator::getPkg() const@Base" 1.1~exp4 (c++)"typeinfo for APT::PackageContainer, std::allocator > >::iterator@Base" 1.1~exp4 (c++)"typeinfo name for APT::PackageContainer, std::allocator > >::iterator@Base" 1.1~exp4 (c++)"vtable for APT::PackageContainer, std::allocator > >::iterator@Base" 1.1~exp4 - (c++)"pkgAcqIndex::GetFinalFilename() const@Base" 1.1~exp4 (c++)"DropPrivileges()@Base" 1.1~exp4 (c++)"FileFd::FileFd(std::basic_string, std::allocator >, unsigned int, unsigned long)@Base" 1.1~exp4 (c++)"indexRecords::indexRecords(std::basic_string, std::allocator > const&)@Base" 1.1~exp5 @@ -1790,16 +1378,11 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# (c++)"indexRecords::IsNeverTrusted() const@Base" 1.1~exp5 (c++)"indexRecords::SetTrusted(bool)@Base" 1.1~exp5 (c++)"metaIndex::metaIndex(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, char const*)@Base" 1.1~exp9 -### demangle strangeness - buildd report it as MISSING and as new… - (c++)"pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcquire*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector > const*, indexRecords*)@Base" 0.8.0 - (c++)"pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector > const*, indexRecords*)@Base" 0.8.0 ### gcc-4.6 artefacts # (c++|optional=implicit)"HashString::operator=(HashString const&)@Base" 0.8.0 # (c++|optional=implicit)"HashString::HashString(HashString const&)@Base" 0.8.0 # (c++|optional=inline)"APT::VersionContainer > >::iterator std::max_element > >::iterator, CompareProviders>(APT::VersionContainer > >::iterator, APT::VersionContainer > >::iterator, CompareProviders)@Base" 0.8.0 # (c++|optional=inline)"pkgCache::VerIterator::ParentPkg() const@Base" 0.8.0 -### gcc-4.8 artefacts -# (c++|optional=implicit)"debSLTypeDebian::~debSLTypeDebian()@Base" 0.8.0 ### empty destructors included in the .h file # (c++|optional=inline)"pkgVersioningSystem::~pkgVersioningSystem()@Base" 0.8.0 # (c++|optional=inline)"pkgSystem::~pkgSystem()@Base" 0.8.0 @@ -1808,10 +1391,8 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER# # (c++|optional=inline)"pkgIndexFile::Type::~Type()@Base" 0.8.0 # (c++|optional=inline)"pkgSourceList::Type::~Type()@Base" 0.8.0 # (c++|optional=inline)"pkgIndexFile::~pkgIndexFile()@Base" 0.8.0 -# (c++|optional=inline)"pkgCacheGenerator::ListParser::~ListParser()@Base" 0.8.0 # (c++|optional=inline)"metaIndex::~metaIndex()@Base" 0.8.0 ### std library artefacts - (c++|regex|optional=std)"^std::vector::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 (c++|optional=std)"char* std::basic_string, std::allocator >::_S_construct<__gnu_cxx::__normal_iterator, std::allocator > > >(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, std::allocator const&, std::forward_iterator_tag)@Base" 0.8.0 (c++|optional=std)"char* std::basic_string, std::allocator >::_S_construct<__gnu_cxx::__normal_iterator, std::allocator > > >(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, std::allocator const&, std::forward_iterator_tag)@Base" 0.8.0 -- cgit v1.2.3-70-g09d2 From 3a2b39ee602dd5a98b8fdaee2f1c8e0b13a276e2 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sun, 18 Aug 2013 23:27:24 +0200 Subject: use 'best' hash for source authentication Collect all hashes we can get from the source record and put them into a HashStringList so that 'apt-get source' can use it instead of using always the MD5sum. We therefore also deprecate the MD5 struct member in favor of the list. While at it, the parsing of the Files is enhanced so that records which miss "Files" (aka MD5 checksums) are still searched for other checksums as they include just as much data, just not with a nice and catchy name. This is a cherry-pick of 1262d35 with some dirty tricks to preserve ABI. LP: 1098738 --- apt-pkg/deb/debsrcrecords.cc | 162 +++++++++---- apt-pkg/deb/debsrcrecords.h | 1 + apt-pkg/srcrecords.cc | 31 ++- apt-pkg/srcrecords.h | 21 +- cmdline/apt-get.cc | 28 ++- debian/libapt-pkg4.12.symbols | 2 + .../test-ubuntu-bug-1098738-apt-get-source-md5sum | 260 +++++++++++++++++++++ 7 files changed, 445 insertions(+), 60 deletions(-) create mode 100755 test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum (limited to 'apt-pkg/deb/debsrcrecords.h') diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc index a444cbe4d..49a348dd4 100644 --- a/apt-pkg/deb/debsrcrecords.cc +++ b/apt-pkg/deb/debsrcrecords.cc @@ -118,13 +118,32 @@ bool debSrcRecordParser::BuildDepends(std::vector &List) +bool debSrcRecordParser::Files(std::vector &F) { - List.erase(List.begin(),List.end()); - - string Files = Sect.FindS("Files"); - if (Files.empty() == true) + std::vector F2; + if (Files2(F2) == false) return false; + for (std::vector::const_iterator f2 = F2.begin(); f2 != F2.end(); ++f2) + { + pkgSrcRecords::File2 f; +#if __GNUC__ >= 4 + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + f.MD5Hash = f2->MD5Hash; + f.Size = f2->Size; +#if __GNUC__ >= 4 + #pragma GCC diagnostic pop +#endif + f.Path = f2->Path; + f.Type = f2->Type; + F.push_back(f); + } + return true; +} +bool debSrcRecordParser::Files2(std::vector &List) +{ + List.clear(); // Stash the / terminated directory prefix string Base = Sect.FindS("Directory"); @@ -133,51 +152,106 @@ bool debSrcRecordParser::Files(std::vector &List) std::vector const compExts = APT::Configuration::getCompressorExtensions(); - // Iterate over the entire list grabbing each triplet - const char *C = Files.c_str(); - while (*C != 0) - { - pkgSrcRecords::File F; - string Size; - - // Parse each of the elements - if (ParseQuoteWord(C,F.MD5Hash) == false || - ParseQuoteWord(C,Size) == false || - ParseQuoteWord(C,F.Path) == false) - return _error->Error("Error parsing file record"); - - // Parse the size and append the directory - F.Size = atoi(Size.c_str()); - F.Path = Base + F.Path; - - // Try to guess what sort of file it is we are getting. - string::size_type Pos = F.Path.length()-1; - while (1) + for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type) + { + // derive field from checksum type + std::string checksumField("Checksums-"); + if (strcmp(*type, "MD5Sum") == 0) + checksumField = "Files"; // historic name for MD5 checksums + else + checksumField.append(*type); + + string const Files = Sect.FindS(checksumField.c_str()); + if (Files.empty() == true) + continue; + + // Iterate over the entire list grabbing each triplet + const char *C = Files.c_str(); + while (*C != 0) { - string::size_type Tmp = F.Path.rfind('.',Pos); - if (Tmp == string::npos) - break; - if (F.Type == "tar") { - // source v3 has extension 'debian.tar.*' instead of 'diff.*' - if (string(F.Path, Tmp+1, Pos-Tmp) == "debian") - F.Type = "diff"; - break; - } - F.Type = string(F.Path,Tmp+1,Pos-Tmp); - - if (std::find(compExts.begin(), compExts.end(), std::string(".").append(F.Type)) != compExts.end() || - F.Type == "tar") + string hash, size, path; + + // Parse each of the elements + if (ParseQuoteWord(C, hash) == false || + ParseQuoteWord(C, size) == false || + ParseQuoteWord(C, path) == false) + return _error->Error("Error parsing file record in %s of source package %s", checksumField.c_str(), Package().c_str()); + + HashString const hashString(*type, hash); + if (Base.empty() == false) + path = Base + path; + + // look if we have a record for this file already + std::vector::iterator file = List.begin(); + for (; file != List.end(); ++file) + if (file->Path == path) + break; + + // we have it already, store the new hash and be done + if (file != List.end()) { - Pos = Tmp-1; +#if __GNUC__ >= 4 + // set for compatibility only, so warn users not us + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + if (checksumField == "Files") + file->MD5Hash = hash; +#if __GNUC__ >= 4 + #pragma GCC diagnostic pop +#endif + // an error here indicates that we have two different hashes for the same file + if (file->Hashes.push_back(hashString) == false) + return _error->Error("Error parsing checksum in %s of source package %s", checksumField.c_str(), Package().c_str()); continue; } - - break; + + // we haven't seen this file yet + pkgSrcRecords::File2 F; + F.Path = path; + F.FileSize = strtoull(size.c_str(), NULL, 10); + F.Hashes.push_back(hashString); + +#if __GNUC__ >= 4 + // set for compatibility only, so warn users not us + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + F.Size = F.FileSize; + if (checksumField == "Files") + F.MD5Hash = hash; +#if __GNUC__ >= 4 + #pragma GCC diagnostic pop +#endif + + // Try to guess what sort of file it is we are getting. + string::size_type Pos = F.Path.length()-1; + while (1) + { + string::size_type Tmp = F.Path.rfind('.',Pos); + if (Tmp == string::npos) + break; + if (F.Type == "tar") { + // source v3 has extension 'debian.tar.*' instead of 'diff.*' + if (string(F.Path, Tmp+1, Pos-Tmp) == "debian") + F.Type = "diff"; + break; + } + F.Type = string(F.Path,Tmp+1,Pos-Tmp); + + if (std::find(compExts.begin(), compExts.end(), std::string(".").append(F.Type)) != compExts.end() || + F.Type == "tar") + { + Pos = Tmp-1; + continue; + } + + break; + } + List.push_back(F); } - - List.push_back(F); } - + return true; } /*}}}*/ diff --git a/apt-pkg/deb/debsrcrecords.h b/apt-pkg/deb/debsrcrecords.h index b65d1480b..2a3fc86c9 100644 --- a/apt-pkg/deb/debsrcrecords.h +++ b/apt-pkg/deb/debsrcrecords.h @@ -53,6 +53,7 @@ class debSrcRecordParser : public pkgSrcRecords::Parser return std::string(Start,Stop); }; virtual bool Files(std::vector &F); + bool Files2(std::vector &F); debSrcRecordParser(std::string const &File,pkgIndexFile const *Index) : Parser(Index), Fd(File,FileFd::ReadOnly, FileFd::Extension), Tags(&Fd,102400), diff --git a/apt-pkg/srcrecords.cc b/apt-pkg/srcrecords.cc index 81b1c545d..3175ee75f 100644 --- a/apt-pkg/srcrecords.cc +++ b/apt-pkg/srcrecords.cc @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -147,5 +148,33 @@ const char *pkgSrcRecords::Parser::BuildDepType(unsigned char const &Type) return fields[Type]; } /*}}}*/ +bool pkgSrcRecords::Parser::Files2(std::vector &F2)/*{{{*/ +{ + debSrcRecordParser * const deb = dynamic_cast(this); + if (deb != NULL) + return deb->Files2(F2); - + std::vector F; + if (Files(F) == false) + return false; + for (std::vector::const_iterator f = F.begin(); f != F.end(); ++f) + { + pkgSrcRecords::File2 f2; +#if __GNUC__ >= 4 + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + f2.MD5Hash = f->MD5Hash; + f2.Size = f->Size; + f2.Hashes.push_back(HashString("MD5Sum", f->MD5Hash)); + f2.FileSize = f->Size; +#if __GNUC__ >= 4 + #pragma GCC diagnostic pop +#endif + f2.Path = f->Path; + f2.Type = f->Type; + F2.push_back(f2); + } + return true; +} + /*}}}*/ diff --git a/apt-pkg/srcrecords.h b/apt-pkg/srcrecords.h index e000e176a..dde22bd65 100644 --- a/apt-pkg/srcrecords.h +++ b/apt-pkg/srcrecords.h @@ -14,6 +14,7 @@ #define PKGLIB_SRCRECORDS_H #include +#include #include #include @@ -29,15 +30,28 @@ class pkgSrcRecords { public: +#if __GNUC__ >= 4 + // ensure that con- & de-structor don't trigger this warning + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif // Describes a single file struct File { - std::string MD5Hash; - unsigned long Size; + APT_DEPRECATED std::string MD5Hash; + APT_DEPRECATED unsigned long Size; std::string Path; std::string Type; }; - + struct File2 : public File + { + unsigned long long FileSize; + HashStringList Hashes; + }; +#if __GNUC__ >= 4 + #pragma GCC diagnostic pop +#endif + // Abstract parser for each source record class Parser { @@ -77,6 +91,7 @@ class pkgSrcRecords static const char *BuildDepType(unsigned char const &Type) APT_PURE; virtual bool Files(std::vector &F) = 0; + bool Files2(std::vector &F); Parser(const pkgIndexFile *Index) : iIndex(Index) {}; virtual ~Parser() {}; diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index cfa79339b..a28537712 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -797,13 +797,13 @@ static bool DoSource(CommandLine &CmdL) } // Back track - vector Lst; - if (Last->Files(Lst) == false) { + vector Lst; + if (Last->Files2(Lst) == false) { return false; } // Load them into the fetcher - for (vector::const_iterator I = Lst.begin(); + for (vector::const_iterator I = Lst.begin(); I != Lst.end(); ++I) { // Try to guess what sort of file it is we are getting. @@ -832,22 +832,26 @@ static bool DoSource(CommandLine &CmdL) queued.insert(Last->Index().ArchiveURI(I->Path)); // check if we have a file with that md5 sum already localy - if(!I->MD5Hash.empty() && FileExists(flNotDir(I->Path))) - { - FileFd Fd(flNotDir(I->Path), FileFd::ReadOnly); - MD5Summation sum; - sum.AddFD(Fd.Fd(), Fd.Size()); - Fd.Close(); - if((string)sum.Result() == I->MD5Hash) + std::string localFile = flNotDir(I->Path); + if (FileExists(localFile) == true) + if(I->Hashes.VerifyFile(localFile) == true) { ioprintf(c1out,_("Skipping already downloaded file '%s'\n"), - flNotDir(I->Path).c_str()); + localFile.c_str()); continue; } + + // see if we have a hash (Acquire::ForceHash is the only way to have none) + HashString const * const hs = I->Hashes.find(NULL); + if (hs == NULL && _config->FindB("APT::Get::AllowUnauthenticated",false) == false) + { + ioprintf(c1out, "Skipping download of file '%s' as requested hashsum is not available for authentication\n", + localFile.c_str()); + continue; } new pkgAcqFile(&Fetcher,Last->Index().ArchiveURI(I->Path), - I->MD5Hash,I->Size, + hs != NULL ? hs->toStr() : "", I->FileSize, Last->Index().SourceInfo(*Last,*I),Src); } } diff --git a/debian/libapt-pkg4.12.symbols b/debian/libapt-pkg4.12.symbols index d89f07bb5..d481e51ed 100644 --- a/debian/libapt-pkg4.12.symbols +++ b/debian/libapt-pkg4.12.symbols @@ -1587,6 +1587,8 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"HashStringList::VerifyFile(std::basic_string, std::allocator >) const@Base" 1.0.9.4 (c++)"HashString::operator==(HashString const&) const@Base" 1.0.9.4 (c++)"HashString::operator!=(HashString const&) const@Base" 1.0.9.4 + (c++)"pkgSrcRecords::Parser::Files2(std::vector >&)@Base" 1.0.9.4 + (c++)"debSrcRecordParser::Files2(std::vector >&)@Base" 1.0.9.4 ### demangle strangeness - buildd report it as MISSING and as new… (c++)"pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector > const*, indexRecords*)@Base" 0.8.0 ### gcc-4.6 artefacts diff --git a/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum b/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum new file mode 100755 index 000000000..9bdc81264 --- /dev/null +++ b/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum @@ -0,0 +1,260 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture 'native' + +cat > aptarchive/Sources < +Architecture: all +Files: + d41d8cd98f00b204e9800998ecf8427e 0 pkg-md5-ok_1.0.dsc + d41d8cd98f00b204e9800998ecf8427e 0 pkg-md5-ok_1.0.tar.gz + +Package: pkg-sha256-ok +Binary: pkg-sha256-ok +Version: 1.0 +Maintainer: Joe Sixpack +Architecture: all +Files: + d41d8cd98f00b204e9800998ecf8427e 0 pkg-sha256-ok_1.0.dsc + d41d8cd98f00b204e9800998ecf8427e 0 pkg-sha256-ok_1.0.tar.gz +Checksums-Sha1: + da39a3ee5e6b4b0d3255bfef95601890afd80709 0 pkg-sha256-ok_1.0.dsc + da39a3ee5e6b4b0d3255bfef95601890afd80709 0 pkg-sha256-ok_1.0.tar.gz +Checksums-Sha256: + e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 pkg-sha256-ok_1.0.dsc + e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 pkg-sha256-ok_1.0.tar.gz + +Package: pkg-sha256-bad +Binary: pkg-sha256-bad +Version: 1.0 +Maintainer: Joe Sixpack +Architecture: all +Files: + d41d8cd98f00b204e9800998ecf8427e 0 pkg-sha256-bad_1.0.dsc + d41d8cd98f00b204e9800998ecf8427e 0 pkg-sha256-bad_1.0.tar.gz +Checksums-Sha1: + da39a3ee5e6b4b0d3255bfef95601890afd80709 0 pkg-sha256-bad_1.0.dsc + da39a3ee5e6b4b0d3255bfef95601890afd80709 0 pkg-sha256-bad_1.0.tar.gz +Checksums-Sha256: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 pkg-sha256-bad_1.0.dsc + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 pkg-sha256-bad_1.0.tar.gz + +Package: pkg-no-md5 +Binary: pkg-no-md5 +Version: 1.0 +Maintainer: Joe Sixpack +Architecture: all +Checksums-Sha1: + da39a3ee5e6b4b0d3255bfef95601890afd80709 0 pkg-no-md5_1.0.dsc + da39a3ee5e6b4b0d3255bfef95601890afd80709 0 pkg-no-md5_1.0.tar.gz +Checksums-Sha256: + e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 pkg-no-md5_1.0.dsc + e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 pkg-no-md5_1.0.tar.gz + +Package: pkg-mixed-ok +Binary: pkg-mixed-ok +Version: 1.0 +Maintainer: Joe Sixpack +Architecture: all +Checksums-Sha1: + da39a3ee5e6b4b0d3255bfef95601890afd80709 0 pkg-mixed-ok_1.0.tar.gz +Checksums-Sha256: + e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 pkg-mixed-ok_1.0.dsc + +Package: pkg-mixed-sha1-bad +Binary: pkg-mixed-sha1-bad +Version: 1.0 +Maintainer: Joe Sixpack +Architecture: all +Checksums-Sha1: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 pkg-mixed-sha1-bad_1.0.dsc +Checksums-Sha256: + e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 pkg-mixed-sha1-bad_1.0.tar.gz + +Package: pkg-mixed-sha2-bad +Binary: pkg-mixed-sha2-bad +Version: 1.0 +Maintainer: Joe Sixpack +Architecture: all +Checksums-Sha1: + da39a3ee5e6b4b0d3255bfef95601890afd80709 0 pkg-mixed-sha2-bad_1.0.dsc +Checksums-Sha256: + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 pkg-mixed-sha2-bad_1.0.tar.gz + +Package: pkg-md5-disagree +Binary: pkg-md5-disagree +Version: 1.0 +Maintainer: Joe Sixpack +Architecture: all +Files: + d41d8cd98f00b204e9800998ecf8427e 0 pkg-md5-disagree_1.0.dsc + d41d8cd98f00b204e9800998ecf8427e 0 pkg-md5-disagree_1.0.tar.gz + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 pkg-md5-disagree_1.0.dsc + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 pkg-md5-disagree_1.0.tar.gz + +Package: pkg-md5-agree +Binary: pkg-md5-agree +Version: 1.0 +Maintainer: Joe Sixpack +Architecture: all +Files: + d41d8cd98f00b204e9800998ecf8427e 0 pkg-md5-agree_1.0.dsc + d41d8cd98f00b204e9800998ecf8427e 0 pkg-md5-agree_1.0.tar.gz + d41d8cd98f00b204e9800998ecf8427e 0 pkg-md5-agree_1.0.tar.gz + d41d8cd98f00b204e9800998ecf8427e 0 pkg-md5-agree_1.0.dsc + +Package: pkg-sha256-disagree +Binary: pkg-sha256-disagree +Version: 1.0 +Maintainer: Joe Sixpack +Architecture: all +Files: + d41d8cd98f00b204e9800998ecf8427e 0 pkg-sha256-disagree_1.0.dsc + d41d8cd98f00b204e9800998ecf8427e 0 pkg-sha256-disagree_1.0.tar.gz +Checksums-Sha1: + da39a3ee5e6b4b0d3255bfef95601890afd80709 0 pkg-sha256-disagree_1.0.dsc + da39a3ee5e6b4b0d3255bfef95601890afd80709 0 pkg-sha256-disagree_1.0.tar.gz +Checksums-Sha256: + e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 pkg-sha256-disagree_1.0.dsc + e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 pkg-sha256-disagree_1.0.tar.gz + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 pkg-sha256-disagree_1.0.dsc + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 pkg-sha256-disagree_1.0.tar.gz +EOF + +# create fetchable files +for x in 'pkg-md5-ok' 'pkg-sha256-ok' 'pkg-sha256-bad' 'pkg-no-md5' \ + 'pkg-mixed-ok' 'pkg-mixed-sha1-bad' 'pkg-mixed-sha2-bad' \ + 'pkg-md5-agree' 'pkg-md5-disagree' 'pkg-sha256-disagree'; do + touch aptarchive/${x}_1.0.dsc aptarchive/${x}_1.0.tar.gz +done + +setupaptarchive +changetowebserver +testsuccess aptget update + +testok() { + rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz + testequal "Reading package lists... +Building dependency tree... +Need to get 0 B of source archives. +Get:1 http://localhost:8080/ $1 1.0 (dsc) +Get:2 http://localhost:8080/ $1 1.0 (tar) +Download complete and in download only mode" aptget source -d "$@" + msgtest 'Files were successfully downloaded for' "$1" + testsuccess --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz + rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz +} + +testkeep() { + touch ${1}_1.0.dsc ${1}_1.0.tar.gz + testequal "Reading package lists... +Building dependency tree... +Skipping already downloaded file '${1}_1.0.dsc' +Skipping already downloaded file '${1}_1.0.tar.gz' +Need to get 0 B of source archives. +Download complete and in download only mode" aptget source -d "$@" + msgtest 'Files already downloaded are kept for' "$1" + testsuccess --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz + rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz +} + +testmismatch() { + rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz + testequal "Reading package lists... +Building dependency tree... +Need to get 0 B of source archives. +Get:1 http://localhost:8080/ $1 1.0 (dsc) +Get:2 http://localhost:8080/ $1 1.0 (tar) +E: Failed to fetch http://localhost:8080/${1}_1.0.dsc Hash Sum mismatch + +E: Failed to fetch http://localhost:8080/${1}_1.0.tar.gz Hash Sum mismatch + +E: Failed to fetch some archives." aptget source -d "$@" + msgtest 'Files were not download as they have hashsum mismatches for' "$1" + testfailure --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz + + rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz + testequal "Reading package lists... +Building dependency tree... +Skipping download of file 'pkg-sha256-bad_1.0.dsc' as requested hashsum is not available for authentication +Skipping download of file 'pkg-sha256-bad_1.0.tar.gz' as requested hashsum is not available for authentication +Need to get 0 B of source archives. +Download complete and in download only mode" aptget source -d "$@" -o Acquire::ForceHash=ROT26 + msgtest 'Files were not download as hash is unavailable for' "$1" + testfailure --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz + + rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz + testequal "Reading package lists... +Building dependency tree... +Need to get 0 B of source archives. +Get:1 http://localhost:8080/ $1 1.0 (dsc) +Get:2 http://localhost:8080/ $1 1.0 (tar) +Download complete and in download only mode" aptget source --allow-unauthenticated -d "$@" -o Acquire::ForceHash=ROT26 + msgtest 'Files were downloaded unauthenticated as user allowed it' "$1" + testsuccess --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz +} + +testok pkg-md5-ok +testkeep pkg-md5-ok +testok pkg-sha256-ok +testkeep pkg-sha256-ok + +# pkg-sha256-bad has a bad SHA sum, but good MD5 sum. If apt is +# checking the best available hash (as it should), this will trigger +# a hash mismatch. +testmismatch pkg-sha256-bad +testmismatch pkg-sha256-bad +testok pkg-sha256-bad -o Acquire::ForceHash=MD5Sum + +# not having MD5 sum doesn't mean the file doesn't exist at all … +testok pkg-no-md5 +testok pkg-no-md5 -o Acquire::ForceHash=SHA256 +testequal "Reading package lists... +Building dependency tree... +Skipping download of file 'pkg-no-md5_1.0.dsc' as requested hashsum is not available for authentication +Skipping download of file 'pkg-no-md5_1.0.tar.gz' as requested hashsum is not available for authentication +Need to get 0 B of source archives. +Download complete and in download only mode" aptget source -d pkg-no-md5 -o Acquire::ForceHash=MD5Sum +msgtest 'Files were not download as MD5 is not available for this package' 'pkg-no-md5' +testfailure --nomsg test -e pkg-no-md5_1.0.dsc -a -e pkg-no-md5_1.0.tar.gz + +# deal with cases in which we haven't for all files the same checksum type +# mostly pathologic as this shouldn't happen, but just to be sure +testok pkg-mixed-ok +testequal 'Reading package lists... +Building dependency tree... +Need to get 0 B of source archives. +Get:1 http://localhost:8080/ pkg-mixed-sha1-bad 1.0 (tar) +Get:2 http://localhost:8080/ pkg-mixed-sha1-bad 1.0 (dsc) +E: Failed to fetch http://localhost:8080/pkg-mixed-sha1-bad_1.0.dsc Hash Sum mismatch + +E: Failed to fetch some archives.' aptget source -d pkg-mixed-sha1-bad +msgtest 'Only tar file is downloaded as the dsc has hashsum mismatch' 'pkg-mixed-sha1-bad' +testsuccess --nomsg test ! -e pkg-mixed-sha1-bad_1.0.dsc -a -e pkg-mixed-sha1-bad_1.0.tar.gz +testequal 'Reading package lists... +Building dependency tree... +Need to get 0 B of source archives. +Get:1 http://localhost:8080/ pkg-mixed-sha2-bad 1.0 (tar) +Get:2 http://localhost:8080/ pkg-mixed-sha2-bad 1.0 (dsc) +E: Failed to fetch http://localhost:8080/pkg-mixed-sha2-bad_1.0.tar.gz Hash Sum mismatch + +E: Failed to fetch some archives.' aptget source -d pkg-mixed-sha2-bad +msgtest 'Only dsc file is downloaded as the tar has hashsum mismatch' 'pkg-mixed-sha2-bad' +testsuccess --nomsg test -e pkg-mixed-sha2-bad_1.0.dsc -a ! -e pkg-mixed-sha2-bad_1.0.tar.gz + +# it gets even more pathologic: multiple entries for one file, some even disagreeing! +testok pkg-md5-agree +testequal 'Reading package lists... +Building dependency tree... +E: Error parsing checksum in Files of source package pkg-md5-disagree' aptget source -d pkg-md5-disagree +testequal 'Reading package lists... +Building dependency tree... +E: Error parsing checksum in Checksums-SHA256 of source package pkg-sha256-disagree' aptget source -d pkg-sha256-disagree -- cgit v1.2.3-70-g09d2