]> git.saurik.com Git - apt.git/commitdiff
* merged from apt--mvo
authorMichael Vogt <egon@bottom>
Fri, 12 Jan 2007 19:47:02 +0000 (20:47 +0100)
committerMichael Vogt <egon@bottom>
Fri, 12 Jan 2007 19:47:02 +0000 (20:47 +0100)
1  2 
apt-pkg/algorithms.cc
apt-pkg/deb/debrecords.cc
debian/changelog
methods/http.cc

diff --combined apt-pkg/algorithms.cc
index 5e878ff650d85a9a12026fdd2463e4f6fbe5feb0,5fa16e66f9bd9f45095feff8af40f6302c7f3228..bd814729155e6380a2b61f70bb37a6b3316cb456
  #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;
@@@ -102,7 -100,6 +102,7 @@@ bool pkgSimulate::Install(PkgIterator i
         DepIterator End;
         D.GlobOr(Start,End);
         if (Start->Type == pkgCache::Dep::Conflicts ||
 +           Start->Type == pkgCache::Dep::DpkgBreaks ||
             Start->Type == pkgCache::Dep::Obsoletes ||
             End->Type == pkgCache::Dep::PreDepends)
           {
@@@ -152,8 -149,6 +152,8 @@@ bool pkgSimulate::Configure(PkgIterato
            cout << " Obsoletes:" << D.TargetPkg().Name();
         else if (D->Type == pkgCache::Dep::Conflicts)
            cout << " Conflicts:" << D.TargetPkg().Name();
 +       else if (D->Type == pkgCache::Dep::DpkgBreaks)
 +          cout << " Breaks:" << D.TargetPkg().Name();
         else
            cout << " Depends:" << D.TargetPkg().Name();
        }           
@@@ -225,8 -220,6 +225,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..
@@@ -512,7 -497,7 +512,7 @@@ void pkgProblemResolver::MakeScores(
           on the same level. We enhance the score of installed packages 
         if those are not obsolete
        */
-       if (I->CurrentVer != 0 && Cache[I].CandidateVerIter(Cache).Downloadable())
+       if (I->CurrentVer != 0 && Cache[I].CandidateVer != 0 && Cache[I].CandidateVerIter(Cache).Downloadable())
         Score += 1;
     }
  
     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)
               /* We let the algorithm deal with conflicts on its next iteration,
                it is much smarter than us */
               if (Start->Type == pkgCache::Dep::Conflicts || 
 +                 Start->Type == pkgCache::Dep::DpkgBreaks || 
                   Start->Type == pkgCache::Dep::Obsoletes)
                   break;
               
     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)
                  {
                     if (Debug == true)
                        clog << "  Or group keep for " << I.Name() << endl;
 -                   Cache.MarkKeep(I);
 +                   Cache.MarkKeep(I, false, false);
                     Change = true;
                  }
               }
               OldEnd = LEnd;
            }
            else
