diff options
37 files changed, 1279 insertions, 704 deletions
diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h index e3a4435b8..9fe0e8a87 100644 --- a/apt-pkg/acquire.h +++ b/apt-pkg/acquire.h @@ -348,6 +348,8 @@ class pkgAcquire */ bool Setup(pkgAcquireStatus *Progress = NULL, string const &Lock = ""); + void SetLog(pkgAcquireStatus *Progress) { Log = Progress; } + /** \brief Construct a new pkgAcquire. */ pkgAcquire(pkgAcquireStatus *Log) __deprecated; pkgAcquire(); diff --git a/apt-pkg/aptconfiguration.cc b/apt-pkg/aptconfiguration.cc index e8c8e73d0..9ccbeecf1 100644 --- a/apt-pkg/aptconfiguration.cc +++ b/apt-pkg/aptconfiguration.cc @@ -352,7 +352,7 @@ std::vector<std::string> const Configuration::getArchitectures(bool const &Cache if (archs.empty() == true || std::find(archs.begin(), archs.end(), arch) == archs.end()) - archs.push_back(arch); + archs.insert(archs.begin(), arch); // erase duplicates and empty strings for (std::vector<string>::reverse_iterator a = archs.rbegin(); diff --git a/apt-pkg/contrib/configuration.cc b/apt-pkg/contrib/configuration.cc index cc7093fe2..942ea9fbc 100644 --- a/apt-pkg/contrib/configuration.cc +++ b/apt-pkg/contrib/configuration.cc @@ -318,6 +318,19 @@ void Configuration::CndSet(const char *Name,const string &Value) Itm->Value = Value; } /*}}}*/ +// Configuration::Set - Set an integer value /*{{{*/ +// --------------------------------------------------------------------- +/* */ +void Configuration::CndSet(const char *Name,int const Value) +{ + Item *Itm = Lookup(Name,true); + if (Itm == 0 || Itm->Value.empty() == false) + return; + char S[300]; + snprintf(S,sizeof(S),"%i",Value); + Itm->Value = S; +} + /*}}}*/ // Configuration::Set - Set a value /*{{{*/ // --------------------------------------------------------------------- /* */ diff --git a/apt-pkg/contrib/configuration.h b/apt-pkg/contrib/configuration.h index 71e5a0e47..2844ec097 100644 --- a/apt-pkg/contrib/configuration.h +++ b/apt-pkg/contrib/configuration.h @@ -82,6 +82,7 @@ class Configuration inline void Set(const string &Name,const string &Value) {Set(Name.c_str(),Value);}; void CndSet(const char *Name,const string &Value); + void CndSet(const char *Name,const int Value); void Set(const char *Name,const string &Value); void Set(const char *Name,const int &Value); diff --git a/apt-pkg/contrib/sha1.cc b/apt-pkg/contrib/sha1.cc index eae52d52f..abc2aaf9f 100644 --- a/apt-pkg/contrib/sha1.cc +++ b/apt-pkg/contrib/sha1.cc @@ -74,10 +74,9 @@ static void SHA1Transform(uint32_t state[5],uint8_t const buffer[64]) uint32_t l[16]; } CHAR64LONG16; - CHAR64LONG16 *block; + CHAR64LONG16 workspace, *block; - uint8_t workspace[64]; - block = (CHAR64LONG16 *)workspace; + block = &workspace; memcpy(block,buffer,sizeof(workspace)); /* Copy context->state[] to working vars */ diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 9ae1065a4..651fa2a81 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -461,7 +461,7 @@ const char *debListParser::ConvertRelation(const char *I,unsigned int &Op) * * The complete architecture, consisting of <kernel>-<cpu>. */ -static string CompleteArch(std::string& arch) { +static string CompleteArch(std::string const &arch) { if (arch == "armel") return "linux-arm"; if (arch == "armhf") return "linux-arm"; if (arch == "lpia") return "linux-i386"; @@ -500,9 +500,13 @@ const char *debListParser::ParseDepends(const char *Start,const char *Stop, Package.assign(Start,I - Start); // We don't want to confuse library users which can't handle MultiArch + string const arch = _config->Find("APT::Architecture"); if (StripMultiArch == true) { size_t const found = Package.rfind(':'); - if (found != string::npos) + if (found != string::npos && + (strcmp(Package.c_str() + found, ":any") == 0 || + strcmp(Package.c_str() + found, ":native") == 0 || + strcmp(Package.c_str() + found + 1, arch.c_str()) == 0)) Package = Package.substr(0,found); } @@ -543,7 +547,6 @@ const char *debListParser::ParseDepends(const char *Start,const char *Stop, if (ParseArchFlags == true) { - string arch = _config->Find("APT::Architecture"); string completeArch = CompleteArch(arch); // Parse an architecture diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index e9fa097aa..eb3f4e598 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -1593,7 +1593,7 @@ bool pkgDepCache::MarkFollowsRecommends() bool pkgDepCache::MarkFollowsSuggests() { - return _config->FindB("APT::AutoRemove::SuggestsImportant", false); + return _config->FindB("APT::AutoRemove::SuggestsImportant", true); } // pkgDepCache::MarkRequired - the main mark algorithm /*{{{*/ diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc index 31b2d9ccd..38a0814e5 100644 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@ -33,60 +33,64 @@ const char *pkgLibVersion = Stringfy(APT_PKG_MAJOR) "." bool pkgInitConfig(Configuration &Cnf) { // General APT things - Cnf.Set("APT::Architecture", COMMON_ARCH); - Cnf.Set("APT::Build-Essential::", "build-essential"); - Cnf.Set("APT::Install-Recommends", true); - Cnf.Set("APT::Install-Suggests", false); - Cnf.Set("Dir","/"); + Cnf.CndSet("APT::Architecture", COMMON_ARCH); + if (Cnf.Exists("APT::Build-Essential") == false) + Cnf.Set("APT::Build-Essential::", "build-essential"); + Cnf.CndSet("APT::Install-Recommends", true); + Cnf.CndSet("APT::Install-Suggests", false); + Cnf.CndSet("Dir","/"); // State - Cnf.Set("Dir::State","var/lib/apt/"); + Cnf.CndSet("Dir::State","var/lib/apt/"); /* Just in case something goes horribly wrong, we can fall back to the old /var/state paths.. */ struct stat St; if (stat("/var/lib/apt/.",&St) != 0 && stat("/var/state/apt/.",&St) == 0) - Cnf.Set("Dir::State","var/state/apt/"); + Cnf.CndSet("Dir::State","var/state/apt/"); - Cnf.Set("Dir::State::lists","lists/"); - Cnf.Set("Dir::State::cdroms","cdroms.list"); - Cnf.Set("Dir::State::mirrors","mirrors/"); + Cnf.CndSet("Dir::State::lists","lists/"); + Cnf.CndSet("Dir::State::cdroms","cdroms.list"); + Cnf.CndSet("Dir::State::mirrors","mirrors/"); // Cache - Cnf.Set("Dir::Cache","var/cache/apt/"); - Cnf.Set("Dir::Cache::archives","archives/"); - Cnf.Set("Dir::Cache::srcpkgcache","srcpkgcache.bin"); - Cnf.Set("Dir::Cache::pkgcache","pkgcache.bin"); + Cnf.CndSet("Dir::Cache","var/cache/apt/"); + Cnf.CndSet("Dir::Cache::archives","archives/"); + Cnf.CndSet("Dir::Cache::srcpkgcache","srcpkgcache.bin"); + Cnf.CndSet("Dir::Cache::pkgcache","pkgcache.bin"); // Configuration - Cnf.Set("Dir::Etc","etc/apt/"); - Cnf.Set("Dir::Etc::sourcelist","sources.list"); - Cnf.Set("Dir::Etc::sourceparts","sources.list.d"); - Cnf.Set("Dir::Etc::vendorlist","vendors.list"); - Cnf.Set("Dir::Etc::vendorparts","vendors.list.d"); - Cnf.Set("Dir::Etc::main","apt.conf"); - Cnf.Set("Dir::Etc::netrc", "auth.conf"); - Cnf.Set("Dir::Etc::parts","apt.conf.d"); - Cnf.Set("Dir::Etc::preferences","preferences"); - Cnf.Set("Dir::Etc::preferencesparts","preferences.d"); - Cnf.Set("Dir::Etc::trusted", "trusted.gpg"); - Cnf.Set("Dir::Etc::trustedparts","trusted.gpg.d"); - Cnf.Set("Dir::Bin::methods","/usr/lib/apt/methods"); - Cnf.Set("Dir::Media::MountPath","/media/apt"); + Cnf.CndSet("Dir::Etc","etc/apt/"); + Cnf.CndSet("Dir::Etc::sourcelist","sources.list"); + Cnf.CndSet("Dir::Etc::sourceparts","sources.list.d"); + Cnf.CndSet("Dir::Etc::vendorlist","vendors.list"); + Cnf.CndSet("Dir::Etc::vendorparts","vendors.list.d"); + Cnf.CndSet("Dir::Etc::main","apt.conf"); + Cnf.CndSet("Dir::Etc::netrc", "auth.conf"); + Cnf.CndSet("Dir::Etc::parts","apt.conf.d"); + Cnf.CndSet("Dir::Etc::preferences","preferences"); + Cnf.CndSet("Dir::Etc::preferencesparts","preferences.d"); + Cnf.CndSet("Dir::Etc::trusted", "trusted.gpg"); + Cnf.CndSet("Dir::Etc::trustedparts","trusted.gpg.d"); + Cnf.CndSet("Dir::Bin::methods","/usr/lib/apt/methods"); + Cnf.CndSet("Dir::Media::MountPath","/media/apt"); // State - Cnf.Set("Dir::Log","var/log/apt"); - Cnf.Set("Dir::Log::Terminal","term.log"); - Cnf.Set("Dir::Log::History","history.log"); + Cnf.CndSet("Dir::Log","var/log/apt"); + Cnf.CndSet("Dir::Log::Terminal","term.log"); + Cnf.CndSet("Dir::Log::History","history.log"); - Cnf.Set("Dir::Ignore-Files-Silently::", "~$"); - Cnf.Set("Dir::Ignore-Files-Silently::", "\\.disabled$"); - Cnf.Set("Dir::Ignore-Files-Silently::", "\\.bak$"); - Cnf.Set("Dir::Ignore-Files-Silently::", "\\.dpkg-[a-z]+$"); + if (Cnf.Exists("Dir::Ignore-Files-Silently") == false) + { + Cnf.Set("Dir::Ignore-Files-Silently::", "~$"); + Cnf.Set("Dir::Ignore-Files-Silently::", "\\.disabled$"); + Cnf.Set("Dir::Ignore-Files-Silently::", "\\.bak$"); + Cnf.Set("Dir::Ignore-Files-Silently::", "\\.dpkg-[a-z]+$"); + } // Default cdrom mount point - Cnf.Set("Acquire::cdrom::mount", "/media/cdrom/"); + Cnf.CndSet("Acquire::cdrom::mount", "/media/cdrom/"); bool Res = true; diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index 9820fde81..8f9737e26 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -1169,16 +1169,32 @@ bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress SPtr<DynamicMMap> Map; if (Writeable == true && CacheFile.empty() == false) { + _error->PushToStack(); unlink(CacheFile.c_str()); CacheF = new FileFd(CacheFile,FileFd::WriteAtomic); fchmod(CacheF->Fd(),0644); Map = CreateDynamicMMap(CacheF, MMap::Public); if (_error->PendingError() == true) - return false; - if (Debug == true) + { + delete CacheF.UnGuard(); + delete Map.UnGuard(); + if (Debug == true) + std::clog << "Open filebased MMap FAILED" << std::endl; + Writeable = false; + if (AllowMem == false) + { + _error->MergeWithStack(); + return false; + } + _error->RevertToStack(); + } + else if (Debug == true) + { + _error->MergeWithStack(); std::clog << "Open filebased MMap" << std::endl; + } } - else + if (Writeable == false || CacheFile.empty() == true) { // Just build it in memory.. Map = CreateDynamicMMap(NULL); diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc index bd213e0ce..c5028d822 100644 --- a/apt-pkg/policy.cc +++ b/apt-pkg/policy.cc @@ -56,8 +56,22 @@ pkgPolicy::pkgPolicy(pkgCache *Owner) : Pins(0), PFPriority(0), Cache(Owner) // The config file has a master override. string DefRel = _config->Find("APT::Default-Release"); if (DefRel.empty() == false) - CreatePin(pkgVersionMatch::Release,"",DefRel,990); - + { + bool found = false; + // FIXME: make ExpressionMatches static to use it here easily + pkgVersionMatch vm("", pkgVersionMatch::None); + for (pkgCache::PkgFileIterator F = Cache->FileBegin(); F != Cache->FileEnd(); ++F) + { + if ((F->Archive != 0 && vm.ExpressionMatches(DefRel, F.Archive()) == true) || + (F->Codename != 0 && vm.ExpressionMatches(DefRel, F.Codename()) == true) || + (F->Version != 0 && vm.ExpressionMatches(DefRel, F.Version()) == true)) + found = true; + } + if (found == false) + _error->Error(_("The value '%s' is invalid for APT::Default-Release as such a release is not available in the sources"), DefRel.c_str()); + else + CreatePin(pkgVersionMatch::Release,"",DefRel,990); + } InitDefaults(); } /*}}}*/ diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 3f818ffc3..9de341df0 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1388,6 +1388,14 @@ bool TryToInstallBuildDep(pkgCache::PkgIterator Pkg,pkgCacheFile &Cache, return AllowFail; } + if (_config->FindB("Debug::BuildDeps",false) == true) + { + if (Remove == true) + cout << " Trying to remove " << Pkg << endl; + else + cout << " Trying to install " << Pkg << endl; + } + if (Remove == true) { TryToRemove RemoveAction(Cache, &Fix); @@ -1697,7 +1705,7 @@ bool DoAutomaticRemove(CacheFile &Cache) // we could have removed a new dependency of a garbage package, // so check if a reverse depends is broken and if so install it again. - if (tooMuch.empty() == false && Cache->BrokenCount() != 0) + if (tooMuch.empty() == false && (Cache->BrokenCount() != 0 || Cache->PolicyBrokenCount() != 0)) { bool Changed; do { @@ -1708,8 +1716,8 @@ bool DoAutomaticRemove(CacheFile &Cache) for (pkgCache::DepIterator R = P.RevDependsList(); R.end() == false; ++R) { - if (R->Type != pkgCache::Dep::Depends && - R->Type != pkgCache::Dep::PreDepends) + if (R.IsNegative() == true || + Cache->IsImportantDep(R) == false) continue; pkgCache::PkgIterator N = R.ParentPkg(); if (N.end() == true || (N->CurrentVer == 0 && (*Cache)[N].Install() == false)) @@ -2366,8 +2374,7 @@ bool DoSource(CommandLine &CmdL) // Create the download object AcqTextStatus Stat(ScreenWidth,_config->FindI("quiet",0)); pkgAcquire Fetcher; - if (Fetcher.Setup(&Stat) == false) - return false; + Fetcher.SetLog(&Stat); DscFile *Dsc = new DscFile[CmdL.FileSize()]; @@ -2613,12 +2620,17 @@ bool DoSource(CommandLine &CmdL) // Try to compile it with dpkg-buildpackage if (_config->FindB("APT::Get::Compile",false) == true) { + string buildopts = _config->Find("APT::Get::Host-Architecture"); + if (buildopts.empty() == false) + buildopts = "-a " + buildopts + " "; + buildopts.append(_config->Find("DPkg::Build-Options","-b -uc")); + // Call dpkg-buildpackage char S[500]; snprintf(S,sizeof(S),"cd %s && %s %s", Dir.c_str(), _config->Find("Dir::Bin::dpkg-buildpackage","dpkg-buildpackage").c_str(), - _config->Find("DPkg::Build-Options","-b -uc").c_str()); + buildopts.c_str()); if (system(S) != 0) { @@ -2680,8 +2692,19 @@ bool DoBuildDep(CommandLine &CmdL) if (Fetcher.Setup(&Stat) == false) return false; + bool StripMultiArch; + string hostArch = _config->Find("APT::Get::Host-Architecture"); + if (hostArch.empty() == false) + { + std::vector<std::string> archs = APT::Configuration::getArchitectures(); + if (std::find(archs.begin(), archs.end(), hostArch) == archs.end()) + return _error->Error(_("No architecture information available for %s. See apt.conf(5) APT::Architectures for setup"), hostArch.c_str()); + StripMultiArch = false; + } + else + StripMultiArch = true; + unsigned J = 0; - bool const StripMultiArch = APT::Configuration::getArchitectures().size() <= 1; for (const char **I = CmdL.FileList + 1; *I != 0; I++, J++) { string Src; @@ -2715,7 +2738,7 @@ bool DoBuildDep(CommandLine &CmdL) ioprintf(c1out,_("%s has no build depends.\n"),Src.c_str()); continue; } - + // Install the requested packages vector <pkgSrcRecords::Parser::BuildDepRec>::iterator D; pkgProblemResolver Fix(Cache); @@ -2726,6 +2749,16 @@ bool DoBuildDep(CommandLine &CmdL) if (skipAlternatives == true) { + /* + * if there are alternatives, we've already picked one, so skip + * the rest + * + * TODO: this means that if there's a build-dep on A|B and B is + * installed, we'll still try to install A; more importantly, + * if A is currently broken, we cannot go back and try B. To fix + * this would require we do a Resolve cycle for each package we + * add to the install list. Ugh + */ if (!hasAlternatives) skipAlternatives = false; // end of or group continue; @@ -2734,27 +2767,117 @@ bool DoBuildDep(CommandLine &CmdL) if ((*D).Type == pkgSrcRecords::Parser::BuildConflict || (*D).Type == pkgSrcRecords::Parser::BuildConflictIndep) { - pkgCache::PkgIterator Pkg = Cache->FindPkg((*D).Package); + pkgCache::GrpIterator Grp = Cache->FindGrp((*D).Package); // Build-conflicts on unknown packages are silently ignored - if (Pkg.end() == true) + if (Grp.end() == true) continue; - pkgCache::VerIterator IV = (*Cache)[Pkg].InstVerIter(*Cache); - - /* - * Remove if we have an installed version that satisfies the - * version criteria - */ - if (IV.end() == false && - Cache->VS().CheckDep(IV.VerStr(),(*D).Op,(*D).Version.c_str()) == true) - TryToInstallBuildDep(Pkg,Cache,Fix,true,false); + for (pkgCache::PkgIterator Pkg = Grp.PackageList(); Pkg.end() == false; Pkg = Grp.NextPkg(Pkg)) + { + pkgCache::VerIterator IV = (*Cache)[Pkg].InstVerIter(*Cache); + /* + * Remove if we have an installed version that satisfies the + * version criteria + */ + if (IV.end() == false && + Cache->VS().CheckDep(IV.VerStr(),(*D).Op,(*D).Version.c_str()) == true) + TryToInstallBuildDep(Pkg,Cache,Fix,true,false); + } } else // BuildDep || BuildDepIndep { - pkgCache::PkgIterator Pkg = Cache->FindPkg((*D).Package); if (_config->FindB("Debug::BuildDeps",false) == true) cout << "Looking for " << (*D).Package << "...\n"; + pkgCache::PkgIterator Pkg; + + // Cross-Building? + if (StripMultiArch == false) + { + size_t const colon = D->Package.find(":"); + if (colon != string::npos && + (strcmp(D->Package.c_str() + colon, ":any") == 0 || strcmp(D->Package.c_str() + colon, ":native") == 0)) + Pkg = Cache->FindPkg(D->Package.substr(0,colon)); + else + Pkg = Cache->FindPkg(D->Package); + + // We need to decide if host or build arch, so find a version we can look at + pkgCache::VerIterator Ver; + + // a bad version either is invalid or doesn't satify dependency + #define BADVER(Ver) Ver.end() == true || \ + (Ver.end() == false && D->Version.empty() == false && \ + Cache->VS().CheckDep(Ver.VerStr(),D->Op,D->Version.c_str()) == false) + + if (Pkg.end() == false) + { + Ver = (*Cache)[Pkg].InstVerIter(*Cache); + if (BADVER(Ver)) + Ver = (*Cache)[Pkg].CandidateVerIter(*Cache); + } + if (BADVER(Ver)) + { + pkgCache::PkgIterator HostPkg = Cache->FindPkg(D->Package, hostArch); + if (HostPkg.end() == false) + { + Ver = (*Cache)[HostPkg].InstVerIter(*Cache); + if (BADVER(Ver)) + Ver = (*Cache)[HostPkg].CandidateVerIter(*Cache); + } + } + if ((BADVER(Ver)) == false) + { + string forbidden; + if (Ver->MultiArch == pkgCache::Version::None || Ver->MultiArch == pkgCache::Version::All); + else if (Ver->MultiArch == pkgCache::Version::Same) + { + if (colon != string::npos) + Pkg = Ver.ParentPkg().Group().FindPkg(hostArch); + else if (strcmp(D->Package.c_str() + colon, ":any") == 0) + forbidden = "Multi-Arch: same"; + // :native gets the buildArch + } + else if (Ver->MultiArch == pkgCache::Version::Foreign || Ver->MultiArch == pkgCache::Version::AllForeign) + { + if (colon != string::npos) + forbidden = "Multi-Arch: foreign"; + } + else if (Ver->MultiArch == pkgCache::Version::Allowed || Ver->MultiArch == pkgCache::Version::AllAllowed) + { + if (colon == string::npos) + Pkg = Ver.ParentPkg().Group().FindPkg(hostArch); + else if (strcmp(D->Package.c_str() + colon, ":any") == 0) + { + // prefer any installed over preferred non-installed architectures + pkgCache::GrpIterator Grp = Ver.ParentPkg().Group(); + // we don't check for version here as we are better of with upgrading than remove and install + for (Pkg = Grp.PackageList(); Pkg.end() == false; Pkg = Grp.NextPkg(Pkg)) + if (Pkg.CurrentVer().end() == false) + break; + if (Pkg.end() == true) + Pkg = Grp.FindPreferredPkg(true); + } + // native gets buildArch + } + if (forbidden.empty() == false) + { + if (_config->FindB("Debug::BuildDeps",false) == true) + cout << " :any is not allowed from M-A: same package " << (*D).Package << endl; + if (hasAlternatives) + continue; + return _error->Error(_("%s dependency for %s can't be satisfied " + "because %s is not allowed on '%s' packages"), + Last->BuildDepType(D->Type), Src.c_str(), + D->Package.c_str(), "Multi-Arch: same"); + } + } + else if (_config->FindB("Debug::BuildDeps",false) == true) + cout << " No multiarch info as we have no satisfying installed nor candidate for " << D->Package << " on build or host arch" << endl; + #undef BADVER + } + else + Pkg = Cache->FindPkg(D->Package); + if (Pkg.end() == true) { if (_config->FindB("Debug::BuildDeps",false) == true) @@ -2769,99 +2892,74 @@ bool DoBuildDep(CommandLine &CmdL) (*D).Package.c_str()); } - /* - * if there are alternatives, we've already picked one, so skip - * the rest - * - * TODO: this means that if there's a build-dep on A|B and B is - * installed, we'll still try to install A; more importantly, - * if A is currently broken, we cannot go back and try B. To fix - * this would require we do a Resolve cycle for each package we - * add to the install list. Ugh - */ - - /* - * If this is a virtual package, we need to check the list of - * packages that provide it and see if any of those are - * installed - */ - pkgCache::PrvIterator Prv = Pkg.ProvidesList(); - for (; Prv.end() != true; Prv++) - { - if (_config->FindB("Debug::BuildDeps",false) == true) - cout << " Checking provider " << Prv.OwnerPkg().FullName() << endl; - - if ((*Cache)[Prv.OwnerPkg()].InstVerIter(*Cache).end() == false) - break; - } - - // Get installed version and version we are going to install pkgCache::VerIterator IV = (*Cache)[Pkg].InstVerIter(*Cache); + if (IV.end() == false) + { + if (_config->FindB("Debug::BuildDeps",false) == true) + cout << " Is installed\n"; - if ((*D).Version[0] != '\0') { - // Versioned dependency - - pkgCache::VerIterator CV = (*Cache)[Pkg].CandidateVerIter(*Cache); - - for (; CV.end() != true; CV++) - { - if (Cache->VS().CheckDep(CV.VerStr(),(*D).Op,(*D).Version.c_str()) == true) - break; - } - if (CV.end() == true) - { - if (hasAlternatives) - { - continue; - } - else - { - return _error->Error(_("%s dependency for %s cannot be satisfied " - "because no available versions of package %s " - "can satisfy version requirements"), - Last->BuildDepType((*D).Type),Src.c_str(), - (*D).Package.c_str()); - } - } - } - else - { - // Only consider virtual packages if there is no versioned dependency - if (Prv.end() == false) - { - if (_config->FindB("Debug::BuildDeps",false) == true) - cout << " Is provided by installed package " << Prv.OwnerPkg().FullName() << endl; - skipAlternatives = hasAlternatives; - continue; - } - } + if (D->Version.empty() == true || + Cache->VS().CheckDep(IV.VerStr(),(*D).Op,(*D).Version.c_str()) == true) + { + skipAlternatives = hasAlternatives; + continue; + } - if (IV.end() == false) - { - if (_config->FindB("Debug::BuildDeps",false) == true) - cout << " Is installed\n"; + if (_config->FindB("Debug::BuildDeps",false) == true) + cout << " ...but the installed version doesn't meet the version requirement\n"; - if (Cache->VS().CheckDep(IV.VerStr(),(*D).Op,(*D).Version.c_str()) == true) - { - skipAlternatives = hasAlternatives; - continue; - } + if (((*D).Op & pkgCache::Dep::LessEq) == pkgCache::Dep::LessEq) + return _error->Error(_("Failed to satisfy %s dependency for %s: Installed package %s is too new"), + Last->BuildDepType((*D).Type), Src.c_str(), Pkg.FullName(true).c_str()); + } - if (_config->FindB("Debug::BuildDeps",false) == true) - cout << " ...but the installed version doesn't meet the version requirement\n"; - - if (((*D).Op & pkgCache::Dep::LessEq) == pkgCache::Dep::LessEq) - { - return _error->Error(_("Failed to satisfy %s dependency for %s: Installed package %s is too new"), - Last->BuildDepType((*D).Type), - Src.c_str(), - Pkg.FullName(true).c_str()); - } - } + // Only consider virtual packages if there is no versioned dependency + if ((*D).Version.empty() == true) + { + /* + * If this is a virtual package, we need to check the list of + * packages that provide it and see if any of those are + * installed + */ + pkgCache::PrvIterator Prv = Pkg.ProvidesList(); + for (; Prv.end() != true; Prv++) + { + if (_config->FindB("Debug::BuildDeps",false) == true) + cout << " Checking provider " << Prv.OwnerPkg().FullName() << endl; + if ((*Cache)[Prv.OwnerPkg()].InstVerIter(*Cache).end() == false) + break; + } - if (_config->FindB("Debug::BuildDeps",false) == true) - cout << " Trying to install " << (*D).Package << endl; + if (Prv.end() == false) + { + if (_config->FindB("Debug::BuildDeps",false) == true) + cout << " Is provided by installed package " << Prv.OwnerPkg().FullName() << endl; + skipAlternatives = hasAlternatives; + continue; + } + } + else // versioned dependency + { + pkgCache::VerIterator CV = (*Cache)[Pkg].CandidateVerIter(*Cache); + if (CV.end() == true || + Cache->VS().CheckDep(CV.VerStr(),(*D).Op,(*D).Version.c_str()) == false) + { + if (hasAlternatives) + continue; + else if (CV.end() == false) + return _error->Error(_("%s dependency for %s cannot be satisfied " + "because candidate version of package %s " + "can't satisfy version requirements"), + Last->BuildDepType(D->Type), Src.c_str(), + D->Package.c_str()); + else + return _error->Error(_("%s dependency for %s cannot be satisfied " + "because package %s has no candidate version"), + Last->BuildDepType(D->Type), Src.c_str(), + D->Package.c_str()); + } + } if (TryToInstallBuildDep(Pkg,Cache,Fix,false,false) == true) { @@ -3247,6 +3345,7 @@ int main(int argc,const char *argv[]) /*{{{*/ {'m',"ignore-missing","APT::Get::Fix-Missing",0}, {'t',"target-release","APT::Default-Release",CommandLine::HasArg}, {'t',"default-release","APT::Default-Release",CommandLine::HasArg}, + {'a',"host-architecture","APT::Get::Host-Architecture",CommandLine::HasArg}, {0,"download","APT::Get::Download",0}, {0,"fix-missing","APT::Get::Fix-Missing",0}, {0,"ignore-hold","APT::Ignore-Hold",0}, diff --git a/cmdline/apt-key b/cmdline/apt-key index 843163f82..e632be706 100755 --- a/cmdline/apt-key +++ b/cmdline/apt-key @@ -5,9 +5,12 @@ unset GREP_OPTIONS # We don't use a secret keyring, of course, but gpg panics and # implodes if there isn't one available -GPG_CMD='gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg' +SECRETKEYRING="$(mktemp)" +trap "rm -f '${SECRETKEYRING}'" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM +GPG_CMD="gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring ${SECRETKEYRING}" if [ "$(id -u)" -eq 0 ]; then + # we could use a tmpfile here too, but creation of this tends to be time-consuming GPG_CMD="$GPG_CMD --trustdb-name /etc/apt/trustdb.gpg" fi diff --git a/debian/apt.postinst b/debian/apt.postinst index cc0d8b1fe..4d87c4e25 100644 --- a/debian/apt.postinst +++ b/debian/apt.postinst @@ -15,6 +15,11 @@ set -e case "$1" in configure) + SECRING='/etc/apt/secring.gpg' + # test if secring is an empty normal file + if test -f $SECRING -a ! -s $SECRING; then + rm -f $SECRING + fi apt-key update ;; diff --git a/debian/apt.symbols b/debian/apt.symbols index 04e13edd7..932fb1411 100644 --- a/debian/apt.symbols +++ b/debian/apt.symbols @@ -1256,7 +1256,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (arch=hppa mips mipsel sparc|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@Base" 0.8.11.4 1 (arch=ia64 sparc64|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@Base" 0.8.11.4 1 (arch=sh4|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@Base" 0.8.11.4 1 - (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@Base" 0.8.11.4 1 (arch=armel armhf|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@Base" 0.8.11.4 1 (arch=alpha|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@Base" 0.8.11.4 1 diff --git a/debian/changelog b/debian/changelog index 0f8035a78..6c2d21754 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,15 +1,70 @@ -apt (0.8.15.2) unstable; urgency=high +apt (0.8.15.4) UNRELEASEDunstable; urgency=low - * fix from David Kalnischkies for the InRelease gpg verification - code (LP: #784473) - * cmdline/apt-get.cc: - - fix missing download progress in apt-get download + [ David Miller ] + * apt-pkg/contrib/sha1.cc: + - fix illegally casts of on-stack buffer to a type requiring more + alignment than it has resulting in segfaults on sparc (Closes: #634696) + + [ Michael Vogt ] * apt-pkg/contrib/cdromutl.cc: - fix escape problem when looking for the mounted devices * apt-pkg/contrib/strutl.{h,cc}, test/libapt/strutil_test.cc: - add new DeEscapeString() similar to DeQuoteString but unescape character escapes like \0XX and \xXX (plus added test) + + -- Michael Vogt <mvo@debian.org> Tue, 26 Jul 2011 11:58:27 +0200 + +apt (0.8.15.3) unstable; urgency=low + + [ Michael Vogt ] + * apt-pkg/acquire-item.cc: + - improve error message for a expired Release file + * apt-pkg/algorithms.cc: + - Hold back packages that would enter "policy-broken" state on upgrade + when doing a "apt-get upgrade" + * cmdline/apt-get.cc: + - fix missing download progress in apt-get download + + [ David Kalnischkies ] + * apt-pkg/pkgcachegen.cc: + - fallback to memory if file is not writeable even if access() + told us the opposite before (e.g. in fakeroot 1.16) (Closes: #630591) + * doc/sources.list.5.xml: + - document available [options] for sources.list entries (Closes: 632441) + * doc/apt.conf.5.xml: + - document APT::Architectures list (Closes: #612102) + * cmdline/apt-get.cc: + - restore all important dependencies for garbage packages (LP: #806274) + - do not require unused partial dirs in 'source' (Closes: #633510) + - buildconflicts effect all architectures + - implement MultiarchCross for build-dep and source (Closes: #632221) + * apt-pkg/init.cc: + - use CndSet in pkgInitConfig (Closes: #629617) + * apt-pkg/depcache.cc: + - change default of APT::AutoRemove::SuggestsImportant to true + * cmdline/apt-key: + - use a tmpfile instead of /etc/apt/secring.gpg (Closes: #632596) + * debian/apt.postinst: + - remove /etc/apt/secring.gpg if it is an empty file + * doc/apt-cache.8.xml: + - apply madison typofix from John Feuerstein, thanks! (Closes: #633455) + * apt-pkg/policy.cc: + - emit an error on unknown APT::Default-Release value (Closes: #407511) + * apt-pkg/aptconfiguration.cc: + - ensure that native architecture is if not specified otherwise the + first architecture in the Architectures vector + * apt-pkg/deb/deblistparser.cc: + - Strip only :any and :native if MultiArch should be stripped as it is + save to ignore them in non-MultiArch contexts but if the dependency + is a specific architecture (and not the native) do not strip + + -- Michael Vogt <mvo@debian.org> Mon, 25 Jul 2011 15:04:43 +0200 + +apt (0.8.15.2) unstable; urgency=high + + * fix from David Kalnischkies for the InRelease gpg verification + code (LP: #784473) -- Michael Vogt <mvo@debian.org> Tue, 12 Jul 2011 11:54:47 +0200 diff --git a/debian/rules b/debian/rules index 0544b2b8e..640900678 100755 --- a/debian/rules +++ b/debian/rules @@ -120,9 +120,6 @@ libapt-pkg-doc: build-doc # # libapt-pkg-doc install # - # remove doxygen's embedded jquery as we don't use it anyway (#622147) - rm -f $(BLD)/doc/doxygen/html/jquery.js - dh_installdocs -p$@ $(BLD)/docs/design* \ $(BLD)/docs/dpkg-tech* \ $(BLD)/docs/files* \ diff --git a/doc/apt-cache.8.xml b/doc/apt-cache.8.xml index 431ef8704..1393de015 100644 --- a/doc/apt-cache.8.xml +++ b/doc/apt-cache.8.xml @@ -263,7 +263,7 @@ Reverse Provides: about the priority selection of the named package.</para></listitem> </varlistentry> - <varlistentry><term>madison <replaceable>/[ pkg(s) ]</replaceable></term> + <varlistentry><term>madison <replaceable>[ pkg(s) ]</replaceable></term> <listitem><para><literal>apt-cache</literal>'s <literal>madison</literal> command attempts to mimic the output format and a subset of the functionality of the Debian archive management tool, <literal>madison</literal>. It displays diff --git a/doc/apt-get.8.xml b/doc/apt-get.8.xml index 11b53e5e7..9d901b492 100644 --- a/doc/apt-get.8.xml +++ b/doc/apt-get.8.xml @@ -54,6 +54,13 @@ <replaceable>target_release</replaceable> </arg> </arg> + <arg> + <option>-a=</option> + <arg choice='plain'> + <replaceable>default_architecture</replaceable> + </arg> + </arg> + <group choice="req"> <arg choice='plain'>update</arg> @@ -254,8 +261,10 @@ <para>If the <option>--compile</option> option is specified then the package will be compiled to a binary .deb using - <command>dpkg-buildpackage</command>, if <option>--download-only</option> - is specified then the source package will not be unpacked.</para> + <command>dpkg-buildpackage</command> for the architecture as + defined by the <command>--host-architecture</command> option. + If <option>--download-only</option> is specified then the source package + will not be unpacked.</para> <para>A specific source version can be retrieved by postfixing the source name with an equals and then the version to fetch, similar to the mechanism @@ -270,7 +279,9 @@ <varlistentry><term>build-dep</term> <listitem><para><literal>build-dep</literal> causes apt-get to install/remove packages in an - attempt to satisfy the build dependencies for a source package.</para></listitem> + attempt to satisfy the build dependencies for a source package. By default the dependencies are + satisfied to build the package nativly. If desired a host-architecture can be specified + with the <option>--host-architecture</option> option instead.</para></listitem> </varlistentry> <varlistentry><term>check</term> @@ -433,6 +444,16 @@ Configuration Item: <literal>APT::Get::Show-Versions</literal>.</para></listitem> </varlistentry> + <varlistentry><term><option>-a</option></term> + <term><option>--host-architecture</option></term> + <listitem><para>This option controls the architecture packages are built for + by <command>apt-get source --compile</command> and how cross-builddependencies + are satisfied. By default is not set which means that the host architecture + is the same as the build architecture (which is defined by <literal>APT::Architecture</literal>) + Configuration Item: <literal>APT::Get::Host-Architecture</literal> + </para></listitem> + </varlistentry> + <varlistentry><term><option>-b</option></term><term><option>--compile</option></term> <term><option>--build</option></term> <listitem><para>Compile source packages after downloading them. diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml index 02de89f3b..2634c47a9 100644 --- a/doc/apt.conf.5.xml +++ b/doc/apt.conf.5.xml @@ -153,7 +153,15 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";}; parsing package lists. The internal default is the architecture apt was compiled for.</para></listitem> </varlistentry> - + + <varlistentry><term>Architectures</term> + <listitem><para>All Architectures the system supports. Processors implementing the <literal>amd64</literal> + are e.g. also able to execute binaries compiled for <literal>i386</literal>; This list is use when fetching files and + parsing package lists. The internal default is always the native architecture (<literal>APT::Architecture</literal>) + and all foreign architectures it can retrieve by calling <command>dpkg --print-foreign-architectures</command>. + </para></listitem> + </varlistentry> + <varlistentry><term>Default-Release</term> <listitem><para>Default release to install packages from if more than one version available. Contains release name, codename or release version. Examples: 'stable', 'testing', diff --git a/doc/examples/configure-index b/doc/examples/configure-index index 6884e06e3..49e803f91 100644 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@ -23,6 +23,7 @@ quiet::NoUpdate "true"; // never update progress information - included in -q=1 APT { Architecture "i386"; + Architectures { "amd64"; "armel"; }; Build-Essential "build-essential"; NeverAutoRemove { "linux-image.*"; }; // packages that should never @@ -31,6 +32,7 @@ APT // Options for apt-get Get { + Host-Architecture "armel"; Arch-Only "false"; AllowUnauthenticated "false"; AutomaticRemove "false"; diff --git a/doc/po/apt-doc.pot b/doc/po/apt-doc.pot index 47a7c38d7..2a4eef558 100644 --- a/doc/po/apt-doc.pot +++ b/doc/po/apt-doc.pot @@ -928,7 +928,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:266 -msgid "madison <replaceable>/[ pkg(s) ]</replaceable>" +msgid "madison <replaceable>[ pkg(s) ]</replaceable>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> diff --git a/doc/po/de.po b/doc/po/de.po index dc4d34b81..196305bf9 100644 --- a/doc/po/de.po +++ b/doc/po/de.po @@ -1230,8 +1230,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:266 -msgid "madison <replaceable>/[ pkg(s) ]</replaceable>" -msgstr "madison <replaceable>/[ Paket(e) ]</replaceable>" +msgid "madison <replaceable>[ pkg(s) ]</replaceable>" +msgstr "madison <replaceable>[ Paket(e) ]</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml:267 diff --git a/doc/po/es.po b/doc/po/es.po index c8fdc9fed..ad7d02109 100644 --- a/doc/po/es.po +++ b/doc/po/es.po @@ -1303,7 +1303,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:266 -msgid "madison <replaceable>/[ pkg(s) ]</replaceable>" +msgid "madison <replaceable>[ pkg(s) ]</replaceable>" msgstr "madison <replaceable>[ paquete(s) ]</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> diff --git a/doc/po/fr.po b/doc/po/fr.po index 6e3977c43..f5273f639 100644 --- a/doc/po/fr.po +++ b/doc/po/fr.po @@ -1225,7 +1225,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:266 -msgid "madison <replaceable>/[ pkg(s) ]</replaceable>" +msgid "madison <replaceable>[ pkg(s) ]</replaceable>" msgstr "madison <replaceable>[ paquet(s) ]</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> diff --git a/doc/po/ja.po b/doc/po/ja.po index 8a75af980..d27bc1b64 100644 --- a/doc/po/ja.po +++ b/doc/po/ja.po @@ -1304,8 +1304,8 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><programlisting> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:266 -msgid "madison <replaceable>/[ pkg(s) ]</replaceable>" -msgstr "madison <replaceable>/[ pkg(s) ]</replaceable>" +msgid "madison <replaceable>[ pkg(s) ]</replaceable>" +msgstr "madison <replaceable>[ pkg(s) ]</replaceable>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> diff --git a/doc/po/pl.po b/doc/po/pl.po index b74746ffc..6afced6cf 100644 --- a/doc/po/pl.po +++ b/doc/po/pl.po @@ -1311,8 +1311,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:266 -msgid "madison <replaceable>/[ pkg(s) ]</replaceable>" -msgstr "madison <replaceable>/[ pakiet(y) ]</replaceable>" +msgid "madison <replaceable>[ pkg(s) ]</replaceable>" +msgstr "madison <replaceable>[ pakiet(y) ]</replaceable>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> diff --git a/doc/po/pt.po b/doc/po/pt.po index 6fd27a5c3..f0bfea56d 100644 --- a/doc/po/pt.po +++ b/doc/po/pt.po @@ -1255,8 +1255,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:266 -msgid "madison <replaceable>/[ pkg(s) ]</replaceable>" -msgstr "madison <replaceable>/[ pacote(s) ]</replaceable>" +msgid "madison <replaceable>[ pkg(s) ]</replaceable>" +msgstr "madison <replaceable>[ pacote(s) ]</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml:267 diff --git a/doc/sources.list.5.xml b/doc/sources.list.5.xml index 837f07683..fab125b4e 100644 --- a/doc/sources.list.5.xml +++ b/doc/sources.list.5.xml @@ -78,7 +78,7 @@ <para>The format for a <filename>sources.list</filename> entry using the <literal>deb</literal> and <literal>deb-src</literal> types is:</para> - <literallayout>deb uri distribution [component1] [component2] [...]</literallayout> + <literallayout>deb [ options ] uri distribution [component1] [component2] [...]</literallayout> <para>The URI for the <literal>deb</literal> type must specify the base of the Debian distribution, from which APT will find the information it needs. @@ -109,6 +109,17 @@ simultaneous anonymous users. APT also parallelizes connections to different hosts to more effectively deal with sites with low bandwidth.</para> + <para><literal>options</literal> is always optional and needs to be surounded by + square brackets. It can consist of multiple settings in the form + <literal><replaceable>setting</replaceable>=<replaceable>value</replaceable></literal>. + Multiple settings are separated by spaces. The following settings are supported by APT, + note through that unsupported settings will be ignored silently: + <itemizedlist><listitem><para><literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</replaceable>,…</literal> + can be used to specify for which architectures packages information should + be downloaded. If this option is not set all architectures defined by the + <literal>APT::Architectures</literal> option will be downloaded.</para> + </listitem></itemizedlist></para> + <para>It is important to list sources in order of preference, with the most preferred source listed first. Typically this will result in sorting by speed from fastest to slowest (CD-ROM followed by hosts on a local @@ -206,6 +217,11 @@ deb http://security.debian.org/ &stable-codename;/updates main contrib non-free <para>Source line for the above</para> <literallayout>deb-src file:/home/jason/debian unstable main contrib non-free</literallayout> + <para>The first line gets package information for the architectures in <literal>APT::Architectures</literal> + while the second always retrieves <literal>amd64</literal> and <literal>armel</literal>.</para> + <literallayout>deb http://ftp.debian.org/debian &stable-codename; main +deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main</literallayout> + <para>Uses HTTP to access the archive at archive.debian.org, and uses only the hamm/main area.</para> <literallayout>deb http://archive.debian.org/debian-archive hamm main</literallayout> diff --git a/po/apt-all.pot b/po/apt-all.pot index effb93f5a..73ed82195 100644 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-07-14 10:31+0200\n" +"POT-Creation-Date: 2011-01-12 17:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,158 +17,155 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: cmdline/apt-cache.cc:154 +#: cmdline/apt-cache.cc:156 #, c-format msgid "Package %s version %s has an unmet dep:\n" msgstr "" -#: cmdline/apt-cache.cc:282 +#: cmdline/apt-cache.cc:284 msgid "Total package names: " msgstr "" -#: cmdline/apt-cache.cc:284 +#: cmdline/apt-cache.cc:286 msgid "Total package structures: " msgstr "" -#: cmdline/apt-cache.cc:324 +#: cmdline/apt-cache.cc:326 msgid " Normal packages: " msgstr "" -#: cmdline/apt-cache.cc:325 +#: cmdline/apt-cache.cc:327 msgid " Pure virtual packages: " msgstr "" -#: cmdline/apt-cache.cc:326 +#: cmdline/apt-cache.cc:328 msgid " Single virtual packages: " msgstr "" -#: cmdline/apt-cache.cc:327 +#: cmdline/apt-cache.cc:329 msgid " Mixed virtual packages: " msgstr "" -#: cmdline/apt-cache.cc:328 +#: cmdline/apt-cache.cc:330 msgid " Missing: " msgstr "" -#: cmdline/apt-cache.cc:330 +#: cmdline/apt-cache.cc:332 msgid "Total distinct versions: " msgstr "" -#: cmdline/apt-cache.cc:332 +#: cmdline/apt-cache.cc:334 msgid "Total distinct descriptions: " msgstr "" -#: cmdline/apt-cache.cc:334 +#: cmdline/apt-cache.cc:336 msgid "Total dependencies: " msgstr "" -#: cmdline/apt-cache.cc:337 +#: cmdline/apt-cache.cc:339 msgid "Total ver/file relations: " msgstr "" -#: cmdline/apt-cache.cc:339 +#: cmdline/apt-cache.cc:341 msgid "Total Desc/File relations: " msgstr "" -#: cmdline/apt-cache.cc:341 +#: cmdline/apt-cache.cc:343 msgid "Total Provides mappings: " msgstr "" -#: cmdline/apt-cache.cc:353 +#: cmdline/apt-cache.cc:355 msgid "Total globbed strings: " msgstr "" -#: cmdline/apt-cache.cc:367 +#: cmdline/apt-cache.cc:369 msgid "Total dependency version space: " msgstr "" -#: cmdline/apt-cache.cc:372 +#: cmdline/apt-cache.cc:374 msgid "Total slack space: " msgstr "" -#: cmdline/apt-cache.cc:380 +#: cmdline/apt-cache.cc:382 msgid "Total space accounted for: " msgstr "" -#: cmdline/apt-cache.cc:511 cmdline/apt-cache.cc:1139 +#: cmdline/apt-cache.cc:513 cmdline/apt-cache.cc:1194 #, c-format msgid "Package file %s is out of sync." msgstr "" -#: cmdline/apt-cache.cc:589 cmdline/apt-cache.cc:1374 -#: cmdline/apt-cache.cc:1376 cmdline/apt-cache.cc:1453 cmdline/apt-mark.cc:37 -#: cmdline/apt-mark.cc:84 cmdline/apt-mark.cc:160 -msgid "No packages found" -msgstr "" - -#: cmdline/apt-cache.cc:1218 +#: cmdline/apt-cache.cc:1273 msgid "You must give at least one search pattern" msgstr "" -#: cmdline/apt-cache.cc:1353 -msgid "This command is deprecated. Please use 'apt-mark showauto' instead." +#: cmdline/apt-cache.cc:1429 cmdline/apt-cache.cc:1431 +#: cmdline/apt-cache.cc:1508 +msgid "No packages found" msgstr "" -#: cmdline/apt-cache.cc:1448 apt-pkg/cacheset.cc:440 +#: cmdline/apt-cache.cc:1503 apt-pkg/cacheset.cc:440 #, c-format msgid "Unable to locate package %s" msgstr "" -#: cmdline/apt-cache.cc:1478 +#: cmdline/apt-cache.cc:1533 msgid "Package files:" msgstr "" -#: cmdline/apt-cache.cc:1485 cmdline/apt-cache.cc:1576 +#: cmdline/apt-cache.cc:1540 cmdline/apt-cache.cc:1638 msgid "Cache is out of sync, can't x-ref a package file" msgstr "" #. Show any packages have explicit pins -#: cmdline/apt-cache.cc:1499 +#: cmdline/apt-cache.cc:1554 msgid "Pinned packages:" msgstr "" -#: cmdline/apt-cache.cc:1511 cmdline/apt-cache.cc:1556 +#: cmdline/apt-cache.cc:1566 cmdline/apt-cache.cc:1618 msgid "(not found)" msgstr "" -#: cmdline/apt-cache.cc:1519 +#: cmdline/apt-cache.cc:1575 msgid " Installed: " msgstr "" -#: cmdline/apt-cache.cc:1520 +#: cmdline/apt-cache.cc:1576 msgid " Candidate: " msgstr "" -#: cmdline/apt-cache.cc:1538 cmdline/apt-cache.cc:1546 +#: cmdline/apt-cache.cc:1600 cmdline/apt-cache.cc:1608 msgid "(none)" msgstr "" -#: cmdline/apt-cache.cc:1553 +#: cmdline/apt-cache.cc:1615 msgid " Package pin: " msgstr "" #. Show the priority tables -#: cmdline/apt-cache.cc:1562 +#: cmdline/apt-cache.cc:1624 msgid " Version table:" msgstr "" -#: cmdline/apt-cache.cc:1675 cmdline/apt-cdrom.cc:197 cmdline/apt-config.cc:73 +#: cmdline/apt-cache.cc:1738 cmdline/apt-cdrom.cc:197 cmdline/apt-config.cc:70 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:589 -#: cmdline/apt-get.cc:3122 cmdline/apt-mark.cc:264 cmdline/apt-sortpkgs.cc:144 +#: cmdline/apt-get.cc:2793 cmdline/apt-sortpkgs.cc:144 #, c-format msgid "%s %s for %s compiled on %s %s\n" msgstr "" -#: cmdline/apt-cache.cc:1682 +#: cmdline/apt-cache.cc:1745 msgid "" "Usage: apt-cache [options] command\n" +" apt-cache [options] add file1 [file2 ...]\n" " apt-cache [options] showpkg pkg1 [pkg2 ...]\n" " apt-cache [options] showsrc pkg1 [pkg2 ...]\n" "\n" -"apt-cache is a low-level tool used to query information\n" -"from APT's binary cache files\n" +"apt-cache is a low-level tool used to manipulate APT's binary\n" +"cache files, and query information from them\n" "\n" "Commands:\n" +" add - Add a package file to the source cache\n" " gencaches - Build both the package and source cache\n" " showpkg - Show some general information for a single package\n" " showsrc - Show source records\n" @@ -178,6 +175,7 @@ msgid "" " unmet - Show unmet dependencies\n" " search - Search the package list for a regex pattern\n" " show - Show a readable record for the package\n" +" showauto - Display a list of automatically installed packages\n" " depends - Show raw dependency information for a package\n" " rdepends - Show reverse dependency information for a package\n" " pkgnames - List the names of all packages in the system\n" @@ -213,11 +211,11 @@ msgstr "" msgid "Repeat this process for the rest of the CDs in your set." msgstr "" -#: cmdline/apt-config.cc:44 +#: cmdline/apt-config.cc:41 msgid "Arguments not in pairs" msgstr "" -#: cmdline/apt-config.cc:79 +#: cmdline/apt-config.cc:76 msgid "" "Usage: apt-config [options] command\n" "\n" @@ -252,7 +250,7 @@ msgid "" " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" msgstr "" -#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:1149 +#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:1171 #, c-format msgid "Unable to write to %s" msgstr "" @@ -371,92 +369,97 @@ msgstr "" msgid "Unable to get a cursor" msgstr "" -#: ftparchive/writer.cc:78 +#: ftparchive/writer.cc:73 #, c-format msgid "W: Unable to read directory %s\n" msgstr "" -#: ftparchive/writer.cc:83 +#: ftparchive/writer.cc:78 #, c-format msgid "W: Unable to stat %s\n" msgstr "" -#: ftparchive/writer.cc:139 +#: ftparchive/writer.cc:134 msgid "E: " msgstr "" -#: ftparchive/writer.cc:141 +#: ftparchive/writer.cc:136 msgid "W: " msgstr "" -#: ftparchive/writer.cc:148 +#: ftparchive/writer.cc:143 msgid "E: Errors apply to file " msgstr "" -#: ftparchive/writer.cc:166 ftparchive/writer.cc:198 +#: ftparchive/writer.cc:161 ftparchive/writer.cc:193 #, c-format msgid "Failed to resolve %s" msgstr "" -#: ftparchive/writer.cc:179 +#: ftparchive/writer.cc:174 msgid "Tree walking failed" msgstr "" -#: ftparchive/writer.cc:206 +#: ftparchive/writer.cc:201 #, c-format msgid "Failed to open %s" msgstr "" -#: ftparchive/writer.cc:265 +#: ftparchive/writer.cc:260 #, c-format msgid " DeLink %s [%s]\n" msgstr "" -#: ftparchive/writer.cc:273 +#: ftparchive/writer.cc:268 #, c-format msgid "Failed to readlink %s" msgstr "" -#: ftparchive/writer.cc:277 +#: ftparchive/writer.cc:272 #, c-format msgid "Failed to unlink %s" msgstr "" -#: ftparchive/writer.cc:284 +#: ftparchive/writer.cc:279 #, c-format msgid "*** Failed to link %s to %s" msgstr "" -#: ftparchive/writer.cc:294 +#: ftparchive/writer.cc:289 #, c-format msgid " DeLink limit of %sB hit.\n" msgstr "" -#: ftparchive/writer.cc:398 +#: ftparchive/writer.cc:393 msgid "Archive had no package field" msgstr "" -#: ftparchive/writer.cc:406 ftparchive/writer.cc:703 +#: ftparchive/writer.cc:401 ftparchive/writer.cc:688 #, c-format msgid " %s has no override entry\n" msgstr "" -#: ftparchive/writer.cc:472 ftparchive/writer.cc:811 +#: ftparchive/writer.cc:464 ftparchive/writer.cc:793 #, c-format msgid " %s maintainer is %s not %s\n" msgstr "" -#: ftparchive/writer.cc:713 +#: ftparchive/writer.cc:698 #, c-format msgid " %s has no source override entry\n" msgstr "" -#: ftparchive/writer.cc:717 +#: ftparchive/writer.cc:702 #, c-format msgid " %s has no binary override entry either\n" msgstr "" -#: ftparchive/contents.cc:337 ftparchive/contents.cc:368 +#: ftparchive/contents.cc:321 +#, c-format +msgid "Internal error, could not locate member %s" +msgstr "" + +#: ftparchive/contents.cc:358 ftparchive/contents.cc:389 msgid "realloc - Failed to allocate memory" msgstr "" @@ -485,63 +488,63 @@ msgstr "" msgid "Failed to read the override file %s" msgstr "" -#: ftparchive/multicompress.cc:67 +#: ftparchive/multicompress.cc:72 #, c-format msgid "Unknown compression algorithm '%s'" msgstr "" -#: ftparchive/multicompress.cc:97 +#: ftparchive/multicompress.cc:102 #, c-format msgid "Compressed output %s needs a compression set" msgstr "" -#: ftparchive/multicompress.cc:165 methods/rsh.cc:91 +#: ftparchive/multicompress.cc:169 methods/rsh.cc:91 msgid "Failed to create IPC pipe to subprocess" msgstr "" -#: ftparchive/multicompress.cc:191 +#: ftparchive/multicompress.cc:195 msgid "Failed to create FILE*" msgstr "" -#: ftparchive/multicompress.cc:194 +#: ftparchive/multicompress.cc:198 msgid "Failed to fork" msgstr "" -#: ftparchive/multicompress.cc:208 +#: ftparchive/multicompress.cc:212 msgid "Compress child" msgstr "" -#: ftparchive/multicompress.cc:231 +#: ftparchive/multicompress.cc:235 #, c-format msgid "Internal error, failed to create %s" msgstr "" -#: ftparchive/multicompress.cc:282 +#: ftparchive/multicompress.cc:286 msgid "Failed to create subprocess IPC" msgstr "" -#: ftparchive/multicompress.cc:319 +#: ftparchive/multicompress.cc:321 msgid "Failed to exec compressor " msgstr "" -#: ftparchive/multicompress.cc:358 +#: ftparchive/multicompress.cc:360 msgid "decompressor" msgstr "" -#: ftparchive/multicompress.cc:401 +#: ftparchive/multicompress.cc:403 msgid "IO to subprocess/file failed" msgstr "" -#: ftparchive/multicompress.cc:453 +#: ftparchive/multicompress.cc:455 msgid "Failed to read while computing MD5" msgstr "" -#: ftparchive/multicompress.cc:470 +#: ftparchive/multicompress.cc:472 #, c-format msgid "Problem unlinking %s" msgstr "" -#: ftparchive/multicompress.cc:485 apt-inst/extract.cc:185 +#: ftparchive/multicompress.cc:487 apt-inst/extract.cc:185 #, c-format msgid "Failed to rename %s to %s" msgstr "" @@ -589,94 +592,94 @@ msgstr "" msgid " or" msgstr "" -#: cmdline/apt-get.cc:390 +#: cmdline/apt-get.cc:392 msgid "The following NEW packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:416 +#: cmdline/apt-get.cc:420 msgid "The following packages will be REMOVED:" msgstr "" -#: cmdline/apt-get.cc:438 +#: cmdline/apt-get.cc:442 msgid "The following packages have been kept back:" msgstr "" -#: cmdline/apt-get.cc:459 +#: cmdline/apt-get.cc:465 msgid "The following packages will be upgraded:" msgstr "" -#: cmdline/apt-get.cc:480 +#: cmdline/apt-get.cc:488 msgid "The following packages will be DOWNGRADED:" msgstr "" -#: cmdline/apt-get.cc:500 +#: cmdline/apt-get.cc:508 msgid "The following held packages will be changed:" msgstr "" -#: cmdline/apt-get.cc:555 +#: cmdline/apt-get.cc:563 #, c-format msgid "%s (due to %s) " msgstr "" -#: cmdline/apt-get.cc:563 +#: cmdline/apt-get.cc:571 msgid "" "WARNING: The following essential packages will be removed.\n" "This should NOT be done unless you know exactly what you are doing!" msgstr "" -#: cmdline/apt-get.cc:594 +#: cmdline/apt-get.cc:605 #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "" -#: cmdline/apt-get.cc:598 +#: cmdline/apt-get.cc:609 #, c-format msgid "%lu reinstalled, " msgstr "" -#: cmdline/apt-get.cc:600 +#: cmdline/apt-get.cc:611 #, c-format msgid "%lu downgraded, " msgstr "" -#: cmdline/apt-get.cc:602 +#: cmdline/apt-get.cc:613 #, c-format msgid "%lu to remove and %lu not upgraded.\n" msgstr "" -#: cmdline/apt-get.cc:606 +#: cmdline/apt-get.cc:617 #, c-format msgid "%lu not fully installed or removed.\n" msgstr "" -#: cmdline/apt-get.cc:628 +#: cmdline/apt-get.cc:639 #, c-format msgid "Note, selecting '%s' for task '%s'\n" msgstr "" -#: cmdline/apt-get.cc:634 +#: cmdline/apt-get.cc:645 #, c-format msgid "Note, selecting '%s' for regex '%s'\n" msgstr "" -#: cmdline/apt-get.cc:651 +#: cmdline/apt-get.cc:662 #, c-format msgid "Package %s is a virtual package provided by:\n" msgstr "" -#: cmdline/apt-get.cc:662 +#: cmdline/apt-get.cc:673 msgid " [Installed]" msgstr "" -#: cmdline/apt-get.cc:671 +#: cmdline/apt-get.cc:682 msgid " [Not candidate version]" msgstr "" -#: cmdline/apt-get.cc:673 +#: cmdline/apt-get.cc:684 msgid "You should explicitly select one to install." msgstr "" -#: cmdline/apt-get.cc:676 +#: cmdline/apt-get.cc:687 #, c-format msgid "" "Package %s is not available, but is referred to by another package.\n" @@ -684,177 +687,177 @@ msgid "" "is only available from another source\n" msgstr "" -#: cmdline/apt-get.cc:694 +#: cmdline/apt-get.cc:705 msgid "However the following packages replace it:" msgstr "" -#: cmdline/apt-get.cc:706 +#: cmdline/apt-get.cc:717 #, c-format msgid "Package '%s' has no installation candidate" msgstr "" -#: cmdline/apt-get.cc:717 +#: cmdline/apt-get.cc:728 #, c-format msgid "Virtual packages like '%s' can't be removed\n" msgstr "" -#: cmdline/apt-get.cc:748 +#: cmdline/apt-get.cc:759 #, c-format msgid "Note, selecting '%s' instead of '%s'\n" msgstr "" -#: cmdline/apt-get.cc:778 +#: cmdline/apt-get.cc:789 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" msgstr "" -#: cmdline/apt-get.cc:782 +#: cmdline/apt-get.cc:793 #, c-format msgid "Skipping %s, it is not installed and only upgrades are requested.\n" msgstr "" -#: cmdline/apt-get.cc:794 +#: cmdline/apt-get.cc:803 #, c-format msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n" msgstr "" -#: cmdline/apt-get.cc:799 +#: cmdline/apt-get.cc:808 #, c-format msgid "%s is already the newest version.\n" msgstr "" -#: cmdline/apt-get.cc:818 cmdline/apt-get.cc:2080 cmdline/apt-mark.cc:59 +#: cmdline/apt-get.cc:827 cmdline/apt-get.cc:2027 #, c-format msgid "%s set to manually installed.\n" msgstr "" -#: cmdline/apt-get.cc:844 +#: cmdline/apt-get.cc:853 #, c-format msgid "Selected version '%s' (%s) for '%s'\n" msgstr "" -#: cmdline/apt-get.cc:849 +#: cmdline/apt-get.cc:858 #, c-format msgid "Selected version '%s' (%s) for '%s' because of '%s'\n" msgstr "" -#: cmdline/apt-get.cc:893 +#: cmdline/apt-get.cc:898 #, c-format msgid "Package %s is not installed, so not removed\n" msgstr "" -#: cmdline/apt-get.cc:971 +#: cmdline/apt-get.cc:973 msgid "Correcting dependencies..." msgstr "" -#: cmdline/apt-get.cc:974 +#: cmdline/apt-get.cc:976 msgid " failed." msgstr "" -#: cmdline/apt-get.cc:977 +#: cmdline/apt-get.cc:979 msgid "Unable to correct dependencies" msgstr "" -#: cmdline/apt-get.cc:980 +#: cmdline/apt-get.cc:982 msgid "Unable to minimize the upgrade set" msgstr "" -#: cmdline/apt-get.cc:982 +#: cmdline/apt-get.cc:984 msgid " Done" msgstr "" -#: cmdline/apt-get.cc:986 +#: cmdline/apt-get.cc:988 msgid "You might want to run 'apt-get -f install' to correct these." msgstr "" -#: cmdline/apt-get.cc:989 +#: cmdline/apt-get.cc:991 msgid "Unmet dependencies. Try using -f." msgstr "" -#: cmdline/apt-get.cc:1014 +#: cmdline/apt-get.cc:1016 msgid "WARNING: The following packages cannot be authenticated!" msgstr "" -#: cmdline/apt-get.cc:1018 +#: cmdline/apt-get.cc:1020 msgid "Authentication warning overridden.\n" msgstr "" -#: cmdline/apt-get.cc:1025 +#: cmdline/apt-get.cc:1027 msgid "Install these packages without verification [y/N]? " msgstr "" -#: cmdline/apt-get.cc:1027 +#: cmdline/apt-get.cc:1029 msgid "Some packages could not be authenticated" msgstr "" -#: cmdline/apt-get.cc:1036 cmdline/apt-get.cc:1197 +#: cmdline/apt-get.cc:1038 cmdline/apt-get.cc:1199 msgid "There are problems and -y was used without --force-yes" msgstr "" -#: cmdline/apt-get.cc:1077 +#: cmdline/apt-get.cc:1079 msgid "Internal error, InstallPackages was called with broken packages!" msgstr "" -#: cmdline/apt-get.cc:1086 +#: cmdline/apt-get.cc:1088 msgid "Packages need to be removed but remove is disabled." msgstr "" -#: cmdline/apt-get.cc:1097 +#: cmdline/apt-get.cc:1099 msgid "Internal error, Ordering didn't finish" msgstr "" -#: cmdline/apt-get.cc:1135 +#: cmdline/apt-get.cc:1137 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org" msgstr "" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:1142 +#: cmdline/apt-get.cc:1144 #, c-format msgid "Need to get %sB/%sB of archives.\n" msgstr "" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:1147 +#: cmdline/apt-get.cc:1149 #, c-format msgid "Need to get %sB of archives.\n" msgstr "" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:1154 +#: cmdline/apt-get.cc:1156 #, c-format msgid "After this operation, %sB of additional disk space will be used.\n" msgstr "" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:1159 +#: cmdline/apt-get.cc:1161 #, c-format msgid "After this operation, %sB disk space will be freed.\n" msgstr "" -#: cmdline/apt-get.cc:1174 cmdline/apt-get.cc:1177 cmdline/apt-get.cc:2492 -#: cmdline/apt-get.cc:2495 +#: cmdline/apt-get.cc:1176 cmdline/apt-get.cc:1179 cmdline/apt-get.cc:2367 +#: cmdline/apt-get.cc:2370 #, c-format msgid "Couldn't determine free space in %s" msgstr "" -#: cmdline/apt-get.cc:1187 +#: cmdline/apt-get.cc:1189 #, c-format msgid "You don't have enough free space in %s." msgstr "" -#: cmdline/apt-get.cc:1203 cmdline/apt-get.cc:1223 +#: cmdline/apt-get.cc:1205 cmdline/apt-get.cc:1225 msgid "Trivial Only specified but this is not a trivial operation." msgstr "" -#: cmdline/apt-get.cc:1205 +#: cmdline/apt-get.cc:1207 msgid "Yes, do as I say!" msgstr "" -#: cmdline/apt-get.cc:1207 +#: cmdline/apt-get.cc:1209 #, c-format msgid "" "You are about to do something potentially harmful.\n" @@ -862,46 +865,46 @@ msgid "" " ?] " msgstr "" -#: cmdline/apt-get.cc:1213 cmdline/apt-get.cc:1232 +#: cmdline/apt-get.cc:1215 cmdline/apt-get.cc:1234 msgid "Abort." msgstr "" -#: cmdline/apt-get.cc:1228 +#: cmdline/apt-get.cc:1230 msgid "Do you want to continue [Y/n]? " msgstr "" -#: cmdline/apt-get.cc:1300 cmdline/apt-get.cc:2557 apt-pkg/algorithms.cc:1429 +#: cmdline/apt-get.cc:1302 cmdline/apt-get.cc:2427 apt-pkg/algorithms.cc:1470 #, c-format msgid "Failed to fetch %s %s\n" msgstr "" -#: cmdline/apt-get.cc:1318 +#: cmdline/apt-get.cc:1320 msgid "Some files failed to download" msgstr "" -#: cmdline/apt-get.cc:1319 cmdline/apt-get.cc:2569 +#: cmdline/apt-get.cc:1321 cmdline/apt-get.cc:2436 msgid "Download complete and in download only mode" msgstr "" -#: cmdline/apt-get.cc:1325 +#: cmdline/apt-get.cc:1327 msgid "" "Unable to fetch some archives, maybe run apt-get update or try with --fix-" "missing?" msgstr "" -#: cmdline/apt-get.cc:1329 +#: cmdline/apt-get.cc:1331 msgid "--fix-missing and media swapping is not currently supported" msgstr "" -#: cmdline/apt-get.cc:1334 +#: cmdline/apt-get.cc:1336 msgid "Unable to correct missing packages." msgstr "" -#: cmdline/apt-get.cc:1335 +#: cmdline/apt-get.cc:1337 msgid "Aborting install." msgstr "" -#: cmdline/apt-get.cc:1363 +#: cmdline/apt-get.cc:1365 msgid "" "The following package disappeared from your system as\n" "all files have been overwritten by other packages:" @@ -911,35 +914,35 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: cmdline/apt-get.cc:1367 +#: cmdline/apt-get.cc:1369 msgid "Note: This is done automatic and on purpose by dpkg." msgstr "" -#: cmdline/apt-get.cc:1497 +#: cmdline/apt-get.cc:1499 #, c-format msgid "Ignore unavailable target release '%s' of package '%s'" msgstr "" -#: cmdline/apt-get.cc:1529 +#: cmdline/apt-get.cc:1531 #, c-format msgid "Picking '%s' as source package instead of '%s'\n" msgstr "" #. if (VerTag.empty() == false && Last == 0) -#: cmdline/apt-get.cc:1567 +#: cmdline/apt-get.cc:1569 #, c-format msgid "Ignore unavailable version '%s' of package '%s'" msgstr "" -#: cmdline/apt-get.cc:1583 +#: cmdline/apt-get.cc:1585 msgid "The update command takes no arguments" msgstr "" -#: cmdline/apt-get.cc:1645 +#: cmdline/apt-get.cc:1647 msgid "We are not supposed to delete stuff, can't start AutoRemover" msgstr "" -#: cmdline/apt-get.cc:1740 +#: cmdline/apt-get.cc:1699 msgid "" "Hmm, seems like the AutoRemover destroyed something which really\n" "shouldn't happen. Please file a bug report against apt." @@ -955,15 +958,15 @@ msgstr "" #. "that package should be filed.") << endl; #. } #. -#: cmdline/apt-get.cc:1743 cmdline/apt-get.cc:1913 +#: cmdline/apt-get.cc:1702 cmdline/apt-get.cc:1858 msgid "The following information may help to resolve the situation:" msgstr "" -#: cmdline/apt-get.cc:1747 +#: cmdline/apt-get.cc:1706 msgid "Internal Error, AutoRemover broke stuff" msgstr "" -#: cmdline/apt-get.cc:1754 +#: cmdline/apt-get.cc:1713 msgid "" "The following package was automatically installed and is no longer required:" msgid_plural "" @@ -972,7 +975,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: cmdline/apt-get.cc:1758 +#: cmdline/apt-get.cc:1717 #, c-format msgid "%lu package was automatically installed and is no longer required.\n" msgid_plural "" @@ -980,25 +983,25 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: cmdline/apt-get.cc:1760 +#: cmdline/apt-get.cc:1719 msgid "Use 'apt-get autoremove' to remove them." msgstr "" -#: cmdline/apt-get.cc:1779 +#: cmdline/apt-get.cc:1738 msgid "Internal error, AllUpgrade broke stuff" msgstr "" -#: cmdline/apt-get.cc:1878 +#: cmdline/apt-get.cc:1828 msgid "You might want to run 'apt-get -f install' to correct these:" msgstr "" -#: cmdline/apt-get.cc:1882 +#: cmdline/apt-get.cc:1831 msgid "" "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a " "solution)." msgstr "" -#: cmdline/apt-get.cc:1898 +#: cmdline/apt-get.cc:1843 msgid "" "Some packages could not be installed. This may mean that you have\n" "requested an impossible situation or if you are using the unstable\n" @@ -1006,80 +1009,69 @@ msgid "" "or been moved out of Incoming." msgstr "" -#: cmdline/apt-get.cc:1916 +#: cmdline/apt-get.cc:1861 msgid "Broken packages" msgstr "" -#: cmdline/apt-get.cc:1942 +#: cmdline/apt-get.cc:1889 msgid "The following extra packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:2032 +#: cmdline/apt-get.cc:1979 msgid "Suggested packages:" msgstr "" -#: cmdline/apt-get.cc:2033 +#: cmdline/apt-get.cc:1980 msgid "Recommended packages:" msgstr "" -#: cmdline/apt-get.cc:2075 +#: cmdline/apt-get.cc:2022 #, c-format msgid "Couldn't find package %s" msgstr "" -#: cmdline/apt-get.cc:2082 cmdline/apt-mark.cc:61 +#: cmdline/apt-get.cc:2029 #, c-format msgid "%s set to automatically installed.\n" msgstr "" -#: cmdline/apt-get.cc:2090 cmdline/apt-mark.cc:105 -msgid "" -"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' " -"instead." -msgstr "" - -#: cmdline/apt-get.cc:2106 +#: cmdline/apt-get.cc:2050 msgid "Calculating upgrade... " msgstr "" -#: cmdline/apt-get.cc:2109 methods/ftp.cc:707 methods/connect.cc:111 +#: cmdline/apt-get.cc:2053 methods/ftp.cc:707 methods/connect.cc:111 msgid "Failed" msgstr "" -#: cmdline/apt-get.cc:2114 +#: cmdline/apt-get.cc:2058 msgid "Done" msgstr "" -#: cmdline/apt-get.cc:2181 cmdline/apt-get.cc:2189 +#: cmdline/apt-get.cc:2125 cmdline/apt-get.cc:2133 msgid "Internal error, problem resolver broke stuff" msgstr "" -#: cmdline/apt-get.cc:2213 cmdline/apt-get.cc:2246 +#: cmdline/apt-get.cc:2157 cmdline/apt-get.cc:2190 msgid "Unable to lock the download directory" msgstr "" -#: cmdline/apt-get.cc:2297 -#, c-format -msgid "Downloading %s %s" -msgstr "" - -#: cmdline/apt-get.cc:2353 +#: cmdline/apt-get.cc:2233 msgid "Must specify at least one package to fetch source for" msgstr "" -#: cmdline/apt-get.cc:2394 cmdline/apt-get.cc:2690 +#: cmdline/apt-get.cc:2273 cmdline/apt-get.cc:2554 #, c-format msgid "Unable to find a source package for %s" msgstr "" -#: cmdline/apt-get.cc:2411 +#: cmdline/apt-get.cc:2289 #, c-format msgid "" "NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n" "%s\n" msgstr "" -#: cmdline/apt-get.cc:2416 +#: cmdline/apt-get.cc:2294 #, c-format msgid "" "Please use:\n" @@ -1087,120 +1079,115 @@ msgid "" "to retrieve the latest (possibly unreleased) updates to the package.\n" msgstr "" -#: cmdline/apt-get.cc:2469 +#: cmdline/apt-get.cc:2345 #, c-format msgid "Skipping already downloaded file '%s'\n" msgstr "" -#: cmdline/apt-get.cc:2506 +#: cmdline/apt-get.cc:2380 #, c-format msgid "You don't have enough free space in %s" msgstr "" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:2515 +#: cmdline/apt-get.cc:2388 #, c-format msgid "Need to get %sB/%sB of source archives.\n" msgstr "" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:2520 +#: cmdline/apt-get.cc:2393 #, c-format msgid "Need to get %sB of source archives.\n" msgstr "" -#: cmdline/apt-get.cc:2526 +#: cmdline/apt-get.cc:2399 #, c-format msgid "Fetch source %s\n" msgstr "" -#: cmdline/apt-get.cc:2564 +#: cmdline/apt-get.cc:2432 msgid "Failed to fetch some archives." msgstr "" -#: cmdline/apt-get.cc:2595 +#: cmdline/apt-get.cc:2462 #, c-format msgid "Skipping unpack of already unpacked source in %s\n" msgstr "" -#: cmdline/apt-get.cc:2607 +#: cmdline/apt-get.cc:2474 #, c-format msgid "Unpack command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2608 +#: cmdline/apt-get.cc:2475 #, c-format msgid "Check if the 'dpkg-dev' package is installed.\n" msgstr "" -#: cmdline/apt-get.cc:2625 +#: cmdline/apt-get.cc:2492 #, c-format msgid "Build command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2645 +#: cmdline/apt-get.cc:2512 msgid "Child process failed" msgstr "" -#: cmdline/apt-get.cc:2664 +#: cmdline/apt-get.cc:2528 msgid "Must specify at least one package to check builddeps for" msgstr "" -#: cmdline/apt-get.cc:2695 +#: cmdline/apt-get.cc:2559 #, c-format msgid "Unable to get build-dependency information for %s" msgstr "" -#: cmdline/apt-get.cc:2715 +#: cmdline/apt-get.cc:2579 #, c-format msgid "%s has no build depends.\n" msgstr "" -#: cmdline/apt-get.cc:2766 +#: cmdline/apt-get.cc:2630 #, c-format msgid "" "%s dependency for %s cannot be satisfied because the package %s cannot be " "found" msgstr "" -#: cmdline/apt-get.cc:2819 +#: cmdline/apt-get.cc:2683 #, c-format msgid "" "%s dependency for %s cannot be satisfied because no available versions of " "package %s can satisfy version requirements" msgstr "" -#: cmdline/apt-get.cc:2855 +#: cmdline/apt-get.cc:2719 #, c-format msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new" msgstr "" -#: cmdline/apt-get.cc:2882 +#: cmdline/apt-get.cc:2746 #, c-format msgid "Failed to satisfy %s dependency for %s: %s" msgstr "" -#: cmdline/apt-get.cc:2898 +#: cmdline/apt-get.cc:2762 #, c-format msgid "Build-dependencies for %s could not be satisfied." msgstr "" -#: cmdline/apt-get.cc:2903 +#: cmdline/apt-get.cc:2767 msgid "Failed to process build dependencies" msgstr "" -#: cmdline/apt-get.cc:2996 cmdline/apt-get.cc:3008 -#, c-format -msgid "Changelog for %s (%s)" -msgstr "" - -#: cmdline/apt-get.cc:3127 +#: cmdline/apt-get.cc:2798 msgid "Supported modules:" msgstr "" -#: cmdline/apt-get.cc:3168 +#: cmdline/apt-get.cc:2839 msgid "" "Usage: apt-get [options] command\n" " apt-get [options] install|remove pkg1 [pkg2 ...]\n" @@ -1224,8 +1211,8 @@ msgid "" " clean - Erase downloaded archive files\n" " autoclean - Erase old downloaded archive files\n" " check - Verify that there are no broken dependencies\n" -" changelog - Download and display the changelog for the given package\n" -" download - Download the binary package into the current directory\n" +" markauto - Mark the given packages as automatically installed\n" +" unmarkauto - Mark the given packages as manually installed\n" "\n" "Options:\n" " -h This help text.\n" @@ -1246,7 +1233,7 @@ msgid "" " This APT has Super Cow Powers.\n" msgstr "" -#: cmdline/apt-get.cc:3330 +#: cmdline/apt-get.cc:2995 msgid "" "NOTE: This is only a simulation!\n" " apt-get needs root privileges for real execution.\n" @@ -1288,67 +1275,6 @@ msgid "" "in the drive '%s' and press enter\n" msgstr "" -#: cmdline/apt-mark.cc:46 -#, c-format -msgid "%s can not be marked as it is not installed.\n" -msgstr "" - -#: cmdline/apt-mark.cc:52 -#, c-format -msgid "%s was already set to manually installed.\n" -msgstr "" - -#: cmdline/apt-mark.cc:54 -#, c-format -msgid "%s was already set to automatically installed.\n" -msgstr "" - -#: cmdline/apt-mark.cc:169 -#, c-format -msgid "%s was already set on hold.\n" -msgstr "" - -#: cmdline/apt-mark.cc:171 -#, c-format -msgid "%s was already not hold.\n" -msgstr "" - -#: cmdline/apt-mark.cc:185 cmdline/apt-mark.cc:207 -#, c-format -msgid "%s set on hold.\n" -msgstr "" - -#: cmdline/apt-mark.cc:187 cmdline/apt-mark.cc:212 -#, c-format -msgid "Canceled hold on %s.\n" -msgstr "" - -#: cmdline/apt-mark.cc:220 -msgid "Executing dpkg failed. Are you root?" -msgstr "" - -#: cmdline/apt-mark.cc:268 -msgid "" -"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n" -"\n" -"apt-mark is a simple command line interface for marking packages\n" -"as manual or automatical installed. It can also list marks.\n" -"\n" -"Commands:\n" -" auto - Mark the given packages as automatically installed\n" -" manual - Mark the given packages as manually installed\n" -"\n" -"Options:\n" -" -h This help text.\n" -" -q Loggable output - no progress indicator\n" -" -qq No output except for errors\n" -" -s No-act. Just prints what would be done.\n" -" -f read/write auto/manual marking in the given file\n" -" -c=? Read this configuration file\n" -" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" -"See the apt-mark(8) and apt.conf(5) manual pages for more information." -msgstr "" - #: cmdline/apt-sortpkgs.cc:86 msgid "Unknown package record!" msgstr "" @@ -1409,7 +1335,7 @@ msgstr "" msgid "Failed to exec gzip " msgstr "" -#: apt-inst/contrib/extracttar.cc:178 apt-inst/contrib/extracttar.cc:208 +#: apt-inst/contrib/extracttar.cc:178 apt-inst/contrib/extracttar.cc:204 msgid "Corrupted archive" msgstr "" @@ -1417,7 +1343,7 @@ msgstr "" msgid "Tar checksum failed, archive corrupted" msgstr "" -#: apt-inst/contrib/extracttar.cc:300 +#: apt-inst/contrib/extracttar.cc:296 #, c-format msgid "Unknown TAR header type %u, member %s" msgstr "" @@ -1478,12 +1404,12 @@ msgstr "" msgid "Duplicate conf file %s/%s" msgstr "" -#: apt-inst/dirstream.cc:41 apt-inst/dirstream.cc:47 apt-inst/dirstream.cc:53 +#: apt-inst/dirstream.cc:41 apt-inst/dirstream.cc:46 apt-inst/dirstream.cc:49 #, c-format msgid "Failed to write file %s" msgstr "" -#: apt-inst/dirstream.cc:98 apt-inst/dirstream.cc:106 +#: apt-inst/dirstream.cc:92 apt-inst/dirstream.cc:100 #, c-format msgid "Failed to close file %s" msgstr "" @@ -1525,28 +1451,28 @@ msgstr "" msgid "The path is too long" msgstr "" -#: apt-inst/extract.cc:412 +#: apt-inst/extract.cc:414 #, c-format msgid "Overwrite package match with no version for %s" msgstr "" -#: apt-inst/extract.cc:429 +#: apt-inst/extract.cc:431 #, c-format msgid "File %s/%s overwrites the one in the package %s" msgstr "" #. Only warn if there are no sources.list.d. #. Only warn if there is no sources.list file. -#: apt-inst/extract.cc:462 apt-pkg/contrib/cdromutl.cc:179 -#: apt-pkg/contrib/fileutl.cc:343 apt-pkg/sourcelist.cc:204 +#: apt-inst/extract.cc:464 apt-pkg/contrib/cdromutl.cc:179 +#: apt-pkg/contrib/fileutl.cc:329 apt-pkg/sourcelist.cc:204 #: apt-pkg/sourcelist.cc:210 apt-pkg/acquire.cc:450 apt-pkg/init.cc:100 -#: apt-pkg/init.cc:108 apt-pkg/clean.cc:33 apt-pkg/policy.cc:314 -#: methods/mirror.cc:91 +#: apt-pkg/init.cc:108 apt-pkg/clean.cc:33 apt-pkg/policy.cc:307 +#: methods/mirror.cc:87 #, c-format msgid "Unable to read %s" msgstr "" -#: apt-inst/extract.cc:489 +#: apt-inst/extract.cc:491 #, c-format msgid "Unable to stat %s" msgstr "" @@ -1570,9 +1496,9 @@ msgstr "" msgid "The info and temp directories need to be on the same filesystem" msgstr "" -#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:1048 -#: apt-pkg/pkgcachegen.cc:1152 apt-pkg/pkgcachegen.cc:1158 -#: apt-pkg/pkgcachegen.cc:1304 +#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:1070 +#: apt-pkg/pkgcachegen.cc:1174 apt-pkg/pkgcachegen.cc:1180 +#: apt-pkg/pkgcachegen.cc:1326 msgid "Reading package lists" msgstr "" @@ -1645,57 +1571,51 @@ msgstr "" msgid "Error parsing MD5. Offset %lu" msgstr "" -#: apt-inst/deb/debfile.cc:39 apt-inst/deb/debfile.cc:44 +#: apt-inst/deb/debfile.cc:38 apt-inst/deb/debfile.cc:43 #, c-format msgid "This is not a valid DEB archive, missing '%s' member" msgstr "" -#. FIXME: add data.tar.xz here - adding it now would require a Translation round for a very small gain -#: apt-inst/deb/debfile.cc:53 +#: apt-inst/deb/debfile.cc:50 #, c-format msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member" msgstr "" -#: apt-inst/deb/debfile.cc:113 +#: apt-inst/deb/debfile.cc:110 #, c-format msgid "Couldn't change to %s" msgstr "" -#: apt-inst/deb/debfile.cc:154 -#, c-format -msgid "Internal error, could not locate member %s" +#: apt-inst/deb/debfile.cc:140 +msgid "Internal error, could not locate member" msgstr "" -#: apt-inst/deb/debfile.cc:189 +#: apt-inst/deb/debfile.cc:173 msgid "Failed to locate a valid control file" msgstr "" -#: apt-inst/deb/debfile.cc:274 +#: apt-inst/deb/debfile.cc:258 msgid "Unparsable control file" msgstr "" -#: methods/bzip2.cc:60 methods/gzip.cc:52 -msgid "Empty files can't be valid archives" -msgstr "" - -#: methods/bzip2.cc:64 +#: methods/bzip2.cc:65 #, c-format msgid "Couldn't open pipe for %s" msgstr "" -#: methods/bzip2.cc:108 +#: methods/bzip2.cc:109 #, c-format msgid "Read error from %s process" msgstr "" -#: methods/bzip2.cc:140 methods/bzip2.cc:149 methods/copy.cc:43 -#: methods/gzip.cc:92 methods/gzip.cc:101 methods/rred.cc:524 -#: methods/rred.cc:533 +#: methods/bzip2.cc:141 methods/bzip2.cc:150 methods/copy.cc:43 +#: methods/gzip.cc:93 methods/gzip.cc:102 methods/rred.cc:486 +#: methods/rred.cc:495 msgid "Failed to stat" msgstr "" -#: methods/bzip2.cc:146 methods/copy.cc:80 methods/gzip.cc:98 -#: methods/rred.cc:530 +#: methods/bzip2.cc:147 methods/copy.cc:80 methods/gzip.cc:99 +#: methods/rred.cc:492 msgid "Failed to set modification time" msgstr "" @@ -1723,7 +1643,7 @@ msgstr "" msgid "Disk not found." msgstr "" -#: methods/cdrom.cc:258 methods/file.cc:79 methods/rsh.cc:265 +#: methods/cdrom.cc:258 methods/file.cc:79 methods/rsh.cc:264 msgid "File not found" msgstr "" @@ -1775,7 +1695,7 @@ msgstr "" msgid "TYPE failed, server said: %s" msgstr "" -#: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:184 methods/rsh.cc:227 +#: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:183 methods/rsh.cc:226 msgid "Connection timeout" msgstr "" @@ -1783,11 +1703,11 @@ msgstr "" msgid "Server closed the connection" msgstr "" -#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:820 methods/rsh.cc:191 +#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:802 methods/rsh.cc:190 msgid "Read error" msgstr "" -#: methods/ftp.cc:351 methods/rsh.cc:198 +#: methods/ftp.cc:351 methods/rsh.cc:197 msgid "A response overflowed the buffer." msgstr "" @@ -1795,7 +1715,7 @@ msgstr "" msgid "Protocol corruption" msgstr "" -#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:862 methods/rsh.cc:233 +#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:844 methods/rsh.cc:232 msgid "Write error" msgstr "" @@ -1849,7 +1769,7 @@ msgstr "" msgid "Unable to accept connection" msgstr "" -#: methods/ftp.cc:869 methods/http.cc:1023 methods/rsh.cc:303 +#: methods/ftp.cc:869 methods/http.cc:1006 methods/rsh.cc:302 msgid "Problem hashing file" msgstr "" @@ -1858,7 +1778,7 @@ msgstr "" msgid "Unable to fetch file, server said '%s'" msgstr "" -#: methods/ftp.cc:897 methods/rsh.cc:322 +#: methods/ftp.cc:897 methods/rsh.cc:321 msgid "Data socket timed out" msgstr "" @@ -1908,7 +1828,7 @@ msgstr "" #. We say this mainly because the pause here is for the #. ssh connection that is still going -#: methods/connect.cc:149 methods/rsh.cc:425 +#: methods/connect.cc:149 methods/rsh.cc:424 #, c-format msgid "Connecting to %s" msgstr "" @@ -1999,47 +1919,47 @@ msgstr "" msgid "Unknown date format" msgstr "" -#: methods/http.cc:800 +#: methods/http.cc:799 msgid "Select failed" msgstr "" -#: methods/http.cc:805 +#: methods/http.cc:804 msgid "Connection timed out" msgstr "" -#: methods/http.cc:828 +#: methods/http.cc:827 msgid "Error writing to output file" msgstr "" -#: methods/http.cc:859 +#: methods/http.cc:858 msgid "Error writing to file" msgstr "" -#: methods/http.cc:887 +#: methods/http.cc:886 msgid "Error writing to the file" msgstr "" -#: methods/http.cc:901 +#: methods/http.cc:900 msgid "Error reading from server. Remote end closed connection" msgstr "" -#: methods/http.cc:903 +#: methods/http.cc:902 msgid "Error reading from server" msgstr "" -#: methods/http.cc:1008 apt-pkg/contrib/mmap.cc:291 +#: methods/http.cc:991 apt-pkg/contrib/mmap.cc:281 msgid "Failed to truncate file" msgstr "" -#: methods/http.cc:1183 +#: methods/http.cc:1160 msgid "Bad header data" msgstr "" -#: methods/http.cc:1200 methods/http.cc:1255 +#: methods/http.cc:1177 methods/http.cc:1232 msgid "Connection failed" msgstr "" -#: methods/http.cc:1347 +#: methods/http.cc:1324 msgid "Internal error" msgstr "" @@ -2052,7 +1972,7 @@ msgstr "" msgid "Couldn't duplicate file descriptor %i" msgstr "" -#: apt-pkg/contrib/mmap.cc:97 apt-pkg/contrib/mmap.cc:258 +#: apt-pkg/contrib/mmap.cc:97 apt-pkg/contrib/mmap.cc:250 #, c-format msgid "Couldn't make mmap of %lu bytes" msgstr "" @@ -2065,21 +1985,21 @@ msgstr "" msgid "Unable to synchronize mmap" msgstr "" -#: apt-pkg/contrib/mmap.cc:310 +#: apt-pkg/contrib/mmap.cc:300 #, c-format msgid "" "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. " "Current value: %lu. (man 5 apt.conf)" msgstr "" -#: apt-pkg/contrib/mmap.cc:409 +#: apt-pkg/contrib/mmap.cc:399 #, c-format msgid "" "Unable to increase the size of the MMap as the limit of %lu bytes is already " "reached." msgstr "" -#: apt-pkg/contrib/mmap.cc:412 +#: apt-pkg/contrib/mmap.cc:402 msgid "" "Unable to increase size of the MMap as automatic growing is disabled by user." msgstr "" @@ -2108,7 +2028,7 @@ msgstr "" msgid "%lis" msgstr "" -#: apt-pkg/contrib/strutl.cc:1138 +#: apt-pkg/contrib/strutl.cc:1119 #, c-format msgid "Selection %s not found" msgstr "" @@ -2231,122 +2151,106 @@ msgstr "" #: apt-pkg/contrib/cdromutl.cc:175 apt-pkg/contrib/cdromutl.cc:209 #: apt-pkg/acquire.cc:456 apt-pkg/acquire.cc:481 apt-pkg/clean.cc:39 -#: methods/mirror.cc:97 +#: methods/mirror.cc:93 #, c-format msgid "Unable to change to %s" msgstr "" -#: apt-pkg/contrib/cdromutl.cc:220 +#: apt-pkg/contrib/cdromutl.cc:217 msgid "Failed to stat the cdrom" msgstr "" -#: apt-pkg/contrib/fileutl.cc:168 +#: apt-pkg/contrib/fileutl.cc:154 #, c-format msgid "Not using locking for read only lock file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:173 +#: apt-pkg/contrib/fileutl.cc:159 #, c-format msgid "Could not open lock file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:191 +#: apt-pkg/contrib/fileutl.cc:177 #, c-format msgid "Not using locking for nfs mounted lock file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:195 +#: apt-pkg/contrib/fileutl.cc:181 #, c-format msgid "Could not get lock %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:335 +#: apt-pkg/contrib/fileutl.cc:321 #, c-format msgid "List of files can't be created as '%s' is not a directory" msgstr "" -#: apt-pkg/contrib/fileutl.cc:362 -#, c-format -msgid "Ignoring '%s' in directory '%s' as it is not a regular file" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:380 -#, c-format -msgid "Ignoring file '%s' in directory '%s' as it has no filename extension" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:389 -#, c-format -msgid "" -"Ignoring file '%s' in directory '%s' as it has an invalid filename extension" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:679 +#: apt-pkg/contrib/fileutl.cc:661 #, c-format msgid "Waited for %s but it wasn't there" msgstr "" -#: apt-pkg/contrib/fileutl.cc:691 +#: apt-pkg/contrib/fileutl.cc:673 #, c-format msgid "Sub-process %s received a segmentation fault." msgstr "" -#: apt-pkg/contrib/fileutl.cc:693 +#: apt-pkg/contrib/fileutl.cc:675 #, c-format msgid "Sub-process %s received signal %u." msgstr "" -#: apt-pkg/contrib/fileutl.cc:697 +#: apt-pkg/contrib/fileutl.cc:679 #, c-format msgid "Sub-process %s returned an error code (%u)" msgstr "" -#: apt-pkg/contrib/fileutl.cc:699 +#: apt-pkg/contrib/fileutl.cc:681 #, c-format msgid "Sub-process %s exited unexpectedly" msgstr "" -#: apt-pkg/contrib/fileutl.cc:764 +#: apt-pkg/contrib/fileutl.cc:746 #, c-format msgid "Could not open file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:781 +#: apt-pkg/contrib/fileutl.cc:763 #, c-format msgid "Could not open file descriptor %d" msgstr "" -#: apt-pkg/contrib/fileutl.cc:841 +#: apt-pkg/contrib/fileutl.cc:823 #, c-format msgid "read, still have %lu to read but none left" msgstr "" -#: apt-pkg/contrib/fileutl.cc:874 +#: apt-pkg/contrib/fileutl.cc:856 #, c-format msgid "write, still have %lu to write but couldn't" msgstr "" -#: apt-pkg/contrib/fileutl.cc:1010 +#: apt-pkg/contrib/fileutl.cc:985 #, c-format msgid "Problem closing the gzip file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:1013 +#: apt-pkg/contrib/fileutl.cc:988 #, c-format msgid "Problem closing the file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:1018 +#: apt-pkg/contrib/fileutl.cc:993 #, c-format msgid "Problem renaming the file %s to %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:1029 +#: apt-pkg/contrib/fileutl.cc:1004 #, c-format msgid "Problem unlinking the file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:1042 +#: apt-pkg/contrib/fileutl.cc:1017 msgid "Problem syncing the file" msgstr "" @@ -2371,59 +2275,59 @@ msgstr "" msgid "The package cache was built for a different architecture" msgstr "" -#: apt-pkg/pkgcache.cc:299 +#: apt-pkg/pkgcache.cc:293 msgid "Depends" msgstr "" -#: apt-pkg/pkgcache.cc:299 +#: apt-pkg/pkgcache.cc:293 msgid "PreDepends" msgstr "" -#: apt-pkg/pkgcache.cc:299 +#: apt-pkg/pkgcache.cc:293 msgid "Suggests" msgstr "" -#: apt-pkg/pkgcache.cc:300 +#: apt-pkg/pkgcache.cc:294 msgid "Recommends" msgstr "" -#: apt-pkg/pkgcache.cc:300 +#: apt-pkg/pkgcache.cc:294 msgid "Conflicts" msgstr "" -#: apt-pkg/pkgcache.cc:300 +#: apt-pkg/pkgcache.cc:294 msgid "Replaces" msgstr "" -#: apt-pkg/pkgcache.cc:301 +#: apt-pkg/pkgcache.cc:295 msgid "Obsoletes" msgstr "" -#: apt-pkg/pkgcache.cc:301 +#: apt-pkg/pkgcache.cc:295 msgid "Breaks" msgstr "" -#: apt-pkg/pkgcache.cc:301 +#: apt-pkg/pkgcache.cc:295 msgid "Enhances" msgstr "" -#: apt-pkg/pkgcache.cc:312 +#: apt-pkg/pkgcache.cc:306 msgid "important" msgstr "" -#: apt-pkg/pkgcache.cc:312 +#: apt-pkg/pkgcache.cc:306 msgid "required" msgstr "" -#: apt-pkg/pkgcache.cc:312 +#: apt-pkg/pkgcache.cc:306 msgid "standard" msgstr "" -#: apt-pkg/pkgcache.cc:313 +#: apt-pkg/pkgcache.cc:307 msgid "optional" msgstr "" -#: apt-pkg/pkgcache.cc:313 +#: apt-pkg/pkgcache.cc:307 msgid "extra" msgstr "" @@ -2453,6 +2357,11 @@ msgstr "" msgid "Failed to write temporary StateFile %s" msgstr "" +#: apt-pkg/depcache.cc:922 +#, c-format +msgid "Internal error, group '%s' has no installable pseudo package" +msgstr "" + #: apt-pkg/tagfile.cc:102 #, c-format msgid "Unable to parse package file %s (1)" @@ -2518,7 +2427,7 @@ msgstr "" msgid "Opening %s" msgstr "" -#: apt-pkg/sourcelist.cc:261 apt-pkg/cdrom.cc:444 +#: apt-pkg/sourcelist.cc:261 apt-pkg/cdrom.cc:438 #, c-format msgid "Line %u too long in source list %s." msgstr "" @@ -2533,14 +2442,14 @@ msgstr "" msgid "Type '%s' is not known on line %u in source list %s" msgstr "" -#: apt-pkg/packagemanager.cc:335 apt-pkg/packagemanager.cc:623 +#: apt-pkg/packagemanager.cc:331 apt-pkg/packagemanager.cc:616 #, c-format msgid "" "Could not perform immediate configuration on '%s'. Please see man 5 apt.conf " "under APT::Immediate-Configure for details. (%d)" msgstr "" -#: apt-pkg/packagemanager.cc:456 +#: apt-pkg/packagemanager.cc:452 #, c-format msgid "" "This installation run will require temporarily removing the essential " @@ -2548,7 +2457,7 @@ msgid "" "you really want to do it, activate the APT::Force-LoopBreak option." msgstr "" -#: apt-pkg/packagemanager.cc:501 +#: apt-pkg/packagemanager.cc:495 #, c-format msgid "" "Could not perform immediate configuration on already unpacked '%s'. Please " @@ -2560,25 +2469,25 @@ msgstr "" msgid "Index file type '%s' is not supported" msgstr "" -#: apt-pkg/algorithms.cc:247 +#: apt-pkg/algorithms.cc:292 #, c-format msgid "" "The package %s needs to be reinstalled, but I can't find an archive for it." msgstr "" -#: apt-pkg/algorithms.cc:1158 +#: apt-pkg/algorithms.cc:1218 msgid "" "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " "held packages." msgstr "" -#: apt-pkg/algorithms.cc:1160 +#: apt-pkg/algorithms.cc:1220 msgid "Unable to correct problems, you have held broken packages." msgstr "" -#: apt-pkg/algorithms.cc:1455 apt-pkg/algorithms.cc:1457 +#: apt-pkg/algorithms.cc:1496 apt-pkg/algorithms.cc:1498 msgid "" -"Some index files failed to download. They have been ignored, or old ones " +"Some index files failed to download, they have been ignored, or old ones " "used instead." msgstr "" @@ -2619,7 +2528,7 @@ msgstr "" msgid "Method %s did not start correctly" msgstr "" -#: apt-pkg/acquire-worker.cc:423 +#: apt-pkg/acquire-worker.cc:413 #, c-format msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter." msgstr "" @@ -2654,17 +2563,17 @@ msgstr "" msgid "The list of sources could not be read." msgstr "" -#: apt-pkg/policy.cc:351 +#: apt-pkg/policy.cc:344 #, c-format msgid "Invalid record in the preferences file %s, no Package header" msgstr "" -#: apt-pkg/policy.cc:373 +#: apt-pkg/policy.cc:366 #, c-format msgid "Did not understand pin type %s" msgstr "" -#: apt-pkg/policy.cc:381 +#: apt-pkg/policy.cc:374 msgid "No priority (or zero) specified for pin" msgstr "" @@ -2672,167 +2581,155 @@ msgstr "" msgid "Cache has an incompatible versioning system" msgstr "" -#: apt-pkg/pkgcachegen.cc:187 +#: apt-pkg/pkgcachegen.cc:198 #, c-format msgid "Error occurred while processing %s (NewPackage)" msgstr "" -#: apt-pkg/pkgcachegen.cc:204 +#: apt-pkg/pkgcachegen.cc:215 #, c-format msgid "Error occurred while processing %s (UsePackage1)" msgstr "" -#: apt-pkg/pkgcachegen.cc:242 +#: apt-pkg/pkgcachegen.cc:253 #, c-format msgid "Error occurred while processing %s (NewFileDesc1)" msgstr "" -#: apt-pkg/pkgcachegen.cc:274 +#: apt-pkg/pkgcachegen.cc:285 #, c-format msgid "Error occurred while processing %s (UsePackage2)" msgstr "" -#: apt-pkg/pkgcachegen.cc:278 +#: apt-pkg/pkgcachegen.cc:289 #, c-format msgid "Error occurred while processing %s (NewFileVer1)" msgstr "" -#: apt-pkg/pkgcachegen.cc:295 apt-pkg/pkgcachegen.cc:305 -#: apt-pkg/pkgcachegen.cc:313 +#: apt-pkg/pkgcachegen.cc:306 apt-pkg/pkgcachegen.cc:316 +#: apt-pkg/pkgcachegen.cc:324 #, c-format msgid "Error occurred while processing %s (NewVersion%d)" msgstr "" -#: apt-pkg/pkgcachegen.cc:309 +#: apt-pkg/pkgcachegen.cc:320 #, c-format msgid "Error occurred while processing %s (UsePackage3)" msgstr "" -#: apt-pkg/pkgcachegen.cc:342 +#: apt-pkg/pkgcachegen.cc:353 #, c-format msgid "Error occurred while processing %s (NewFileDesc2)" msgstr "" -#: apt-pkg/pkgcachegen.cc:348 +#: apt-pkg/pkgcachegen.cc:360 msgid "Wow, you exceeded the number of package names this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:351 +#: apt-pkg/pkgcachegen.cc:363 msgid "Wow, you exceeded the number of versions this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:354 +#: apt-pkg/pkgcachegen.cc:366 msgid "Wow, you exceeded the number of descriptions this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:357 +#: apt-pkg/pkgcachegen.cc:369 msgid "Wow, you exceeded the number of dependencies this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:386 +#: apt-pkg/pkgcachegen.cc:398 #, c-format msgid "Error occurred while processing %s (FindPkg)" msgstr "" -#: apt-pkg/pkgcachegen.cc:400 +#: apt-pkg/pkgcachegen.cc:412 #, c-format msgid "Error occurred while processing %s (CollectFileProvides)" msgstr "" -#: apt-pkg/pkgcachegen.cc:406 +#: apt-pkg/pkgcachegen.cc:418 #, c-format msgid "Package %s %s was not found while processing file dependencies" msgstr "" -#: apt-pkg/pkgcachegen.cc:960 +#: apt-pkg/pkgcachegen.cc:982 #, c-format msgid "Couldn't stat source package list %s" msgstr "" -#: apt-pkg/pkgcachegen.cc:1065 +#: apt-pkg/pkgcachegen.cc:1087 msgid "Collecting File Provides" msgstr "" -#: apt-pkg/pkgcachegen.cc:1243 apt-pkg/pkgcachegen.cc:1250 +#: apt-pkg/pkgcachegen.cc:1265 apt-pkg/pkgcachegen.cc:1272 msgid "IO Error saving source cache" msgstr "" -#: apt-pkg/acquire-item.cc:135 +#: apt-pkg/acquire-item.cc:136 #, c-format msgid "rename failed, %s (%s -> %s)." msgstr "" -#: apt-pkg/acquire-item.cc:636 +#: apt-pkg/acquire-item.cc:484 msgid "MD5Sum mismatch" msgstr "" -#: apt-pkg/acquire-item.cc:900 apt-pkg/acquire-item.cc:1848 -#: apt-pkg/acquire-item.cc:1991 +#: apt-pkg/acquire-item.cc:746 apt-pkg/acquire-item.cc:1574 +#: apt-pkg/acquire-item.cc:1717 msgid "Hash Sum mismatch" msgstr "" -#: apt-pkg/acquire-item.cc:1388 -#, c-format -msgid "" -"Unable to find expected entry '%s' in Release file (Wrong sources.list entry " -"or malformed file)" -msgstr "" - -#: apt-pkg/acquire-item.cc:1403 -#, c-format -msgid "Unable to find hash sum for '%s' in Release file" -msgstr "" - -#: apt-pkg/acquire-item.cc:1439 +#: apt-pkg/acquire-item.cc:1244 msgid "There is no public key available for the following key IDs:\n" msgstr "" -#: apt-pkg/acquire-item.cc:1477 +#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is +#. the time since then the file is invalid - formated in the same way as in +#. the download progress display (e.g. 7d 3h 42min 1s) +#: apt-pkg/acquire-item.cc:1281 #, c-format -msgid "" -"Release file for %s is expired (invalid since %s). Updates for this " -"repository will not be applied." +msgid "Release file expired, ignoring %s (invalid since %s)" msgstr "" -#: apt-pkg/acquire-item.cc:1499 +#: apt-pkg/acquire-item.cc:1302 #, c-format msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#: apt-pkg/acquire-item.cc:1532 +#: apt-pkg/acquire-item.cc:1328 #, c-format msgid "" "A error occurred during the signature verification. The repository is not " "updated and the previous index files will be used. GPG error: %s: %s\n" msgstr "" -#. Invalid signature file, reject (LP: #346386) (Closes: #627642) -#: apt-pkg/acquire-item.cc:1542 apt-pkg/acquire-item.cc:1547 +#: apt-pkg/acquire-item.cc:1337 #, c-format msgid "GPG error: %s: %s" msgstr "" -#: apt-pkg/acquire-item.cc:1639 +#: apt-pkg/acquire-item.cc:1365 #, c-format msgid "" "I wasn't able to locate a file for the %s package. This might mean you need " "to manually fix this package. (due to missing arch)" msgstr "" -#: apt-pkg/acquire-item.cc:1698 +#: apt-pkg/acquire-item.cc:1424 #, c-format msgid "" "I wasn't able to locate a file for the %s package. This might mean you need " "to manually fix this package." msgstr "" -#: apt-pkg/acquire-item.cc:1753 +#: apt-pkg/acquire-item.cc:1479 #, c-format msgid "" "The package index files are corrupted. No Filename: field for package %s." msgstr "" -#: apt-pkg/acquire-item.cc:1840 +#: apt-pkg/acquire-item.cc:1566 msgid "Size mismatch" msgstr "" @@ -2841,129 +2738,130 @@ msgstr "" msgid "Unable to parse Release file %s" msgstr "" -#: apt-pkg/indexrecords.cc:63 +#: apt-pkg/indexrecords.cc:60 #, c-format msgid "No sections in Release file %s" msgstr "" -#: apt-pkg/indexrecords.cc:97 +#: apt-pkg/indexrecords.cc:94 #, c-format msgid "No Hash entry in Release file %s" msgstr "" -#: apt-pkg/indexrecords.cc:110 +#: apt-pkg/indexrecords.cc:107 #, c-format msgid "Invalid 'Valid-Until' entry in Release file %s" msgstr "" -#: apt-pkg/indexrecords.cc:125 +#: apt-pkg/indexrecords.cc:122 #, c-format msgid "Invalid 'Date' entry in Release file %s" msgstr "" -#: apt-pkg/vendorlist.cc:71 +#: apt-pkg/vendorlist.cc:66 #, c-format msgid "Vendor block %s contains no fingerprint" msgstr "" -#: apt-pkg/cdrom.cc:525 +#: apt-pkg/cdrom.cc:518 #, c-format msgid "" "Using CD-ROM mount point %s\n" "Mounting CD-ROM\n" msgstr "" -#: apt-pkg/cdrom.cc:534 apt-pkg/cdrom.cc:631 +#: apt-pkg/cdrom.cc:527 apt-pkg/cdrom.cc:615 msgid "Identifying.. " msgstr "" -#: apt-pkg/cdrom.cc:562 +#: apt-pkg/cdrom.cc:552 #, c-format msgid "Stored label: %s\n" msgstr "" -#: apt-pkg/cdrom.cc:571 apt-pkg/cdrom.cc:847 +#: apt-pkg/cdrom.cc:559 apt-pkg/cdrom.cc:827 msgid "Unmounting CD-ROM...\n" msgstr "" -#: apt-pkg/cdrom.cc:591 +#: apt-pkg/cdrom.cc:578 #, c-format msgid "Using CD-ROM mount point %s\n" msgstr "" -#: apt-pkg/cdrom.cc:609 +#: apt-pkg/cdrom.cc:596 msgid "Unmounting CD-ROM\n" msgstr "" -#: apt-pkg/cdrom.cc:614 +#: apt-pkg/cdrom.cc:600 msgid "Waiting for disc...\n" msgstr "" -#: apt-pkg/cdrom.cc:623 +#. Mount the new CDROM +#: apt-pkg/cdrom.cc:608 msgid "Mounting CD-ROM...\n" msgstr "" -#: apt-pkg/cdrom.cc:642 +#: apt-pkg/cdrom.cc:626 msgid "Scanning disc for index files..\n" msgstr "" -#: apt-pkg/cdrom.cc:684 +#: apt-pkg/cdrom.cc:666 #, c-format msgid "" "Found %zu package indexes, %zu source indexes, %zu translation indexes and " "%zu signatures\n" msgstr "" -#: apt-pkg/cdrom.cc:695 +#: apt-pkg/cdrom.cc:677 msgid "" "Unable to locate any package files, perhaps this is not a Debian Disc or the " "wrong architecture?" msgstr "" -#: apt-pkg/cdrom.cc:722 +#: apt-pkg/cdrom.cc:703 #, c-format msgid "Found label '%s'\n" msgstr "" -#: apt-pkg/cdrom.cc:751 +#: apt-pkg/cdrom.cc:732 msgid "That is not a valid name, try again.\n" msgstr "" -#: apt-pkg/cdrom.cc:768 +#: apt-pkg/cdrom.cc:748 #, c-format msgid "" "This disc is called: \n" "'%s'\n" msgstr "" -#: apt-pkg/cdrom.cc:770 +#: apt-pkg/cdrom.cc:752 msgid "Copying package lists..." msgstr "" -#: apt-pkg/cdrom.cc:797 +#: apt-pkg/cdrom.cc:778 msgid "Writing new source list\n" msgstr "" -#: apt-pkg/cdrom.cc:805 +#: apt-pkg/cdrom.cc:787 msgid "Source list entries for this disc are:\n" msgstr "" -#: apt-pkg/indexcopy.cc:270 apt-pkg/indexcopy.cc:909 +#: apt-pkg/indexcopy.cc:270 apt-pkg/indexcopy.cc:908 #, c-format msgid "Wrote %i records.\n" msgstr "" -#: apt-pkg/indexcopy.cc:272 apt-pkg/indexcopy.cc:911 +#: apt-pkg/indexcopy.cc:272 apt-pkg/indexcopy.cc:910 #, c-format msgid "Wrote %i records with %i missing files.\n" msgstr "" -#: apt-pkg/indexcopy.cc:275 apt-pkg/indexcopy.cc:914 +#: apt-pkg/indexcopy.cc:275 apt-pkg/indexcopy.cc:913 #, c-format msgid "Wrote %i records with %i mismatched files\n" msgstr "" -#: apt-pkg/indexcopy.cc:278 apt-pkg/indexcopy.cc:917 +#: apt-pkg/indexcopy.cc:278 apt-pkg/indexcopy.cc:916 #, c-format msgid "Wrote %i records with %i missing files and %i mismatched files\n" msgstr "" @@ -3030,123 +2928,123 @@ msgstr "" msgid "Can't select installed version from package %s as it is not installed" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:54 +#: apt-pkg/deb/dpkgpm.cc:52 #, c-format msgid "Installing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:55 apt-pkg/deb/dpkgpm.cc:848 +#: apt-pkg/deb/dpkgpm.cc:53 apt-pkg/deb/dpkgpm.cc:823 #, c-format msgid "Configuring %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:56 apt-pkg/deb/dpkgpm.cc:855 +#: apt-pkg/deb/dpkgpm.cc:54 apt-pkg/deb/dpkgpm.cc:830 #, c-format msgid "Removing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:57 +#: apt-pkg/deb/dpkgpm.cc:55 #, c-format msgid "Completely removing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:58 +#: apt-pkg/deb/dpkgpm.cc:56 #, c-format msgid "Noting disappearance of %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:59 +#: apt-pkg/deb/dpkgpm.cc:57 #, c-format msgid "Running post-installation trigger %s" msgstr "" #. FIXME: use a better string after freeze -#: apt-pkg/deb/dpkgpm.cc:654 +#: apt-pkg/deb/dpkgpm.cc:646 #, c-format msgid "Directory '%s' missing" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:669 apt-pkg/deb/dpkgpm.cc:689 +#: apt-pkg/deb/dpkgpm.cc:661 apt-pkg/deb/dpkgpm.cc:675 #, c-format msgid "Could not open file '%s'" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:841 +#: apt-pkg/deb/dpkgpm.cc:816 #, c-format msgid "Preparing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:842 +#: apt-pkg/deb/dpkgpm.cc:817 #, c-format msgid "Unpacking %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:847 +#: apt-pkg/deb/dpkgpm.cc:822 #, c-format msgid "Preparing to configure %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:849 +#: apt-pkg/deb/dpkgpm.cc:824 #, c-format msgid "Installed %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:854 +#: apt-pkg/deb/dpkgpm.cc:829 #, c-format msgid "Preparing for removal of %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:856 +#: apt-pkg/deb/dpkgpm.cc:831 #, c-format msgid "Removed %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:861 +#: apt-pkg/deb/dpkgpm.cc:836 #, c-format msgid "Preparing to completely remove %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:862 +#: apt-pkg/deb/dpkgpm.cc:837 #, c-format msgid "Completely removed %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1082 +#: apt-pkg/deb/dpkgpm.cc:1043 msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1113 +#: apt-pkg/deb/dpkgpm.cc:1074 msgid "Running dpkg" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1338 +#: apt-pkg/deb/dpkgpm.cc:1277 msgid "No apport report written because MaxReports is reached already" msgstr "" #. check if its not a follow up error -#: apt-pkg/deb/dpkgpm.cc:1343 +#: apt-pkg/deb/dpkgpm.cc:1282 msgid "dependency problems - leaving unconfigured" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1345 +#: apt-pkg/deb/dpkgpm.cc:1284 msgid "" "No apport report written because the error message indicates its a followup " "error from a previous failure." msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1351 +#: apt-pkg/deb/dpkgpm.cc:1290 msgid "" "No apport report written because the error message indicates a disk full " "error" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1357 +#: apt-pkg/deb/dpkgpm.cc:1296 msgid "" "No apport report written because the error message indicates a out of memory " "error" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1364 +#: apt-pkg/deb/dpkgpm.cc:1303 msgid "" "No apport report written because the error message indicates a dpkg I/O error" msgstr "" @@ -3177,37 +3075,30 @@ msgstr "" #. FIXME: fallback to a default mirror here instead #. and provide a config option to define that default -#: methods/mirror.cc:260 +#: methods/mirror.cc:200 #, c-format msgid "No mirror file '%s' found " msgstr "" -#. FIXME: fallback to a default mirror here instead -#. and provide a config option to define that default -#: methods/mirror.cc:267 -#, c-format -msgid "Can not read mirror file '%s'" -msgstr "" - -#: methods/mirror.cc:422 +#: methods/mirror.cc:343 #, c-format msgid "[Mirror: %s]" msgstr "" -#: methods/rred.cc:503 +#: methods/rred.cc:465 #, c-format msgid "" "Could not patch %s with mmap and with file operation usage - the patch seems " "to be corrupt." msgstr "" -#: methods/rred.cc:508 +#: methods/rred.cc:470 #, c-format msgid "" "Could not patch %s with mmap (but no mmap specific fail) - the patch seems " "to be corrupt." msgstr "" -#: methods/rsh.cc:330 +#: methods/rsh.cc:329 msgid "Connection closed prematurely" msgstr "" diff --git a/test/integration/framework b/test/integration/framework index cc5af798c..fa451cf4f 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -151,6 +151,7 @@ setupenvironment() { configarchitecture() { local CONFFILE=rootdir/etc/apt/apt.conf.d/01multiarch.conf + rm -f $CONFFILE echo "APT::Architecture \"$1\";" > $CONFFILE shift while [ -n "$1" ]; do @@ -429,6 +430,27 @@ Filename: pool/main/${NAME}/${NAME}_${VERSION}_${arch}.deb" >> $FILE done } +insertsource() { + local RELEASE="$1" + local NAME="$2" + local ARCH="$3" + local VERSION="$4" + local DEPENDENCIES="$5" + local ARCHS="" + local SPATH="aptarchive/dists/${RELEASE}/main/source" + mkdir -p $SPATH + local FILE="${SPATH}/Sources" + echo "Package: $NAME +Binary: $NAME +Version: $VERSION +Maintainer: Joe Sixpack <joe@example.org> +Architecture: $ARCH" >> $FILE + test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> $FILE + echo "Files: + d41d8cd98f00b204e9800998ecf8427e 0 ${NAME}_${VERSION}.dsc + d41d8cd98f00b204e9800998ecf8427e 0 ${NAME}_${VERSION}.tar.gz" >> $FILE +} + insertinstalledpackage() { local NAME="$1" local ARCH="$2" @@ -481,6 +503,10 @@ buildaptarchivefromfiles() { generatereleasefiles } +# can be overridden by testcases for their pleasure +getcodenamefromsuite() { echo -n "$1"; } +getreleaseversionfromsuite() { true; } + generatereleasefiles() { msgninfo "\tGenerate Release files… " local DATE="${1:-now}" @@ -489,9 +515,22 @@ generatereleasefiles() { aptftparchive -qq release $dir -o APT::FTPArchive::Release::Patterns::='Translation-*' > $dir/Index done for dir in $(find ./aptarchive/dists -mindepth 1 -maxdepth 1 -type d); do - local CODENAME="$(echo "$dir" | cut -d'/' -f 4)" - aptftparchive -qq release $dir -o APT::FTPArchive::Release::Suite="${CODENAME}" -o APT::FTPArchive::Release::Codename="${CODENAME}" | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference - if [ "$CODENAME" = "experimental" -o "$CODENAME" = "experimental2" ]; then + local SUITE="$(echo "$dir" | cut -d'/' -f 4)" + local CODENAME="$(getcodenamefromsuite $SUITE)" + local VERSION="$(getreleaseversionfromsuite $SUITE)" + if [ -z "$VERSION" ]; then + aptftparchive -qq release $dir \ + -o APT::FTPArchive::Release::Suite="${SUITE}" \ + -o APT::FTPArchive::Release::Codename="${CODENAME}" \ + | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference + else + aptftparchive -qq release $dir \ + -o APT::FTPArchive::Release::Suite="${SUITE}" \ + -o APT::FTPArchive::Release::Codename="${CODENAME}" \ + -o APT::FTPArchive::Release::Version="${VERSION}" \ + | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference + fi + if [ "$SUITE" = "experimental" -o "$SUITE" = "experimental2" ]; then sed -i '/^Date: / a\ NotAutomatic: yes' $dir/Release fi @@ -708,3 +747,9 @@ testmarkedauto() { fi aptmark showauto 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail } + +pause() { + echo "STOPPED execution. Press enter to continue" + local IGNORE + read IGNORE +} diff --git a/test/integration/test-bug-407511-fail-invalid-default-release b/test/integration/test-bug-407511-fail-invalid-default-release new file mode 100755 index 000000000..d0a73af7d --- /dev/null +++ b/test/integration/test-bug-407511-fail-invalid-default-release @@ -0,0 +1,47 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'i386' + +insertpackage 'unstable' 'cool' 'all' '1.0-1' + +getcodenamefromsuite() { + if [ "$SUITE" = 'unstable' ]; then + echo -n 'sid' + else + echo -n "$SUITE" + fi +} +getreleaseversionfromsuite() { + if [ "$SUITE" = 'unstable' ]; then + echo -n '42.0' + else + echo -n '0.8.15' + fi +} + +setupaptarchive + +passdist() { + msgtest "Test that target-release is accepted" $1 + aptget dist-upgrade -t $1 -qq && msgpass || msgfail +} + +faildist() { + msgtest "Test that target-release is refused" $1 + aptget dist-upgrade -t $1 -qq 2> /dev/null && msgfail || msgpass +} + +passdist unstable +passdist sid +faildist sidd +faildist stable +passdist 42.0 +passdist 42.* +passdist 42* +passdist 4*.0 +faildist 21.0 +faildist 21* diff --git a/test/integration/test-bug-632221-cross-dependency-satisfaction b/test/integration/test-bug-632221-cross-dependency-satisfaction new file mode 100755 index 000000000..58de44843 --- /dev/null +++ b/test/integration/test-bug-632221-cross-dependency-satisfaction @@ -0,0 +1,183 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'amd64' 'armel' + +insertinstalledpackage 'build-essential' 'all' '11.5' + +insertpackage 'unstable' 'doxygen' 'amd64,armel' '1.0' +insertpackage 'unstable' 'libc6' 'amd64,armel' '1.0' 'Multi-Arch: same' +insertpackage 'unstable' 'libc6-dev' 'amd64,armel' '1.0' 'Depends: libc6 +Multi-Arch: same' +insertpackage 'unstable' 'cool' 'amd64,armel' '1.0' 'Multi-Arch: allowed' +insertpackage 'unstable' 'amdboot' 'amd64' '1.0' +insertpackage 'unstable' 'foreigner' 'amd64,armel' '1.0' 'Multi-Arch: foreign' + +insertsource 'unstable' 'apt' 'any' '0.8.15' 'Build-Depends: doxygen, libc6-dev, libc6-dev:native, cool:any, amdboot:amd64, foreigner' + +setupaptarchive + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + amdboot cool doxygen foreigner libc6 libc6-dev +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. +Inst amdboot (1.0 unstable [amd64]) +Inst cool (1.0 unstable [amd64]) +Inst doxygen (1.0 unstable [amd64]) +Inst foreigner (1.0 unstable [amd64]) +Inst libc6 (1.0 unstable [amd64]) +Inst libc6-dev (1.0 unstable [amd64]) +Conf amdboot (1.0 unstable [amd64]) +Conf cool (1.0 unstable [amd64]) +Conf doxygen (1.0 unstable [amd64]) +Conf foreigner (1.0 unstable [amd64]) +Conf libc6 (1.0 unstable [amd64]) +Conf libc6-dev (1.0 unstable [amd64])' aptget build-dep apt -s + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + amdboot cool doxygen foreigner libc6 libc6:armel libc6-dev libc6-dev:armel +0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded. +Inst amdboot (1.0 unstable [amd64]) +Inst cool (1.0 unstable [amd64]) +Inst doxygen (1.0 unstable [amd64]) +Inst foreigner (1.0 unstable [amd64]) +Inst libc6:armel (1.0 unstable [armel]) +Inst libc6 (1.0 unstable [amd64]) +Inst libc6-dev:armel (1.0 unstable [armel]) +Inst libc6-dev (1.0 unstable [amd64]) +Conf amdboot (1.0 unstable [amd64]) +Conf cool (1.0 unstable [amd64]) +Conf doxygen (1.0 unstable [amd64]) +Conf foreigner (1.0 unstable [amd64]) +Conf libc6 (1.0 unstable [amd64]) +Conf libc6:armel (1.0 unstable [armel]) +Conf libc6-dev (1.0 unstable [amd64]) +Conf libc6-dev:armel (1.0 unstable [armel])' aptget build-dep apt -s -a armel + +configarchitecture 'armel' 'amd64' + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + amdboot:amd64 cool doxygen foreigner libc6 libc6-dev +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. +Inst amdboot:amd64 (1.0 unstable [amd64]) +Inst cool (1.0 unstable [armel]) +Inst doxygen (1.0 unstable [armel]) +Inst foreigner (1.0 unstable [armel]) +Inst libc6 (1.0 unstable [armel]) +Inst libc6-dev (1.0 unstable [armel]) +Conf amdboot:amd64 (1.0 unstable [amd64]) +Conf cool (1.0 unstable [armel]) +Conf doxygen (1.0 unstable [armel]) +Conf foreigner (1.0 unstable [armel]) +Conf libc6 (1.0 unstable [armel]) +Conf libc6-dev (1.0 unstable [armel])' aptget build-dep apt -s + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + amdboot:amd64 cool doxygen foreigner libc6:amd64 libc6 libc6-dev:amd64 + libc6-dev +0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded. +Inst amdboot:amd64 (1.0 unstable [amd64]) +Inst cool (1.0 unstable [armel]) +Inst doxygen (1.0 unstable [armel]) +Inst foreigner (1.0 unstable [armel]) +Inst libc6 (1.0 unstable [armel]) +Inst libc6:amd64 (1.0 unstable [amd64]) +Inst libc6-dev (1.0 unstable [armel]) +Inst libc6-dev:amd64 (1.0 unstable [amd64]) +Conf amdboot:amd64 (1.0 unstable [amd64]) +Conf cool (1.0 unstable [armel]) +Conf doxygen (1.0 unstable [armel]) +Conf foreigner (1.0 unstable [armel]) +Conf libc6:amd64 (1.0 unstable [amd64]) +Conf libc6 (1.0 unstable [armel]) +Conf libc6-dev:amd64 (1.0 unstable [amd64]) +Conf libc6-dev (1.0 unstable [armel])' aptget build-dep apt -s -a amd64 + +configarchitecture 'amd64' 'armel' + +insertinstalledpackage 'cool' 'amd64' '0.5' +insertinstalledpackage 'foreigner' 'armel' '0.5' + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + amdboot doxygen libc6 libc6-dev +0 upgraded, 4 newly installed, 0 to remove and 2 not upgraded. +Inst amdboot (1.0 unstable [amd64]) +Inst doxygen (1.0 unstable [amd64]) +Inst libc6 (1.0 unstable [amd64]) +Inst libc6-dev (1.0 unstable [amd64]) +Conf amdboot (1.0 unstable [amd64]) +Conf doxygen (1.0 unstable [amd64]) +Conf libc6 (1.0 unstable [amd64]) +Conf libc6-dev (1.0 unstable [amd64])' aptget build-dep apt -s + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + amdboot doxygen libc6 libc6:armel libc6-dev libc6-dev:armel +0 upgraded, 6 newly installed, 0 to remove and 2 not upgraded. +Inst amdboot (1.0 unstable [amd64]) +Inst doxygen (1.0 unstable [amd64]) +Inst libc6:armel (1.0 unstable [armel]) +Inst libc6 (1.0 unstable [amd64]) +Inst libc6-dev:armel (1.0 unstable [armel]) +Inst libc6-dev (1.0 unstable [amd64]) +Conf amdboot (1.0 unstable [amd64]) +Conf doxygen (1.0 unstable [amd64]) +Conf libc6 (1.0 unstable [amd64]) +Conf libc6:armel (1.0 unstable [armel]) +Conf libc6-dev (1.0 unstable [amd64]) +Conf libc6-dev:armel (1.0 unstable [armel])' aptget build-dep apt -s -a armel + +configarchitecture 'armel' 'amd64' + +# cool 0.5 is not M-A: allowed, so amd64 is not acceptable +testequal 'Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + cool:amd64 +The following NEW packages will be installed: + amdboot:amd64 cool doxygen libc6 libc6-dev +0 upgraded, 5 newly installed, 1 to remove and 1 not upgraded. +Remv cool:amd64 [0.5] +Inst amdboot:amd64 (1.0 unstable [amd64]) +Inst cool (1.0 unstable [armel]) +Inst doxygen (1.0 unstable [armel]) +Inst libc6 (1.0 unstable [armel]) +Inst libc6-dev (1.0 unstable [armel]) +Conf amdboot:amd64 (1.0 unstable [amd64]) +Conf cool (1.0 unstable [armel]) +Conf doxygen (1.0 unstable [armel]) +Conf libc6 (1.0 unstable [armel]) +Conf libc6-dev (1.0 unstable [armel])' aptget build-dep apt -s + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + amdboot:amd64 doxygen libc6:amd64 libc6 libc6-dev:amd64 libc6-dev +0 upgraded, 6 newly installed, 0 to remove and 2 not upgraded. +Inst amdboot:amd64 (1.0 unstable [amd64]) +Inst doxygen (1.0 unstable [armel]) +Inst libc6 (1.0 unstable [armel]) +Inst libc6:amd64 (1.0 unstable [amd64]) +Inst libc6-dev (1.0 unstable [armel]) +Inst libc6-dev:amd64 (1.0 unstable [amd64]) +Conf amdboot:amd64 (1.0 unstable [amd64]) +Conf doxygen (1.0 unstable [armel]) +Conf libc6:amd64 (1.0 unstable [amd64]) +Conf libc6 (1.0 unstable [armel]) +Conf libc6-dev:amd64 (1.0 unstable [amd64]) +Conf libc6-dev (1.0 unstable [armel])' aptget build-dep apt -s -a amd64 + + diff --git a/test/integration/test-ubuntu-bug-784473-InRelease-one-message-only b/test/integration/test-ubuntu-bug-784473-InRelease-one-message-only new file mode 100755 index 000000000..d97011914 --- /dev/null +++ b/test/integration/test-ubuntu-bug-784473-InRelease-one-message-only @@ -0,0 +1,31 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'i386' + +insertpackage 'unstable' 'apt' 'i386' '0.8.11' + +setupaptarchive + +rm -rf rootdir/var/lib/apt/lists + +find aptarchive/ -name 'Release.gpg' -delete +find aptarchive/ -name 'InRelease' -exec cp {} {}.old \; + +for RELEASE in $(find aptarchive/ -name 'InRelease'); do + (echo 'Origin: Marvin +Label: Marvin +Suite: experimental +Codename: experimental +MD5Sum: + 65fd410587b6978de2277f2912523f09 9360 Packages + d27b294ed172a1fa9dd5a53949914c5d 4076 Packages.bz2 + 2182897e0a2a0c09e760beaae117a015 2023 Packages.diff/Index + 1b895931853981ad8204d2439821b999 4144 Packages.gz'; echo; cat ${RELEASE}.old;) > ${RELEASE} +done +aptget update -qq > /dev/null 2> starts-with-unsigned.msg +sed -i 's#File .*InRelease#File InRelease#' starts-with-unsigned.msg +testfileequal starts-with-unsigned.msg "W: GPG error: file: unstable InRelease: File InRelease doesn't start with a clearsigned message" diff --git a/test/integration/test-ubuntu-bug-806274-install-suggests b/test/integration/test-ubuntu-bug-806274-install-suggests new file mode 100755 index 000000000..fb72f0999 --- /dev/null +++ b/test/integration/test-ubuntu-bug-806274-install-suggests @@ -0,0 +1,81 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" + +insertpackage 'unstable' 'apt' 'i386' '0.8.15' 'Depends: foo +Recommends: bar +Suggests: baz' +insertpackage 'unstable' 'foo' 'i386' '1.0' +insertpackage 'unstable' 'bar' 'i386' '1.0' +insertpackage 'unstable' 'baz' 'i386' '1.0' + +setupaptarchive + +testequal 'Reading package lists... +Building dependency tree... +The following extra packages will be installed: + bar foo +Suggested packages: + baz +The following NEW packages will be installed: + apt bar foo +0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. +Inst foo (1.0 unstable [i386]) +Conf foo (1.0 unstable [i386]) +Inst apt (0.8.15 unstable [i386]) +Conf apt (0.8.15 unstable [i386]) +Inst bar (1.0 unstable [i386]) +Conf bar (1.0 unstable [i386])' aptget install apt -s --install-recommends --no-install-suggests + + +testequal 'Reading package lists... +Building dependency tree... +The following extra packages will be installed: + bar baz foo +The following NEW packages will be installed: + apt bar baz foo +0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. +Inst foo (1.0 unstable [i386]) +Conf foo (1.0 unstable [i386]) +Inst apt (0.8.15 unstable [i386]) +Conf apt (0.8.15 unstable [i386]) +Inst bar (1.0 unstable [i386]) +Inst baz (1.0 unstable [i386]) +Conf bar (1.0 unstable [i386]) +Conf baz (1.0 unstable [i386])' aptget install apt -s --install-recommends --install-suggests + +testequal 'Reading package lists... +Building dependency tree... +The following extra packages will be installed: + foo +Suggested packages: + baz +Recommended packages: + bar +The following NEW packages will be installed: + apt foo +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst foo (1.0 unstable [i386]) +Conf foo (1.0 unstable [i386]) +Inst apt (0.8.15 unstable [i386]) +Conf apt (0.8.15 unstable [i386])' aptget install apt -s --no-install-recommends --no-install-suggests + +testequal 'Reading package lists... +Building dependency tree... +The following extra packages will be installed: + baz foo +Recommended packages: + bar +The following NEW packages will be installed: + apt baz foo +0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. +Inst foo (1.0 unstable [i386]) +Conf foo (1.0 unstable [i386]) +Inst apt (0.8.15 unstable [i386]) +Conf apt (0.8.15 unstable [i386]) +Inst baz (1.0 unstable [i386]) +Conf baz (1.0 unstable [i386])' aptget install apt -s --no-install-recommends --install-suggests diff --git a/test/libapt/assert.h b/test/libapt/assert.h index 5da76ae0a..92b662dfa 100644 --- a/test/libapt/assert.h +++ b/test/libapt/assert.h @@ -1,9 +1,9 @@ #include <iostream> -#define equals(x,y) assertEquals(x, y, __LINE__) +#define equals(x,y) assertEquals(y, x, __LINE__) template < typename X, typename Y > -void OutputAssert(X expect, char const* compare, Y get, unsigned long const &line) { +void OutputAssertEqual(X expect, char const* compare, Y get, unsigned long const &line) { std::cerr << "Test FAILED: »" << expect << "« " << compare << " »" << get << "« at line " << line << std::endl; } @@ -11,11 +11,45 @@ template < typename X, typename Y > void assertEquals(X expect, Y get, unsigned long const &line) { if (expect == get) return; - OutputAssert(expect, "==", get, line); + OutputAssertEqual(expect, "==", get, line); } void assertEquals(unsigned int const &expect, int const &get, unsigned long const &line) { if (get < 0) - OutputAssert(expect, "==", get, line); + OutputAssertEqual(expect, "==", get, line); assertEquals<unsigned int const&, unsigned int const&>(expect, get, line); } + +void assertEquals(int const &expect, unsigned int const &get, unsigned long const &line) { + if (expect < 0) + OutputAssertEqual(expect, "==", get, line); + assertEquals<unsigned int const&, unsigned int const&>(expect, get, line); +} + + +#define equalsOr2(x,y,z) assertEqualsOr2(y, z, x, __LINE__) + +template < typename X, typename Y > +void OutputAssertEqualOr2(X expect1, X expect2, char const* compare, Y get, unsigned long const &line) { + std::cerr << "Test FAILED: »" << expect1 << "« or »" << expect2 << "« " << compare << " »" << get << "« at line " << line << std::endl; +} + +template < typename X, typename Y > +void assertEqualsOr2(X expect1, X expect2, Y get, unsigned long const &line) { + if (expect1 == get || expect2 == get) + return; + OutputAssertEqualOr2(expect1, expect2, "==", get, line); +} + +void assertEqualsOr2(unsigned int const &expect1, unsigned int const &expect2, int const &get, unsigned long const &line) { + if (get < 0) + OutputAssertEqualOr2(expect1, expect2, "==", get, line); + assertEqualsOr2<unsigned int const&, unsigned int const&>(expect1, expect2, get, line); +} + +void assertEqualsOr2(int const &expect1, int const &expect2, unsigned int const &get, unsigned long const &line) { + if (expect1 < 0 && expect2 < 0) + OutputAssertEqualOr2(expect1, expect2, "==", get, line); + assertEqualsOr2<unsigned int const&, unsigned int const&>(expect1, expect2, get, line); +} + diff --git a/test/libapt/getarchitectures_test.cc b/test/libapt/getarchitectures_test.cc index 1500caeed..e3ca7bbc2 100644 --- a/test/libapt/getarchitectures_test.cc +++ b/test/libapt/getarchitectures_test.cc @@ -39,6 +39,12 @@ int main(int argc,char *argv[]) _config->Set("APT::Architecture", "armel"); vec = APT::Configuration::getArchitectures(false); equals(vec.size(), 2); + equals(vec[0], "armel"); + equals(vec[1], "i386"); + + _config->Set("APT::Architectures::2", "armel"); + vec = APT::Configuration::getArchitectures(false); + equals(vec.size(), 2); equals(vec[0], "i386"); equals(vec[1], "armel"); diff --git a/test/libapt/getlanguages_test.cc b/test/libapt/getlanguages_test.cc index 707142aef..3d63e0e74 100644 --- a/test/libapt/getlanguages_test.cc +++ b/test/libapt/getlanguages_test.cc @@ -138,8 +138,8 @@ int main(int argc,char *argv[]) equals(vec[1], "de"); equals(vec[2], "en"); equals(vec[3], "none"); - equals(vec[4], "pt"); - equals(vec[5], "tr"); + equalsOr2(vec[4], "pt", "tr"); + equalsOr2(vec[5], "tr", "pt"); _config->Set("Dir::State::lists", "/non-existing-dir"); _config->Set("Acquire::Languages::1", "none"); |