[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#536029: marked as done (Add support to download index files for multiple architectures)



Your message dated Tue, 24 Aug 2010 18:47:14 +0000
with message-id <E1OnyWg-0008Ne-EN@franck.debian.org>
and subject line Bug#536029: fixed in apt 0.8.0
has caused the Debian Bug report #536029,
regarding Add support to download index files for multiple architectures
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
536029: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=536029
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: apt
Version: 0.7.21
Severity: wishlist
Tags: patch

Hi,

attached is a patch I would like to get included eventually in apt
that adds the ability to download and process index files for multiple
architectures. This patch has 2 purposes:

1) I believe this will be the first thing that needs to be added to
implement multiarch. So it will be needed at some point anyway.

2) This will remove the hacks ia32-apt-get needs to pull over apt-get.
Ia32-apt-get can then be implemented by setting APT::Architectures and
adding a Apt::Update::Post-Invoke script.


The patch is not yet 100% complete and you will see some FIXMEs in the
patch and in the details below. Things I haven't been able to test yet
like adding a i386 CDrom on amd64 or things I'm unsure about. Any help
there would be appreciated.

On that note: How do I mark the *.bin files as incompatible? The
change in policy breaks compatibility I believe.


What the patch does in detail:

- Add APT::Architectures:: config option and initialize with
  APT::Architecture if unset.

- Declare the unused [vendor] field in sources.list as option
  field, e.g.
    deb [arch=amd64,i386;keyring=blubber.key;have=fun]
  FIXME: Parsing of this field is still missing but I pass a
  map<string,string> for it around where needed.

- When fetching index files download them for all APT::Architectures
  FIXME: use Options["arch"] to override the default

- Enter packages of all APT::Architectures into the package cache.

- Add the architecture to status and progress informations:
  Get:1 http://chocos sid/main i386 Packages [7788kB]

- Add b= (Build architecture) to policy:
  499 http://chocos sid/main i386 Packages
      release v=4.3,o=Debian,a=unstable,l=Debian,c=main,b=i386

- Decrease the pin of the non native archs by 1 and increase default
  pin of experimental to 2 (so non-native experimental is 1).
  FIXME:   99 /var/lib/dpkg/status
  This is so that the native arch will always be prefered unless the
  user pins it differently.


As said above the patch is not 100% yet but I feel it is ready for
others to test and comment and maybe help.

MfG
	Goswin

-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (499, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.29.4-frosties-1
Locale: LANG=C, LC_CTYPE=de_DE (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/bash

Versions of packages apt depends on:
ii  debian-archive-keyring        2009.01.31 GnuPG archive keys of the Debian a
ii  libc6                         2.9-18     GNU C Library: Shared libraries
ii  libgcc1                       1:4.4.0-10 GCC support library
ii  libstdc++6                    4.4.0-10   The GNU Standard C++ Library v3

apt recommends no packages.

Versions of packages apt suggests:
ii  apt-doc                   0.7.21         Documentation for APT
ii  aptitude                  0.4.11.11-1+b1 terminal-based package manager
ii  bzip2                     1.0.5-3        high-quality block-sorting file co
ii  dpkg-dev                  1.15.3         Debian package development tools
ii  lzma                      4.43-14        Compression method of 7z format in
ii  python-apt                0.7.10.4       Python interface to libapt-pkg
ii  synaptic                  0.62.7         Graphical package manager

-- no debconf information
diff -Nru apt-0.7.21/apt-pkg/cdrom.cc apt-0.7.21a0.mrvn.1/apt-pkg/cdrom.cc
--- apt-0.7.21/apt-pkg/cdrom.cc	2009-04-14 14:20:29.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/cdrom.cc	2009-07-06 22:44:07.000000000 +0200
@@ -217,33 +217,41 @@
 /* Here we drop everything that is not this machines arch */
 bool pkgCdrom::DropBinaryArch(vector<string> &List)
 {
-   char S[300];
-   snprintf(S,sizeof(S),"/binary-%s/",
-	    _config->Find("Apt::Architecture").c_str());
-   
+   string Arch = _config->Find("Apt::Architecture");
+   vector<string> Archs = _config->FindList("Apt::Architectures");
+
    for (unsigned int I = 0; I < List.size(); I++)
    {
       const char *Str = List[I].c_str();
       
-      const char *Res;
-      if ((Res = strstr(Str,"/binary-")) == 0)
+      const char *Start, *End;
+      char Tmp[300];
+      if ((Start = strstr(Str,"/binary-")) == 0)
 	 continue;
+      Start += 8;
+      if ((End = strstr(Start,"/")) == 0 || Start == End)
+	 continue;
+      --End;
+
+      // Create temp string
+      strncpy(Tmp,Start,End-Start);
+      Tmp[End-Start] = 0;
+
+      // Check if arch matches
+      bool matching = false;
+      if (Arch == Tmp) matching = true;
+      for(vector<string>::const_iterator J = Archs.begin();
+	  !matching && J != Archs.end(); ++J) {
+	  if (*J == Tmp) matching = true;
+      }
 
       // Weird, remove it.
-      if (strlen(Res) < strlen(S))
+      if (!matching)
       {
 	 List.erase(List.begin() + I);
 	 I--;
 	 continue;
       }
-	  
-      // See if it is our arch
-      if (stringcmp(Res,Res + strlen(S),S) == 0)
-	 continue;
-      
-      // Erase it
-      List.erase(List.begin() + I);
-      I--;
    }
    
    return true;
diff -Nru apt-0.7.21/apt-pkg/clean.cc apt-0.7.21a0.mrvn.1/apt-pkg/clean.cc
--- apt-0.7.21/apt-pkg/clean.cc	2008-06-09 23:10:08.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/clean.cc	2009-07-06 22:38:05.000000000 +0200
@@ -77,8 +77,9 @@
       if (*I != '.')
 	 continue;
       string Arch = DeQuoteString(string(Start,I-Start));
-      
-      if (Arch != "all" && Arch != MyArch)
+
+      if (Arch != "all" && Arch != MyArch
+	  && !_config->Member("APT::architectures", Arch))
 	 continue;
       
       // Lookup the package
diff -Nru apt-0.7.21/apt-pkg/contrib/configuration.cc apt-0.7.21a0.mrvn.1/apt-pkg/contrib/configuration.cc
--- apt-0.7.21/apt-pkg/contrib/configuration.cc	2009-04-08 22:58:28.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/contrib/configuration.cc	2009-07-06 16:45:30.000000000 +0200
@@ -223,6 +223,27 @@
    return Res;
 }
 									/*}}}*/
+// Configuration::FindList - Find a list of values		        /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+vector<string> Configuration::FindList(const string Name) const
+{
+   vector<string> Vec;
+   const Item *Top = Lookup(Name.c_str());
+   if (Top == 0 || Top->Child == 0)
+      return Vec;
+
+   Item *I;
+   I = Top->Child;
+
+   while(I != NULL)
+   {
+      Vec.push_back(I->Value);
+      I = I->Next;
+   }
+   return Vec;
+}
+									/*}}}*/
 // Configuration::FindI - Find an integer value				/*{{{*/
 // ---------------------------------------------------------------------
 /* */
@@ -370,6 +391,30 @@
      
 }
 									/*}}}*/
+// Configuration::Member - Check if Value is member of a list	        /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool Configuration::Member(const string Name, string Value)
+{
+   Item *Top = Lookup(Name.c_str(),false);
+   if (Top == 0 || Top->Child == 0)
+      return false;
+
+   Item *I;
+   I = Top->Child;
+
+   while(I != NULL)
+   {
+      if(I->Value == Value)
+      {
+	 return true;
+      } else {
+	 I = I->Next;
+      }
+   }
+   return false;
+}
+									/*}}}*/
 // Configuration::Clear - Clear an entire tree				/*{{{*/
 // ---------------------------------------------------------------------
 /* */
diff -Nru apt-0.7.21/apt-pkg/contrib/configuration.h apt-0.7.21a0.mrvn.1/apt-pkg/contrib/configuration.h
--- apt-0.7.21/apt-pkg/contrib/configuration.h	2008-06-09 23:10:08.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/contrib/configuration.h	2009-07-06 16:43:14.000000000 +0200
@@ -32,8 +32,10 @@
 
 #include <string>
 #include <iostream>
+#include <vector>
 
 using std::string;
+using std::vector;
 
 class Configuration
 {
@@ -70,6 +72,7 @@
    string Find(const string Name,const char *Default = 0) const {return Find(Name.c_str(),Default);};
    string FindFile(const char *Name,const char *Default = 0) const;
    string FindDir(const char *Name,const char *Default = 0) const;
+   vector<string> FindList(const string Name) const;
    int FindI(const char *Name,int Default = 0) const;
    int FindI(const string Name,int Default = 0) const {return FindI(Name.c_str(),Default);};
    bool FindB(const char *Name,bool Default = false) const;
@@ -92,6 +95,9 @@
    void Clear(const string List, string Value);
    void Clear(const string List, int Value);
 
+   // check if Value is member of a list
+   bool Member(const string Name, const string Value);
+
    inline const Item *Tree(const char *Name) const {return Lookup(Name);};
 
    inline void Dump() { Dump(std::clog); };
diff -Nru apt-0.7.21/apt-pkg/deb/debindexfile.cc apt-0.7.21a0.mrvn.1/apt-pkg/deb/debindexfile.cc
--- apt-0.7.21/apt-pkg/deb/debindexfile.cc	2008-06-09 23:10:08.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/deb/debindexfile.cc	2009-07-06 22:41:51.000000000 +0200
@@ -28,7 +28,7 @@
 // ---------------------------------------------------------------------
 /* */
 debSourcesIndex::debSourcesIndex(string URI,string Dist,string Section,bool Trusted) :
-     pkgIndexFile(Trusted), URI(URI), Dist(Dist), Section(Section)
+   pkgIndexFile(Trusted, "source"), URI(URI), Dist(Dist), Section(Section)
 {
 }
 									/*}}}*/
@@ -149,8 +149,8 @@
 // PackagesIndex::debPackagesIndex - Contructor				/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-debPackagesIndex::debPackagesIndex(string URI,string Dist,string Section,bool Trusted) : 
-                  pkgIndexFile(Trusted), URI(URI), Dist(Dist), Section(Section)
+debPackagesIndex::debPackagesIndex(string URI,string Dist,string Section,bool Trusted,string Architecture) : 
+    pkgIndexFile(Trusted,Architecture), URI(URI), Dist(Dist), Section(Section)
 {
 }
 									/*}}}*/
@@ -171,6 +171,8 @@
    Res += " ";
    Res += Ver.ParentPkg().Name();
    Res += " ";
+   Res += Ver.Arch();
+   Res += " ";
    Res += Ver.VerStr();
    return Res;
 }
@@ -204,6 +206,8 @@
    else
       Info += Dist + '/' + Section;   
    Info += " ";
+   Info += Arch;
+   Info += " ";
    Info += Type;
    return Info;
 }
