~ubuntu-branches/ubuntu/natty/apt/natty

« back to all changes in this revision

Viewing changes to apt-pkg/deb/deblistparser.cc

  • Committer: Bazaar Package Importer
  • Author(s): Michael Vogt
  • Date: 2011-04-05 13:19:56 UTC
  • Revision ID: james.westby@ubuntu.com-20110405131956-u6sgfjr30zvy2fr3
Tags: 0.8.13.2ubuntu1
* merge fixes from debian-sid, most notable the handling of
  arch=all architectures in python-apt (LP: #733741)
* apt-pkg/aptconfiguration.cc:
  - fix comparing for a empty string

Show diffs side-by-side

added added

removed removed

Lines of Context:
106
106
      Ver->MultiArch = pkgCache::Version::None;
107
107
   else if (MultiArch == "same") {
108
108
      // Parse multi-arch
109
 
      if (Section.FindS("Architecture") == "all")
 
109
      if (ArchitectureAll() == true)
110
110
      {
111
111
         /* Arch all packages can't be Multi-Arch: same */
112
112
         _error->Warning("Architecture: all package '%s' can't be Multi-Arch: same",
127
127
      Ver->MultiArch = pkgCache::Version::None;
128
128
   }
129
129
 
 
130
   if (ArchitectureAll() == true)
 
131
      switch (Ver->MultiArch)
 
132
      {
 
133
         case pkgCache::Version::Foreign: Ver->MultiArch = pkgCache::Version::AllForeign; break;
 
134
         case pkgCache::Version::Allowed: Ver->MultiArch = pkgCache::Version::AllAllowed; break;
 
135
         default: Ver->MultiArch = pkgCache::Version::All;
 
136
      }
 
137
 
130
138
   // Archive Size
131
139
   Ver->Size = Section.FindULL("Size");
132
140
   // Unpacked Size (in K)
624
632
 
625
633
   while (1)
626
634
   {
627
 
      Start = ParseDepends(Start,Stop,Package,Version,Op);
 
635
      Start = ParseDepends(Start,Stop,Package,Version,Op,false,!MultiArchEnabled);
628
636
      if (Start == 0)
629
637
         return _error->Error("Problem parsing dependency %s",Tag);
630
638
 
677
685
      }
678
686
   }
679
687
 
680
 
   if (Ver->MultiArch == pkgCache::Version::Allowed)
 
688
   if (MultiArchEnabled == false)
 
689
      return true;
 
690
   else if (Ver->MultiArch == pkgCache::Version::Allowed || Ver->MultiArch == pkgCache::Version::AllAllowed)
681
691
   {
682
692
      string const Package = string(Ver.ParentPkg().Name()).append(":").append("any");
683
 
      NewProvides(Ver, Package, "any", Ver.VerStr());
 
693
      return NewProvidesAllArch(Ver, Package, Ver.VerStr());
684
694
   }
685
 
 
686
 
   if (Ver->MultiArch != pkgCache::Version::Foreign)
687
 
      return true;
688
 
 
689
 
   if (MultiArchEnabled == false)
690
 
      return true;
691
 
 
692
 
   string const Package = Ver.ParentPkg().Name();
693
 
   string const Version = Ver.VerStr();
 
695
   else if (Ver->MultiArch == pkgCache::Version::Foreign || Ver->MultiArch == pkgCache::Version::AllForeign)
 
696
      return NewProvidesAllArch(Ver, Ver.ParentPkg().Name(), Ver.VerStr());
 
697
 
 
698
   return true;
 
699
}
 
700
                                                                        /*}}}*/
 
701
// ListParser::NewProvides - add provides for all architectures         /*{{{*/
 
702
bool debListParser::NewProvidesAllArch(pkgCache::VerIterator &Ver, string const &Package,
 
703
                                string const &Version) {
694
704
   for (std::vector<string>::const_iterator a = Architectures.begin();
695
705
        a != Architectures.end(); ++a)
696
706
   {
697
707
      if (NewProvides(Ver, Package, *a, Version) == false)
698
708
         return false;
699
709
   }
700
 
 
701
710
   return true;
702
711
}
703
712
                                                                        /*}}}*/