summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/acquire.h2
-rw-r--r--apt-pkg/aptconfiguration.cc2
-rw-r--r--apt-pkg/contrib/configuration.cc13
-rw-r--r--apt-pkg/contrib/configuration.h1
-rw-r--r--apt-pkg/contrib/sha1.cc5
-rw-r--r--apt-pkg/deb/deblistparser.cc9
-rw-r--r--apt-pkg/depcache.cc2
-rw-r--r--apt-pkg/init.cc76
-rw-r--r--apt-pkg/pkgcachegen.cc22
-rw-r--r--apt-pkg/policy.cc18
-rw-r--r--cmdline/apt-get.cc311
-rwxr-xr-xcmdline/apt-key5
-rw-r--r--debian/apt.postinst5
-rw-r--r--debian/apt.symbols1
-rw-r--r--debian/changelog65
-rwxr-xr-xdebian/rules3
-rw-r--r--doc/apt-cache.8.xml2
-rw-r--r--doc/apt-get.8.xml27
-rw-r--r--doc/apt.conf.5.xml10
-rw-r--r--doc/examples/configure-index2
-rw-r--r--doc/po/apt-doc.pot2
-rw-r--r--doc/po/de.po4
-rw-r--r--doc/po/es.po2
-rw-r--r--doc/po/fr.po2
-rw-r--r--doc/po/ja.po4
-rw-r--r--doc/po/pl.po4
-rw-r--r--doc/po/pt.po4
-rw-r--r--doc/sources.list.5.xml18
-rw-r--r--po/apt-all.pot917
-rw-r--r--test/integration/framework51
-rwxr-xr-xtest/integration/test-bug-407511-fail-invalid-default-release47
-rwxr-xr-xtest/integration/test-bug-632221-cross-dependency-satisfaction183
-rwxr-xr-xtest/integration/test-ubuntu-bug-784473-InRelease-one-message-only31
-rwxr-xr-xtest/integration/test-ubuntu-bug-806274-install-suggests81
-rw-r--r--test/libapt/assert.h42
-rw-r--r--test/libapt/getarchitectures_test.cc6
-rw-r--r--test/libapt/getlanguages_test.cc4
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");