+             {
               Start++;
+              // We only worry about critical deps.
+              if (Start.IsCritical() != true)
+                   continue;
+             }
  
            // Dep is ok
            if ((Cache[End] & pkgDepCache::DepGInstall) == pkgDepCache::DepGInstall)
            SPtrArray<pkgCache::Version *> VList = Start.AllTargets();
            if (*VList == 0 && (Flags[I->ID] & Protected) != Protected &&
                Start->Type != pkgCache::Dep::Conflicts &&
 +              Start->Type != pkgCache::Dep::DpkgBreaks &&
                Start->Type != pkgCache::Dep::Obsoletes &&
                Cache[I].NowBroken() == false)
            {          
               }
               
               Change = true;
 -             Cache.MarkKeep(I);                 
 +             Cache.MarkKeep(I, false, false);
               break;
            }
            
               if (Scores[I->ID] <= Scores[Pkg->ID] ||
                   ((Cache[Start] & pkgDepCache::DepNow) == 0 &&
                    End->Type != pkgCache::Dep::Conflicts &&
 +                  End->Type != pkgCache::Dep::DpkgBreaks &&
                    End->Type != pkgCache::Dep::Obsoletes))
               {
                  // Try a little harder to fix protected packages..
                  /* 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;
                      (Start->Type == pkgCache::Dep::Conflicts ||
                       Start->Type == pkgCache::Dep::Obsoletes))
                     continue;
 -                
 +
 +                if (Start->Type == pkgCache::Dep::DpkgBreaks)
 +                {
 +                   /* Would it help if we upgraded? */
 +                   if (Cache[End] & pkgDepCache::DepGCVer) {
 +                      if (Debug)
 +                         clog << "  Upgrading " << Pkg.Name() << " due to Breaks field in " << I.Name() << endl;
 +                      Cache.MarkInstall(Pkg, false, 0, false);
 +                      continue;
 +                   }
 +                   if (Debug)
 +                      clog << "  Will not break " << Pkg.Name() << " as stated in Breaks field in " << I.Name() <<endl;
 +                   Cache.MarkKeep(I, false, false);
 +                   continue;
 +                }
 +
                  // Skip adding to the kill list if it is protected
                  if ((Flags[Pkg->ID] & Protected) != 0)
                     continue;
            // Hm, nothing can possibly satisify this dep. Nuke it.
            if (VList[0] == 0 && 
                Start->Type != pkgCache::Dep::Conflicts &&
 +              Start->Type != pkgCache::Dep::DpkgBreaks &&
                Start->Type != pkgCache::Dep::Obsoletes &&
                (Flags[I->ID] & Protected) != Protected)
            {
                  
                  // 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);
 +       }
        }
     }   
  }
@@@ -1295,4 -1239,3 +1300,4 @@@ void pkgPrioSortList(pkgCache &Cache,pk
     qsort(List,Count,sizeof(*List),PrioComp);
  }
                                                                        /*}}}*/
 +
index 518988bb660edffb6c2f00ef20d2267dc182bee0,c3e579ad1366871636dd38ec114d0c79be8f3538..5eb2d67bb9d63408170eb9ff04122dc1810249cb
@@@ -12,9 -12,7 +12,9 @@@
  #pragma implementation "apt-pkg/debrecords.h"
  #endif
  #include <apt-pkg/debrecords.h>
 +#include <apt-pkg/strutl.h>
  #include <apt-pkg/error.h>
 +#include <langinfo.h>
                                                                        /*}}}*/
  
  // RecordParser::debRecordParser - Constructor                                /*{{{*/
