]> git.saurik.com Git - apt.git/commitdiff
* merged with apt--debian-sid
authorMichael Vogt <egon@bottom>
Thu, 14 Dec 2006 10:29:20 +0000 (11:29 +0100)
committerMichael Vogt <egon@bottom>
Thu, 14 Dec 2006 10:29:20 +0000 (11:29 +0100)
1  2 
apt-pkg/algorithms.cc
apt-pkg/deb/debindexfile.cc
configure.in
debian/changelog

diff --combined apt-pkg/algorithms.cc
index 55f44fbd5c6bba50dc5813f4b7a41488b65b128b,8d1e4e8e8a71e5a71bf3b37d3919a29f98a12db7..8a22819bf168e40f49de876433e029ff8fddfe8b
  #include <apt-pkg/algorithms.h>
  #include <apt-pkg/error.h>
  #include <apt-pkg/configuration.h>
 +#include <apt-pkg/version.h>
  #include <apt-pkg/sptr.h>
 +
      
  #include <apti18n.h>
 -    
 +#include <sys/types.h>
  #include <iostream>
                                                                        /*}}}*/
  using namespace std;
@@@ -222,8 -220,6 +222,8 @@@ void pkgSimulate::ShortBreaks(
     the necessary calculations to deal with the problems. */
  bool pkgApplyStatus(pkgDepCache &Cache)
  {
 +   pkgDepCache::ActionGroup group(Cache);
 +
     for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
     {
        if (I->VersionList == 0)
          I->InstState == pkgCache::State::HoldReInstReq)
        {
         if (I->CurrentVer != 0 && I.CurrentVer().Downloadable() == true)
 -          Cache.MarkKeep(I);
 +          Cache.MarkKeep(I, false, false);
         else
         {
            // Is this right? Will dpkg choke on an upgrade?
            if (Cache[I].CandidateVer != 0 &&
                 Cache[I].CandidateVerIter(Cache).Downloadable() == true)
 -             Cache.MarkInstall(I);
 +             Cache.MarkInstall(I, false, 0, false);
            else
               return _error->Error(_("The package %s needs to be reinstalled, "
                                    "but I can't find an archive for it."),I.Name());
         case pkgCache::State::HalfConfigured:
         if ((I->CurrentVer != 0 && I.CurrentVer().Downloadable() == true) ||
             I.State() != pkgCache::PkgIterator::NeedsUnpack)
 -          Cache.MarkKeep(I);
 +          Cache.MarkKeep(I, false, false);
         else
         {
            if (Cache[I].CandidateVer != 0 &&
                 Cache[I].CandidateVerIter(Cache).Downloadable() == true)
 -             Cache.MarkInstall(I);
 +             Cache.MarkInstall(I, true, 0, false);
            else
               Cache.MarkDelete(I);
         }
     on the result. */
  bool pkgFixBroken(pkgDepCache &Cache)
  {
 +   pkgDepCache::ActionGroup group(Cache);
 +
     // Auto upgrade all broken packages
     for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
        if (Cache[I].NowBroken() == true)
 -       Cache.MarkInstall(I,true);
 +       Cache.MarkInstall(I, true, 0, false);
     
     /* Fix packages that are in a NeedArchive state but don't have a
        downloadable install version */
        if (Cache[I].InstVerIter(Cache).Downloadable() == false)
         continue;
  
 -      Cache.MarkInstall(I,true);      
 +      Cache.MarkInstall(I, true, 0, false);
     }
     
     pkgProblemResolver Fix(&Cache);
   */
  bool pkgDistUpgrade(pkgDepCache &Cache)
  {
 +   pkgDepCache::ActionGroup group(Cache);
 +
     /* Auto upgrade all installed packages, this provides the basis 
        for the installation */
     for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
        if (I->CurrentVer != 0)
 -       Cache.MarkInstall(I,true);
 +       Cache.MarkInstall(I, true, 0, false);
  
     /* Now, auto upgrade all essential packages - this ensures that
        the essential packages are present and working */
     for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
        if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
 -       Cache.MarkInstall(I,true);
 +       Cache.MarkInstall(I, true, 0, false);
     
     /* We do it again over all previously installed packages to force 
        conflict resolution on them all. */
     for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
        if (I->CurrentVer != 0)
 -       Cache.MarkInstall(I,false);
 +       Cache.MarkInstall(I, false, 0, false);
  
     pkgProblemResolver Fix(&Cache);
  
         if (I->SelectedState == pkgCache::State::Hold)
         {
            Fix.Protect(I);
 -          Cache.MarkKeep(I);
 +          Cache.MarkKeep(I, false, false);
         }
        }
     }
     to install packages not marked for install */
  bool pkgAllUpgrade(pkgDepCache &Cache)
  {
 +   pkgDepCache::ActionGroup group(Cache);
 +
     pkgProblemResolver Fix(&Cache);
  
     if (Cache.BrokenCount() != 0)
            continue;
        
        if (I->CurrentVer != 0 && Cache[I].InstallVer != 0)
 -       Cache.MarkInstall(I,false);
 +       Cache.MarkInstall(I, false, 0, false);
     }
        
     return Fix.ResolveByKeep();
     the package is restored. */
  bool pkgMinimizeUpgrade(pkgDepCache &Cache)
  {   
 +   pkgDepCache::ActionGroup group(Cache);
 +
     if (Cache.BrokenCount() != 0)
        return false;
     
            continue;
  
         // Keep it and see if that is OK
 -       Cache.MarkKeep(I);
 +       Cache.MarkKeep(I, false, false);
         if (Cache.BrokenCount() != 0)
 -          Cache.MarkInstall(I,false);
 +          Cache.MarkInstall(I, false, 0, false);
         else
         {
            // If keep didnt actually do anything then there was no change..
@@@ -577,8 -565,6 +577,8 @@@ void pkgProblemResolver::MakeScores(
     installable */
  bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg)
  {
 +   pkgDepCache::ActionGroup group(Cache);
 +
     if ((Flags[Pkg->ID] & Upgradable) == 0 || Cache[Pkg].Upgradable() == false)
        return false;
     if ((Flags[Pkg->ID] & Protected) == Protected)
     Flags[Pkg->ID] &= ~Upgradable;
     
     bool WasKept = Cache[Pkg].Keep();
 -   Cache.MarkInstall(Pkg,false);
 +   Cache.MarkInstall(Pkg, false, 0, false);
  
     // This must be a virtual package or something like that.
     if (Cache[Pkg].InstVerIter(Cache).end() == true)
     if (Fail == true)
     {
        if (WasKept == true)
 -       Cache.MarkKeep(Pkg);
 +       Cache.MarkKeep(Pkg, false, false);
        else
         Cache.MarkDelete(Pkg);
        return false;
     upgrade packages to advoid problems. */
  bool pkgProblemResolver::Resolve(bool BrokenFix)
  {
 +   pkgDepCache::ActionGroup group(Cache);
 +
     unsigned long Size = Cache.Head().PackageCount;
  
     // Record which packages are marked for install
         {
            if (Cache[I].InstBroken() == true && BrokenFix == true)
            {
 -             Cache.MarkInstall(I,false);
 +             Cache.MarkInstall(I, false, 0, false);
               if (Cache[I].Install() == true)
                  Again = true;
            }
            pkgCache::Version *OldVer = Cache[I].InstallVer;
            Flags[I->ID] &= ReInstateTried;
            
 -          Cache.MarkInstall(I,false);
 +          Cache.MarkInstall(I, false, 0, false);
            if (Cache[I].InstBroken() == true || 
                OldBreaks < Cache.BrokenCount())
            {
               if (OldVer == 0)
                  Cache.MarkDelete(I);
               else
 -                Cache.MarkKeep(I);
 +                Cache.MarkKeep(I, false, false);
            }       
            else
               if (Debug == true)
            continue;
         
         if (Debug == true)
-           cout << "Investigating " << I.Name() << endl;
+           clog << "Investigating " << I.Name() << endl;
         
         // Isolate the problem dependency
         PackageKill KillList[100];
                  {
                     if (Debug == true)
                        clog << "  Or group keep for " << I.Name() << endl;
 -                   Cache.MarkKeep(I);
 +                   Cache.MarkKeep(I, false, false);
                     Change = true;
                  }
               }
               }
               
               Change = true;
 -             Cache.MarkKeep(I);                 
 +             Cache.MarkKeep(I, false, false);
               break;
            }
            
                  /* See if a keep will do, unless the package is protected,
                     then installing it will be necessary */
                  bool Installed = Cache[I].Install();
 -                Cache.MarkKeep(I);
 +                Cache.MarkKeep(I, false, false);
                  if (Cache[I].InstBroken() == false)
                  {
                     // Unwind operation will be keep now
                     
                     // Restore
                     if (InOr == true && Installed == true)
 -                      Cache.MarkInstall(I,false);
 +                      Cache.MarkInstall(I, false, 0, false);
                     
                     if (Debug == true)
                        clog << "  Holding Back " << I.Name() << " rather than change " << Start.TargetPkg().Name() << endl;
                  
                  // Restore
                  if (InOr == true && Installed == true)
 -                   Cache.MarkInstall(I,false);
 +                   Cache.MarkInstall(I, false, 0, false);
                  
                  if (Debug == true)
                     clog << "  Holding Back " << I.Name() << " because I can't find " << Start.TargetPkg().Name() << endl;
               {
                  if (Debug == true)
                     clog << "  Fixing " << I.Name() << " via keep of " << J->Pkg.Name() << endl;
 -                Cache.MarkKeep(J->Pkg);
 +                Cache.MarkKeep(J->Pkg, false, false);
               }
  
               if (Counter > 1)
        return _error->Error(_("Unable to correct problems, you have held broken packages."));
     }
     
 +   // set the auto-flags (mvo: I'm not sure if we _really_ need this, but
 +   // I didn't managed 
 +   pkgCache::PkgIterator I = Cache.PkgBegin();
 +   for (;I.end() != true; I++) {
 +      if (Cache[I].NewInstall() && !(Flags[I->ID] & PreInstalled)) {
 +       if(_config->FindI("Debug::pkgAutoRemove",false)) {
 +          std::clog << "Resolve installed new pkg: " << I.Name() 
 +                    << " (now marking it as auto)" << std::endl;
 +       }
 +       Cache[I].Flags |= pkgCache::Flag::Auto;
 +      }
 +   }
 +
 +
     return true;
  }
                                                                        /*}}}*/
     system was non-broken previously. */
  bool pkgProblemResolver::ResolveByKeep()
  {
 +   pkgDepCache::ActionGroup group(Cache);
 +
     unsigned long Size = Cache.Head().PackageCount;
  
     if (Debug == true)      
        {
         if (Debug == true)
            clog << "Keeping package " << I.Name() << endl;
 -       Cache.MarkKeep(I);
 +       Cache.MarkKeep(I, false, false);
         if (Cache[I].InstBroken() == false)
         {
            K = PList - 1;
               {
                  if (Debug == true)
                     clog << "  Keeping Package " << Pkg.Name() << " due to dep" << endl;
 -                Cache.MarkKeep(Pkg);
 +                Cache.MarkKeep(Pkg, false, false);
               }
               
               if (Cache[I].InstBroken() == false)
  /* This is used to make sure protected packages are installed */
  void pkgProblemResolver::InstallProtect()
  {
 +   pkgDepCache::ActionGroup group(Cache);
 +
     for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
     {
        if ((Flags[I->ID] & Protected) == Protected)
        {
         if ((Flags[I->ID] & ToRemove) == ToRemove)
            Cache.MarkDelete(I);
 -       else
 -          Cache.MarkInstall(I,false);
 +       else 
 +       {
 +          // preserver the information if the package was auto
 +          // or manual installed
 +          bool autoInst = (Cache[I].Flags & pkgCache::Flag::Auto);
 +          Cache.MarkInstall(I, false, 0, !autoInst);
 +       }
        }
     }   
  }
@@@ -1271,4 -1232,3 +1271,4 @@@ void pkgPrioSortList(pkgCache &Cache,pk
     qsort(List,Count,sizeof(*List),PrioComp);
  }
                                                                        /*}}}*/
 +
index 38ecdd16af5249adb44f96d124aa48d792f5b430,234521efeb91c2f8ec6064c751919e468d85159b..9f435bba55dc4df5da75afa718e6f9149aeab6a3
@@@ -305,7 -305,7 +305,7 @@@ pkgCache::PkgFileIterator debPackagesIn
     pkgCache::PkgFileIterator File = Cache.FileBegin();
     for (; File.end() == false; File++)
     {
-       if (FileName != File.FileName())
+        if (File.FileName() == NULL || FileName != File.FileName())
         continue;
        
        struct stat St;
  }
                                                                        /*}}}*/
  
 +// TranslationsIndex::debTranslationsIndex - Contructor                       /*{{{*/
 +// ---------------------------------------------------------------------
 +/* */
 +debTranslationsIndex::debTranslationsIndex(string URI,string Dist,string Section) : 
 +                  pkgIndexFile(true), URI(URI), Dist(Dist), Section(Section)
 +{
 +}
 +                                                                      /*}}}*/
 +// TranslationIndex::Trans* - Return the URI to the translation files /*{{{*/
 +// ---------------------------------------------------------------------
 +/* */
 +inline string debTranslationsIndex::IndexFile(const char *Type) const
 +{
 +   return _config->FindDir("Dir::State::lists") + URItoFileName(IndexURI(Type));
 +}
 +string debTranslationsIndex::IndexURI(const char *Type) const
 +{
 +   string Res;
 +   if (Dist[Dist.size() - 1] == '/')
 +   {
 +      if (Dist != "/")
 +       Res = URI + Dist;
 +      else 
 +       Res = URI;
 +   }
 +   else
 +      Res = URI + "dists/" + Dist + '/' + Section +
 +      "/i18n/Translation-";
 +   
 +   Res += Type;
 +   return Res;
 +}
 +                                                                      /*}}}*/
 +// TranslationsIndex::GetIndexes - Fetch the index files              /*{{{*/
 +// ---------------------------------------------------------------------
 +/* */
 +bool debTranslationsIndex::GetIndexes(pkgAcquire *Owner) const
 +{
 +   if (TranslationsAvailable()) {
 +     string TranslationFile = "Translation-" + LanguageCode();
 +     new pkgAcqIndexTrans(Owner, IndexURI(LanguageCode().c_str()),
 +                        Info(TranslationFile.c_str()),
 +                        TranslationFile);
 +   }
 +
 +   return true;
 +}
 +                                                                      /*}}}*/
 +// TranslationsIndex::Describe - Give a descriptive path to the index /*{{{*/
 +// ---------------------------------------------------------------------
 +/* This should help the user find the index in the sources.list and
 +   in the filesystem for problem solving */
 +string debTranslationsIndex::Describe(bool Short) const
 +{   
 +   char S[300];
 +   if (Short == true)
 +      snprintf(S,sizeof(S),"%s",Info(TranslationFile().c_str()).c_str());
 +   else
 +      snprintf(S,sizeof(S),"%s (%s)",Info(TranslationFile().c_str()).c_str(),
 +             IndexFile(LanguageCode().c_str()).c_str());
 +   return S;
 +}
 +                                                                      /*}}}*/
 +// TranslationsIndex::Info - One liner describing the index URI               /*{{{*/
 +// ---------------------------------------------------------------------
 +/* */
 +string debTranslationsIndex::Info(const char *Type) const 
 +{
 +   string Info = ::URI::SiteOnly(URI) + ' ';
 +   if (Dist[Dist.size() - 1] == '/')
 +   {
 +      if (Dist != "/")
 +       Info += Dist;
 +   }
 +   else
 +      Info += Dist + '/' + Section;   
 +   Info += " ";
 +   Info += Type;
 +   return Info;
 +}
 +                                                                      /*}}}*/
 +bool debTranslationsIndex::HasPackages() const
 +{
 +   if(!TranslationsAvailable())
 +      return false;
 +   
 +   return FileExists(IndexFile(LanguageCode().c_str()));
 +}
 +
 +// TranslationsIndex::Exists - Check if the index is available                /*{{{*/
 +// ---------------------------------------------------------------------
 +/* */
 +bool debTranslationsIndex::Exists() const
 +{
 +   return FileExists(IndexFile(LanguageCode().c_str()));
 +}
 +                                                                      /*}}}*/
 +// TranslationsIndex::Size - Return the size of the index             /*{{{*/
 +// ---------------------------------------------------------------------
 +/* This is really only used for progress reporting. */
 +unsigned long debTranslationsIndex::Size() const
 +{
 +   struct stat S;
 +   if (stat(IndexFile(LanguageCode().c_str()).c_str(),&S) != 0)
 +      return 0;
 +   return S.st_size;
 +}
 +                                                                      /*}}}*/
 +// TranslationsIndex::Merge - Load the index file into a cache                /*{{{*/
 +// ---------------------------------------------------------------------
 +/* */
 +bool debTranslationsIndex::Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const
 +{
 +   // Check the translation file, if in use
 +   string TranslationFile = IndexFile(LanguageCode().c_str());
 +   if (TranslationsAvailable() && FileExists(TranslationFile))
 +   {
 +     FileFd Trans(TranslationFile,FileFd::ReadOnly);
 +     debListParser TransParser(&Trans);
 +     if (_error->PendingError() == true)
 +       return false;
 +     
 +     Prog.SubProgress(0, Info(TranslationFile.c_str()));
 +     if (Gen.SelectFile(TranslationFile,string(),*this) == false)
 +       return _error->Error("Problem with SelectFile %s",TranslationFile.c_str());
 +
 +     // Store the IMS information
 +     pkgCache::PkgFileIterator TransFile = Gen.GetCurFile();
 +     struct stat TransSt;
 +     if (fstat(Trans.Fd(),&TransSt) != 0)
 +       return _error->Errno("fstat","Failed to stat");
 +     TransFile->Size = TransSt.st_size;
 +     TransFile->mtime = TransSt.st_mtime;
 +   
 +     if (Gen.MergeList(TransParser) == false)
 +       return _error->Error("Problem with MergeList %s",TranslationFile.c_str());
 +   }
 +
 +   return true;
 +}
 +                                                                      /*}}}*/
 +// TranslationsIndex::FindInCache - Find this index                           /*{{{*/
 +// ---------------------------------------------------------------------
 +/* */
 +pkgCache::PkgFileIterator debTranslationsIndex::FindInCache(pkgCache &Cache) const
 +{
 +   string FileName = IndexFile(LanguageCode().c_str());
 +   
 +   pkgCache::PkgFileIterator File = Cache.FileBegin();
 +   for (; File.end() == false; File++)
 +   {
 +      if (FileName != File.FileName())
 +       continue;
 +
 +      struct stat St;
 +      if (stat(File.FileName(),&St) != 0)
 +       return pkgCache::PkgFileIterator(Cache);
 +      if ((unsigned)St.st_size != File->Size || St.st_mtime != File->mtime)
 +       return pkgCache::PkgFileIterator(Cache);
 +      return File;
 +   }   
 +   return File;
 +}
 +                                                                      /*}}}*/
  // StatusIndex::debStatusIndex - Constructor                          /*{{{*/
  // ---------------------------------------------------------------------
  /* */
@@@ -580,11 -416,6 +580,11 @@@ class debIFTypePkg : public pkgIndexFil
     };
     debIFTypePkg() {Label = "Debian Package Index";};
  };
 +class debIFTypeTrans : public debIFTypePkg
 +{
 +   public:
 +   debIFTypeTrans() {Label = "Debian Translation Index";};
 +};
  class debIFTypeStatus : public pkgIndexFile::Type
  {
     public:
  };
  static debIFTypeSrc _apt_Src;
  static debIFTypePkg _apt_Pkg;
 +static debIFTypeTrans _apt_Trans;
  static debIFTypeStatus _apt_Status;
  
  const pkgIndexFile::Type *debSourcesIndex::GetType() const
@@@ -608,10 -438,6 +608,10 @@@ const pkgIndexFile::Type *debPackagesIn
  {
     return &_apt_Pkg;
  }
 +const pkgIndexFile::Type *debTranslationsIndex::GetType() const
 +{
 +   return &_apt_Trans;
 +}
  const pkgIndexFile::Type *debStatusIndex::GetType() const
  {
     return &_apt_Status;
diff --combined configure.in
index 91c095c7e4646d1ed08efe72c78e688405086a2e,df452ba34b2e6e4c8f288b5b74b90c8747fd3e20..b72421968c58283ca60c3310e95fdc427ac50d09
@@@ -18,7 -18,7 +18,7 @@@ AC_CONFIG_AUX_DIR(buildlib
  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.6.46.3")
+ AC_DEFINE_UNQUOTED(VERSION,"0.6.46.4")
  PACKAGE="apt"
  AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
  AC_SUBST(PACKAGE)
@@@ -175,21 -175,12 +175,21 @@@ dnl Check for debiando
  AC_PATH_PROG(DEBIANDOC_HTML,debiandoc2html)
  AC_PATH_PROG(DEBIANDOC_TEXT,debiandoc2text)
  
 +dnl Check for doxygen
 +AC_PATH_PROG(DOXYGEN, doxygen)
 +
  dnl Check for the SGML tools needed to build man pages
  AC_PATH_PROG(DOCBOOK2MAN,docbook2man)
  
  dnl Check for the XML tools needed to build man pages
  AC_PATH_PROG(XMLTO,xmlto)
  
 +dnl Check for graphviz
 +AC_CHECK_PROG([HAVE_DOT], [dot], [YES], [NO])
 +AC_PATH_PROG([DOT], [dot], [])
 +DOTDIR=$(dirname $DOT)
 +AC_SUBST(DOTDIR)
 +
  dnl Check for YODL
  dnl AC_CHECK_PROG(YODL_MAN,yodl2man,"yes","")
  
@@@ -209,4 -200,4 +209,4 @@@ f
  AC_SUBST(USE_NLS)
  AC_PATH_PROG(BASH, bash)
  
 -AC_OUTPUT(environment.mak:buildlib/environment.mak.in makefile:buildlib/makefile.in,make -s dirs)
 +AC_OUTPUT(environment.mak:buildlib/environment.mak.in makefile:buildlib/makefile.in doc/Doxyfile,make -s dirs)
diff --combined debian/changelog
index a1e084fe2fa7520c75e62086101aaf7b29ebeb28,5f9d3d5d5e88d9f59c412f81afd1dd98378ba4fd..3b392444be395f3ebb86846678bc2a7873296ac9
@@@ -1,5 -1,13 +1,13 @@@
- apt (0.6.46.4) unstable; urgency=low
+ apt (0.6.46.5) unstable; urgency=low
  
+   * apt-pkg/algorithm.cc:
+     - use clog for all debugging
+  --
+ apt (0.6.46.4) unstable; urgency=high
+   * ack NMU (closes: #401017)
    * added apt-secure.8 to "See also" section
    * apt-pkg/deb/dpkgpm.cc:
      - added "Dpkg::StopOnError" variable that controls if apt
      - uk.po: New Ukrainian translation: 483t28f3u
      - el.po: Update to 503t9f2u
      - de.po: Updates and corrections.
+   * apt-pkg/contrib/progress.cc:
+     - OpProgress::CheckChange optimized, thanks to Paul Brook
+       (closes: #398381)
+   * apt-pkg/contrib/sha256.cc:
+     - fix building with noopt
  
-  --
+  -- Michael Vogt <mvo@debian.org>  Thu,  7 Dec 2006 10:49:50 +0100
+ apt (0.6.46.3-0.2) unstable; urgency=high
+   * Non-maintainer upload with permission of Michael Vogt.
+   * Fix FTBFS on most arches (regression from the fix of #400874)
+  -- Andreas Barth <aba@not.so.argh.org>  Tue,  5 Dec 2006 15:51:22 +0000 
+   
+ apt (0.6.46.3-0.1) unstable; urgency=high
+   * Non-maintainer upload with permission of Michael Vogt.
+   * Fix segfault at apt-get source. Closes: #400874
+   * Add apt-key update in postinst, so that debian-archive-keyring doesn't
+     need to depend on apt >= 0.6. Closes: #401114
+   * Don't double-queue pdiff files. Closes: #401017
+   
+  -- Andreas Barth <aba@not.so.argh.org>  Tue,  5 Dec 2006 10:34:56 +0000
  
  apt (0.6.46.3) unstable; urgency=low
  
@@@ -54,21 -84,13 +84,21 @@@ apt (0.6.46.2) unstable; urgency=lo
  
  apt (0.6.46.1) unstable; urgency=low
  
 +  * merged "install-recommends" branch (ABI break): 
 +    - new "--install-recommends"
 +    - install new recommends on "upgrade" if --install-recommends is 
 +      given
 +    - new "--fix-policy" option to install all packages with unmet
 +      important dependencies (usefull with --install-recommends to
 +      see what not-installed recommends are on the system)
 +    - fix of recommended packages display (only show CandidateVersion
 +      fix or-group handling)
 +  * merged "install-task" branch (use with "apt-get install taskname^")
    * methods/gzip.cc:
      - deal with empty files 
    * Applied patch from Daniel Schepler to make apt bin-NMU able.  
 -    (closes: bug#359634)
    * rebuild against current g++ because of:
      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29289
 -    (closes: #390189)
    * fix broken i18n in the dpkg progress reporting, thanks to 
      Frans Pop and Steinar Gunderson. (closes: #389261)
    * Merged from Christian Perrier bzr branch:
@@@ -121,7 -143,7 +151,7 @@@ apt (0.6.45) unstable; urgency=lo
    * apt-pkg/contrib/sha256.cc:
      - fixed the sha256 generation (closes: #378183)
    * ftparchive/cachedb.cc:
 -    - applied patch from Anthony Towns to fix Clean() function
 +    - applied patch from ajt to fix Clean() function
        (closes: #379576)
    * doc/apt-get.8.xml:
      - fix path to the apt user build (Closes: #375640)
      - fix for string mangling, closes: #373864
    * apt-pkg/acquire-item.cc:
      - check for bzip2 in /bin (closes: #377391)
 -  * apt-pkg/tagfile.cc:
 -    - make it work on non-mapable files again, thanks 
 -      to James Troup for confirming the fix (closes: #376777)
    * Merged from Christian Perrier bzr branch:
      * ko.po: Updated to 512t. Closes: #378901
      * hu.po: Updated to 512t. Closes: #376330
      * dz.po: New Dzongkha translation: 512t
      * ro.po: Updated to 512t
      * eu.po: Updated
 +    * eu.po: Updated
 +  * fix apt-get dist-upgrade
 +  * fix warning if no /var/lib/apt/extended_states is present
 +  * don't download Translations for deb-src sources.list lines
 +  * apt-pkg/tagfile.cc:
 +    - support not-mmapable files again
  
 - -- Michael Vogt <mvo@debian.org>  Thu, 27 Jul 2006 00:52:05 +0200
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 25 Jul 2006 11:55:22 +0200
  
 -apt  (0.6.44.2) unstable; urgency=low 
 -  
 -   * apt-pkg/depcache.cc:
 -     - added Debug::pkgDepCache::AutoInstall (thanks to infinity)
 -   * apt-pkg/acquire-item.cc:
 -     - fix missing chmod() in the new aquire code
 -       (thanks to Bastian Blank, Closes: #367425)
 -   * merged from
 -     http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
 -     * sk.po: Completed to 512t
 -     * eu.po: Completed to 512t
 -     * fr.po: Completed to 512t
 -     * sv.po: Completed to 512t
 -     * Update all PO and the POT. Gives 506t6f for formerly
 -       complete translations
 -
 - -- Michael Vogt <mvo@debian.org>  Wed, 14 Jun 2006 12:00:57 +0200 
 +apt (0.6.44.2exp1) experimental; urgency=low
 +
 +  * added support for i18n of the package descriptions
 +  * added support for aptitude like auto-install tracking (a HUGE
 +    HUGE thanks to Daniel Burrows who made this possible) 
 +  * synced with the http://people.debian.org/~mvo/bzr/apt/debian-sid branch
 +  * build from http://people.debian.org/~mvo/bzr/apt/debian-experimental
 +
 + -- Michael Vogt <mvo@debian.org>  Mon,  3 Jul 2006 21:50:31 +0200
 +
 +apt (0.6.44.2) unstable; urgency=low
 +
 +  * apt-pkg/depcache.cc:
 +    - added Debug::pkgDepCache::AutoInstall (thanks to infinity)
 +  * apt-pkg/acquire-item.cc:
 +    - fix missing chmod() in the new aquire code 
 +      (thanks to Bastian Blank, Closes: #367425)
 +  * merged from 
 +    http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
 +    * sk.po: Completed to 512t
 +    * eu.po: Completed to 512t
 +    * fr.po: Completed to 512t
 +    * sv.po: Completed to 512t
 +    * Update all PO and the POT. Gives 506t6f for formerly
 +      complete translations
 +
 + -- Michael Vogt <mvo@debian.org>  Wed, 14 Jun 2006 12:00:57 +0200
  
  apt (0.6.44.1-0.1) unstable; urgency=low
  
@@@ -416,7 -425,7 +446,7 @@@ apt (0.6.42) unstable; urgency=lo
    * cmdline/apt-cdrom.cc: 
      - fix some missing gettext() calls (closes: #334539)
    * doc/apt-cache.8.xml: fix typo (closes: #334714)
 -  
 +
   -- Michael Vogt <mvo@debian.org>  Wed, 19 Oct 2005 22:02:09 +0200
  
  apt (0.6.41) unstable; urgency=low
@@@ -516,7 -525,6 +546,7 @@@ apt (0.6.37) breezy; urgency=lo
    * Add Welsh translation from Dafydd Harries
      (daf@muse.19inch.net--2005/apt--main--0--patch-1)
    * Change debian/bugscript to use #!/bin/bash (Closes: #313402)
 +  * Fix a incorrect example in the man-page (closes: #282918)
  
   -- Matt Zimmerman <mdz@ubuntu.com>  Tue, 24 May 2005 14:38:25 -0700