@@ -227,7 +231,7 @@
    }
    else
       Res = URI + "dists/" + Dist + '/' + Section +
-      "/binary-" + _config->Find("APT::Architecture") + '/';
+      "/binary-" + Arch + '/';
    
    Res += Type;
    return Res;
@@ -280,13 +284,13 @@
       return _error->Error("Problem with MergeList %s",PackageFile.c_str());
 
    // Check the release file
-   string ReleaseFile = debReleaseIndex(URI,Dist).MetaIndexFile("Release");
+   string ReleaseFile = debReleaseIndex(URI,Dist,Arch).MetaIndexFile("Release");
    if (FileExists(ReleaseFile) == true)
    {
       FileFd Rel(ReleaseFile,FileFd::ReadOnly);
       if (_error->PendingError() == true)
 	 return false;
-      Parser.LoadReleaseInfo(File,Rel,Section);
+      Parser.LoadReleaseInfo(File,Rel,Section,Arch);
    }
    
    return true;
@@ -320,7 +324,7 @@
 // ---------------------------------------------------------------------
 /* */
 debTranslationsIndex::debTranslationsIndex(string URI,string Dist,string Section) : 
-                  pkgIndexFile(true), URI(URI), Dist(Dist), Section(Section)
+    pkgIndexFile(true,"translation"), URI(URI), Dist(Dist), Section(Section)
 {
 }
 									/*}}}*/
@@ -483,7 +487,7 @@
 // StatusIndex::debStatusIndex - Constructor				/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-debStatusIndex::debStatusIndex(string File) : pkgIndexFile(true), File(File)
+debStatusIndex::debStatusIndex(string File) : pkgIndexFile(true,"status"), File(File)
 {
 }
 									/*}}}*/
diff -Nru apt-0.7.21/apt-pkg/deb/debindexfile.h apt-0.7.21a0.mrvn.1/apt-pkg/deb/debindexfile.h
--- apt-0.7.21/apt-pkg/deb/debindexfile.h	2008-06-09 23:10:08.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/deb/debindexfile.h	2009-07-06 17:07:58.000000000 +0200
@@ -60,7 +60,7 @@
    virtual string ArchiveURI(string File) const {return URI + File;};
    
    // Interface for acquire
-   virtual string Describe(bool Short) const;   
+   virtual string Describe(bool Short) const;
    
    // Interface for the Cache Generator
    virtual bool Exists() const;
@@ -69,7 +69,7 @@
    virtual bool Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const;
    virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const;
 
-   debPackagesIndex(string URI,string Dist,string Section,bool Trusted);
+   debPackagesIndex(string URI,string Dist,string Section,bool Trusted,string Architecture);
 };
 
 class debTranslationsIndex : public pkgIndexFile
@@ -89,7 +89,7 @@
    virtual const Type *GetType() const;
 
    // Interface for acquire
-   virtual string Describe(bool Short) const;   
+   virtual string Describe(bool Short) const;
    virtual bool GetIndexes(pkgAcquire *Owner) const;
    
    // Interface for the Cache Generator
@@ -122,7 +122,7 @@
    virtual string ArchiveURI(string File) const {return URI + File;};
    
    // Interface for acquire
-   virtual string Describe(bool Short) const;   
+   virtual string Describe(bool Short) const;
 
    // Interface for the record parsers
    virtual pkgSrcRecords::Parser *CreateSrcParser() const;
diff -Nru apt-0.7.21/apt-pkg/deb/deblistparser.cc apt-0.7.21a0.mrvn.1/apt-pkg/deb/deblistparser.cc
--- apt-0.7.21/apt-pkg/deb/deblistparser.cc	2008-06-09 23:10:09.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/deb/deblistparser.cc	2009-07-06 22:12:15.000000000 +0200
@@ -34,7 +34,9 @@
 /* */
 debListParser::debListParser(FileFd *File) : Tags(File)
 {
+   // FIXME: get arch from options field?
    Arch = _config->Find("APT::architecture");
+   Archs = _config->FindList("APT::architectures");
 }
 									/*}}}*/
 // ListParser::UniqFindTagWrite - Find the tag and write a unq string	/*{{{*/
@@ -439,6 +441,7 @@
 
    if (ParseArchFlags == true)
    {
+      // FIXME: needs investigating
       string arch = _config->Find("APT::Architecture");
 
       // Parse an architecture
@@ -604,6 +607,12 @@
       if (stringcmp(Start,Stop,"all") == 0)
 	 return true;
 
+      for (vector<string>::const_iterator I = Archs.begin();
+	   I != Archs.end(); ++I) {
+	 if (stringcmp(*I,Start,Stop) == 0)
+	    return true;
+      }
+
       iOffset = Tags.Offset();
    }   
    return false;
@@ -613,15 +622,15 @@
 // ---------------------------------------------------------------------
 /* */
 bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator FileI,
-				    FileFd &File, string component)
+				    FileFd &File, string component,
+				    string Arch)
 {
    pkgTagFile Tags(&File, File.Size() + 256); // XXX
    pkgTagSection Section;
    if (Tags.Step(Section) == false)
       return false;
 
-   //mvo: I don't think we need to fill that in (it's unused since apt-0.6)
-   //FileI->Architecture = WriteUniqString(Arch);
+   FileI->Architecture = WriteUniqString(Arch);
    
    // apt-secure does no longer download individual (per-section) Release
    // file. to provide Component pinning we use the section name now
diff -Nru apt-0.7.21/apt-pkg/deb/deblistparser.h apt-0.7.21a0.mrvn.1/apt-pkg/deb/deblistparser.h
--- apt-0.7.21/apt-pkg/deb/deblistparser.h	2008-06-09 23:10:09.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/deb/deblistparser.h	2009-07-06 22:02:03.000000000 +0200
@@ -11,10 +11,14 @@
 #ifndef PKGLIB_DEBLISTPARSER_H
 #define PKGLIB_DEBLISTPARSER_H
 
+#include <vector>
+
 #include <apt-pkg/pkgcachegen.h>
 #include <apt-pkg/indexfile.h>
 #include <apt-pkg/tagfile.h>
 
+using std::vector;
+
 class debListParser : public pkgCacheGenerator::ListParser
 {
    public:
@@ -32,7 +36,8 @@
    pkgTagSection Section;
    unsigned long iOffset;
    string Arch;
-   
+   vector<string> Archs;
+
    unsigned long UniqFindTagWrite(const char *Tag);
    bool ParseStatus(pkgCache::PkgIterator Pkg,pkgCache::VerIterator Ver);
    bool ParseDepends(pkgCache::VerIterator Ver,const char *Tag,
@@ -60,7 +65,7 @@
    virtual bool Step();
    
    bool LoadReleaseInfo(pkgCache::PkgFileIterator FileI,FileFd &File,
-			string section);
+			string section,string Arch);
    
    static const char *ParseDepends(const char *Start,const char *Stop,
 			    string &Package,string &Ver,unsigned int &Op,
diff -Nru apt-0.7.21/apt-pkg/deb/debmetaindex.cc apt-0.7.21a0.mrvn.1/apt-pkg/deb/debmetaindex.cc
--- apt-0.7.21/apt-pkg/deb/debmetaindex.cc	2008-06-09 23:10:09.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/deb/debmetaindex.cc	2009-07-06 20:06:07.000000000 +0200
@@ -5,11 +5,10 @@
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/acquire-item.h>
 #include <apt-pkg/configuration.h>
-#include <apt-pkg/error.h>
 
 using namespace std;
 
-string debReleaseIndex::Info(const char *Type, const string Section) const
+string debReleaseIndex::Info(const char *Type, const string Section, const string Arch) const
 {
    string Info = ::URI::SiteOnly(URI) + ' ';
    if (Dist[Dist.size() - 1] == '/')
@@ -20,6 +19,8 @@
    else
       Info += Dist + '/' + Section;   
    Info += " ";
+   Info += Arch;
+   Info += " ";
    Info += Type;
    return Info;
 }
@@ -60,16 +61,16 @@
    return Res;
 }
 
-string debReleaseIndex::IndexURISuffix(const char *Type, const string Section) const
+string debReleaseIndex::IndexURISuffix(const char *Type, const string Section, const string Arch) const
 {
    string Res ="";
    if (Dist[Dist.size() - 1] != '/')
-      Res += Section + "/binary-" + _config->Find("APT::Architecture") + '/';
+      Res += Section + "/binary-" + Arch + '/';
    return Res + Type;
 }
    
 
-string debReleaseIndex::IndexURI(const char *Type, const string Section) const
+string debReleaseIndex::IndexURI(const char *Type, const string Section, const string Architecture) const
 {
    if (Dist[Dist.size() - 1] == '/')
    {
@@ -81,7 +82,7 @@
       return Res + Type;
    }
    else
-      return URI + "dists/" + Dist + '/' + IndexURISuffix(Type, Section);
+      return URI + "dists/" + Dist + '/' + IndexURISuffix(Type, Section, Architecture);
  }
 
 string debReleaseIndex::SourceIndexURISuffix(const char *Type, const string Section) const
@@ -107,7 +108,15 @@
       return URI + "dists/" + Dist + "/" + SourceIndexURISuffix(Type, Section);
 }
 
-debReleaseIndex::debReleaseIndex(string URI,string Dist)
+debReleaseIndex::debReleaseIndex(string URI,string Dist,vector<string> Archs) : metaIndex(Archs)
+{
+   this->URI = URI;
+   this->Dist = Dist;
+   this->Indexes = NULL;
+   this->Type = "deb";
+}
+
+debReleaseIndex::debReleaseIndex(string URI,string Dist,string Arch) : metaIndex(Arch)
 {
    this->URI = URI;
    this->Dist = Dist;
@@ -122,17 +131,30 @@
 	I != SectionEntries.end();
 	I++)
    {
-      IndexTarget * Target = new IndexTarget();
-      Target->ShortDesc = (*I)->IsSrc ? "Sources" : "Packages";
-      Target->MetaKey
-	= (*I)->IsSrc ? SourceIndexURISuffix(Target->ShortDesc.c_str(), (*I)->Section)
-	              : IndexURISuffix(Target->ShortDesc.c_str(), (*I)->Section);
-      Target->URI 
-	= (*I)->IsSrc ? SourceIndexURI(Target->ShortDesc.c_str(), (*I)->Section)
-	              : IndexURI(Target->ShortDesc.c_str(), (*I)->Section);
+       if ((*I)->IsSrc) {
+	  IndexTarget * Target = new IndexTarget();
+	  Target->ShortDesc = "Sources";
+	  Target->MetaKey
+	      = SourceIndexURISuffix(Target->ShortDesc.c_str(), (*I)->Section);
+	  Target->URI 
+	      = SourceIndexURI(Target->ShortDesc.c_str(), (*I)->Section);
+	  Target->Description
+	      = Info (Target->ShortDesc.c_str(), (*I)->Section, "source");
+	  IndexTargets->push_back (Target);
+       } else {
+	  for (vector<string>::const_iterator J = Archs.begin();
+	       J != Archs.end(); ++J) {
+	     IndexTarget * Target = new IndexTarget();
+	     Target->ShortDesc = "Packages";
+	     Target->MetaKey
+		 = IndexURISuffix(Target->ShortDesc.c_str(), (*I)->Section, *J);
+	     Target->URI
+		 = IndexURI(Target->ShortDesc.c_str(), (*I)->Section, *J);
       
-      Target->Description = Info (Target->ShortDesc.c_str(), (*I)->Section);
-      IndexTargets->push_back (Target);
+	     Target->Description = Info (Target->ShortDesc.c_str(), (*I)->Section, *J);
+	     IndexTargets->push_back (Target);
+	  }
+       }
    }
    return IndexTargets;
 }