@@@ -32,10 -30,6 +32,10 @@@ debRecordParser::debRecordParser(strin
  bool debRecordParser::Jump(pkgCache::VerFileIterator const &Ver)
  {
     return Tags.Jump(Section,Ver->Offset);
 +}
 +bool debRecordParser::Jump(pkgCache::DescFileIterator const &Desc)
 +{
 +   return Tags.Jump(Section,Desc->Offset);
  }
                                                                        /*}}}*/
  // RecordParser::FileName - Return the archive filename on the site   /*{{{*/
@@@ -67,7 -61,7 +67,7 @@@ string debRecordParser::MD5Hash(
  /* */
  string debRecordParser::SHA1Hash()
  {
-    return Section.FindS("SHA1Sum");
+    return Section.FindS("SHA1");
  }
                                                                        /*}}}*/
  // RecordParser::Maintainer - Return the maintainer email             /*{{{*/
@@@ -83,7 -77,7 +83,7 @@@ string debRecordParser::Maintainer(
  /* */
  string debRecordParser::ShortDesc()
  {
 -   string Res = Section.FindS("Description");
 +   string Res = LongDesc();
     string::size_type Pos = Res.find('\n');
     if (Pos == string::npos)
        return Res;
  /* */
  string debRecordParser::LongDesc()
  {
 -   return Section.FindS("Description");
 +  string orig, dest;
 +  char *codeset = nl_langinfo(CODESET);
 +
 +  if (!Section.FindS("Description").empty())
 +     orig = Section.FindS("Description").c_str();
 +  else 
 +     orig = Section.FindS(("Description-" + pkgIndexFile::LanguageCode()).c_str()).c_str();
 +
 +  if (strcmp(codeset,"UTF-8") != 0) {
 +     UTF8ToCodeset(codeset, orig, &dest);
 +     orig = dest;
 +   }    
 +  
 +   return orig;
  }
                                                                        /*}}}*/
  // RecordParser::SourcePkg - Return the source package name if any    /*{{{*/
diff --combined debian/changelog
index 9f8326739ee7529eac139bcc5b702732d55087a5,7893f2599e97ac581bf36c8aa4336bf2c58605a3..c40804746674b357c0b52699c7784d59abee0c6c
@@@ -1,29 -1,17 +1,35 @@@
 +apt (0.7.0) experimental; urgency=low
 +
 +  * Branch that contains tall the new features
 +  * Removed all #pragma interface/implementation
 +  * Branch that contains tall the new features:
 +  * translated package descriptions
 +  * task install support
 +  * automatic dependency removal
 +  * Removed all #pragma interface/implementation
 +  * merged support for the new dpkg "Breaks" field 
 +    (thanks to Ian Jackson)
 +  * handle network failures more gracefully on "update"
 +  * support for unattended-upgrades (via unattended-upgrades
 +    package)
 +  * added apt-transport-https method
 +
 + -- Michael Vogt <mvo@debian.org>  Thu, 14 Dec 2006 11:31:41 +0100
 +
  apt (0.6.46.5) UNRELEASED; urgency=low
  
    * apt-pkg/algorithm.cc:
      - use clog for all debugging
      - only increase the score of installed applications if they 
        are not obsolete 
+     - fix resolver bug on removal triggered by weak-dependencies 
+       with or-groups
+   * methods/http.cc:
+     - send apt version in User-Agent
+   * apt-pkg/deb/debrecords.cc:
+     - fix SHA1Hash() return value
  
 - -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 18 Dec 2006 19:39:05 +0100
 + -- Michael Vogt <mvo@debian.org>  Thu, 14 Dec 2006 11:31:41 +0100
  
  apt (0.6.46.4) unstable; urgency=high
  
@@@ -70,55 -58,44 +76,55 @@@ apt (0.6.46.3) unstable; urgency=lo
        messages 
  
    * Merged from Christian Perrier bzr branch:
 -     - ca.po: Updated to 514t
 -     - be.po: Updated to 514t
 -     - it.po: Updated to 514t
 -     - hu.po: Updated to 514t
 -     - zh_TW.po: Updated to 514t
 -     - ar.po: Updated to 293t221u.
 -     - ru.po: Updated to 514t. Closes: #392466
 -     - nb.po: Updated to 514t. Closes: #392466
 -     - pt.po: Updated to 514t. Closes: #393199
 -     - fr.po: One spelling error corrected: s/accèder/accéder
 -     - km.po: Updated to 514t.
 -     - ko.po: Updated to 514t.
 -     - bg.po: Updated to 514t.
 -     - de.po: Updated to 514t.
 -     - en_GB.po: Updated to 514t.
 -
 - -- Michael Vogt <mvo@debian.org>  Thu, 2 Nov 2006 11:37:58 +0100 
 +    - ca.po: Updated to 514t
 +    - be.po: Updated to 514t
 +    - it.po: Updated to 514t
 +    - hu.po: Updated to 514t
 +    - zh_TW.po: Updated to 514t
 +    - ar.po: Updated to 293t221u.
 +    - ru.po: Updated to 514t. Closes: #392466
 +    - nb.po: Updated to 514t. Closes: #392466
 +    - pt.po: Updated to 514t. Closes: #393199
 +    - fr.po: One spelling error corrected: s/accèder/accéder
 +    - km.po: Updated to 514t.
 +    - ko.po: Updated to 514t.
 +    - bg.po: Updated to 514t.
 +    - de.po: Updated to 514t.
 +    - en_GB.po: Updated to 514t.
 +
 + -- Michael Vogt <mvo@debian.org>  Thu,  2 Nov 2006 11:37:58 +0100
  
  apt (0.6.46.2) unstable; urgency=low
  
 +  * debian/control:
 +    - depend on debian-archive-keyring to offer clean upgrade path 
 +      (closes: #386800)
    * Merged from Christian Perrier bzr branch:
      - es.po: Updated to 514t. Closes: #391661
      - da.po: Updated to 514t. Closes: #391424
      - cs.po: Updated. Closes: #391064
      - es.po: Updated to 514t. Closes: #391661
      - da.po: Updated to 514t. Closes: #391424
 -  
 +
   -- Michael Vogt <mvo@debian.org>  Wed, 11 Oct 2006 09:03:15 +0200
  
  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:
@@@ -171,7 -148,7 +177,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
  
  
  apt (0.6.44.1) unstable; urgency=low
  
 +  * apt-pkg/acquire-item.cc:
 +    - fix reversed logic of the "Acquire::PDiffs" option
    * merged from 
      http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
      - po/LINGUAS: added "bg" Closes: #360262
      - po/gl.po: Galician translation update. Closes: #366849
      - po/hu.po: Hungarian translation update. Closes: #365448
      - po/cs.po: Czech translation updated. Closes: #367244
 +  * apt-pkg/contrib/sha256.cc:
 +    - applied patch to fix unaligned access problem. Closes: #367417
 +      (thanks to David Mosberger)
  
   -- Michael Vogt <mvo@debian.org>  Tue, 16 May 2006 21:51:16 +0200
  
  apt (0.6.44) unstable; urgency=low
  
    * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large
 +  * apt-pkg/contrib/sha256.{cc,h},hashes.{cc,h}: support for sha256 
 +    (thanks to Anthony Towns)
 +  * ftparchive/cachedb.{cc,h},writer.{cc,h}: optimizations 
 +    (thanks to Anthony Towns)
 +  * apt pdiff support from experimental merged
 +  * apt-pkg/deb/dpkgpm.cc: wording fixes (thanks to Matt Zimmerman)
    * apt-pkg/deb/dpkgpm.cc: 
      - wording fixes (thanks to Matt Zimmerman)
 -    - fix error in dpkg interaction (closes: #364513, 
 -      thanks to Martin Dickopp)
 +    - fix error in dpkg interaction (closes: #364513, thanks to Martin Dickopp)
    * apt-pkg/tagfile.{cc,h}:
      - use MMap to read the entries (thanks to Zephaniah E. Hull for the
        patch) Closes: #350025
@@@ -466,7 -420,7 +472,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
@@@ -566,7 -520,6 +572,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
  
diff --combined methods/http.cc
index 1f3b038bc4a515391ff0feb8ac3ca326733cee1b,06b91686cb75d11cc8cf6beed274a48feb5744e2..5aefd4c1f120047f9ab8ddfac04e0d1fc9f7d330
@@@ -44,6 -44,7 +44,7 @@@
  // Internet stuff
  #include <netdb.h>
  
+ #include "config.h"
  #include "connect.h"
  #include "rfc2553emu.h"
  #include "http.h"
@@@ -58,6 -59,7 +59,6 @@@ unsigned long PipelineDepth = 10
  unsigned long TimeOut = 120;
  bool Debug = false;
  
 -
  unsigned long CircleBuf::BwReadLimit=0;
  unsigned long CircleBuf::BwTickReadData=0;
  struct timeval CircleBuf::BwReadTick={0,0};
@@@ -713,7 -715,7 +714,7 @@@ void HttpMethod::SendReq(FetchItem *Itm
        Req += string("Authorization: Basic ") + 
            Base64Encode(Uri.User + ":" + Uri.Password) + "\r\n";
     
-    Req += "User-Agent: Debian APT-HTTP/1.3\r\n\r\n";
+    Req += "User-Agent: Debian APT-HTTP/1.3 ("VERSION")\r\n\r\n";
     
     if (Debug == true)
        cerr << Req << endl;