@@ -201,7 +223,10 @@
          Indexes->push_back(new debSourcesIndex (URI, Dist, (*I)->Section, IsTrusted()));
       else 
       {
-         Indexes->push_back(new debPackagesIndex (URI, Dist, (*I)->Section, IsTrusted()));
+	  for (vector<string>::const_iterator J = Archs.begin();
+	      J != Archs.end(); ++J) {
+	    Indexes->push_back(new debPackagesIndex (URI, Dist, (*I)->Section, IsTrusted(),*J));
+	 }
 	 Indexes->push_back(new debTranslationsIndex(URI, Dist, (*I)->Section));
       }
    }
@@ -223,8 +248,9 @@
 {
    protected:
 
-   bool CreateItemInternal(vector<metaIndex *> &List,string URI,
-			   string Dist,string Section,
+   bool CreateItemInternal(vector<metaIndex *> &List,
+			   map<string, string> Options,
+			   string URI,string Dist,string Section,
 			   bool IsSrc) const
    {
       for (vector<metaIndex *>::const_iterator I = List.begin(); 
@@ -242,13 +268,16 @@
 	    if (Deb->GetURI() == URI && Deb->GetDist() == Dist)
 	    {
 	       Deb->PushSectionEntry(new debReleaseIndex::debSectionEntry(Section, IsSrc));
+	       // FIXME: push archs
 	       return true;
 	    }
 	 }
       }
       // No currently created Release file indexes this entry, so we create a new one.
       // XXX determine whether this release is trusted or not
-      debReleaseIndex *Deb = new debReleaseIndex(URI,Dist);
+      // FIXME: get archs from options
+      vector<string> Archs = _config->FindList("APT::architectures");
+      debReleaseIndex *Deb = new debReleaseIndex(URI,Dist,Archs);
       Deb->PushSectionEntry (new debReleaseIndex::debSectionEntry(Section, IsSrc));
       List.push_back(Deb);
       return true;
@@ -259,10 +288,10 @@
 {
    public:
 
-   bool CreateItem(vector<metaIndex *> &List,string URI,
-		   string Dist,string Section) const
+   bool CreateItem(vector<metaIndex *> &List,map<string,string> Options,
+		   string URI,string Dist,string Section) const
    {
-      return CreateItemInternal(List, URI, Dist, Section, false);
+      return CreateItemInternal(List, Options, URI, Dist, Section, false);
    }
 
    debSLTypeDeb()
@@ -276,10 +305,10 @@
 {
    public:
 
-   bool CreateItem(vector<metaIndex *> &List,string URI,
-		   string Dist,string Section) const 
+   bool CreateItem(vector<metaIndex *> &List,map<string,string> Options,
+		   string URI,string Dist,string Section) const 
    {
-      return CreateItemInternal(List, URI, Dist, Section, true);
+      return CreateItemInternal(List, Options, URI, Dist, Section, true);
    }
    
    debSLTypeDebSrc()
diff -Nru apt-0.7.21/apt-pkg/deb/debmetaindex.h apt-0.7.21a0.mrvn.1/apt-pkg/deb/debmetaindex.h
--- apt-0.7.21/apt-pkg/deb/debmetaindex.h	2008-06-09 23:10:09.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/deb/debmetaindex.h	2009-07-06 20:05:49.000000000 +0200
@@ -21,17 +21,18 @@
 
    public:
 
-   debReleaseIndex(string URI, string Dist);
+   debReleaseIndex(string URI,string Dist,vector<string> Archs);
+   debReleaseIndex(string URI,string Dist,string Arch);
 
    virtual string ArchiveURI(string File) const {return URI + File;};
    virtual bool GetIndexes(pkgAcquire *Owner, bool GetAll=false) const;
    vector <struct IndexTarget *>* ComputeIndexTargets() const;
-   string Info(const char *Type, const string Section) const;
+   string Info(const char *Type, const string Section, const string Arch) const;
    string MetaIndexInfo(const char *Type) const;
    string MetaIndexFile(const char *Types) const;
    string MetaIndexURI(const char *Type) const;
-   string IndexURI(const char *Type, const string Section) const;
-   string IndexURISuffix(const char *Type, const string Section) const;
+   string IndexURI(const char *Type, const string Section, const string Architecture) const;
+   string IndexURISuffix(const char *Type, const string Section, const string Architecture) const;
    string SourceIndexURI(const char *Type, const string Section) const;
    string SourceIndexURISuffix(const char *Type, const string Section) const;
    virtual vector <pkgIndexFile *> *GetIndexFiles();
diff -Nru apt-0.7.21/apt-pkg/indexcopy.cc apt-0.7.21a0.mrvn.1/apt-pkg/indexcopy.cc
--- apt-0.7.21/apt-pkg/indexcopy.cc	2009-04-14 14:20:29.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/indexcopy.cc	2009-07-06 22:53:42.000000000 +0200
@@ -378,6 +378,7 @@
 void IndexCopy::ConvertToSourceList(string CD,string &Path)
 {
    char S[300];
+   // FIXME: allow for APT::Architectures
    snprintf(S,sizeof(S),"binary-%s",_config->Find("Apt::Architecture").c_str());
    
    // Strip the cdrom base path
diff -Nru apt-0.7.21/apt-pkg/indexfile.h apt-0.7.21a0.mrvn.1/apt-pkg/indexfile.h
--- apt-0.7.21/apt-pkg/indexfile.h	2008-06-09 23:10:08.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/indexfile.h	2009-07-06 17:40:08.000000000 +0200
@@ -37,7 +37,8 @@
 {
    protected:
    bool Trusted;
-     
+   string Arch;
+
    public:
 
    class Type
@@ -83,8 +84,9 @@
    static string LanguageCode();
 
    bool IsTrusted() const { return Trusted; };
-   
-   pkgIndexFile(bool Trusted): Trusted(Trusted) {};
+   string GetArch() const { return Arch; };
+
+   pkgIndexFile(bool Trusted,string Arch): Trusted(Trusted), Arch(Arch) {};
    virtual ~pkgIndexFile() {};
 };
 
diff -Nru apt-0.7.21/apt-pkg/init.cc apt-0.7.21a0.mrvn.1/apt-pkg/init.cc
--- apt-0.7.21/apt-pkg/init.cc	2008-06-09 23:10:08.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/init.cc	2009-07-06 18:30:19.000000000 +0200
@@ -95,7 +95,12 @@
    
    if (Res == false)
       return false;
-   
+
+   // If APT::Architectures is unset initialize with APT::Architecture
+   if (Cnf.Tree("APT::Architectures::") == NULL) {
+      Cnf.Set("APT::Architectures::", Cnf.Find("APT::Architecture"));
+   }
+
    if (Cnf.FindB("Debug::pkgInitConfig",false) == true)
       Cnf.Dump();
    
diff -Nru apt-0.7.21/apt-pkg/metaindex.h apt-0.7.21a0.mrvn.1/apt-pkg/metaindex.h
--- apt-0.7.21/apt-pkg/metaindex.h	2008-06-09 23:10:08.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/metaindex.h	2009-07-06 22:54:29.000000000 +0200
@@ -3,6 +3,7 @@
 
 
 #include <string>
+#include <vector>
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/srcrecords.h>
 #include <apt-pkg/pkgrecords.h>
@@ -10,6 +11,7 @@
 #include <apt-pkg/vendor.h>
     
 using std::string;
+using std::vector;
 
 class pkgAcquire;
 class pkgCacheGenerator;
@@ -23,6 +25,7 @@
    string URI;
    string Dist;
    bool Trusted;
+   vector<string> Archs;
 
    public:
 
@@ -39,6 +42,8 @@
    virtual vector<pkgIndexFile *> *GetIndexFiles() = 0; 
    virtual bool IsTrusted() const = 0;
 
+   metaIndex(vector<string> Archs) : Archs(Archs) { };
+   metaIndex(string Arch) { Archs.push_back(Arch); };
    virtual ~metaIndex() {};
 };
 
diff -Nru apt-0.7.21/apt-pkg/pkgcache.cc apt-0.7.21a0.mrvn.1/apt-pkg/pkgcache.cc
--- apt-0.7.21/apt-pkg/pkgcache.cc	2009-04-09 04:31:56.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/pkgcache.cc	2009-07-06 22:03:25.000000000 +0200
@@ -147,7 +147,8 @@
        (VS = pkgVersioningSystem::GetVS(StrP + HeaderP->VerSysName)) == 0)
       return _error->Error(_("This APT does not support the versioning system '%s'"),StrP + HeaderP->VerSysName);
 
-   // Chcek the arhcitecture
+   // Check the architecture
+   // FIXME: Should this check architectures?
    if (HeaderP->Architecture == 0 ||
        _config->Find("APT::Architecture") != StrP + HeaderP->Architecture)
       return _error->Error(_("The package cache was built for a different architecture"));
@@ -611,6 +612,8 @@
       Res = Res + (Res.empty() == true?"l=":",l=")  + Label();
    if (Component() != 0)
       Res = Res + (Res.empty() == true?"c=":",c=")  + Component();
+   if (Architecture() != 0)
+      Res = Res + (Res.empty() == true?"b=":",b=")  + Architecture();
    return Res;
 }
 									/*}}}*/
diff -Nru apt-0.7.21/apt-pkg/policy.cc apt-0.7.21a0.mrvn.1/apt-pkg/policy.cc
--- apt-0.7.21/apt-pkg/policy.cc	2008-06-09 23:10:08.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/policy.cc	2009-07-06 22:10:05.000000000 +0200
@@ -71,7 +71,10 @@
 	 PFPriority[I->ID] = 100;
       else
 	 if ((I->Flags & pkgCache::Flag::NotAutomatic) == pkgCache::Flag::NotAutomatic)
-	    PFPriority[I->ID] = 1;
+	    PFPriority[I->ID] = 2;
+      // FIXME: reduce priority if not native arch
+      if (I.Architecture() == 0 || (I.Architecture() != string("all") && I.Architecture() != string("amd64")))
+         --PFPriority[I->ID];
    }
 
    // Apply the defaults..
diff -Nru apt-0.7.21/apt-pkg/sourcelist.cc apt-0.7.21a0.mrvn.1/apt-pkg/sourcelist.cc
--- apt-0.7.21/apt-pkg/sourcelist.cc	2008-06-09 23:10:08.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/sourcelist.cc	2009-07-06 16:37:14.000000000 +0200
@@ -79,6 +79,7 @@
    Weird types may override this. */
 bool pkgSourceList::Type::ParseLine(vector<metaIndex *> &List,
 				    const char *Buffer,
+				    map<string, string> Options,
 				    unsigned long CurLine,
 				    string File) const
 {
@@ -100,7 +101,7 @@
       if (ParseQuoteWord(Buffer,Section) == true)
 	 return _error->Error(_("Malformed line %lu in source list %s (absolute dist)"),CurLine,File.c_str());
       Dist = SubstVar(Dist,"$(ARCH)",_config->Find("APT::Architecture"));
-      return CreateItem(List,URI,Dist,Section);
+      return CreateItem(List,Options,URI,Dist,Section);
    }
    
    // Grab the rest of the dists
@@ -109,7 +110,7 @@
    
    do
    {
-      if (CreateItem(List,URI,Dist,Section) == false)
+      if (CreateItem(List,Options,URI,Dist,Section) == false)
 	 return false;
    }
    while (ParseQuoteWord(Buffer,Section) == true);
@@ -239,7 +240,8 @@
       if (Parse == 0)
 	 return _error->Error(_("Type '%s' is not known on line %u in source list %s"),LineType.c_str(),CurLine,File.c_str());
       
-      // Vendor name specified
+      // FIXME: Parse options
+      map<string,string> Options;
       if (C[0] == '[')
       {
 	 string VendorID;
@@ -268,7 +270,7 @@
 // 				 VendorID.c_str(),CurLine,File.c_str());
       }
 
-      if (Parse->ParseLine(SrcList,C,CurLine,File) == false)
+      if (Parse->ParseLine(SrcList,C,Options,CurLine,File) == false)
 	 return false;
    }
    return true;
diff -Nru apt-0.7.21/apt-pkg/sourcelist.h apt-0.7.21a0.mrvn.1/apt-pkg/sourcelist.h
--- apt-0.7.21/apt-pkg/sourcelist.h	2008-06-09 23:10:08.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/sourcelist.h	2009-07-06 16:34:11.000000000 +0200
@@ -29,12 +29,13 @@
 
 #include <string>
 #include <vector>
+#include <map>
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/metaindex.h>
 
 using std::string;
 using std::vector;
-    
+using std::map;
 
 class pkgAquire;
 class pkgSourceList
@@ -57,8 +58,10 @@
       bool FixupURI(string &URI) const;
       virtual bool ParseLine(vector<metaIndex *> &List,
 			     const char *Buffer,
+			     map<string, string> Options,
 			     unsigned long CurLine,string File) const;
-      virtual bool CreateItem(vector<metaIndex *> &List,string URI,
+      virtual bool CreateItem(vector<metaIndex *> &List,
+			      map<string, string> Options, string URI,
 			      string Dist,string Section) const = 0;
       Type();
       virtual ~Type() {};
diff -Nru apt-0.7.21/apt-pkg/versionmatch.cc apt-0.7.21a0.mrvn.1/apt-pkg/versionmatch.cc
--- apt-0.7.21/apt-pkg/versionmatch.cc	2008-11-24 10:32:23.000000000 +0100
+++ apt-0.7.21a0.mrvn.1/apt-pkg/versionmatch.cc	2009-07-06 21:41:34.000000000 +0200
@@ -98,6 +98,8 @@
 	    RelLabel = Fragments[J]+2;
 	 else if (stringcasecmp(Fragments[J],Fragments[J]+2,"c=") == 0)
 	    RelComponent = Fragments[J]+2;
+	 else if (stringcasecmp(Fragments[J],Fragments[J]+2,"b=") == 0)
+	    RelArch = Fragments[J]+2;
       }
       
       if (RelVerStr.end()[-1] == '*')
@@ -175,7 +177,7 @@
       
       if (RelVerStr.empty() == true && RelOrigin.empty() == true &&
 	  RelArchive.empty() == true && RelLabel.empty() == true &&
-	  RelComponent.empty() == true)
+	  RelComponent.empty() == true && RelArch.empty() == true)
 	 return false;
       
       if (RelVerStr.empty() == false)
@@ -200,6 +202,9 @@
 	 if (File->Component == 0 ||
 	     stringcasecmp(RelComponent,File.Component()) != 0)
 	    return false;
+      // FIXME:
+      // if (RelArch.empty() == false)
+      // compare arch
       return true;
    }
    
diff -Nru apt-0.7.21/apt-pkg/versionmatch.h apt-0.7.21a0.mrvn.1/apt-pkg/versionmatch.h
--- apt-0.7.21/apt-pkg/versionmatch.h	2008-06-09 23:10:08.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/apt-pkg/versionmatch.h	2009-07-06 21:39:32.000000000 +0200
@@ -20,6 +20,7 @@
       Archive (a=)
       Label (l=)
       Component (c=)
+      Build architecture (b=)
    If there are no equals signs in the string then it is scanned in short
    form - if it starts with a number it is Version otherwise it is an 
    Archive.
@@ -50,6 +51,7 @@
    string RelArchive;
    string RelLabel;
    string RelComponent;
+   string RelArch;
    bool MatchAll;
    
    // Origin Matching
diff -Nru apt-0.7.21/cmdline/apt-get.cc apt-0.7.21a0.mrvn.1/cmdline/apt-get.cc
--- apt-0.7.21/cmdline/apt-get.cc	2009-04-14 14:20:29.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/cmdline/apt-get.cc	2009-07-06 22:57:22.000000000 +0200
@@ -1360,7 +1360,7 @@
    
    // Create the progress
    AcqTextStatus Stat(ScreenWidth,_config->FindI("quiet",0));
-      
+   
    // Just print out the uris an exit if the --print-uris flag was used
    if (_config->FindB("APT::Get::Print-URIs") == true)
    {
diff -Nru apt-0.7.21/configure apt-0.7.21a0.mrvn.1/configure
--- apt-0.7.21/configure	2009-04-14 14:21:45.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/configure	2009-07-06 18:11:14.000000000 +0200
@@ -1901,7 +1901,7 @@
 
 
 cat >>confdefs.h <<_ACEOF
-#define VERSION "0.7.21"
+#define VERSION "0.7.21a0.mrvn.1"
 _ACEOF
 
 PACKAGE="apt"
diff -Nru apt-0.7.21/configure.in apt-0.7.21a0.mrvn.1/configure.in
--- apt-0.7.21/configure.in	2009-04-14 14:21:18.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/configure.in	2009-07-06 18:11:13.000000000 +0200
@@ -18,7 +18,7 @@
 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
 
 dnl -- SET THIS TO THE RELEASE VERSION --
-AC_DEFINE_UNQUOTED(VERSION,"0.7.21")
+AC_DEFINE_UNQUOTED(VERSION,"0.7.21a0.mrvn.1")
 PACKAGE="apt"
 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
 AC_SUBST(PACKAGE)
diff -Nru apt-0.7.21/debian/changelog apt-0.7.21a0.mrvn.1/debian/changelog
--- apt-0.7.21/debian/changelog	2009-04-14 14:20:29.000000000 +0200
+++ apt-0.7.21a0.mrvn.1/debian/changelog	2009-07-06 15:44:09.000000000 +0200
@@ -1,3 +1,10 @@
+apt (0.7.21a0.mrvn.1) unstable; urgency=low
+
+  [ Goswin von Brederlow ]
+  * Add architectures config option
+
+ -- Goswin von Brederlow <goswin-v-b@web.de>  Mon, 06 Jul 2009 15:39:48 +0200
+
 apt (0.7.21) unstable; urgency=low
 
   [ Christian Perrier ]

--- End Message ---
--- Begin Message ---
Source: apt
Source-Version: 0.8.0

We believe that the bug you reported is fixed in the latest version of
apt, which is due to be installed in the Debian FTP archive:

apt-doc_0.8.0_all.deb
  to main/a/apt/apt-doc_0.8.0_all.deb
apt-transport-https_0.8.0_i386.deb
  to main/a/apt/apt-transport-https_0.8.0_i386.deb
apt-utils_0.8.0_i386.deb
  to main/a/apt/apt-utils_0.8.0_i386.deb
apt_0.8.0.dsc
  to main/a/apt/apt_0.8.0.dsc
apt_0.8.0.tar.gz
  to main/a/apt/apt_0.8.0.tar.gz
apt_0.8.0_i386.deb
  to main/a/apt/apt_0.8.0_i386.deb
libapt-pkg-dev_0.8.0_i386.deb
  to main/a/apt/libapt-pkg-dev_0.8.0_i386.deb
libapt-pkg-doc_0.8.0_all.deb
  to main/a/apt/libapt-pkg-doc_0.8.0_all.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 536029@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Michael Vogt <mvo@debian.org> (supplier of updated apt package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.8
Date: Tue, 24 Aug 2010 16:32:19 +0200
Source: apt
Binary: apt apt-doc libapt-pkg-dev libapt-pkg-doc apt-utils apt-transport-https
Architecture: source all i386
Version: 0.8.0
Distribution: unstable
Urgency: low
Maintainer: APT Development Team <deity@lists.debian.org>
Changed-By: Michael Vogt <mvo@debian.org>
Description: 
 apt        - Advanced front-end for dpkg
 apt-doc    - Documentation for APT
 apt-transport-https - APT https transport
 apt-utils  - APT utility programs
 libapt-pkg-dev - Development files for APT's libapt-pkg and libapt-inst
 libapt-pkg-doc - Documentation for APT development
Closes: 115520 150831 188407 195018 196021 236270 314334 316390 319006 319710 329814 351056 352667 383257 444222 448216 463260 486222 490347 499897 500560 512046 512318 523920 525783 531492 536029 538917 545699 547724 550564 558103 564137 566166 567669 568294 569488 570962 571037 571541 572259 572364 572615 573293 573592 573946 574558 574944 574962 576420 576752 577116 577117 577168 577226 577759 577804 578135 578267 578385 578657 578959 581159 581742 583517 586904 587725 588610 589642 590041 590438 590513 592366 592628 593430
Changes: 
 apt (0.8.0) unstable; urgency=low
 .
   [ Michael Vogt ]
   * merge of the debian-expermental-ma branch
   * refresh po/pot files in doc/ and po/
 .
   [ Programs translations ]
   * Swedish (Daniel Nylander). Closes: #592366
   * French (Christian Perrier)
 .
   [ Manpages translations ]
   * French (Christian Perrier)
 .
 apt (0.8.0~pre2) experimental; urgency=low
 .
   [ David Kalnischkies ]
   * apt-pkg/contrib/strutl.cc:
     - fix error checking for vsnprintf in its safe variant
   * methods/bzip2.cc:
     - fix error checking for read in case of failing bzip2/lzma/whatever
   * debian/apt.cron.daily:
     - create backups for our extended_states file (Closes: #593430)
   * apt-pkg/init.cc:
     - set the default values for dir::etc::trusted options correctly
   * ftparchive/writer.cc:
     - init valid-until correctly to prevent garbage entering Release file
   * apt-pkg/deb/debsystem.cc:
     - set dir::state::status based at least on dir
   * apt-pkg/deb/dpkgpm.cc:
     - use the InstVer instead of the CurrentVer for the autobit transfer
   * methods/http.cc:
     - some http servers violate HTTP1.1 by not issuing a Reason-Phrase
       (or at least a space after the code) especially for 200, but lets
       be nice and ignore it as we don't need the reason in general
   * apt-pkg/acquire-item.cc:
     - don't use ReadOnlyGzip mode for PDiffs as this mode doesn't work
       in combination with the AddFd methods of our hashclasses
 .
 apt (0.8.0~pre1) experimental; urgency=low
 .
   [ Programs translations ]
   * Swedish translation update. Closes: #592366
 .
   [ Michael Vogt ]
   * merge of the debian-expermental-ma branch
   * refresh po/pot files in doc/ and po/
   * apt-pkg/pkgcache.cc:
     - re-evaluate the architectures cache when the cache is (re)opened
 .
   [ Colin Watson ]
   * apt-pkg/cdrom.cc:
     - fix off-by-one error in DropBinaryArch
 .
   [ Julian Andres Klode ]
   * apt-pkg/contrib/fileutl.cc:
     - Add WriteAtomic mode.
     - Revert WriteEmpty to old behavior (LP: #613211)
   * apt-pkg, methods:
     - Convert users of WriteEmpty to WriteAtomic.
   * apt-pkg/depcache.cc:
     - Only try upgrade for Breaks if there is a newer version, otherwise
       handle it as Conflicts (by removing it) (helps for #591882).
   * debian/control:
     - Add dependency on gnupg to apt, apt-key uses it.
 .
   [ David Kalnischkies ]
   * apt-pkg/algorithms.cc:
     - let the problem resolver install packages to fix or-groups
       as a needed remove nuked another or-member (helps for #591882)
     - change the debug outputs to display also arch of the
       package and version dependencies information
   * cmdline/apt-get.cc:
     - let APT::Get::Arch-Only in build-dep default to false again
       (Closes: #592628) Thanks Mohamed Amine IL Idrissi for report!
     - purge packages in 'rc' state, thanks Rogier! (Closes: #150831)
   * apt-pkg/pkgcache.cc:
     - fix LongDesc handling in LANG=C environment
 .
 apt (0.7.26~exp12) experimental; urgency=low
 .
   [ Michael Vogt ]
   * debian/control:
     - add dependency on zlib-dev for libapt-pkg-dev
 .
   [ David Kalnischkies ]
   * apt-pkg/cacheset.cc:
     - [ABI BREAK] add an ErrorType option to CacheSetHelper
   * cmdline/apt-cache.cc:
     - use Notice instead of Error in the CacheSetHelper messages
       for compat reasons. Otherwise tools like sbuild blow up
     - return success in show if a virtual package was given
   * debian/control:
     - remove libcurl3-gnutls-dev alternative as the package is gone
     - increase needed version of libcurl4-gnutls-dev to >= 7.19.0
       as we use CURLOPT_{ISSUERCERT,CRLFILE} (Closes: #589642)
 .
 apt (0.7.26~exp11) experimental; urgency=low
 .
   [ Julian Andres Klode ]
   * apt-pkg/deb/dpkgpm.cc:
     - Write architecture information to history file.
     - Add to history whether a change was automatic or not.
   * apt-pkg/contrib/fileutl.cc:
     - Add FileFd::OpenDescriptor() (needed for python-apt's #383617).
   * cmdline/apt-get.cc:
     - Support large filesystems by using statvfs64() instead of statvfs()
       and statfs64() instead of statfs() (Closes: #590513).
   * apt-pkg/cdrom.cc:
     - Use link() instead of rename() for creating the CD database backup;
       otherwise there would be a short time without any database.
 .
   [ David Kalnischkies ]
   * apt-pkg/depcache.cc:
     - handle "circular" conflicts for "all" packages correctly
   * cmdline/apt-cache.cc:
     - be able to omit dependency types in (r)depends (Closes: #319006)
     - show in (r)depends the canidate per default instead of newest
     - share the (r)depends code instead of codecopy
   * apt-pkg/cacheset.cc:
     - move them back to the library as they look stable now
     - add a 'newest' pseudo target release as in pkg/newest
   * apt-pkg/pkgcache.cc:
     - prefer non-virtual packages in FindPreferredPkg (Closes: #590041)
   * test/integration/*:
     - add with bug#590041 testcase a small test "framework"
   * apt-pkg/orderlist.cc:
     - try to install another or-group member in DepRemove before
       breaking the or group (Closes: #590438)
     - configure also the replacement before remove by adding Immediate flag
 .
   [ Michael Vogt ]
   * apt-pkg/contrib/error.{cc,h}
     - docstring cleanup
     - add inline DumpError() to avoid subtle API break
 .
 apt (0.7.26~exp10) experimental; urgency=low
 .
   [ David Kalnischkies ]
   * apt-pkg/contrib/error.{cc,h}:
     - remove constness of va_list parameter to fix build on amd64 and co
       Thanks Eric Valette! (Closes: #588610)
   * apt-pkg/deb/debmetaindex.cc:
     - do not query each architecture for flat file archives
     - fix typo preventing display of architecture in Info()
   * methods/bzip2.cc:
     - add a copycat of the old gzip.cc as we need it for bzip2 and lzma
 .
   [ Martin Pitt ]
   * debian/rules:
     - Make DEB_BUILD_OPTIONS=noopt actually work by passing the right
       CXXFLAGS.
   * apt-pkg/contrib/fileutl.{h,cc}:
     - Add support for reading of gzipped files with the new "ReadOnlyGzip"
       OpenMode. (Closes: #188407)
     - Link against zlib (in apt-pkg/makefile) and add zlib build dependency.
     - [ABI BREAK] This adds a new private member to FileFd, but its
       initialization is in the public header file.
   * configure.in:
     - Check for zlib library and headers.
   * apt-pkg/acquire-item.cc, apt-pkg/deb/debindexfile.cc,
     apt-pkg/deb/debrecords.cc, apt-pkg/deb/debsrcrecords.h,
     cmdline/apt-cache.cc:
     - Open Packages, Sources, and Translations indexes in "ReadOnlyGzip" mode.
   * apt-pkg/deb/debindexfile.cc:
     - If we do not find uncompressed package/source/translation indexes, look
       for gzip compressed ones.
   * apt-pkg/acquire-item.cc:
     - If the Acquire::GzipIndexes option is true and we download a gzipped
       index file, keep it as it is (and rename to .gz) instead of
       uncompressing it.
   * doc/apt.conf.5.xml:
     - Document the new Acquire::GzipIndexes option.
   * doc/po/apt-doc.pot, doc/po/de.po:
     - German translation of new Acquire::GzipIndexes option.
   * Add test/test-indexes.sh:
     - Test behaviour of index retrieval and usage, in particular with
       uncompressed and gzip compressed indexes.
   * methods/gzip.cc: With FileFd now being able to read gzipped files, there
     is no need for the gzip method any more to spawn an external gzip process.
     Rewrite it to use FileFd directly, which makes the code a lot simpler, and
     also using less memory and overhead.
 .
 apt (0.7.26~exp9) experimental; urgency=low
 .
   [ David Kalnischkies ]
   * doc/apt.conf.5.xml:
     - add and document APT::Cache-{Start,Grow,Limit} options for mmap control
   * apt-pkg/contrib/fileutl.cc:
     - do not fail von double close()
 .
 apt (0.7.26~exp8) experimental; urgency=low
 .
   [ David Kalnischkies ]
   * cmdline/cacheset.cc:
     - doesn't include it in the library for now as it is too volatile
     - get the candidate either from an already built depcache
       or use the policy which is a bit faster than depcache generation
     - get packages by task^ with FromTask()
     - only print errors if all tries to get a package by string failed
     - factor out code to get a single package FromName()
     - check in Grouped* first without modifier interpretation
   * cmdline/apt-get.cc:
     - use the cachsets in the install commands
     - make the specify order of packages irrelevant (Closes: #196021)
   * apt-pkg/orderlist.cc:
     - untouched packages are never missing
   * apt-pkg/packagemanager.cc:
     - packages that are not touched doesn't need to be unpacked
   * debian/control:
     - remove intltool's dependency as it is an ubuntu artefact
   * apt-pkg/depcache.cc:
     - SetCandidateVer for all pseudo packages
     - SetReInstall for the "all" package of a pseudo package
     - use the new MatchAgainstConfig for the DefaultRootSetFunc
     - always mark the all package if a pseudo package is marked for install
   * apt-pkg/contrib/error.{cc,h}:
     - complete rewrite but use the same API
     - add NOTICE and DEBUG as new types of a message
     - add a simple stack handling to be able to delay error handling
   * apt-pkg/aptconfiguration.cc:
     - show a deprecation notice for APT::Acquire::Translation
   * apt-pkg/contrib/configuration.{cc,h}:
     - add a wrapper to match strings against configurable regex patterns
   * apt-pkg/contrib/fileutl.cc:
     - show notice about ignored file instead of being always silent
     - add a Dir::Ignore-Files-Silently list option to control the notice
   * apt-pkg/policy.h:
     - add another round of const& madness as the previous round accidentally
       NOT overrides the virtual GetCandidateVer() method (Closes: #587725)
   * apt-pkg/pkgcachegen.{cc,h}:
     - make the used MMap moveable (and therefore dynamic resizeable) by
       applying (some) mad pointer magic (Closes: #195018)
 .
   [ Michael Vogt ]
   * apt-pkg/deb/dpkgpm.cc:
     - make the apt/term.log output unbuffered (thanks to Matt Zimmerman)
 .
   [ Julian Andres Klode ]
   * methods/ftp.h:
     - Handle different logins on the same server (Closes: #586904).
   * apt-pkg/deb/deblistparser.cc:
     - Handle architecture wildcards (Closes: #547724).
   * apt-pkg/versionmatch.cc:
     - Support matching pins by regular expressions or glob() like patterns,
       regular expressions have to be put between to slashes; for example,
       /.*/.
   * apt-pkg/contrib/fileutl.cc:
     - Make FileFd replace files atomically in WriteTemp mode (for cache, etc).
   * debian/control:
     - Set Standards-Version to 3.9.0
 .
 apt (0.7.26~exp7) experimental; urgency=low
 .
   * apt-pkg/cachefile.h:
     - make pkgPolicy public again, libapt-pkg-perl (and probably
       others) get unhappy without that
 .
 apt (0.7.26~exp6) experimental; urgency=low
 .
   [ Michael Vogt ]
   * merge the remaining Ubuntu change:
     - on gpg verification failure warn and restore the last known
       good state
     - on failure display the IP of the server (useful for servers
       that use round robin DNS)
     - support Original-Maintainer in RewritePackageOrder
     - enable cdrom autodetection via libudev by default
     - show message about Vcs in use when apt-get source is run for
       packages maintained in a Vcs
     - better support transitional packages with mark auto-installed.
       when the transitional package is in "oldlibs" the new package
       is not marked auto installed (same is true for section
       metapackages)
     - provide new "deb mirror://archive.foo/mirrors.list sid main"
       method expects a list of mirrors (generated on the server e.g.
       via geoip) and will use that, including cycle on failure
     - write apport crash file on package failure (disabled by default
       on debian until apport is available)
     - support mirror failure reporting (disabled by default on debian)
 .
   [ David Kalnischkies ]
   * apt-pkg/deb/dpkgpm.cc:
     - write Disappeared also to the history.log
     - forward manual-installed bit on package disappearance
   * apt-pkg/deb/debsystem.cc:
     - add better config item for extended_states file
   * apt-pkg/pkgcache.h:
     - switch {,Install-}Size to unsigned long long
   * apt-pkg/depcache.cc:
     - do the autoremove mark process also for required packages to handle
       these illegally depending on lower priority packages (Closes: #583517)
     - try harder to find the other pseudo versions for autoremove multiarch
     - correct "Dangerous iterator usage" pointed out by cppcheck
     - deal with long long, not with int to remove 2GB Limit (LP: #250909)
     - deprecate AddSize with Multiplier as it is unused and switch to
       boolean instead to handle the sizes more gracefully.
     - switch i{Download,Usr}Size from double to (un)signed long long
   * apt-pkg/aptconfiguration.cc:
     - remove duplicate architectures in getArchitectures()
   * apt-pkg/indexrecords.{cc,h}:
     - backport forgotten Valid-Until patch from the obsolete experimental
       branch to prevent replay attacks better, thanks to Thomas Viehmann
       for the initial patch! (Closes: #499897)
     - add a constant Exists check for MetaKeys
   * apt-pkg/acquire-item.cc:
     - do not try PDiff if it is not listed in the Meta file
     - sent Last-Modified header also for Translation files
   * apt-pkg/cacheiterator.h:
     - let pkgCache::Iterator inherent std::iterator
   * ftparchive/writer.h:
     - add a virtual destructor to FTWScanner class (for cppcheck)
   * apt-pkg/cacheset.{cc,h}:
     - add simple wrapper around std::set for cache structures
     - move regex magic from apt-get to new FromRegEx method
     - move cmdline parsing from apt-cache to new FromCommandLine method
     - support special release-modifier 'installed' and 'candidate'
   * apt-pkg/contrib/cmdline.cc:
     - fix segfault in SaveInConfig caused by writing over char[] sizes
   * apt-pkg/pkgcache.cc:
     - get the best matching arch package from a group with FindPreferredPkg
   * cmdline/apt-cache.cc:
     - make the search multiarch compatible by using GrpIterator instead
     - use pkgCacheFile and the new CacheSets all over the place
     - add --target-release option (Closes: #115520)
     - accept pkg/release and pkg=version in show and co. (Closes: #236270)
     - accept package versions in the unmet command
   * cmdline/apt-get.cc:
     - use unsigned long long instead of double to store values it gets
   * apt-pkg/cachefile.{cc,h}:
     - split Open() into submethods to be able to build only parts
     - make the OpProgress optional in the Cache buildprocess
     - store also the SourceList we use internally for export
   * doc/apt.conf.5.xml:
     - document the new Valid-Until related options
   * apt-pkg/contrib/strutl.cc:
     - split StrToTime() into HTTP1.1 and FTP date parser methods and
       use strptime() instead of some self-made scanf mangling
     - use the portable timegm shown in his manpage instead of a strange
       looking code copycat from wget
   * ftparchive/writer.cc:
     - add ValidTime option to generate a Valid-Until header in Release file
   * apt-pkg/policy.cc:
     - get the candidate right for a not-installed pseudo package if
       his non-pseudo friend is installed
   * apt-pkg/indexcopy.cc:
     - move the gpg codecopy to a new method and use it also in methods/gpgv.cc
 .
 apt (0.7.26~exp5) experimental; urgency=low
 .
   [ David Kalnischkies ]
   * cmdline/apt-get.cc:
     - rerun dpkg-source in source if --fix-broken is given (Closes: #576752)
     - don't suggest held packages as they are installed (Closes: #578135)
     - handle multiple --{tar,diff,dsc}-only options correctly
     - show at the end of the install process a list of disappeared packages
   * cmdline/apt-cache.cc:
     - use GroupCount for package names in stats and add a package struct line
   * methods/rred.cc:
     - use the patchfile modification time instead of the one from the
       "old" file - thanks to Philipp Weis for noticing! (Closes: #571541)
   * debian/rules:
     - remove targets referring to CVS or arch as they are useless
     - use $(CURDIR) instead of $(pwd)
     - use dpkg-buildflags if available for CXXFLAGS
   * README.arch:
     - remove the file completely as it has no use nowadays
   * apt-pkg/depcache.cc:
     - be doublesure that the killer query is empty before starting reinstall
   * methods/gpgv.cc:
     - remove the keyrings count limit by using vector magic
   * contrib/mmap.cc:
     - clarify "MMap reached size limit" error message, thanks Ivan Masár!
   * doc/apt.ent
     - add entities for the current oldstable/stable/testing codenames
   * doc/sources.list.5.xml:
     - use stable-codename instead of stable in the examples (Closes: #531492)
   * doc/apt_preferences.5.xml:
     - adapt some examples here to use current codenames as well
     - add "NotAutomatic: yes" handling, thanks Osamu Aoki (Closes: #490347)
   * debian/libapt-pkg-doc.doc-base.cache:
     - remove yet another reference to the removed cache.sgml
   * doc/apt-get.8.xml:
     - do not say explicit target_release_{name,version,codename}, it should
       be clear by itself and 'man' can break lines again (Closes: #566166)
     - remove the gnome-apt reference as it is removed from unstable
   * apt-pkg/deb/dpkgpm.cc:
     - add 'disappear' to the known processing states, thanks Jonathan Nieder
   * apt-pkg/packagemanager.h:
     - export info about disappeared packages with GetDisappearedPackages()
 .
   [ Michael Vogt ]
   * methods/http.{cc,h}:
     - code cleanup, use enums instead of magic ints
 .
   [ Jari Aalto ]
   * debian/rules:
     - spell out some less known options to reduce manpage consultation-rate
     - Use POSIX command substitution: $(<command sequence>)
     - Remove EOL whitespace (Closes: #577804)
 .
   [ Julian Andres Klode ]
   * apt-pkg/acquire-item.cc:
     - Fix pkgAcqFile::Custom600Headers() to always return something.
 .
 .
   [ Christian Perrier ]
   * Slovak translation update. Closes: #581159
   * Italian translation update. Closes: #581742
   * Swedish translation update. Closes: #592366
 .
 apt (0.7.26~exp4) experimental; urgency=low
 .
   [ David Kalnischkies ]
   * apt-pkg/depcache.cc:
     - rewrite the pseudo package reinstaller to be more intelligent
       in his package choices
   * apt-pkg/packagemanager.cc:
     - don't try to "unpack" pseudo packages twice
   * apt-pkg/contrib/fileutl.cc:
     - add a parent-guarded "mkdir -p" as CreateDirectory()
   * apt-pkg/acquire.{cc,h}:
     - add a delayed constructor with Setup() for success reporting
     - check for and create directories in Setup if needed instead of
       error out unfriendly in the Constructor (Closes: #523920, #525783)
     - optional handle a lock file in Setup()
   * apt-pkg/acquire-item.cc:
     - Acquire::ForceHash to force method for expected hash
   * cmdline/apt-get.cc:
     - remove the lock file handling and let Acquire take care of it instead
     - display MD5Sum in --print-uris if not forced to use another method
       instead of displaying the strongest available (Closes: #576420)
     - regex for package names executed on Grp- not PkgIterator
     - show non-candidates as fallback for virtual packages (Closes: #578385)
     - set also "all" to this version for pseudo packages in TryToChangeVer
   * apt-pkg/deb/dpkgpm.cc:
     - remove Chroot-Directory from files passed to install commands.
       Thanks to Kel Modderman for report & patch! (Closes: #577226)
   * ftparchive/writer.cc:
     - remove 999 chars Files and Checksums rewrite limit (Closes: #577759)
   * cmdline/apt-cache.cc:
     - align Installed and Candidate Version in policy so they can be compared
       easier, thanks Ralf Gesellensetter for the pointer! (Closes: #578657)
   * doc/apt.ent:
     - Add a note about APT_CONFIG in the -c description (Closes: #578267)
   * doc/po/de.po:
     - correct typos in german apt_preferences manpage, thanks Chris Leick!
   * apt-pkg/sourcelist.cc:
     - be less strict and accept [option=value] as well
   * apt-pkg/contrib/configuration.cc:
     - error out if #clear directive has no argument
   * doc/files.sgml:
     - sync documentation with status quo, regarding files/directories in
       use, extended_states and uri schemes.
   * doc/cache.sgml:
     - drop the file in favor of inplace documentation with doxygen
   * apt-pkg/pkgcache.h:
     - enhance the Groups ABI by providing a ID as the other structs does
     - check also the size of the Group struct then checking for the others
 .
   [ Jari Aalto ]
   * cmdline/apt-get.cc:
     - replace backticks with single quotes around fix-broken command
       in the broken packages message. (Closes: #577168)
   * dselect/install:
     - modernize if-statements not to use 'x' (Closes: #577117)
     - replace backticks with POSIX $() (Closes: #577116)
 .
   [ Michael Vogt ]
   * [ Abi break ] apt-pkg/acquire-item.{cc,h}:
     - add "IsIndexFile" to constructor of pkgAcqFile so that it sends
       the right cache control headers
   * cmdline/apt-get.cc:
     - fix crash when pkg.VersionList() is empty
   * apt-pkg/depcache.cc:
     - fix incorrect std::cout usage for debug output
   * test/libapt/getlanguages_test.cc:
     - Add test for Esperanto that has nocounty associated with them
       (LP: #560956)
   * apt-pkg/deb/debrecords.cc:
     - fix max tag buffer size (LP: #545336, closes: #578959)
   * debian/rules:
     - install html doxygen in libapt-pkg-doc
   * debian/control:
     - build-depend on doxygen
 .
   [ Julian Andres Klode ]
   * apt-pkg/contrib/weakptr.h:
     - add a class WeakPointable which allows one to register weak pointers to
       an object which will be set to NULL when the object is deallocated.
   * [ABI break] apt-pkg/acquire{-worker,-item,}.h:
     - subclass pkgAcquire::{Worker,Item,ItemDesc} from WeakPointable.
   * apt-pkg/pkgcache.cc:
     - Merge fix from David to correct handling in single-arch environments.
   * cmdline/apt-cache.cc:
     - Add a showauto command to apt-cache.
   * cmdline/apt-get.cc:
     - Add apt-get markauto and unmarkauto commands.
 .
 apt (0.7.26~exp3) experimental; urgency=low
 .
   [ Christian Perrier ]
   * German translation update. Closes: #571037
   * Spanish manpages translation update. Closes: #573293
   * Dutch translation update. Closes: #573946
   * Polish manpages translation update. Closes: #574558
   * Add "manpages-pl (<< 20060617-3~)" to avoid file conflicts with
     that package that was providing some manpages for APT utilities.
 .
   [ David Kalnischkies ]
   * [BREAK] merge MultiArch-ABI. We don't support MultiArch,
     but we support the usage of the new ABI so libapt users
     can start to prepare for MultiArch (Closes: #536029)
   * Ignore :qualifiers after package name in build dependencies
     in the library by default, but try to honour them in apt-get
     as we have some sort of MultiArch support ready (Closes: #558103)
   * add translation of the manpages to PT (portuguese)
     Thanks to Américo Monteiro!
   * Switch to dpkg-source 3.0 (native) format
   * apt-pkg/depcache.cc:
     - remove Auto-Installed information from extended_states
       together with the package itself (Closes: #572364)
   * cmdline/apt-mark:
     - don't crash if no arguments are given (Closes: #570962)
   * debian/control:
     - remove some years old and obsolete Replaces
     - add automake/conf build-depends/conflicts as recommend by
       the autotools-dev README (Closes: #572615)
   * apt-pkg/contrib/mmap.{h,cc}:
     - add char[] fallback for filesystems without shared writable
       mmap() like JFFS2. Thanks to Marius Vollmer for writing
       and to Loïc Minier for pointing to the patch! (Closes: #314334)
   * doc/apt_preferences.5.xml:
     - fix two typos and be more verbose in the novice warning.
       Thanks to Osamu Aoki for pointing it out! (Closes: #567669)
     - fix a=sid vs. n=sid typo, thanks Ansgar Burchardt!
     - origin can be used to match a hostname (Closes: #352667)
     - remove wrong pin-priority is optional remark (Closes: #574944)
   * apt-pkg/deb/dpkgpm.cc:
     - fix error message construction in OpenLog()
     - if available store the Commandline in the history
   * cmdline/apt-get.cc:
     - add a --only-upgrade flag to install command (Closes: #572259)
     - fix memory leaks in error conditions in DoSource()
     - try version match in FindSrc first exact than fuzzy (LP: #551178)
   * apt-pkg/contrib/cmndline.cc:
     - save Commandline in Commandline::AsString for logging
   * apt-pkg/deb/debversion.cc:
     - consider absent of debian revision equivalent to 0 (Closes: #573592)
   * doc/makefile, doc/*:
     - generate subdirectories for building the manpages in on the fly
       depending on the po files we have.
   * apt-pkg/pkgcachegen.cc:
     - merge versions correctly even if multiple different versions
       with the same version number are available.
       Thanks to Magnus Holmgren for the patch! (Closes: #351056)
   * ftparchive/writer.cc:
     - write LongDescriptions if they shouldn't be included in Packages
       file into i18n/Translation-en by default.
   * doc/po/de.po:
     - correct a few typos in the german manpage translation.
       Thanks to Chris Leick and Georg Koppen! (Closes: #574962)
   * apt-pkg/contrib/strutl.cc:
     - convert all toupper calls to tolower_ascii for a little speedup
 .
   [ Jean-Baptiste Lallement ]
   * apt-pkg/contrib/strutl.cc:
     - always escape '%' (LP: #130289) (Closes: #500560)
     - unescape '%' sequence only if followed by 2 hex digit
     - username/password are urlencoded in proxy string (RFC 3986)
 .
   [ Julian Andres Klode ]
   * cmdline/apt-cache.cc:
     - Change behavior of showsrc to match the one of show (Closes: #512046).
   * cmdline/apt-key:
     - Honor Apt::GPGV::TrustedKeyring (Closes: #316390)
   * cmdline/apt-mark:
     - Use the new python-apt API (and conflict with python-apt << 0.7.93.2).
   * apt-inst/contrib/arfile.h:
     - Add public ARArchive::Members() which returns the list of members.
   * apt-pkg/policy.cc:
     - Always return a candidate if there is at least one version pinned > 0
       (Closes: #512318)
   * ftparchive/apt-ftparchive.cc:
     - Read default configuration (Closes: #383257)
   * debian/rules:
     - Fix the libraries name to be e.g. libapt-pkg4.9 instead of
       libapt-pkg-4.9.
 .
   [ Michael Vogt ]
   * apt-pkg/deb/dpkgpm.cc:
     - fix backgrounding when dpkg runs (closes: #486222)
   * cmdline/apt-mark:
     - show error on incorrect aguments (LP: #517917), thanks to
       Torsten Spindler
   * cmdline/apt-get.cc:
     - if apt-get source foo=version or foo/distro can not be found,
       error out (LP: #502641)
   * apt-pkg/packagemanager.cc:
     - better debug output
   * doc/examples/configure-index:
     - add missing Debug::pkgPackageManager option
 .
 apt (0.7.26~exp2) experimental; urgency=low
 .
   * fix crash when LANGUAGE is not set
 .
 apt (0.7.26~exp1) experimental; urgency=low
 .
   [ David Kalnischkies ]
   * [BREAK] add possibility to download and use multiply
     Translation files, configurable with Acquire::Translation
     (Closes: #444222, #448216, #550564)
   * Ignore :qualifiers after package name in build dependencies
     for now as long we don't understand them (Closes: #558103)
   * apt-pkg/contrib/mmap.{cc,h}:
     - extend it to have a growable flag - unused now but maybe...
   * apt-pkg/pkgcache.h:
     - use long instead of short for {Ver,Desc}File size,
       patch from Víctor Manuel Jáquez Leal, thanks! (Closes: #538917)
   * apt-pkg/acquire-item.cc:
     - allow also to skip the last patch if target is reached,
       thanks Bernhard R. Link! (Closes: #545699)
   * ftparchive/writer.{cc,h}:
     - add --arch option for packages and contents commands
     - if an arch is given accept only *_all.deb and *_arch.deb instead
       of *.deb. Thanks Stephan Bosch for the patch! (Closes: #319710)
     - add APT::FTPArchive::AlwaysStat to disable the too aggressive
       caching if versions are build multiply times (not recommend)
       Patch by Christoph Goehre, thanks! (Closes: #463260)
   * apt-pkg/deb/dpkgpm.cc:
     - stdin redirected to /dev/null takes all CPU (Closes: #569488)
       Thanks to Aurelien Jarno for providing (again) a patch!
   * buildlib/apti18n.h.in, po/makefile:
     - add ngettext support with P_()
   * aptconfiguration.cc:
     - include all existing Translation files in the Cache (Closes: 564137)
   * debian/control:
     - update with no changes to debian policy 3.8.4
   * doc/apt_preferences.5.xml:
     - explicitly warn against careless use (Closes: #567669)
   * debian/rules:
     - remove creation of empty dir /usr/share/apt
   * doc/apt-cdrom.8.xml:
     - fix typo spotted by lintian: proc(c)eed
 .
   [ Ivan Masár ]
   * Slovak translation update. Closes: #568294
 .
   [ Michael Vogt ]
   * [BREAK] merged lp:~mvo/apt/history
     - this writes a /var/log/apt/history tagfile that contains details
       from the transaction (complements term.log)
   * methods/http.cc:
     - add cache-control headers even if no cache is given to allow
       adding options for intercepting proxies
     - add Acquire::http::ProxyAutoDetect configuration that
       can be used to call a external helper to figure out the
       proxy configuration and return it to apt via stdout
       (this is a step towards WPAD and zeroconf/avahi support)
   * abicheck/
     - add new abitest tester using the ABI Compliance Checker from
       http://ispras.linuxfoundation.org/index.php/ABI_compliance_checker
 .
   [ Robert Collins ]
   * Change the package index Info methods to allow apt-cache policy to be
     useful when using several different archives on the same host.
     (Closes: #329814, LP: #22354)
Checksums-Sha1: 
 a44ec680fd2b37b7a042ef2f2b8d05343ddf1929 1282 apt_0.8.0.dsc
 0fa9075640943ddec0f97a8a268fea7aa2378467 3052419 apt_0.8.0.tar.gz
 ac453c6596098a2af4f6ee617f970c438213086c 201688 apt-doc_0.8.0_all.deb
 95df5bc8d4093df27fb13fc01ad52c048c3dd6a1 687228 libapt-pkg-doc_0.8.0_all.deb
 350a8a7a43fe182d54f3b7d73b8032f85b5d7ddf 1965454 apt_0.8.0_i386.deb
 52cc97588f405d9c9588b1ff2486df4d49856139 147434 libapt-pkg-dev_0.8.0_i386.deb
 973eb3e2c9025f81eed70bee3f41db6ecf638dbf 256382 apt-utils_0.8.0_i386.deb
 c55efb7fb68500542f4b8b314af8020103f10102 79486 apt-transport-https_0.8.0_i386.deb
Checksums-Sha256: 
 07c8c13c022820c04c4f7c5f1a8e46bd60cd766c7245af41189381e0a7b454be 1282 apt_0.8.0.dsc
 a7f2c4906f0fa301b2202d3e4af7e1651e795b3d1977850759c1282c54e4cbac 3052419 apt_0.8.0.tar.gz
 2f434a9b6b1821aae8e04083f9b928038880957bb6dbf7faadda938bf923f0e6 201688 apt-doc_0.8.0_all.deb
 6d84ed0a5953067a15d032eb79abaf4aab233da4d34ef2abb918eafa72fb558d 687228 libapt-pkg-doc_0.8.0_all.deb
 a593e7d7f9b3cffa37770201a3c13bd2c8bc588bafbf39b4aaa5e13b5fb00b8b 1965454 apt_0.8.0_i386.deb
 482c3d36e5a1464a4a695d315a6571721ec858c42ae854833034992ff1eb2fc3 147434 libapt-pkg-dev_0.8.0_i386.deb
 3c6b12d3bce42a9fb587856bc55ebd9b28694da1c38d84f4347041c7d2fe4f7c 256382 apt-utils_0.8.0_i386.deb
 a140d5aeb6fffa058554def5b41d5ab946bffc656f5d9b889ebfbc4ab41c1262 79486 apt-transport-https_0.8.0_i386.deb
Files: 
 130fdd69012ecaa5803fb40b619adc52 1282 admin important apt_0.8.0.dsc
 f2a4203720d9f7c3b79c95b33a52a47c 3052419 admin important apt_0.8.0.tar.gz
 83dc4da2cce59fb7b21b99bd895bb59f 201688 doc optional apt-doc_0.8.0_all.deb
 f18cba6291c545b2ddffa245093985e8 687228 doc optional libapt-pkg-doc_0.8.0_all.deb
 43364819b898e49b8175e88ec5787241 1965454 admin important apt_0.8.0_i386.deb
 72767fb35c364cb87c21c0a31033de87 147434 libdevel optional libapt-pkg-dev_0.8.0_i386.deb
 054ed2576bf7eda6a793b51bc887c36e 256382 admin important apt-utils_0.8.0_i386.deb
 dbf3e63b69e7fe0e05bd5c246d62314a 79486 admin optional apt-transport-https_0.8.0_i386.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAkx0DecACgkQliSD4VZixzSOcwCfVOztS6+5/9DNF0wWB3gJfzaU
GeoAnRghDhHJwAcf/xizOfMBTsXHMBCg
=OymA
-----END PGP SIGNATURE-----



--- End Message ---

Reply to: