summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml11
-rw-r--r--CMakeLists.txt2
-rw-r--r--apt-pkg/deb/deblistparser.cc85
-rw-r--r--apt-pkg/depcache.cc19
-rw-r--r--apt-pkg/edsp.cc23
-rw-r--r--apt-pkg/edsp/edsplistparser.cc15
-rw-r--r--apt-pkg/pkgcachegen.cc4
-rw-r--r--apt-pkg/solver3.cc219
-rw-r--r--apt-pkg/solver3.h52
-rw-r--r--apt-pkg/tagfile-keys.list1
-rw-r--r--apt-private/private-install.cc18
-rw-r--r--cmdline/apt-key.in14
-rw-r--r--debian/changelog110
-rw-r--r--doc/apt-verbatim.ent2
-rw-r--r--doc/apt.conf.5.xml4
-rw-r--r--doc/examples/configure-index1
-rw-r--r--doc/po/apt-doc.pot6
-rw-r--r--doc/po/de.po10
-rw-r--r--doc/po/es.po10
-rw-r--r--doc/po/fr.po10
-rw-r--r--doc/po/it.po10
-rw-r--r--doc/po/ja.po10
-rw-r--r--doc/po/nl.po109
-rw-r--r--doc/po/pl.po10
-rw-r--r--doc/po/pt.po27
-rw-r--r--doc/po/pt_BR.po10
-rw-r--r--po/apt-all.pot16
-rw-r--r--po/ar.po16
-rw-r--r--po/ast.po16
-rw-r--r--po/bg.po16
-rw-r--r--po/bs.po16
-rw-r--r--po/ca.po16
-rw-r--r--po/cs.po16
-rw-r--r--po/cy.po17
-rw-r--r--po/da.po16
-rw-r--r--po/de.po16
-rw-r--r--po/dz.po16
-rw-r--r--po/el.po16
-rw-r--r--po/es.po16
-rw-r--r--po/eu.po16
-rw-r--r--po/fi.po16
-rw-r--r--po/fr.po16
-rw-r--r--po/gl.po16
-rw-r--r--po/hu.po16
-rw-r--r--po/it.po16
-rw-r--r--po/ja.po16
-rw-r--r--po/km.po16
-rw-r--r--po/ko.po16
-rw-r--r--po/ku.po16
-rw-r--r--po/lt.po16
-rw-r--r--po/mr.po16
-rw-r--r--po/nb.po16
-rw-r--r--po/ne.po16
-rw-r--r--po/nl.po32
-rw-r--r--po/nn.po16
-rw-r--r--po/pl.po16
-rw-r--r--po/pt.po16
-rw-r--r--po/pt_BR.po16
-rw-r--r--po/ro.po16
-rw-r--r--po/ru.po16
-rw-r--r--po/sk.po16
-rw-r--r--po/sl.po16
-rw-r--r--po/sv.po16
-rw-r--r--po/th.po16
-rw-r--r--po/tl.po16
-rw-r--r--po/tr.po16
-rw-r--r--po/uk.po16
-rw-r--r--po/vi.po16
-rw-r--r--po/zh_CN.po16
-rw-r--r--po/zh_TW.po16
-rw-r--r--test/integration/framework23
-rwxr-xr-xtest/integration/run-tests60
-rw-r--r--test/integration/solver3.broken32
-rwxr-xr-xtest/integration/test-allow-scores-for-all-dependency-types51
-rwxr-xr-xtest/integration/test-apt-get-autoremove-real-virtual-provider12
-rwxr-xr-xtest/integration/test-apt-get-build-dep1
-rwxr-xr-xtest/integration/test-apt-get-build-dep-barbarian19
-rwxr-xr-xtest/integration/test-apt-get-build-dep-file5
-rwxr-xr-xtest/integration/test-apt-get-install-deb7
-rwxr-xr-xtest/integration/test-apt-get-satisfy8
-rwxr-xr-xtest/integration/test-apt-get-source-only26
-rwxr-xr-xtest/integration/test-apt-get-upgrade76
-rwxr-xr-xtest/integration/test-apt-never-markauto-sections7
-rwxr-xr-xtest/integration/test-bug-549968-install-depends-of-not-installed22
-rwxr-xr-xtest/integration/test-bug-591882-conkeror3
-rwxr-xr-xtest/integration/test-bug-596498-trusted-unsigned-repo13
-rwxr-xr-xtest/integration/test-bug-598669-install-postfix-gets-exim-heavy2
-rwxr-xr-xtest/integration/test-bug-601961-install-info15
-rwxr-xr-xtest/integration/test-bug-604222-new-and-autoremove32
-rwxr-xr-xtest/integration/test-bug-612099-multiarch-conflicts1
-rwxr-xr-xtest/integration/test-bug-612557-garbage-upgrade4
-rwxr-xr-xtest/integration/test-bug-613420-new-garbage-dependency1
-rwxr-xr-xtest/integration/test-bug-618848-always-respect-user-requests13
-rwxr-xr-xtest/integration/test-bug-632221-cross-dependency-satisfaction11
-rwxr-xr-xtest/integration/test-bug-64141-install-dependencies-for-on-hold33
-rwxr-xr-xtest/integration/test-bug-657695-resolver-breaks-on-virtuals9
-rwxr-xr-xtest/integration/test-bug-683786-build-dep-on-virtual-packages10
-rwxr-xr-xtest/integration/test-bug-686346-package-missing-architecture1
-rwxr-xr-xtest/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch4
-rwxr-xr-xtest/integration/test-bug-720597-build-dep-purge1
-rwxr-xr-xtest/integration/test-bug-723586-any-stripped-in-single-arch15
-rwxr-xr-xtest/integration/test-bug-735967-lib32-to-i386-unavailable4
-rwxr-xr-xtest/integration/test-bug-747261-arch-specific-conflicts1
-rwxr-xr-xtest/integration/test-bug-758153-versioned-provides-support10
-rwxr-xr-xtest/integration/test-bug-769609-triggers-still-pending-after-run1
-rwxr-xr-xtest/integration/test-bug-796070-downgrade-simulate1
-rwxr-xr-xtest/integration/test-bug-960705-propagate-protected-to-satisfied-conflict3
-rwxr-xr-xtest/integration/test-bug-960705-propagate-protected-to-satisfied-depends31
-rwxr-xr-xtest/integration/test-bug-lp1562402-nomark-removals-as-keep9
-rwxr-xr-xtest/integration/test-crossgrades1
-rwxr-xr-xtest/integration/test-dpkg-i-apt-install-fix-broken24
-rwxr-xr-xtest/integration/test-external-installation-planner-protocol1
-rwxr-xr-xtest/integration/test-handling-broken-orgroups6
-rwxr-xr-xtest/integration/test-ignore-provides-if-versioned-breaks16
-rwxr-xr-xtest/integration/test-ignore-provides-if-versioned-conflicts15
-rwxr-xr-xtest/integration/test-multiarch-allowed45
-rwxr-xr-xtest/integration/test-multiarch-barbarian1
-rwxr-xr-xtest/integration/test-multiarch-foreign7
-rwxr-xr-xtest/integration/test-not-upgrading-removed-depends1
-rwxr-xr-xtest/integration/test-prefer-higher-priority-providers7
-rwxr-xr-xtest/integration/test-resolver-delays-remove-decisions54
-rwxr-xr-xtest/integration/test-resolver-provider-exchange2
-rwxr-xr-xtest/integration/test-specific-architecture-dependencies7
-rwxr-xr-xtest/integration/test-ubuntu-bug-197419615
-rwxr-xr-xtest/integration/test-unpack-different-version-unpacked14
-rw-r--r--test/libapt/parsedepends_test.cc52
126 files changed, 1791 insertions, 567 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fb85a73..dc8cfc9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -12,7 +12,7 @@ before_script:
- rm -f /etc/dpkg/dpkg.cfg.d/excludes
- apt-get update
- apt-get install --no-install-recommends -qq build-essential expect sudo ccache moreutils adduser
- - adduser --home /home/travis travis --quiet --disabled-login --gecos ""
+ - adduser --home /home/travis travis --quiet --disabled-login --gecos "" --shell /bin/sh
- chmod 755 /root
- chmod -R o+rwX $PWD
- ./prepare-release travis-ci
@@ -29,6 +29,15 @@ test as root:
- CTEST_OUTPUT_ON_FAILURE=1 ninja -C build test
- unbuffer ./test/integration/run-tests -q -j 4
+test solver3:
+ stage: test
+ variables:
+ APT_CMAKE_BUILD_OPTIONS: '-DWITH_DOC=OFF -DUSE_NLS=OFF'
+ DEB_BUILD_PROFILES: 'nodoc'
+ script:
+ - CTEST_OUTPUT_ON_FAILURE=1 ninja -C build test
+ - unbuffer ./test/integration/run-tests -q -j 4 --solver 3.0 --skip solver3.broken
+
test as user:
image: i386/debian:testing
stage: test
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6b29984..a457110 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -206,7 +206,7 @@ endif()
# Configure some variables like package, version and architecture.
set(PACKAGE ${PROJECT_NAME})
set(PACKAGE_MAIL "APT Development Team <deity@lists.debian.org>")
-set(PACKAGE_VERSION "2.9.3")
+set(PACKAGE_VERSION "2.9.5")
string(REGEX MATCH "^[0-9.]+" PROJECT_VERSION ${PACKAGE_VERSION})
if (NOT DEFINED DPKG_DATADIR)
diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc
index 9177d54..13e8fd0 100644
--- a/apt-pkg/deb/deblistparser.cc
+++ b/apt-pkg/deb/deblistparser.cc
@@ -635,63 +635,60 @@ const char *debListParser::ParseDepends(const char *Start, const char *Stop,
// Skip whitespace
for (;I != Stop && isspace_ascii(*I) != 0; I++);
- if (unlikely(ParseArchFlags == true))
+ // Parse architecture restrictions
+ if (ParseArchFlags && I != Stop && *I == '[')
{
+ for (++I; I != Stop && isspace_ascii(*I) != 0 && *I != ']'; ++I);
+ // malformed
+ if (unlikely(I == Stop || *I == ']'))
+ return 0;
+
APT::CacheFilter::PackageArchitectureMatchesSpecification matchesArch(Arch, false);
- // Parse an architecture
- if (I != Stop && *I == '[')
+ bool Found = false;
+ bool NegArch = false;
+ while (I < Stop && *I != ']')
{
- ++I;
- // malformed
- if (unlikely(I == Stop))
- return 0;
-
+ // look for whitespace or ending ']' to end current Arch
const char *End = I;
- bool Found = false;
- bool NegArch = false;
- while (I != Stop)
- {
- // look for whitespace or ending ']'
- for (;End != Stop && !isspace_ascii(*End) && *End != ']'; ++End);
-
- if (unlikely(End == Stop))
- return 0;
-
- if (*I == '!')
- {
- NegArch = true;
- ++I;
- }
-
- std::string const arch(I, End);
- if (arch.empty() == false && matchesArch(arch.c_str()) == true)
- {
- Found = true;
- if (I[-1] != '!')
- NegArch = false;
- // we found a match, so fast-forward to the end of the wildcards
- for (; End != Stop && *End != ']'; ++End);
- }
+ for (;End < Stop && isspace_ascii(*End) == 0 && *End != ']'; ++End);
- if (*End++ == ']') {
- I = End;
- break;
- }
+ if (unlikely(End >= Stop))
+ return 0;
- I = End;
- for (;I != Stop && isspace_ascii(*I) != 0; I++);
+ bool CurNegArch = false;
+ if (*I == '!')
+ {
+ NegArch = true;
+ CurNegArch = true;
+ ++I;
}
- if (NegArch == true)
- Found = !Found;
+ if (I >= End)
+ return 0;
+ std::string const arch(I, End);
+ if (matchesArch(arch.c_str()))
+ {
+ Found = true;
+ if (not CurNegArch)
+ NegArch = false;
+ // we found a match, so fast-forward to the end of the wildcards
+ for (; End < Stop && *End != ']'; ++End);
+ }
+ else
+ for (; End < Stop && isspace_ascii(*End) != 0; ++End);
- if (Found == false)
- Package = ""; /* not for this arch */
+ I = End;
}
+ if (NegArch == true)
+ Found = not Found;
+
+ if (Found == false)
+ Package = ""; /* not for this arch */
+
// Skip whitespace
- for (;I != Stop && isspace_ascii(*I) != 0; I++);
+ for (++I; I < Stop && isspace_ascii(*I) != 0; ++I);
}
if (unlikely(ParseRestrictionsList == true))
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc
index 72cbf8d..4e8f522 100644
--- a/apt-pkg/depcache.cc
+++ b/apt-pkg/depcache.cc
@@ -2455,6 +2455,25 @@ static bool MarkPackage(pkgCache::PkgIterator const &Pkg,
if (not unsatisfied_choice)
fullyExplored[T->ID] = true;
+
+ // do not follow newly installed providers if we have already installed providers
+ if (providers_by_source.size() >= 2)
+ {
+ if (std::any_of(providers_by_source.begin(), providers_by_source.end(), [](auto const PV) {
+ return std::any_of(PV.second.begin(), PV.second.end(), [](auto const &Prv) {
+ auto const PP = Prv.ParentPkg();
+ return not PP.end() && PP->CurrentVer != 0;
+ });}))
+ {
+ for (auto &providers : providers_by_source)
+ providers.second.erase(std::remove_if(providers.second.begin(), providers.second.end(),
+ [](auto const &Prv) {
+ auto const PP = Prv.ParentPkg();
+ return not PP.end() && PP->CurrentVer == 0;
+ }), providers.second.end());
+ }
+ }
+
for (auto const &providers : providers_by_source)
{
for (auto const &PV : providers.second)
diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc
index 5894008..0ffde46 100644
--- a/apt-pkg/edsp.cc
+++ b/apt-pkg/edsp.cc
@@ -770,13 +770,22 @@ bool EDSP::ResolveExternal(const char* const solver, pkgDepCache &Cache,
{
APT::Solver s(Cache.GetCache(), Cache.GetPolicy());
FileFd output;
- if (not s.FromDepCache(Cache))
- return false;
- if (not s.Solve())
- return false;
- if (not s.ToDepCache(Cache))
- return false;
- return true;
+ bool res = true;
+ if (Progress != NULL)
+ Progress->OverallProgress(0, 100, 1, _config->FindB("APT::Solver::Upgrade") ? _("Calculating upgrade") : _("Solving dependencies"));
+ if (res && not s.FromDepCache(Cache))
+ res = false;
+ if (Progress != NULL)
+ Progress->Progress(10);
+ if (res && not s.Solve())
+ res = false;
+ if (Progress != NULL)
+ Progress->Progress(90);
+ if (res && not s.ToDepCache(Cache))
+ res = false;
+ if (Progress != NULL)
+ Progress->Done();
+ return res;
}
if (strcmp(solver, "internal") == 0)
{
diff --git a/apt-pkg/edsp/edsplistparser.cc b/apt-pkg/edsp/edsplistparser.cc
index 5419069..183ace6 100644
--- a/apt-pkg/edsp/edsplistparser.cc
+++ b/apt-pkg/edsp/edsplistparser.cc
@@ -44,7 +44,20 @@ edspListParser::edspListParser(FileFd * const File) : edspLikeListParser(File)
bool edspLikeListParser::NewVersion(pkgCache::VerIterator &Ver)
{
_system->SetVersionMapping(Ver->ID, Section.FindI("APT-ID", Ver->ID));
- return debListParser::NewVersion(Ver);
+ if (not debListParser::NewVersion(Ver))
+ return false;
+
+ // Patch up the source version, it is stored in the Source-Version field in EDSP.
+ if (APT::StringView version = Section.Find(pkgTagSection::Key::Source_Version); not version.empty())
+ {
+ if (version != Ver.VerStr())
+ {
+ map_stringitem_t const idx = StoreString(pkgCacheGenerator::VERSIONNUMBER, version);
+ Ver->SourceVerStr = idx;
+ }
+ }
+
+ return true;
}
/*}}}*/
// ListParser::Description - Return the description string /*{{{*/
diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc
index 5047561..981d360 100644
--- a/apt-pkg/pkgcachegen.cc
+++ b/apt-pkg/pkgcachegen.cc
@@ -1637,6 +1637,10 @@ static DynamicMMap* CreateDynamicMMap(FileFd * const CacheF, unsigned long Flags
static bool writeBackMMapToFile(pkgCacheGenerator * const Gen, DynamicMMap * const Map,
std::string const &FileName)
{
+ // Do not write the file back to /dev/null or try to change its mode...
+ if (FileName == "/dev/null")
+ return true;
+
FileFd SCacheF(FileName, FileFd::WriteAtomic);
if (SCacheF.IsOpen() == false || SCacheF.Failed())
return false;
diff --git a/apt-pkg/solver3.cc b/apt-pkg/solver3.cc
index d43bd5b..dc70adb 100644
--- a/apt-pkg/solver3.cc
+++ b/apt-pkg/solver3.cc
@@ -26,11 +26,12 @@
#include <sstream>
// FIXME: Helpers stolen from DepCache, please give them back.
-struct CompareProviders3 /*{{{*/
+struct APT::Solver::CompareProviders3 /*{{{*/
{
pkgCache &Cache;
pkgDepCache::Policy &Policy;
pkgCache::PkgIterator const Pkg;
+ APT::Solver &Solver;
bool upgrade{_config->FindB("APT::Solver::Upgrade", false)};
bool operator()(pkgCache::Version *AV, pkgCache::Version *BV)
@@ -46,13 +47,25 @@ struct CompareProviders3 /*{{{*/
{
if (AV == BV)
return false;
- if (not upgrade && A->CurrentVer != 0 && A.CurrentVer() == AV)
- return true;
+ // The current version should win, unless we are upgrading and the other is the
+ // candidate.
+ // If AV is the current version, AV only wins on upgrades if BV is not the candidate.
+ if (A.CurrentVer() == AV)
+ return upgrade ? Policy.GetCandidateVer(A) != BV : true;
+ // If BV is the current version, AV only wins on upgrades if it is the candidate.
+ if (A.CurrentVer() == BV)
+ return upgrade ? Policy.GetCandidateVer(A) == AV : false;
+ // If neither are the current version, order them by priority.
if (Policy.GetPriority(AV) < Policy.GetPriority(BV))
return false;
return _system->VS->CmpVersion(AV.VerStr(), BV.VerStr()) > 0;
}
+ // Try obsolete choices only after exhausting non-obsolete choices such that we install
+ // packages replacing them and don't keep back upgrades depending on the replacement to
+ // keep the obsolete package installed.
+ if (auto obsoleteAV = Solver.Obsolete(AV), obsoleteBV = Solver.Obsolete(BV); obsoleteAV != obsoleteBV)
+ return obsoleteBV;
// Prefer MA:same packages if other architectures for it are installed
if ((AV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same ||
(BV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
@@ -151,8 +164,9 @@ class DefaultRootSetFunc2 : public pkgDepCache::DefaultRootSetFunc
APT::Solver::Solver(pkgCache &cache, pkgDepCache::Policy &policy)
: cache(cache),
policy(policy),
- pkgStates{cache.Head().PackageCount},
- verStates{cache.Head().VersionCount}
+ pkgStates(cache.Head().PackageCount),
+ verStates(cache.Head().VersionCount),
+ verObsolete(cache.Head().VersionCount)
{
static_assert(sizeof(APT::Solver::State<pkgCache::PkgIterator>) == 3 * sizeof(int));
static_assert(sizeof(APT::Solver::State<pkgCache::VerIterator>) == 3 * sizeof(int));
@@ -163,31 +177,15 @@ APT::Solver::Solver(pkgCache &cache, pkgDepCache::Policy &policy)
// This function determines if a work item is less important than another.
bool APT::Solver::Work::operator<(APT::Solver::Work const &b) const
{
- if (optional && b.optional && reason.empty() && b.reason.empty() && upgrade != b.upgrade)
- {
- // Assuming we have libfoo-dev=5.1 Depends libfoo5.1-dev upgrade to libfoo-dev=5.3 Depends libfoo5.3-dev,
- // We schedule libfoo-dev=5.3|libfoo-dev=5.1, libfoo5.1-dev. The latter would be resolved first, resulting
- // in libfoo-dev being kept back.
- //
- // However, if we schedule not libfoo5.1-dev but bar Recommends libfoo5.1-dev, we should not be breaking that
- // Recommends, hence we need to ensure that if we order an upgrade before an optional package that this optional
- // package was a top level package, i.e. b.reason is empty (or our reason in the reverse case).
- //
- // So if we are the upgrade, and b also Depends on one of our versions, we need to satisfy b after we
- // have scheduled the upgrade.
- if (upgrade)
- return std::any_of(b.solutions.begin(), b.solutions.end(), [this](auto bsol) -> bool
- { return std::find(solutions.begin(), solutions.end(), bsol) != solutions.end(); });
- else
- return std::any_of(solutions.begin(), solutions.end(), [b](auto sol) -> bool
- { return std::find(b.solutions.begin(), b.solutions.end(), sol) != b.solutions.end(); });
- }
+ if ((not optional && size < 2) != (not b.optional && b.size < 2))
+ return not b.optional && b.size < 2;
+ if (group != b.group)
+ return group > b.group;
+ if (optional && b.optional && reason.empty() != b.reason.empty())
+ return reason.empty();
// An optional item is less important than a required one.
if (optional != b.optional)
return optional;
- // More solutions to explore are more expensive.
- if (size != b.size)
- return size > b.size;
// We enqueue common dependencies at the package level to avoid choosing versions, so let's solve package items first,
// this improves the implication graph as it now tells you that common dependencies were installed by the package.
if (reason.Pkg() != b.reason.Pkg())
@@ -202,7 +200,7 @@ void APT::Solver::Work::Dump(pkgCache &cache)
std::cerr << "Dirty ";
if (optional)
std::cerr << "Optional ";
- std::cerr << "Item (" << size << "@" << depth << (upgrade ? "u" : "") << ") ";
+ std::cerr << "Item (" << ssize_t(size <= solutions.size() ? size : -1) << "@" << depth << (upgrade ? "u" : "") << ") ";
if (auto Pkg = reason.Pkg(); Pkg != 0)
std::cerr << pkgCache::PkgIterator(cache, cache.PkgP + Pkg).FullName();
if (auto Ver = reason.Ver(); Ver != 0)
@@ -248,7 +246,27 @@ std::string APT::Solver::WhyStr(Reason reason)
return outstr;
}
-bool APT::Solver::Install(pkgCache::PkgIterator Pkg, Reason reason)
+bool APT::Solver::Obsolete(pkgCache::VerIterator ver)
+{
+ if (verObsolete[ver->ID] != 0)
+ return verObsolete[ver->ID] == 2;
+ for (auto bin = ver.Cache()->FindGrp(ver.SourcePkgName()).VersionsInSource(); not bin.end(); bin = bin.NextInSource())
+ if (bin != ver && bin.ParentPkg()->Arch == ver.ParentPkg()->Arch && bin->ParentPkg != ver->ParentPkg && policy.GetCandidateVer(bin.ParentPkg()) == bin && _system->VS->CmpVersion(bin.SourceVerStr(), ver.SourceVerStr()) > 0)
+ {
+ verObsolete[ver->ID] = 2;
+ return true;
+ }
+ for (auto file = ver.FileList(); !file.end(); file++)
+ if ((file.File()->Flags & pkgCache::Flag::NotSource) == 0)
+ {
+ verObsolete[ver->ID] = 1;
+ return false;
+ }
+ verObsolete[ver->ID] = 2;
+ return true;
+}
+
+bool APT::Solver::Install(pkgCache::PkgIterator Pkg, Reason reason, Group group)
{
if ((*this)[Pkg].decision == Decision::MUST)
return true;
@@ -277,16 +295,16 @@ bool APT::Solver::Install(pkgCache::PkgIterator Pkg, Reason reason)
(*this)[Pkg] = {reason, depth(), Decision::MUST,};
// Insert the work item.
- Work workItem{Reason(Pkg), depth()};
+ Work workItem{Reason(Pkg), depth(), group};
for (auto ver = Pkg.VersionList(); not ver.end(); ver++)
if (IsAllowedVersion(ver))
workItem.solutions.push_back(ver);
- std::sort(workItem.solutions.begin(), workItem.solutions.end(), CompareProviders3{cache, policy, Pkg});
+ std::stable_sort(workItem.solutions.begin(), workItem.solutions.end(), CompareProviders3{cache, policy, Pkg, *this});
assert(workItem.solutions.size() > 0);
if (workItem.solutions.size() > 1 || workItem.optional)
AddWork(std::move(workItem));
- else if (not Install(pkgCache::VerIterator(cache, workItem.solutions[0]), workItem.reason))
+ else if (not Install(pkgCache::VerIterator(cache, workItem.solutions[0]), workItem.reason, group))
return false;
if (not EnqueueCommonDependencies(Pkg))
@@ -295,7 +313,7 @@ bool APT::Solver::Install(pkgCache::PkgIterator Pkg, Reason reason)
return true;
}
-bool APT::Solver::Install(pkgCache::VerIterator Ver, Reason reason)
+bool APT::Solver::Install(pkgCache::VerIterator Ver, Reason reason, Group group)
{
if ((*this)[Ver].decision == Decision::MUST)
return true;
@@ -330,7 +348,7 @@ bool APT::Solver::Install(pkgCache::VerIterator Ver, Reason reason)
for (auto OV = Ver.ParentPkg().VersionList(); not OV.end(); ++OV)
{
- if (OV != Ver && not Reject(OV, Reason(Ver)))
+ if (OV != Ver && not Reject(OV, Reason(Ver), group))
return false;
}
@@ -341,8 +359,6 @@ bool APT::Solver::Install(pkgCache::VerIterator Ver, Reason reason)
pkgCache::DepIterator end;
dep.GlobOr(start, end); // advances dep
- if (not policy.IsImportantDep(start))
- continue;
if (not EnqueueOrGroup(start, end, Reason(Ver)))
return false;
}
@@ -350,7 +366,7 @@ bool APT::Solver::Install(pkgCache::VerIterator Ver, Reason reason)
return true;
}
-bool APT::Solver::Reject(pkgCache::PkgIterator Pkg, Reason reason)
+bool APT::Solver::Reject(pkgCache::PkgIterator Pkg, Reason reason, Group group)
{
if ((*this)[Pkg].decision == Decision::MUSTNOT)
return true;
@@ -367,7 +383,7 @@ bool APT::Solver::Reject(pkgCache::PkgIterator Pkg, Reason reason)
std::cerr << "[" << depth() << "] Reject:" << Pkg.FullName() << " (" << WhyStr(reason) << ")\n";
(*this)[Pkg] = {reason, depth(), Decision::MUSTNOT,};
for (auto ver = Pkg.VersionList(); not ver.end(); ver++)
- if (not Reject(ver, Reason(Pkg)))
+ if (not Reject(ver, Reason(Pkg), group))
return false;
needsRescore = true;
@@ -376,8 +392,10 @@ bool APT::Solver::Reject(pkgCache::PkgIterator Pkg, Reason reason)
}
// \brief Do not install this version
-bool APT::Solver::Reject(pkgCache::VerIterator Ver, Reason reason)
+bool APT::Solver::Reject(pkgCache::VerIterator Ver, Reason reason, Group group)
{
+ (void) group;
+
if ((*this)[Ver].decision == Decision::MUSTNOT)
return true;
@@ -445,8 +463,6 @@ bool APT::Solver::EnqueueCommonDependencies(pkgCache::PkgIterator Pkg)
}
if (not allHaveDep)
continue;
- if (not policy.IsImportantDep(start))
- continue;
if (not EnqueueOrGroup(start, end, Reason(Pkg)))
return false;
}
@@ -460,10 +476,15 @@ bool APT::Solver::EnqueueOrGroup(pkgCache::DepIterator start, pkgCache::DepItera
auto Ver = start.ParentVer();
auto fixPolicy = _config->FindB("APT::Get::Fix-Policy-Broken");
+ // Non-important dependencies can only be installed if they are currently satisfied, see the check further
+ // below once we have calculated all possible solutions.
+ if (start.ParentPkg()->CurrentVer == 0 && not policy.IsImportantDep(start))
+ return true;
+
if (unlikely(debug >= 3))
std::cerr << "Found dependency critical " << Ver.ParentPkg().FullName() << "=" << Ver.VerStr() << " -> " << start.TargetPkg().FullName() << "\n";
- Work workItem{reason, depth(), not start.IsCritical() /* optional */};
+ Work workItem{reason, depth(), Group::Satisfy, not start.IsCritical() /* optional */};
do
{
@@ -479,7 +500,7 @@ bool APT::Solver::EnqueueOrGroup(pkgCache::DepIterator start, pkgCache::DepItera
if (unlikely(debug >= 3))
std::cerr << "Reject: " << Ver.ParentPkg().FullName() << "=" << Ver.VerStr() << " -> " << tgti.ParentPkg().FullName() << "=" << tgti.VerStr() << "\n";
// FIXME: We should be collecting these and marking the heap only once.
- if (not Reject(pkgCache::VerIterator(cache, *tgt), Reason(Ver)))
+ if (not Reject(pkgCache::VerIterator(cache, *tgt), Reason(Ver), Group::HoldOrDelete))
return false;
}
else
@@ -496,7 +517,7 @@ bool APT::Solver::EnqueueOrGroup(pkgCache::DepIterator start, pkgCache::DepItera
// FIXME: This is not really true, though, we should fix the CompareProviders to ignore the
// installed state
if (fixPolicy)
- std::sort(workItem.solutions.begin() + begin, workItem.solutions.end(), CompareProviders3{cache, policy, TgtPkg});
+ std::stable_sort(workItem.solutions.begin() + begin, workItem.solutions.end(), CompareProviders3{cache, policy, TgtPkg, *this});
if (start == end)
break;
@@ -504,40 +525,73 @@ bool APT::Solver::EnqueueOrGroup(pkgCache::DepIterator start, pkgCache::DepItera
} while (1);
if (not fixPolicy)
- std::sort(workItem.solutions.begin(), workItem.solutions.end(), CompareProviders3{cache, policy, TgtPkg});
-
- // Figure out if the reason is installed
- bool reasonInstalled = false;
- if (auto p = workItem.reason.Pkg())
- reasonInstalled = pkgCache::PkgIterator(cache, cache.PkgP + p)->CurrentVer != 0;
- else if (auto v = workItem.reason.Ver())
- reasonInstalled = pkgCache::VerIterator(cache, cache.VerP + v).ParentPkg()->CurrentVer != 0;
-
+ std::stable_sort(workItem.solutions.begin(), workItem.solutions.end(), CompareProviders3{cache, policy, TgtPkg, *this});
+
+ if (std::all_of(workItem.solutions.begin(), workItem.solutions.end(), [this](auto V) -> auto
+ { return pkgCache::VerIterator(cache, V).ParentPkg()->CurrentVer == 0; }))
+ workItem.group = Group::SatisfyNew;
+ if (std::any_of(workItem.solutions.begin(), workItem.solutions.end(), [this](auto V) -> auto
+ { return Obsolete(pkgCache::VerIterator(cache, V)); }))
+ workItem.group = Group::SatisfyObsolete;
// Try to perserve satisfied Recommends. FIXME: We should check if the Recommends was there in the installed version?
- if (workItem.optional && reasonInstalled && not fixPolicy &&
- not std::any_of(workItem.solutions.begin(), workItem.solutions.end(), [this](auto ver)
- { return pkgCache::VerIterator(cache, ver).ParentPkg()->CurrentVer != 0; }))
+ if (workItem.optional && start.ParentPkg()->CurrentVer)
{
- if (unlikely(debug >= 3))
+ bool important = policy.IsImportantDep(start);
+ bool newOptional = true;
+ bool wasImportant = false;
+ for (auto D = start.ParentPkg().CurrentVer().DependsList(); not D.end(); D++)
+ if (not D.IsCritical() && not D.IsNegative() && D.TargetPkg() == start.TargetPkg())
+ newOptional = false, wasImportant = policy.IsImportantDep(D);
+
+ bool satisfied = std::any_of(workItem.solutions.begin(), workItem.solutions.end(), [this](auto ver)
+ { return pkgCache::VerIterator(cache, ver).ParentPkg()->CurrentVer != 0; });
+
+ if (important && wasImportant && not newOptional && not satisfied)
{
- std::cerr << "Ignoring currently unsatisfied Recommends ";
- workItem.Dump(cache);
- std::cerr << "\n";
+ if (unlikely(debug >= 3))
+ {
+ std::cerr << "Ignoring unsatisfied Recommends ";
+ workItem.Dump(cache);
+ std::cerr << "\n";
+ }
+ return true;
+ }
+ if (not important && not wasImportant && not newOptional && satisfied)
+ {
+ if (unlikely(debug >= 3))
+ {
+ std::cerr << "Promoting satisfied Suggests to Recommends: ";
+ workItem.Dump(cache);
+ std::cerr << "\n";
+ }
+ important = true;
+ }
+ if (not important)
+ {
+ if (unlikely(debug >= 3))
+ {
+ std::cerr << "Ignoring Suggests ";
+ workItem.Dump(cache);
+ std::cerr << "\n";
+ }
+ return true;
}
- return true;
}
+ else if (workItem.optional && start.ParentPkg()->CurrentVer == 0)
+ workItem.group = Group::NewUnsatRecommends;
+
if (not workItem.solutions.empty())
{
- // std::sort(workItem.solutions.begin(), workItem.solutions.end(), CompareProviders3{cache, TgtPkg});
+ // std::stable_sort(workItem.solutions.begin(), workItem.solutions.end(), CompareProviders3{cache, TgtPkg});
if (unlikely(debug >= 3 && workItem.optional))
{
- std::cerr << "Enqueuing currently satisfied Recommends ";
+ std::cerr << "Enqueuing Recommends ";
workItem.Dump(cache);
std::cerr << "\n";
}
if (workItem.optional || workItem.solutions.size() > 1)
AddWork(std::move(workItem));
- else if (not Install(pkgCache::VerIterator(cache, workItem.solutions[0]), reason))
+ else if (not Install(pkgCache::VerIterator(cache, workItem.solutions[0]), reason, workItem.group))
return false;
}
else if (start.IsCritical() && not start.IsNegative())
@@ -608,7 +662,7 @@ bool APT::Solver::RejectReverseDependencies(pkgCache::VerIterator Ver)
if (unlikely(debug >= 3))
std::cerr << "Propagate NOT " << Ver.ParentPkg().FullName() << "=" << Ver.VerStr() << " to " << RDV.ParentPkg().FullName() << "=" << RDV.VerStr() << " for dependency group starting with" << start.TargetPkg().FullName() << std::endl;
- if (not Reject(RDV, Reason(Ver)))
+ if (not Reject(RDV, Reason(Ver), Group::HoldOrDelete))
return false;
}
return true;
@@ -675,7 +729,7 @@ bool APT::Solver::Pop()
if (w.depth > depth) // Deeper decision level is no longer valid.
return true;
// This item is still solved, keep it on the solved list.
- if (not std::any_of(w.solutions.begin(), w.solutions.end(), [this](auto ver)
+ if (std::any_of(w.solutions.begin(), w.solutions.end(), [this](auto ver)
{ return (*this)[ver].decision == Decision::MUST; }))
return false;
// We are not longer solved, move it back to work.
@@ -703,7 +757,7 @@ bool APT::Solver::Pop()
assert(w.choice != nullptr);
// FIXME: There should be a reason!
- if (not Reject(pkgCache::VerIterator(cache, w.choice), {}))
+ if (not Reject(pkgCache::VerIterator(cache, w.choice), {}, Group::HoldOrDelete))
return false;
w.choice = nullptr;
@@ -822,7 +876,7 @@ bool APT::Solver::Solve()
}
if (unlikely(debug >= 3))
std::cerr << "(try it: " << ver.ParentPkg().FullName() << "=" << ver.VerStr() << ")\n";
- if (not Install(pkgCache::VerIterator(cache, ver), item.reason) && not Pop())
+ if (not Install(pkgCache::VerIterator(cache, ver), item.reason, Group::Satisfy) && not Pop())
return false;
foundSolution = true;
break;
@@ -853,6 +907,7 @@ bool APT::Solver::FromDepCache(pkgDepCache &depcache)
bool KeepAuto = not _config->FindB("APT::Get::AutomaticRemove");
bool AllowRemove = _config->FindB("APT::Solver::Remove", true);
bool AllowInstall = _config->FindB("APT::Solver::Install", true);
+ bool AllowRemoveManual = _config->FindB("APT::Solver::RemoveManual", false);
DefaultRootSetFunc2 rootSet(&cache);
for (auto P = cache.PkgBegin(); not P.end(); P++)
@@ -863,52 +918,58 @@ bool APT::Solver::FromDepCache(pkgDepCache &depcache)
auto state = depcache[P];
auto maybeInstall = state.Install() || (state.Keep() && P->CurrentVer);
auto reject = state.Delete() || (depcache[P].Keep() && not P->CurrentVer && depcache[P].Protect());
+ auto isAuto = (depcache[P].Flags & pkgCache::Flag::Auto);
+ auto isOptional = isAuto || (AllowRemoveManual && not depcache[P].Protect());
if (P->SelectedState == pkgCache::State::Hold && not state.Protect())
{
if (unlikely(debug >= 1))
std::cerr << "Hold " << P.FullName() << "\n";
- if (P->CurrentVer ? not Install(P.CurrentVer(), {}) : not Reject(P, {}))
+ if (P->CurrentVer ? not Install(P.CurrentVer(), {}, Group::HoldOrDelete) : not Reject(P, {}, Group::HoldOrDelete))
return false;
}
else if (reject)
{
if (unlikely(debug >= 1))
std::cerr << "Delete " << P.FullName() << "\n";
- if (!Reject(P, {}))
+ if (!Reject(P, {}, Group::HoldOrDelete))
return false;
}
else if (maybeInstall && P->Flags & (pkgCache::Flag::Essential | pkgCache::Flag::Important))
{
if (unlikely(debug >= 1))
std::cerr << "ESSENTIAL " << P.FullName() << "\n";
- if (depcache[P].Keep() ? not Install(P, {}) : not Install(depcache.GetCandidateVersion(P), {}))
+ if (depcache[P].Keep() ? not Install(P, {}, Group::InstallManual) : not Install(depcache.GetCandidateVersion(P), {}, Group::InstallManual))
return false;
}
- else if (maybeInstall && not(depcache[P].Flags & pkgCache::Flag::Auto))
+ else if (maybeInstall && not isOptional)
{
+ auto Upgrade = depcache.GetCandidateVersion(P) != P.CurrentVer();
+ auto Group = (Upgrade ? Group::UpgradeManual : Group::InstallManual);
if (unlikely(debug >= 1))
std::cerr << "MANUAL " << P.FullName() << "\n";
- if (depcache[P].Keep() ? not Install(P, {}) : not Install(depcache.GetCandidateVersion(P), {}))
+ if (depcache[P].Keep() ? not Install(P, {}, Group) : not Install(depcache.GetCandidateVersion(P), {}, Group))
return false;
}
- else if (maybeInstall && (KeepAuto || rootSet.InRootSet(P)) && (depcache[P].Flags & pkgCache::Flag::Auto))
+ else if (maybeInstall && isOptional && (KeepAuto || rootSet.InRootSet(P) || not isAuto))
{
auto Upgrade = depcache.GetCandidateVersion(P) != P.CurrentVer();
+ auto Group = isAuto ? (Upgrade ? Group::UpgradeAuto : Group::KeepAuto)
+ : (Upgrade ? Group::UpgradeManual : Group::InstallManual);
if (unlikely(debug >= 1))
std::cerr << "AUTOMATIC " << P.FullName() << (Upgrade ? " - upgrade" : "") << "\n";
if (not AllowRemove)
{
- if (depcache[P].Keep() ? not Install(P, {}) : not Install(depcache.GetCandidateVersion(P), {}))
+ if (depcache[P].Keep() ? not Install(P, {}, Group) : not Install(depcache.GetCandidateVersion(P), {}, Group))
return false;
}
else
{
- Work w{Reason(), depth(), true, Upgrade};
+ Work w{Reason(), depth(), Group, true, Upgrade};
for (auto V = P.VersionList(); not V.end(); ++V)
if (IsAllowedVersion(V))
w.solutions.push_back(V);
- std::sort(w.solutions.begin(), w.solutions.end(), CompareProviders3{cache, policy, P});
+ std::stable_sort(w.solutions.begin(), w.solutions.end(), CompareProviders3{cache, policy, P, *this});
AddWork(std::move(w));
}
}
@@ -916,7 +977,7 @@ bool APT::Solver::FromDepCache(pkgDepCache &depcache)
{
if (unlikely(debug >= 1))
std::cerr << "NOT ALLOWING INSTALL OF " << P.FullName() << "\n";
- if (not Reject(P, {}))
+ if (not Reject(P, {}, Group::HoldOrDelete))
return false;
}
}
@@ -949,7 +1010,7 @@ bool APT::Solver::ToDepCache(pkgDepCache &depcache)
depcache[P].Marked = 1;
depcache[P].Garbage = 0;
}
- else if (P->CurrentVer)
+ else if (P->CurrentVer || depcache[P].Install())
{
depcache.MarkDelete(P, false, 0, (*this)[P].reason.empty());
depcache[P].Marked = 0;
diff --git a/apt-pkg/solver3.h b/apt-pkg/solver3.h
index cf2fb2e..9a9d67a 100644
--- a/apt-pkg/solver3.h
+++ b/apt-pkg/solver3.h
@@ -32,10 +32,46 @@ class Solver
enum class Decision : uint16_t;
enum class Hint : uint16_t;
struct Reason;
+ struct CompareProviders3;
template <typename T>
struct State;
struct Work;
+ // \brief Groups of works, these are ordered.
+ //
+ // Later items will be skipped if they are optional, or we will when backtracking,
+ // try a different choice for them.
+ enum class Group : uint8_t
+ {
+ HoldOrDelete,
+ NewUnsatRecommends,
+
+ // Satisfying dependencies on entirely new packages first is a good idea because
+ // it may contain replacement packages like libfoo1t64 whereas we later will see
+ // Depends: libfoo1 where libfoo1t64 Provides libfoo1 and we'd have to choose.
+ SatisfyNew,
+ Satisfy,
+ // On a similar note as for SatisfyNew, if the dependency contains obsolete packages
+ // try it last.
+ SatisfyObsolete,
+
+ // My intuition tells me that we should try to schedule upgrades first, then
+ // any non-obsolete installed packages, and only finally obsolete ones, such
+ // that newer packages guide resolution of dependencies for older ones, they
+ // may have more stringent dependencies, like a (>> 2) whereas an obsolete
+ // package may have a (>> 1), for example.
+ UpgradeManual,
+ InstallManual,
+ ObsoleteManual,
+
+ // Automatically installed packages must come last in the group, this allows
+ // us to see if they were installed as a dependency of a manually installed package,
+ // allowing a simple implementation of an autoremoval code.
+ UpgradeAuto,
+ KeepAuto,
+ ObsoleteAuto
+ };
+
// \brief Type to record depth at. This may very well be a 16-bit
// unsigned integer, then change Solver::State::Decision to be a
// uint16_t class enum as well to get a more compact space.
@@ -68,6 +104,9 @@ class Solver
return verStates[V->ID];
}
+ std::vector<char> verObsolete;
+ bool Obsolete(pkgCache::VerIterator ver);
+
// \brief Heap of the remaining work.
//
// We are using an std::vector with std::make_heap(), std::push_heap(),
@@ -131,13 +170,13 @@ class Solver
Solver(pkgCache &Cache, pkgDepCache::Policy &Policy);
// \brief Mark the package for install. This is annoying as it incurs a decision
- bool Install(pkgCache::PkgIterator Pkg, Reason reason);
+ bool Install(pkgCache::PkgIterator Pkg, Reason reason, Group group);
// \brief Install a version.
- bool Install(pkgCache::VerIterator Ver, Reason reason);
+ bool Install(pkgCache::VerIterator Ver, Reason reason, Group group);
// \brief Do not install this package
- bool Reject(pkgCache::PkgIterator Pkg, Reason reason);
+ bool Reject(pkgCache::PkgIterator Pkg, Reason reason, Group group);
// \brief Do not install this version.
- bool Reject(pkgCache::VerIterator Ver, Reason reason);
+ bool Reject(pkgCache::VerIterator Ver, Reason reason, Group group);
// \brief Apply the selections from the dep cache to the solver
bool FromDepCache(pkgDepCache &depcache);
@@ -203,7 +242,8 @@ struct APT::Solver::Work
Reason reason;
// \brief The depth at which the item has been added
depth_type depth;
-
+ // \brief The group we are in
+ Group group;
// \brief Possible solutions to this task, ordered in order of preference.
std::vector<pkgCache::Version *> solutions{};
@@ -228,7 +268,7 @@ struct APT::Solver::Work
// \brief Dump the work item to std::cerr
void Dump(pkgCache &cache);
- inline Work(Reason reason, depth_type depth, bool optional = false, bool upgrade = false) : reason(reason), depth(depth), size(0), optional(optional), upgrade(upgrade), dirty(false) {}
+ inline Work(Reason reason, depth_type depth, Group group, bool optional = false, bool upgrade = false) : reason(reason), depth(depth), group(group), size(0), optional(optional), upgrade(upgrade), dirty(false) {}
};
// \brief This essentially describes the install state in RFC2119 terms.
diff --git a/apt-pkg/tagfile-keys.list b/apt-pkg/tagfile-keys.list
index 4b57e46..d198ea0 100644
--- a/apt-pkg/tagfile-keys.list
+++ b/apt-pkg/tagfile-keys.list
@@ -80,3 +80,4 @@ Vcs-Mtn
Vcs-Svn
Version
### APPEND BELOW, sort in with next ABI break ###
+Source-Version
diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc
index 4f71f18..599caac 100644
--- a/apt-private/private-install.cc
+++ b/apt-private/private-install.cc
@@ -658,6 +658,24 @@ bool DoAutomaticRemove(CacheFile &Cache)
if (not Cache->VS().CheckDep(PVerStr, R->CompareOp, R.TargetVer()))
continue;
}
+ // ignore new providers if we have installed providers
+ if (Pkg->CurrentVer == 0)
+ {
+ std::unique_ptr<pkgCache::Version *[]> VList(R.AllTargets());
+ bool has_installed_alt_prov = false;
+ for (pkgCache::Version **V = VList.get(); *V != 0; ++V)
+ {
+ pkgCache::VerIterator Ver(Cache, *V);
+ auto const P = Ver.ParentPkg();
+ if (not P.end() && P->CurrentVer != 0 && Cache[P].InstallVer == *V)
+ {
+ has_installed_alt_prov = true;
+ break;
+ }
+ }
+ if (has_installed_alt_prov)
+ continue;
+ }
if (Debug == true)
std::clog << "Save " << APT::PrettyPkg(Cache, Pkg) << " as another installed package depends on it: " << APT::PrettyPkg(Cache, RP) << std::endl;
Cache->MarkInstall(Pkg, false, 0, false);
diff --git a/cmdline/apt-key.in b/cmdline/apt-key.in
index 0752272..8738094 100644
--- a/cmdline/apt-key.in
+++ b/cmdline/apt-key.in
@@ -811,18 +811,8 @@ case "$command" in
exit 29
fi
GPGV_ARGS=""
- if [ "$ASSERT_PUBKEY_ALGO" ]; then
- test="$(LC_ALL=C.UTF-8 "$GPGV" --assert-pubkey-algo 2>&1 || :)"
- case "$test" in
- *"missing argument"*)
- GPGV_ARGS="--assert-pubkey-algo=$ASSERT_PUBKEY_ALGO"
- ;;
- *[Ii]"nvalid option"*"assert-pubkey-algo"*)
- ;;
- *)
- apt_warn "Unknown response from gpgv to --assert-pubkey-algo check: $test"
- ;;
- esac
+ if [ "$ASSERT_PUBKEY_ALGO" ] && $GPGV --dump-options | grep -q -- --assert-pubkey-algo; then
+ GPGV_ARGS="--assert-pubkey-algo=$ASSERT_PUBKEY_ALGO"
fi
# for a forced keyid we need gpg --export, so full wrapping required
if [ -n "$FORCED_KEYID" ]; then
diff --git a/debian/changelog b/debian/changelog
index af3b82f..e8264a7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,113 @@
+apt (2.9.5-0.0~progress7.99u1) graograman-backports; urgency=medium
+
+ * Uploading to graograman-updates, remaining changes:
+ - Updating maintainer field.
+ - Updating uploaders field.
+ - Updating bugs field.
+ - Updating vcs fields.
+ - Updating source format.
+ - Using apt binary specific configuration for apt-get.
+ - Including apt configuration files for Progress Linux.
+ - Setting Apt::Cmd::Disable-Script-Warning to true.
+ - Setting Apt::Install-Recommends to false.
+ - Setting Apt::Acquire::PDiffs to false.
+ - Building with debhelper from backports to fix FTBFS.
+ - Reverting t64 migration for backports.
+ * Merging upstream version 2.9.5.
+ * Merging debian version 2.9.5.
+
+ -- Daniel Baumann <daniel.baumann@progress-linux.org> Thu, 13 Jun 2024 21:31:44 +0200
+
+apt (2.9.5) unstable; urgency=medium
+
+ [ Julian Andres Klode ]
+ * CI: Set /bin/sh shell for travis user, so flock -c works
+ * Fix test cases for non-amd64 architectures
+ * edsp: Parse source version from the Source-Version field
+ * Check gpgv --dump-options for --assert-pubkey-algo support.
+ Thanks to Justus Winter for the idea
+ * Make the failure mode for non-executable tests stronger
+ * solver3: Do not dump sizes that are clearly pointers
+ * solver3: Group work items
+ * solver3: Remove no longer necessary comparisons
+ * solver3: Order obsolete choices last
+
+ [ Noah Meyerhans ]
+ * Fix spelling of @SNAPSHOTID@ in apt.conf.5.xml (Closes: #1072189)
+
+ [ Frans Spiesschaert ]
+ * Dutch program translation update (Closes: #1072493)
+ * Dutch manpages translation update (Closes: #1072494)
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 13 Jun 2024 21:04:40 +0200
+
+apt (2.9.4-0.0~progress7.99u1) graograman-backports; urgency=medium
+
+ * Uploading to graograman-updates, remaining changes:
+ - Updating maintainer field.
+ - Updating uploaders field.
+ - Updating bugs field.
+ - Updating vcs fields.
+ - Updating source format.
+ - Using apt binary specific configuration for apt-get.
+ - Including apt configuration files for Progress Linux.
+ - Setting Apt::Cmd::Disable-Script-Warning to true.
+ - Setting Apt::Install-Recommends to false.
+ - Setting Apt::Acquire::PDiffs to false.
+ - Building with debhelper from backports to fix FTBFS.
+ - Reverting t64 migration for backports.
+ * Merging upstream version 2.9.4.
+ * Merging debian version 2.9.4.
+
+ -- Daniel Baumann <daniel.baumann@progress-linux.org> Thu, 30 May 2024 04:48:19 +0200
+
+apt (2.9.4) unstable; urgency=medium
+
+ [ David Kalnischkies ]
+ * Fix accidental silencing of output differences in tests
+ * Do not mark new if we have already installed providers
+ * Do not save new if we have already installed providers (Closes: #839546)
+ * Deal better with spurious spaces in arch restrictions (Closes: #1071219)
+
+ [ Julian Andres Klode ]
+ * pkgcachegen: Do not try to chmod or write to /dev/null (LP: #2067138)
+ * test: Show statistics for parallel tests too
+ * test: Run working tests against the 3.0 solver, and adjust as many as possible
+ (more bug fixes in a further release)
+ - test: Temporarily ignore autoremovable lists for solver3
+ - test: Support the 3.0 solver in most existing test cases
+ * Various improvements to the 3.0 solver:
+ - edsp: solver3: Show some progress
+ - solver3: Implement APT::Solver::RemoveManual to allow removing manual packages
+ - solver3: Promote satisfied Suggests to Recommends
+ - solver3: Solve optional dependencies before optional packages
+ - solver3: Try candidate before installed version on upgrade
+ - solver3: Use stable sort
+ - solver3: Actually restore unsolved items rather than solved ones
+ - solver3: Fix translations of removals for marked install
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 25 May 2024 10:58:49 +0200
+
+apt (2.9.3-0.0~progress7.99u1) graograman-backports; urgency=medium
+
+ * Uploading to graograman-updates, remaining changes:
+ - Updating maintainer field.
+ - Updating uploaders field.
+ - Updating bugs field.
+ - Updating vcs fields.
+ - Updating source format.
+ - Using apt binary specific configuration for apt-get.
+ - Including apt configuration files for Progress Linux.
+ - Setting Apt::Cmd::Disable-Script-Warning to true.
+ - Setting Apt::Install-Recommends to false.
+ - Setting Apt::Acquire::PDiffs to false.
+ - Building with debhelper from backports to fix FTBFS.
+ - Reverting t64 migration for backports.
+ * Merging upstream version 2.9.3.
+ * Merging debian version 2.9.3.
+
+ -- Daniel Baumann <daniel.baumann@progress-linux.org> Tue, 14 May 2024 21:18:42 +0200
+
apt (2.9.3) unstable; urgency=medium
[ Julian Andres Klode ]
diff --git a/doc/apt-verbatim.ent b/doc/apt-verbatim.ent
index aef0c3e..f849c0c 100644
--- a/doc/apt-verbatim.ent
+++ b/doc/apt-verbatim.ent
@@ -274,7 +274,7 @@
">
<!-- this will be updated by 'prepare-release' -->
-<!ENTITY apt-product-version "2.9.3">
+<!ENTITY apt-product-version "2.9.5">
<!-- (Code)names for various things used all over the place -->
<!ENTITY debian-oldstable-codename "bullseye">
diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml
index e873cf5..702a71c 100644
--- a/doc/apt.conf.5.xml
+++ b/doc/apt.conf.5.xml
@@ -19,7 +19,7 @@
&apt-email;
&apt-product;
<!-- The last update date -->
- <date>2024-04-19T00:00:00Z</date>
+ <date>2024-05-30T00:00:00Z</date>
</refentryinfo>
<refmeta>
@@ -759,7 +759,7 @@ APT::Compressor::rev {
or <literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</replaceable></literal>.
The value should be a normal URI to a directory, except that the snapshot ID replaced with the
- placeholder <literal>@SNAPSHOTID</literal>.
+ placeholder <literal>@SNAPSHOTID@</literal>.
The special value '<literal>no</literal>' is available for this option indicating that
this source cannot be used to acquire snapshots from. Another source will be tried
diff --git a/doc/examples/configure-index b/doc/examples/configure-index
index c27a8f8..6bcf8e3 100644
--- a/doc/examples/configure-index
+++ b/doc/examples/configure-index
@@ -724,6 +724,7 @@ apt::solver::strict-pinning "<BOOL>";
apt::solver::enqueue-common-dependencies "<BOOL>";
apt::solver::upgrade "<BOOL>";
apt::solver::remove "<BOOL>";
+apt::solver::removemanual "<BOOL>";
apt::solver::install "<BOOL>";
apt::keep-downloaded-packages "<BOOL>";
apt::solver "<STRING>";
diff --git a/doc/po/apt-doc.pot b/doc/po/apt-doc.pot
index 2578224..979992b 100644
--- a/doc/po/apt-doc.pot
+++ b/doc/po/apt-doc.pot
@@ -5,9 +5,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: apt-doc 2.9.3\n"
+"Project-Id-Version: apt-doc 2.9.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-05-14 11:16+0000\n"
+"POT-Creation-Date: 2024-06-13 19:06+0000\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"
@@ -4016,7 +4016,7 @@ msgid ""
"or "
"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</replaceable></literal>. "
"The value should be a normal URI to a directory, except that the snapshot ID "
-"replaced with the placeholder <literal>@SNAPSHOTID</literal>. The special "
+"replaced with the placeholder <literal>@SNAPSHOTID@</literal>. The special "
"value '<literal>no</literal>' is available for this option indicating that "
"this source cannot be used to acquire snapshots from. Another source will be "
"tried if available in this case."
diff --git a/doc/po/de.po b/doc/po/de.po
index 4675d12..ab02835 100644
--- a/doc/po/de.po
+++ b/doc/po/de.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 2.0.1\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:38+0000\n"
+"POT-Creation-Date: 2024-06-13 19:06+0000\n"
"PO-Revision-Date: 2020-04-04 08:45+0200\n"
"Last-Translator: Chris Leick <c.leick@vollbio.de>\n"
"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
@@ -5773,10 +5773,10 @@ msgid ""
"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::"
"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
"normal URI to a directory, except that the snapshot ID replaced with the "
-"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</"
-"literal>' is available for this option indicating that this source cannot be "
-"used to acquire snapshots from. Another source will be tried if available in "
-"this case."
+"placeholder <literal>@SNAPSHOTID@</literal>. The special value "
+"'<literal>no</literal>' is available for this option indicating that this "
+"source cannot be used to acquire snapshots from. Another source will be "
+"tried if available in this case."
msgstr ""
"Changelogs können nur beschafft werden, falls ein URI bekannt ist, von dem "
"sie geholt werden können. Vorzugsweise gibt die Release-Datei ihn in einem "
diff --git a/doc/po/es.po b/doc/po/es.po
index c3c6067..5e2dc92 100644
--- a/doc/po/es.po
+++ b/doc/po/es.po
@@ -38,7 +38,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt-doc 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:38+0000\n"
+"POT-Creation-Date: 2024-06-13 19:06+0000\n"
"PO-Revision-Date: 2014-07-04 01:31+0200\n"
"Last-Translator: Omar Campagne <ocampagne@gmail.com>\n"
"Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org>\n"
@@ -5674,10 +5674,10 @@ msgid ""
"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::"
"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
"normal URI to a directory, except that the snapshot ID replaced with the "
-"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</"
-"literal>' is available for this option indicating that this source cannot be "
-"used to acquire snapshots from. Another source will be tried if available in "
-"this case."
+"placeholder <literal>@SNAPSHOTID@</literal>. The special value "
+"'<literal>no</literal>' is available for this option indicating that this "
+"source cannot be used to acquire snapshots from. Another source will be "
+"tried if available in this case."
msgstr ""
#. type: Content of: <refentry><refsect1><title>
diff --git a/doc/po/fr.po b/doc/po/fr.po
index d0419ec..d2166e3 100644
--- a/doc/po/fr.po
+++ b/doc/po/fr.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt-doc 1.8.0\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:38+0000\n"
+"POT-Creation-Date: 2024-06-13 19:06+0000\n"
"PO-Revision-Date: 2019-05-01 17:00+0100\n"
"Last-Translator: Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
@@ -5752,10 +5752,10 @@ msgid ""
"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::"
"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
"normal URI to a directory, except that the snapshot ID replaced with the "
-"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</"
-"literal>' is available for this option indicating that this source cannot be "
-"used to acquire snapshots from. Another source will be tried if available in "
-"this case."
+"placeholder <literal>@SNAPSHOTID@</literal>. The special value "
+"'<literal>no</literal>' is available for this option indicating that this "
+"source cannot be used to acquire snapshots from. Another source will be "
+"tried if available in this case."
msgstr ""
"La récupération des journaux des modifications n'est possible que si l'URI "
"où les télécharger est connu. De préférence, le fichier Release l'indique "
diff --git a/doc/po/it.po b/doc/po/it.po
index 120fd9f..20af323 100644
--- a/doc/po/it.po
+++ b/doc/po/it.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt-doc 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:38+0000\n"
+"POT-Creation-Date: 2024-06-13 19:06+0000\n"
"PO-Revision-Date: 2017-03-27 19:05+0200\n"
"Last-Translator: Beatrice Torracca <beatricet@libero.it>\n"
"Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n"
@@ -5743,10 +5743,10 @@ msgid ""
"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::"
"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
"normal URI to a directory, except that the snapshot ID replaced with the "
-"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</"
-"literal>' is available for this option indicating that this source cannot be "
-"used to acquire snapshots from. Another source will be tried if available in "
-"this case."
+"placeholder <literal>@SNAPSHOTID@</literal>. The special value "
+"'<literal>no</literal>' is available for this option indicating that this "
+"source cannot be used to acquire snapshots from. Another source will be "
+"tried if available in this case."
msgstr ""
"L'acquisizione di changelog è possibile solamente se è noto un URI da cui "
"ottenerli. Il file Release indica questa informazione preferibilmente in un "
diff --git a/doc/po/ja.po b/doc/po/ja.po
index ad96ef5..822c41c 100644
--- a/doc/po/ja.po
+++ b/doc/po/ja.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt-doc 1.4\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:38+0000\n"
+"POT-Creation-Date: 2024-06-13 19:06+0000\n"
"PO-Revision-Date: 2017-01-06 04:50+0900\n"
"Last-Translator: Takuma Yamada <tyamada@takumayamada.com>\n"
"Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
@@ -5535,10 +5535,10 @@ msgid ""
"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::"
"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
"normal URI to a directory, except that the snapshot ID replaced with the "
-"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</"
-"literal>' is available for this option indicating that this source cannot be "
-"used to acquire snapshots from. Another source will be tried if available in "
-"this case."
+"placeholder <literal>@SNAPSHOTID@</literal>. The special value "
+"'<literal>no</literal>' is available for this option indicating that this "
+"source cannot be used to acquire snapshots from. Another source will be "
+"tried if available in this case."
msgstr ""
"URI ã¯ã€ãれらをå–å¾—ã™ã‚‹å ´æ‰€ã‹ã‚‰çŸ¥ã‚‰ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€å¤‰æ›´å±¥æ­´ã®å–å¾—ã®ã¿è¡Œã†ã“"
"ã¨ãŒã§ãã¾ã™ã€‚好ã¾ã—ã„リリースファイルã¯ã€ã€Œå¤‰æ›´å±¥æ­´ã€ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã§ã“ã®ã“ã¨ã‚’"
diff --git a/doc/po/nl.po b/doc/po/nl.po
index 0d45a86..f31bbcc 100644
--- a/doc/po/nl.po
+++ b/doc/po/nl.po
@@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: apt-doc 2.9.1\n"
+"Project-Id-Version: apt-doc 2.9.3\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-05-06 11:01+0000\n"
-"PO-Revision-Date: 2024-04-20 21:59+0200\n"
+"POT-Creation-Date: 2024-06-13 19:06+0000\n"
+"PO-Revision-Date: 2024-05-21 23:41+0200\n"
"Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n"
"Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n"
"Language: nl\n"
@@ -143,15 +143,7 @@ msgstr ""
#. type: Plain text
#: apt.ent
-#, fuzzy, no-wrap
-#| msgid ""
-#| " <varlistentry>\n"
-#| " <term><option>-v</option></term>\n"
-#| " <term><option>--version</option></term>\n"
-#| " <listitem><para>Show the program version.\n"
-#| " </para>\n"
-#| " </listitem>\n"
-#| " </varlistentry>\n"
+#, no-wrap
msgid ""
" <varlistentry>\n"
" <term><option>--audit</option></term>\n"
@@ -161,9 +153,8 @@ msgid ""
" </varlistentry>\n"
msgstr ""
" <varlistentry>\n"
-" <term><option>-v</option></term>\n"
-" <term><option>--version</option></term>\n"
-" <listitem><para>Het versienummer van het programma weergeven.\n"
+" <term><option>--audit</option></term>\n"
+" <listitem><para>Controle- (en kennisgevings)berichten tonen. Dit heeft voorrang op de optie quiet, maar alleen voor waarschuwingsberichten, niet voor voortgangsberichten.\n"
" </para>\n"
" </listitem>\n"
" </varlistentry>\n"
@@ -199,19 +190,7 @@ msgstr ""
#. type: Plain text
#: apt.ent
-#, fuzzy, no-wrap
-#| msgid ""
-#| " <varlistentry>\n"
-#| " <term><option>-o</option></term>\n"
-#| " <term><option>--option</option></term>\n"
-#| " <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
-#| " configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
-#| " <option>-o</option> and <option>--option</option> can be used multiple\n"
-#| " times to set different options.\n"
-#| " </para>\n"
-#| " </listitem>\n"
-#| " </varlistentry>\n"
-#| "\">\n"
+#, no-wrap
msgid ""
" <varlistentry>\n"
" <term><option>-o</option></term>\n"
@@ -234,23 +213,10 @@ msgstr ""
" </para>\n"
" </listitem>\n"
" </varlistentry>\n"
-"\">\n"
#. type: Plain text
#: apt.ent
-#, fuzzy, no-wrap
-#| msgid ""
-#| " <varlistentry>\n"
-#| " <term><option>-o</option></term>\n"
-#| " <term><option>--option</option></term>\n"
-#| " <listitem><para>Set a Configuration Option; This will set an arbitrary\n"
-#| " configuration option. The syntax is <option>-o Foo::Bar=bar</option>.\n"
-#| " <option>-o</option> and <option>--option</option> can be used multiple\n"
-#| " times to set different options.\n"
-#| " </para>\n"
-#| " </listitem>\n"
-#| " </varlistentry>\n"
-#| "\">\n"
+#, no-wrap
msgid ""
" <varlistentry>\n"
" <term><option>--no-color</option></term>\n"
@@ -264,12 +230,11 @@ msgid ""
"\">\n"
msgstr ""
" <varlistentry>\n"
-" <term><option>-o</option></term>\n"
-" <term><option>--option</option></term>\n"
-" <listitem><para>Een configuratieoptie instellen; Dit stelt een\n"
-" willekeurige configuratieoptie in. De syntaxis is <option>-o Foo::Bar=bar</option>.\n"
-" <option>-o</option> en <option>--option</option> kunnen meermaals\n"
-" gebruikt worden om verschillende opties in te stellen.\n"
+" <term><option>--no-color</option></term>\n"
+" <term><option>--color</option></term>\n"
+"<listitem><para>Kleur aan- of uitzetten. Kleur staat standaard aan voor &apt; op ondersteunde terminals en\n"
+"kan ook uitgezet worden met de omgevingsvariabelen <envar>NO_COLOR</envar> en <envar>APT_NO_COLOR</envar>,\n"
+"of verder geconfigureerd worden met de configuratieoptie en -scope <option>APT::Color</option>; zie &apt-conf; voor informatie hierover.\n"
" </para>\n"
" </listitem>\n"
" </varlistentry>\n"
@@ -4784,6 +4749,10 @@ msgid ""
"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and "
"<option>white</option>."
msgstr ""
+"Deze scoop definieert kleuren en stijlen. De ondersteunde basiskleuren zijn "
+"<option>rood</option>, <option>groen</option>, <option>geel</option>, "
+"<option>blauw</option>, <option>magenta</option>, <option>cyaan</option> en "
+"<option>wit</option>."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt.conf.5.xml
@@ -4795,6 +4764,13 @@ msgid ""
"option>, <option>APT::Color::Action::Downgrade</option>, <option>APT::Color::"
"Action::Remove</option>; corresponding to their lists in the &apt; output."
msgstr ""
+"De subscoop <option>action</option> definieert de kleuren voor pakketlijsten "
+"in <option>install</option> en gelijkaardige commando's. De volgende opties "
+"kunnen ingesteld worden: <option>APT::Color::Action::Upgrade</option>, "
+"<option>APT::Color::Action::Install</option>, <option>APT::Color::Action::"
+"Install-Dependencies</option>, <option>APT::Color::Action::Downgrade</"
+"option>, <option>APT::Color::Action::Remove</option>; die overeenkomen met "
+"hun lijsten in de uitvoer van &apt;."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt.conf.5.xml
@@ -4802,6 +4778,9 @@ msgid ""
"Each color may reference one or more other color options by name, relative "
"to <option>APT::Color</option>. Their escape sequences will be combined."
msgstr ""
+"Elke kleur kan bij naam verwijzen naar een of meer andere kleuropties, "
+"relatief ten opzichte van <option>APT::Color</option>. Hun escape-sequenties "
+"worden gecombineerd."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting>
#: apt.conf.5.xml
@@ -4812,6 +4791,10 @@ msgid ""
"APT::Color::Action::Upgrade \"bold action::install\";\n"
" "
msgstr ""
+"APT::Color::Bold \"\\x1B[1m\";\n"
+"APT::Color::Action::Install \"cyan\";\n"
+"APT::Color::Action::Upgrade \"bold action::install\";\n"
+" "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt.conf.5.xml
@@ -4822,6 +4805,11 @@ msgid ""
"variables, or using the <option>--color</option>, <option>--no-color</"
"option> command-line options."
msgstr ""
+"Kleuren kunnen volledig worden in- of uitgeschakeld door <option>APT::Color</"
+"option> in te stellen op <option>yes</option> of <option>no</option>, door "
+"gebruik te maken van de omgevingsvariabelen <envar>NO_COLOR</envar> of "
+"<envar>APT_NO_COLOR</envar>, of met behulp van de commandoregelopties "
+"<option>--color</option>, <option>--no-color</option>."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt.conf.5.xml
@@ -5876,6 +5864,23 @@ msgstr ""
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Like changelogs, snapshots can only be acquired if an URI is known from "
+#| "where to get them. Preferable the Release file indicates this in a "
+#| "'Snapshots' field. If this isn't available the Label/Origin field of the "
+#| "Release file is used to check if a <literal>Acquire::Snapshots::URI::"
+#| "Label::<replaceable>LABEL</replaceable></literal> or <literal>Acquire::"
+#| "Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></literal> "
+#| "option exists and if so this value is taken. The value in the Release "
+#| "file can be overridden with <literal>Acquire::Snapshots::URI::Override::"
+#| "Label::<replaceable>LABEL</replaceable></literal> or <literal>Acquire::"
+#| "Snapshots::URI::Override::Origin::<replaceable>ORIGIN</replaceable></"
+#| "literal>. The value should be a normal URI to a directory, except that "
+#| "the snapshot ID replaced with the placeholder <literal>@SNAPSHOTID</"
+#| "literal>. The special value '<literal>no</literal>' is available for "
+#| "this option indicating that this source cannot be used to acquire "
+#| "snapshots from. Another source will be tried if available in this case."
msgid ""
"Like changelogs, snapshots can only be acquired if an URI is known from "
"where to get them. Preferable the Release file indicates this in a "
@@ -5888,10 +5893,10 @@ msgid ""
"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::"
"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
"normal URI to a directory, except that the snapshot ID replaced with the "
-"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</"
-"literal>' is available for this option indicating that this source cannot be "
-"used to acquire snapshots from. Another source will be tried if available in "
-"this case."
+"placeholder <literal>@SNAPSHOTID@</literal>. The special value "
+"'<literal>no</literal>' is available for this option indicating that this "
+"source cannot be used to acquire snapshots from. Another source will be "
+"tried if available in this case."
msgstr ""
"Zoals changelogs (bestanden met de registratie van aangebrachte wijzigingen) "
"kunnen momentopnames enkel verkregen worden als er een URI gekend is waar ze "
diff --git a/doc/po/pl.po b/doc/po/pl.po
index c3ef57e..92574fd 100644
--- a/doc/po/pl.po
+++ b/doc/po/pl.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt-doc 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:38+0000\n"
+"POT-Creation-Date: 2024-06-13 19:06+0000\n"
"PO-Revision-Date: 2014-07-04 02:13+0200\n"
"Last-Translator: Robert Luberda <robert@debian.org>\n"
"Language-Team: Polish <manpages-pl-list@lists.sourceforge.net>\n"
@@ -5328,10 +5328,10 @@ msgid ""
"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::"
"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
"normal URI to a directory, except that the snapshot ID replaced with the "
-"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</"
-"literal>' is available for this option indicating that this source cannot be "
-"used to acquire snapshots from. Another source will be tried if available in "
-"this case."
+"placeholder <literal>@SNAPSHOTID@</literal>. The special value "
+"'<literal>no</literal>' is available for this option indicating that this "
+"source cannot be used to acquire snapshots from. Another source will be "
+"tried if available in this case."
msgstr ""
#. type: Content of: <refentry><refsect1><title>
diff --git a/doc/po/pt.po b/doc/po/pt.po
index 67a70d9..715f80c 100644
--- a/doc/po/pt.po
+++ b/doc/po/pt.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 2.7.3\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:38+0000\n"
+"POT-Creation-Date: 2024-06-13 19:06+0000\n"
"PO-Revision-Date: 2023-09-11 20:47+0100\n"
"Last-Translator: Américo Monteiro <a_monteiro@gmx.com>\n"
"Language-Team: Portuguese <>\n"
@@ -5708,6 +5708,23 @@ msgstr ""
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt.conf.5.xml
+#, fuzzy
+#| msgid ""
+#| "Like changelogs, snapshots can only be acquired if an URI is known from "
+#| "where to get them. Preferable the Release file indicates this in a "
+#| "'Snapshots' field. If this isn't available the Label/Origin field of the "
+#| "Release file is used to check if a <literal>Acquire::Snapshots::URI::"
+#| "Label::<replaceable>LABEL</replaceable></literal> or <literal>Acquire::"
+#| "Snapshots::URI::Origin::<replaceable>ORIGIN</replaceable></literal> "
+#| "option exists and if so this value is taken. The value in the Release "
+#| "file can be overridden with <literal>Acquire::Snapshots::URI::Override::"
+#| "Label::<replaceable>LABEL</replaceable></literal> or <literal>Acquire::"
+#| "Snapshots::URI::Override::Origin::<replaceable>ORIGIN</replaceable></"
+#| "literal>. The value should be a normal URI to a directory, except that "
+#| "the snapshot ID replaced with the placeholder <literal>@SNAPSHOTID</"
+#| "literal>. The special value '<literal>no</literal>' is available for "
+#| "this option indicating that this source cannot be used to acquire "
+#| "snapshots from. Another source will be tried if available in this case."
msgid ""
"Like changelogs, snapshots can only be acquired if an URI is known from "
"where to get them. Preferable the Release file indicates this in a "
@@ -5720,10 +5737,10 @@ msgid ""
"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::"
"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
"normal URI to a directory, except that the snapshot ID replaced with the "
-"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</"
-"literal>' is available for this option indicating that this source cannot be "
-"used to acquire snapshots from. Another source will be tried if available in "
-"this case."
+"placeholder <literal>@SNAPSHOTID@</literal>. The special value "
+"'<literal>no</literal>' is available for this option indicating that this "
+"source cannot be used to acquire snapshots from. Another source will be "
+"tried if available in this case."
msgstr ""
"Tal como changelogs, os instantâneos só podem ser adquiridos se for "
"conhecido um URI de onde os obter. Preferencialmente o ficheiro Release "
diff --git a/doc/po/pt_BR.po b/doc/po/pt_BR.po
index 313bfaf..86fb117 100644
--- a/doc/po/pt_BR.po
+++ b/doc/po/pt_BR.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt-doc 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:38+0000\n"
+"POT-Creation-Date: 2024-06-13 19:06+0000\n"
"PO-Revision-Date: 2004-09-20 17:02+0000\n"
"Last-Translator: André Luís Lopes <andrelop@debian.org>\n"
"Language-Team: <debian-l10n-portuguese@lists.debian.org>\n"
@@ -3960,10 +3960,10 @@ msgid ""
"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::"
"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a "
"normal URI to a directory, except that the snapshot ID replaced with the "
-"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</"
-"literal>' is available for this option indicating that this source cannot be "
-"used to acquire snapshots from. Another source will be tried if available in "
-"this case."
+"placeholder <literal>@SNAPSHOTID@</literal>. The special value "
+"'<literal>no</literal>' is available for this option indicating that this "
+"source cannot be used to acquire snapshots from. Another source will be "
+"tried if available in this case."
msgstr ""
#. type: Content of: <refentry><refsect1><title>
diff --git a/po/apt-all.pot b/po/apt-all.pot
index 938b6d3..51f7bf3 100644
--- a/po/apt-all.pot
+++ b/po/apt-all.pot
@@ -5,9 +5,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: apt 2.9.3\n"
+"Project-Id-Version: apt 2.9.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-05-14 11:16+0000\n"
+"POT-Creation-Date: 2024-06-13 19:06+0000\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"
@@ -1232,6 +1232,14 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr ""
+
+#: apt-pkg/edsp.cc
+msgid "Solving dependencies"
+msgstr ""
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1521,10 +1529,6 @@ msgid ""
"used instead."
msgstr ""
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr ""
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/ar.po b/po/ar.po
index a6af931..63b4f79 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2006-10-20 21:28+0300\n"
"Last-Translator: Ossama M. Khayat <okhayat@yahoo.com>\n"
"Language-Team: Arabic <support@arabeyes.org>\n"
@@ -1253,6 +1253,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "حساب الترقية"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "مجموع المعتمدات:"
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1542,10 +1552,6 @@ msgid ""
"used instead."
msgstr ""
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "حساب الترقية"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/ast.po b/po/ast.po
index e74c4e4..49cad88 100644
--- a/po/ast.po
+++ b/po/ast.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 0.7.18\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2010-10-02 23:35+0100\n"
"Last-Translator: Iñigo Varela <ivarela@softastur.org>\n"
"Language-Team: Asturian (ast)\n"
@@ -1292,6 +1292,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculando l'anovamientu"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Dependencies totales: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1596,10 +1606,6 @@ msgstr ""
"Nun pudieron descargase dellos ficheros d'índiz; inoráronse o usáronse los "
"antiguos nel so llugar."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calculando l'anovamientu"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/bg.po b/po/bg.po
index f0b3822..c4131b5 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 0.7.21\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2012-06-25 17:23+0300\n"
"Last-Translator: Damyan Ivanov <dmn@debian.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@@ -1321,6 +1321,16 @@ msgstr ""
"Външната програма за удовлетворÑване на завиÑимоÑти Ñе провали без да изведе "
"Ñъобщение за грешка"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "ИзчиÑлÑване на актуализациÑта"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Общо завиÑимоÑти: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "ИзпълнÑване на външна програма за удовлетворÑване на завиÑимоÑти"
@@ -1633,10 +1643,6 @@ msgstr ""
"ÐÑкои индекÑни файлове не можаха да бъдат изтеглени. Те Ñа пренебрегнати или "
"Ñа използвани по-Ñтари."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "ИзчиÑлÑване на актуализациÑта"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/bs.po b/po/bs.po
index b56fac0..c3bdb39 100644
--- a/po/bs.po
+++ b/po/bs.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 0.5.26\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2004-05-06 15:25+0100\n"
"Last-Translator: Safir Šećerović <sapphire@linux.org.ba>\n"
"Language-Team: Bosnian <lokal@lugbih.org>\n"
@@ -1247,6 +1247,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "RaÄunam nadogradnju"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Ukupno zavisnosti:"
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1537,10 +1547,6 @@ msgid ""
"used instead."
msgstr ""
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "RaÄunam nadogradnju"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/ca.po b/po/ca.po
index 2157566..505a1bc 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.4~beta1\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2020-08-09 22:43+0200\n"
"Last-Translator: Aleix Vidal i Gaya <aleix@softcatala.org>\n"
"Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
@@ -1347,6 +1347,16 @@ msgstr "Prepara per a rebre una solució"
msgid "External solver failed without a proper error message"
msgstr "El solucionador extern ha fallat sense un missatge d'error adequat"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "S'està calculant l'actualització"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Nombre total de dependències: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Executa un solucionador extern"
@@ -1663,10 +1673,6 @@ msgstr ""
"Alguns fitxers d'índex no s'han pogut baixar. S'han omès, o en el seu lloc "
"s'han emprat els antics."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "S'està calculant l'actualització"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/cs.po b/po/cs.po
index d0d2310..ea342db 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 2.9.0\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2024-04-13 22:12+0200\n"
"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
@@ -1308,6 +1308,16 @@ msgstr "Příprava na obdržení řešení"
msgid "External solver failed without a proper error message"
msgstr "Externí řešitel selhal, aniž by zanechal rozumnou chybovou hlášku"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "PropoÄítává se aktualizace"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Installing dependencies:"
+msgid "Solving dependencies"
+msgstr "Instalace závislostí:"
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Spuštění externího řešitele"
@@ -1607,10 +1617,6 @@ msgstr ""
"Některé indexové soubory se nepodařilo stáhnout. Jsou ignorovány, nebo jsou "
"použity starší verze."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "PropoÄítává se aktualizace"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/cy.po b/po/cy.po
index 7656cdf..f84178e 100644
--- a/po/cy.po
+++ b/po/cy.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2005-06-06 13:46+0100\n"
"Last-Translator: Dafydd Harries <daf@muse.19inch.net>\n"
"Language-Team: Welsh <cy@pengwyn.linux.org.uk>\n"
@@ -1276,6 +1276,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+#, fuzzy
+msgid "Calculating upgrade"
+msgstr "Yn Cyfrifo'r Uwchraddiad"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+msgid "Solving dependencies"
+msgstr "Cyfanswm Dibyniaethau: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1584,11 +1594,6 @@ msgstr ""
"Methwodd rhai ffeiliau mynegai lawrlwytho: maent wedi eu anwybyddu, neu hen "
"rai eu defnyddio yn lle."
-#: apt-pkg/upgrade.cc
-#, fuzzy
-msgid "Calculating upgrade"
-msgstr "Yn Cyfrifo'r Uwchraddiad"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/da.po b/po/da.po
index 0f57bfc..4afc09a 100644
--- a/po/da.po
+++ b/po/da.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.4~rc2\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2017-03-02 23:51+0200\n"
"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
"Language-Team: Danish <debian-l10n-danish@lists.debian.org>\n"
@@ -1329,6 +1329,16 @@ msgstr "Forbered for modtagelse af løsning"
msgid "External solver failed without a proper error message"
msgstr "Ekstern problemløser fejlede uden en korrekt fejlbesked"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Beregner opgraderingen"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Sammenlagt afhængigheder: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Kør ekstern problemløser"
@@ -1634,10 +1644,6 @@ msgstr ""
"Nogle indeksfiler kunne ikke hentes. De er blevet ignoreret eller de gamle "
"bruges i stedet."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Beregner opgraderingen"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/de.po b/po/de.po
index b718f7e..92c6807 100644
--- a/po/de.po
+++ b/po/de.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 2.7.2\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2023-07-17 19:13+0200\n"
"Last-Translator: Helge Kreutzmann <debian@helgefjell.de>\n"
"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
@@ -1374,6 +1374,16 @@ msgstr "Vorbereiten, eine Lösung zu erhalten"
msgid "External solver failed without a proper error message"
msgstr "Externer Problemlöser ohne ordnungsgemäße Fehlermeldung fehlgeschlagen"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Paketaktualisierung (Upgrade) wird berechnet"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Gesamtzahl an Abhängigkeiten: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Externen Problemlöser ausführen"
@@ -1693,10 +1703,6 @@ msgstr ""
"Einige Indexdateien konnten nicht heruntergeladen werden. Sie wurden "
"ignoriert oder alte an ihrer Stelle benutzt."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Paketaktualisierung (Upgrade) wird berechnet"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/dz.po b/po/dz.po
index eb10358..4693626 100644
--- a/po/dz.po
+++ b/po/dz.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2006-09-19 09:49+0530\n"
"Last-Translator: Kinley Tshering <gasepkuenden2k3@hotmail.com>\n"
"Language-Team: Dzongkha <pgeyleg@dit.gov.bt>\n"
@@ -1259,6 +1259,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "ཡར་བསà¾à¾±à½ºà½‘་རྩིས་བà½à½¼à½“་དོ་"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "རྟེན་འབྲེལ་བསྡོམས:"
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1562,10 +1572,6 @@ msgstr ""
"ཟུར་à½à½¼à¼‹à½¡à½²à½‚་སྣོད་ལ་ལུ་ཅིག་ཕབ་ལེན་འབད་ནི་ལུ་འà½à½´à½¦à¼‹à½¤à½¼à½¢à¼‹à½–ྱུང་ནུག་ འདི་ཚུ་སྣང་མེད་སྦེ་བཞགཔ་མ་ཚད་ ཚབ་ལུ་"
"རྙིངམ་འདི་ཚུ་ལག་ལེན་འà½à½–་ནུག"
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "ཡར་བསà¾à¾±à½ºà½‘་རྩིས་བà½à½¼à½“་དོ་"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/el.po b/po/el.po
index 3aa486e..25c990d 100644
--- a/po/el.po
+++ b/po/el.po
@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2020-12-30 12:20+0200\n"
"Last-Translator: Vangelis Skarmoutsos <skarmoutsosv@gmail.com>\n"
"Language-Team: Greek <debian-l10n-greek@lists.debian.org>\n"
@@ -1278,6 +1278,16 @@ msgstr "ΠÏοετοιμασία για λήψη λÏσης"
msgid "External solver failed without a proper error message"
msgstr "Ο εξωτεÏικός solver απέτυχε χωÏίς κανονικό μήνυμα σφάλματος"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Υπολογισμός της αναβάθμισης"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "ΣÏνολο ΕξαÏτήσεων: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Εκτέλεση εξωτεÏÎ¹ÎºÎ¿Ï solver"
@@ -1579,10 +1589,6 @@ msgstr ""
"ΜεÏικά αÏχεία index απέτυχαν να ληφθοÏν. Είτε αγνοήθηκαν ή χÏησιμοποιήθηκαν "
"παλαιότεÏα στη θέση τους."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Υπολογισμός της αναβάθμισης"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/es.po b/po/es.po
index f92fe3e..0c6aa64 100644
--- a/po/es.po
+++ b/po/es.po
@@ -37,7 +37,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 0.8.10\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2016-01-26 01:51+0100\n"
"Last-Translator: Manuel \"Venturi\" Porras Peralta <venturi@openmailbox."
"org>\n"
@@ -1425,6 +1425,16 @@ msgstr "Preparar para recibir una solución"
msgid "External solver failed without a proper error message"
msgstr "Falló solucionador externo sin un mensaje de error apropiado"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculando la actualización"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Dependencias totales: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Ejecutar solucionador externo"
@@ -1738,10 +1748,6 @@ msgstr ""
"No se han podido descargar algunos archivos de índice, se han omitido, o se "
"han utilizado unos antiguos en su lugar."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calculando la actualización"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/eu.po b/po/eu.po
index cafe31e..f6ac284 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2009-05-17 00:41+0200\n"
"Last-Translator: Piarres Beobide <pi@beobide.net>\n"
"Language-Team: Euskara <debian-l10n-basque@lists.debian.org>\n"
@@ -1261,6 +1261,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Berriketak kalkulatzen"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Dependentziak Guztira: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1561,10 +1571,6 @@ msgstr ""
"Indize fitxategi batzuk ezin izan dira deskargatu; ez ikusi egin zaie, edo "
"zaharrak erabili dira haien ordez."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Berriketak kalkulatzen"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/fi.po b/po/fi.po
index da8846c..5b4b8c0 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 0.5.26\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2008-12-11 14:52+0200\n"
"Last-Translator: Tapio Lehtonen <tale@debian.org>\n"
"Language-Team: Finnish <debian-l10n-finnish@lists.debian.org>\n"
@@ -1256,6 +1256,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Käsitellään päivitystä"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Riippuvuuksia yhteensä: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1557,10 +1567,6 @@ msgstr ""
"Joidenkin hakemistotiedostojen nouto ei onnistunut, ne on ohitettu tai "
"käytetty vanhoja. "
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Käsitellään päivitystä"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/fr.po b/po/fr.po
index bec7edb..68b9a7d 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2019-01-21 09:19+0100\n"
"Last-Translator: Julien Patriarca <leatherface@debian.org>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
@@ -1370,6 +1370,16 @@ msgstr "Préparation à la réception de la solution"
msgid "External solver failed without a proper error message"
msgstr "Échec du solveur externe sans message d'erreur adapté"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calcul de la mise à jour"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Nombre de dépendances : "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Exécution du solveur externe"
@@ -1694,10 +1704,6 @@ msgstr ""
"Le téléchargement de quelques fichiers d'index a échoué, ils ont été "
"ignorés, ou les anciens ont été utilisés à la place."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calcul de la mise à jour"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/gl.po b/po/gl.po
index 62b6529..ff8a316 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2011-05-12 15:28+0100\n"
"Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>\n"
"Language-Team: galician <proxecto@trasno.net>\n"
@@ -1316,6 +1316,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculando a anovación"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Número total de dependencias: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1621,10 +1631,6 @@ msgstr ""
"Algúns ficheiros de índice fallaron durante a descarga. Ignoráronse, ou "
"foron utilizados algúns antigos no seu lugar"
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calculando a anovación"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/hu.po b/po/hu.po
index 98961c9..7dcb904 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2016-04-10 19:46+0200\n"
"Last-Translator: Gabor Kelemen <kelemeng@ubuntu.com>\n"
"Language-Team: Hungarian <gnome-hu-list@gnome.org>\n"
@@ -1354,6 +1354,16 @@ msgstr "Felkészülés megoldás fogadására"
msgid "External solver failed without a proper error message"
msgstr "A külső solver megfelelő hibaüzenet nélkül hibázott"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Frissítés kiszámítása"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Függőségek összesen: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Külső solver végrehajtása"
@@ -1660,10 +1670,6 @@ msgstr ""
"Néhány indexfájlt nem sikerült letölteni. Figyelmen kívül lettek hagyva, "
"vagy régebbiek lettek felhasználva."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Frissítés kiszámítása"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/it.po b/po/it.po
index aa5c6c1..581e470 100644
--- a/po/it.po
+++ b/po/it.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2019-03-04 11:05+0100\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
@@ -1366,6 +1366,16 @@ msgstr "Preparazione alla ricezione della soluzione"
msgid "External solver failed without a proper error message"
msgstr "Il solver esterno è terminato senza un messaggio di errore"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calcolo dell'aggiornamento"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Totale dipendenze: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Esecuzione solver esterno"
@@ -1680,10 +1690,6 @@ msgstr ""
"Impossibile scaricare alcuni file di indice: saranno ignorati o verranno "
"usati quelli vecchi."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calcolo dell'aggiornamento"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/ja.po b/po/ja.po
index 32e5d40..ce523c8 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 2.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2022-08-14 14:30+0900\n"
"Last-Translator: Hideki Yamane <henrich@debian.org>\n"
"Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
@@ -1347,6 +1347,16 @@ msgstr "解決をå—ã‘å–る準備"
msgid "External solver failed without a proper error message"
msgstr "外部ソルãƒãŒé©åˆ‡ãªã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãªã—ã«å¤±æ•—ã—ã¾ã—ãŸ"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "アップグレードパッケージを検出ã—ã¦ã„ã¾ã™"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "ä¾å­˜é–¢ä¿‚ç·æ•°: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "外部ソルãƒã‚’実行"
@@ -1652,10 +1662,6 @@ msgstr ""
"ã„ãã¤ã‹ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã“れらã¯ç„¡è¦–ã•ã‚Œ"
"ã‚‹ã‹ã€å¤ã„ã‚‚ã®ãŒä»£ã‚ã‚Šã«ä½¿ã‚ã‚Œã¾ã™ã€‚"
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "アップグレードパッケージを検出ã—ã¦ã„ã¾ã™"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/km.po b/po/km.po
index e5f8049..fb54834 100644
--- a/po/km.po
+++ b/po/km.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2006-10-10 09:48+0700\n"
"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
"Language-Team: Khmer <support@khmeros.info>\n"
@@ -1259,6 +1259,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "កំពុង​គណនា​ការ​ធ្វើ​ឲ្យ​ប្រសើរ"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "ភាព​អាស្រáŸáž™â€‹ážŸážšáž»áž” ៖ "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1557,10 +1567,6 @@ msgid ""
msgstr ""
"ឯកសារ​លិបិក្រម​មួយ​ចំនួន​បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​​ទាញ​យក ​ពួកវាážáŸ’រូវបាន​មិន​អើពើ​ ឬ ប្រើ​​ឯកសារ​ចាស់​ជំនួសវិញ ​​។"
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "កំពុង​គណនា​ការ​ធ្វើ​ឲ្យ​ប្រសើរ"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/ko.po b/po/ko.po
index 3b5795b..eea8df7 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2010-08-30 02:31+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: Korean <debian-l10n-korean@lists.debian.org>\n"
@@ -1272,6 +1272,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "업그레ì´ë“œë¥¼ 계산하는 중입니다"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "ì „ì²´ ì˜ì¡´ì„±: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1572,10 +1582,6 @@ msgstr ""
"ì¼ë¶€ ì¸ë±ìŠ¤ 파ì¼ì„ ë‹¤ìš´ë¡œë“œí•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤. 해당 파ì¼ì„ 무시하거나 과거"
"ì˜ ë²„ì „ì„ ëŒ€ì‹  사용합니다."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "업그레ì´ë“œë¥¼ 계산하는 중입니다"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/ku.po b/po/ku.po
index 97d8652..1c4593d 100644
--- a/po/ku.po
+++ b/po/ku.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2008-05-08 12:48+0200\n"
"Last-Translator: Erdal Ronahi <erdal.ronahi@gmail.com>\n"
"Language-Team: ku <ubuntu-l10n-kur@lists.ubuntu.com>\n"
@@ -1243,6 +1243,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Bilindkirin tê hesibandin"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Bindestên giştî:"
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1532,10 +1542,6 @@ msgid ""
"used instead."
msgstr ""
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Bilindkirin tê hesibandin"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/lt.po b/po/lt.po
index 36f0948..d0c474b 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2008-08-02 01:47-0400\n"
"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
@@ -1252,6 +1252,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "SkaiÄiuojami atnaujinimai"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Viso priklausomybių: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1544,10 +1554,6 @@ msgstr ""
"Kai kurių indeksų failų nepavyko parsiųsti, jie buvo ignoruoti arba vietoje "
"jų panaudoti seni."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "SkaiÄiuojami atnaujinimai"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/mr.po b/po/mr.po
index 3aa0eb1..506d16f 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2008-11-20 23:27+0530\n"
"Last-Translator: Sampada <sampadanakhare@gmail.com>\n"
"Language-Team: Marathi, janabhaaratii, C-DAC, Mumbai, India "
@@ -1255,6 +1255,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "पà¥à¤¢à¤¿à¤² आवृतà¥à¤¤à¥€à¤šà¥€ गणती करीत आहे"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "à¤à¤•à¥‚ण निरà¥à¤­à¤°à¤¤à¤¾:"
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1558,10 +1568,6 @@ msgstr ""
"काही अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ संचयिका डाऊनलोड करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥,तà¥à¤¯à¤¾ दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ à¤à¤¾à¤²à¥à¤¯à¤¾, किंवा "
"तà¥à¤¯à¤¾à¤à¤µà¤œà¥€ जà¥à¤¨à¥à¤¯à¤¾ वापरलà¥à¤¯à¤¾ गेलà¥à¤¯à¤¾."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "पà¥à¤¢à¤¿à¤² आवृतà¥à¤¤à¥€à¤šà¥€ गणती करीत आहे"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/nb.po b/po/nb.po
index 4db0172..74d7b34 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2018-10-30 20:53+0100\n"
"Last-Translator: Petter Reinholdtsen <pere@hungry.com>\n"
"Language-Team: Norwegian Bokmål <i18n-no@lister.ping.uio.no>\n"
@@ -1303,6 +1303,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Beregner oppgradering"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Antall avhengighetsforhold: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1604,10 +1614,6 @@ msgstr ""
"Klarte ikke å laste ned alle oversiktfilene. De ble ignorerte, eller gamle "
"ble brukt isteden. "
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Beregner oppgradering"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/ne.po b/po/ne.po
index 84e5e67..5a153a8 100644
--- a/po/ne.po
+++ b/po/ne.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2006-06-12 14:35+0545\n"
"Last-Translator: Shiva Pokharel <pokharelshiva@hotmail.com>\n"
"Language-Team: Nepali <info@mpp.org.np>\n"
@@ -1254,6 +1254,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "सà¥à¤¤à¤° वृदà¥à¤§à¤¿ गणना गरिदैछ"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "कूल निरà¥à¤­à¤°à¤¤à¤¾à¤¹à¤°à¥‚:"
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1553,10 +1563,6 @@ msgstr ""
"केही अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ फाइलहरू डाउनलोड गरà¥à¤¨ असफल भयो, तिनीहरू उपेकà¥à¤·à¤¿à¤¤ भà¤, वा सटà¥à¤Ÿà¤¾à¤®à¤¾ पà¥à¤°à¤¾à¤¨à¥‹ "
"à¤à¤‰à¤Ÿà¤¾ पà¥à¤°à¤¯à¥‹à¤— गरियो ।"
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "सà¥à¤¤à¤° वृदà¥à¤§à¤¿ गणना गरिदैछ"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/nl.po b/po/nl.po
index 8f32a70..780f869 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -13,10 +13,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: apt 2.9.1\n"
+"Project-Id-Version: apt 2.9.3\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-26 20:11+0000\n"
-"PO-Revision-Date: 2024-04-20 20:28+0200\n"
+"POT-Creation-Date: 2024-06-11 12:57+0000\n"
+"PO-Revision-Date: 2024-05-21 22:12+0200\n"
"Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n"
"Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n"
"Language: nl\n"
@@ -258,6 +258,8 @@ msgid ""
"Repositories should provide a clear-signed InRelease file, but none found at "
"%s."
msgstr ""
+"Pakketbronnen zouden een duidelijk ondertekend InRelease-bestand moeten "
+"leveren, maar er is er geen gevonden op %s."
#: apt-pkg/acquire-item.cc
#, c-format
@@ -706,26 +708,26 @@ msgstr "Syntactische fout %s:%u: extra rommel aan het einde van het bestand"
#. TRANSLATOR: This is a warning level displayed before the message
#: apt-pkg/contrib/error.cc
msgid "Error:"
-msgstr ""
+msgstr "Fout:"
#. TRANSLATOR: This is a warning level displayed before the message
#: apt-pkg/contrib/error.cc
msgid "Warning:"
-msgstr ""
+msgstr "Waarschuwing:"
#. TRANSLATOR: This is a warning level displayed before the message
#: apt-pkg/contrib/error.cc
msgid "Notice:"
-msgstr ""
+msgstr "Kennisgeving:"
#: apt-pkg/contrib/error.cc
msgid "Audit:"
-msgstr ""
+msgstr "Controle:"
#. TRANSLATOR: This is a warning level displayed before the message
#: apt-pkg/contrib/error.cc
msgid "Debug:"
-msgstr ""
+msgstr "Debug:"
#: apt-pkg/contrib/extracttar.cc
#, c-format
@@ -1364,6 +1366,16 @@ msgstr "Instellen op het ontvangen van een oplossing"
msgid "External solver failed without a proper error message"
msgstr "Externe oplosser faalde zonder passende foutmelding"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Opwaardering wordt doorgerekend"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Installing dependencies:"
+msgid "Solving dependencies"
+msgstr "Installeren van vereisten:"
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Externe oplosser uitvoeren"
@@ -1675,10 +1687,6 @@ msgstr ""
"Ophalen van sommige indexbestanden is mislukt. Deze zijn of genegeerd, of er "
"zijn oudere versies van gebruikt."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Opwaardering wordt doorgerekend"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/nn.po b/po/nn.po
index 299ba9e..f4b6134 100644
--- a/po/nn.po
+++ b/po/nn.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2005-02-14 23:30+0100\n"
"Last-Translator: Havard Korsvoll <korsvoll@skulelinux.no>\n"
"Language-Team: Norwegian nynorsk <i18n-nn@lister.ping.uio.no>\n"
@@ -1262,6 +1262,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Reknar ut oppgradering"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Tal på krav: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1562,10 +1572,6 @@ msgstr ""
"Klarte ikkje lasta ned nokre av indeksfilene. Dei er ignorerte, eller gamle "
"filer er brukte i staden."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Reknar ut oppgradering"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/pl.po b/po/pl.po
index 039d9b7..766eea8 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 0.9.7.3\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2012-07-28 21:53+0200\n"
"Last-Translator: Michał Kułach <michal.kulach@gmail.com>\n"
"Language-Team: Polish <debian-l10n-polish@lists.debian.org>\n"
@@ -1322,6 +1322,16 @@ msgstr ""
"Zewnętrzny mechanizm rozwiązywania zależności zawiódł, bez podania "
"prawidłowego komunikatu o błędzie"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Obliczanie aktualizacji"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "W sumie zależności: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Wykonywanie zewnętrznego mechanizmu rozwiązywania zależności"
@@ -1631,10 +1641,6 @@ msgstr ""
"Nie udało się pobrać niektórych plików indeksu, zostały one zignorowane lub "
"użyto ich starszej wersji."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Obliczanie aktualizacji"
-
# Ujednolicono z aptitude
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
diff --git a/po/pt.po b/po/pt.po
index 345ca99..93deeae 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2012-06-29 15:45+0100\n"
"Last-Translator: Miguel Figueiredo <elmig@debianpt.org>\n"
"Language-Team: Portuguese <traduz@debianpt.org>\n"
@@ -1322,6 +1322,16 @@ msgstr "Preparar para receber solução"
msgid "External solver failed without a proper error message"
msgstr "O resolvedor externo falhou sem uma mensagem de erro adequada"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "A calcular a actualização"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Total de dependências: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Executar resolvedor externo"
@@ -1636,10 +1646,6 @@ msgstr ""
"Falhou o download de alguns ficheiros de índice. Foram ignorados ou os "
"antigos foram usados em seu lugar."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "A calcular a actualização"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 7748ec1..2ce315b 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2008-11-17 02:33-0200\n"
"Last-Translator: Felipe Augusto van de Wiel (faw) <faw@debian.org>\n"
"Language-Team: Brazilian Portuguese <debian-l10n-portuguese@lists.debian."
@@ -1262,6 +1262,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Calculando atualização"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Total de dependências: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1568,10 +1578,6 @@ msgstr ""
"Alguns arquivos de índice falharam para baixar, eles foram ignorados ou os "
"antigos foram usados no lugar."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Calculando atualização"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/ro.po b/po/ro.po
index 448b701..e07ddd4 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -26,7 +26,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 2.7.2\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2023-07-13 19:58+0200\n"
"Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n"
"Language-Team: Romanian <debian-l10n-romanian@lists.debian.org>\n"
@@ -1394,6 +1394,16 @@ msgstr "Se pregătește pentru primirea soluției"
msgid "External solver failed without a proper error message"
msgstr "Soluționatorul extern a eșuat fără un mesaj de eroare relevant"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Se calculează înnoirea"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Total dependențe: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Executarea soluționatorului extern"
@@ -1724,10 +1734,6 @@ msgstr ""
"Descărcarea unor fișiere index a eșuat, acestea fie au fost ignorate, fie au "
"fost folosite în loc cele vechi."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Se calculează înnoirea"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/ru.po b/po/ru.po
index 2cddd5a..b98d6e9 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -18,7 +18,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 2.2.0\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2021-02-22 20:02+0300\n"
"Last-Translator: ÐлекÑей Шилин <rootlexx@mail.ru>\n"
"Language-Team: руÑÑкий <debian-l10n-russian@lists.debian.org>\n"
@@ -1354,6 +1354,16 @@ msgstr "Подготовка к приёму решениÑ"
msgid "External solver failed without a proper error message"
msgstr "Внешний решатель завершилÑÑ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹, не передав ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибке"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "РаÑчёт обновлений"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Ð’Ñего завиÑимоÑтей: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Выполнение внешнего решателÑ"
@@ -1668,10 +1678,6 @@ msgstr ""
"Ðекоторые индекÑные файлы Ñкачать не удалоÑÑŒ. Они были проигнорированы, или "
"вмеÑто них были иÑпользованы Ñтарые верÑии."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "РаÑчёт обновлений"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/sk.po b/po/sk.po
index e684a80..fd9cba8 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2012-06-28 20:49+0100\n"
"Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -1293,6 +1293,16 @@ msgstr "Pripraviť sa na prijatie riešenia"
msgid "External solver failed without a proper error message"
msgstr "Externý riešiteľ zlyhal bez uvedenia chybovej správy"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "PrepoÄítava sa aktualizácia"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Celkom závislostí: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Spustiť externého riešiteľa"
@@ -1600,10 +1610,6 @@ msgstr ""
"Niektoré indexové súbory sa nepodarilo stiahnuť. Boli ignorované alebo sa "
"použili staršie verzie."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "PrepoÄítava sa aktualizácia"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/sl.po b/po/sl.po
index 4503dd7..ed597a0 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 0.5.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2012-06-27 21:29+0000\n"
"Last-Translator: Andrej Znidarsic <andrej.znidarsic@gmail.com>\n"
"Language-Team: Slovenian <sl@li.org>\n"
@@ -1292,6 +1292,16 @@ msgstr "Priprava za rešitev prejemanja"
msgid "External solver failed without a proper error message"
msgstr "Zunanji reÅ¡evalnik je spodletel brez pravega sporoÄila o napakah"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "PreraÄunavanje nadgradnje"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Vseh odvisnosti: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Izvedi zunanji reševalnik"
@@ -1599,10 +1609,6 @@ msgstr ""
"Prejem nekaterih datotek kazala je spodletel. Bile so prezrte ali pa so bile "
"namesto njih uporabljene stare."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "PreraÄunavanje nadgradnje"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/sv.po b/po/sv.po
index 92a7120..037ff92 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2015-08-19 21:33+0200\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <debian-l10n-swedish@debian.org>\n"
@@ -1311,6 +1311,16 @@ msgstr "Förbered för att motta lösning"
msgid "External solver failed without a proper error message"
msgstr "Extern lösare misslyckades utan något informativt felmeddelande"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Beräknar uppgradering"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Totalt antal beroenden: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Kör extern lösare"
@@ -1624,10 +1634,6 @@ msgstr ""
"Vissa indexfiler kunde inte hämtas. De har ignorerats eller så har de gamla "
"använts istället."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Beräknar uppgradering"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/th.po b/po/th.po
index e20eec4..5ef490b 100644
--- a/po/th.po
+++ b/po/th.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2014-12-12 13:00+0700\n"
"Last-Translator: Theppitak Karoonboonyanan <thep@debian.org>\n"
"Language-Team: Thai <thai-l10n@googlegroups.com>\n"
@@ -1271,6 +1271,16 @@ msgstr "เตรียมรับคำตอบ"
msgid "External solver failed without a proper error message"
msgstr "à¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¸ à¸²à¸¢à¸™à¸­à¸à¸—ำงานล้มเหลวโดยไม่มีข้อความข้อผิดพลาดที่เหมาะสม"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„ำนวณà¸à¸²à¸£à¸›à¸£à¸±à¸šà¸£à¸¸à¹ˆà¸™"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "จำนวนà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¹‚ยงระหว่างà¹à¸žà¸à¹€à¸à¸ˆà¸—ั้งหมด: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "เรียà¸à¸à¸¥à¹„à¸à¸à¸²à¸£à¹à¸à¹‰à¸›à¸±à¸à¸«à¸²à¸ à¸²à¸¢à¸™à¸­à¸"
@@ -1573,10 +1583,6 @@ msgid ""
"used instead."
msgstr "ดาวน์โหลดà¹à¸Ÿà¹‰à¸¡à¸”ัชนีบางà¹à¸Ÿà¹‰à¸¡à¹„ม่สำเร็จ จะข้ามรายà¸à¸²à¸£à¸”ังà¸à¸¥à¹ˆà¸²à¸§à¹„ป หรือใช้ข้อมูลเà¸à¹ˆà¸²à¹à¸—น"
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„ำนวณà¸à¸²à¸£à¸›à¸£à¸±à¸šà¸£à¸¸à¹ˆà¸™"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/tl.po b/po/tl.po
index 1f0fcd4..1352c84 100644
--- a/po/tl.po
+++ b/po/tl.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2007-03-29 21:36+0800\n"
"Last-Translator: Eric Pareja <xenos@upm.edu.ph>\n"
"Language-Team: Tagalog <debian-tl@banwa.upm.edu.ph>\n"
@@ -1272,6 +1272,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Sinusuri ang pag-upgrade"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Kabuuan ng mga Dependensiya: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1575,10 +1585,6 @@ msgstr ""
"May mga talaksang index na hindi nakuha, sila'y di pinansin, o ginamit ang "
"mga luma na lamang."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Sinusuri ang pag-upgrade"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/tr.po b/po/tr.po
index 6d2d7c8..0269512 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 2.6.0\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2023-04-19 15:15+0300\n"
"Last-Translator: Mert Dirik <mertdirik@gmail.com>\n"
"Language-Team: Debian l10n Turkish <debian-l10n-turkish@lists.debian.org>\n"
@@ -1335,6 +1335,16 @@ msgstr "Çözüm almak için hazırlan"
msgid "External solver failed without a proper error message"
msgstr "Harici çözücü düzgün bir hata iletisi göstermeden başarısız oldu"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Yükseltme hesaplanıyor"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Toplam bağımlılıklar: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Harici çözücüyü çalıştır"
@@ -1637,10 +1647,6 @@ msgstr ""
"Bazı indeks dosyaları indirilemedi. Bu dosyalar yok sayıldılar ya da önceki "
"sürümleri kullanıldı."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Yükseltme hesaplanıyor"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/uk.po b/po/uk.po
index a8ee5fe..1f0b02c 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2012-09-25 20:19+0300\n"
"Last-Translator: A. Bondarenko <artem.brz@gmail.com>\n"
"Language-Team: УкраїнÑька <uk@li.org>\n"
@@ -1322,6 +1322,16 @@ msgstr ""
"Зовнішній розв'Ñзувач завершивÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾ без відповідного Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ "
"помилку"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "ОбчиÑÐ»ÐµÐ½Ð½Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½ÑŒ"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Ð’Ñього залежноÑтей: "
+
#: apt-pkg/edsp.cc
#, fuzzy
msgid "Execute external solver"
@@ -1631,10 +1641,6 @@ msgstr ""
"ДеÑкі індекÑні файли не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸. Вони були зігноровані, або "
"заміÑÑ‚ÑŒ них були викориÑтані Ñтаріші верÑÑ–Ñ—."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "ОбчиÑÐ»ÐµÐ½Ð½Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½ÑŒ"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/vi.po b/po/vi.po
index 53de6ff..f64a29d 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.8\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2014-09-12 13:48+0700\n"
"Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@@ -1308,6 +1308,16 @@ msgstr "Chuẩn bị để lấy cách giải quyết"
msgid "External solver failed without a proper error message"
msgstr "Bộ phân giải bên ngoài gặp lỗi mà không trả vỠthông tin lỗi thích hợp"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "Äang tính toán nâng cấp"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "Tổng gói phụ thuộc: "
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "Thi hành bộ phân giải từ bên ngoài"
@@ -1618,10 +1628,6 @@ msgstr ""
"Một số tập tin chỉ mục không tải vỠđược. Chúng đã bị bỠqua, hoặc cái cũ đã "
"được dùng thay thế."
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "Äang tính toán nâng cấp"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 04de20b..d3fedb4 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 2.9.1\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2024-04-16 13:15-0400\n"
"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
"Language-Team: Chinese (simplified) <debian-l10n-chinese@lists.debian.org>\n"
@@ -1270,6 +1270,16 @@ msgstr "准备接收ä¾èµ–解决方案"
msgid "External solver failed without a proper error message"
msgstr "外部ä¾èµ–解决器出错,错误信æ¯ä¸æ°å½“"
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "正在计算更新"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Installing dependencies:"
+msgid "Solving dependencies"
+msgstr "å°†è¦å®‰è£…çš„ä¾èµ–:"
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr "执行外部ä¾èµ–解决器"
@@ -1565,10 +1575,6 @@ msgid ""
"used instead."
msgstr "部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。"
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "正在计算更新"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/po/zh_TW.po b/po/zh_TW.po
index a2ad262..943f86f 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.2.X\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2024-04-22 17:39+0000\n"
+"POT-Creation-Date: 2024-05-25 09:01+0000\n"
"PO-Revision-Date: 2009-01-28 10:41+0800\n"
"Last-Translator: Tetralet <tetralet@gmail.com>\n"
"Language-Team: Debian-user in Chinese [Big5] <debian-chinese-big5@lists."
@@ -1255,6 +1255,16 @@ msgstr ""
msgid "External solver failed without a proper error message"
msgstr ""
+#: apt-pkg/edsp.cc apt-pkg/upgrade.cc
+msgid "Calculating upgrade"
+msgstr "籌備å‡ç´šä¸­"
+
+#: apt-pkg/edsp.cc
+#, fuzzy
+#| msgid "Total dependencies: "
+msgid "Solving dependencies"
+msgstr "相ä¾é—œä¿‚åˆè¨ˆï¼š"
+
#: apt-pkg/edsp.cc
msgid "Execute external solver"
msgstr ""
@@ -1550,10 +1560,6 @@ msgid ""
"used instead."
msgstr "有一些索引檔ä¸èƒ½ä¸‹è¼‰ï¼Œå®ƒå€‘å¯èƒ½è¢«ç•¥éŽäº†ï¼Œæˆ–是替而使用原有的索引檔。"
-#: apt-pkg/upgrade.cc
-msgid "Calculating upgrade"
-msgstr "籌備å‡ç´šä¸­"
-
#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update'
#: apt-private/acqprogress.cc
#, c-format
diff --git a/test/integration/framework b/test/integration/framework
index 9cb4081..e13888d 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -19,6 +19,9 @@ while [ -n "$1" -a -z "$CHECK_ARGS" ]; do
elif [ "$1" = '--level' ]; then
export MSGLEVEL=$2
shift
+ elif [ "$1" = '--solver' ]; then
+ export APT_SOLVER=$2
+ shift
else
echo >&2 "WARNING: Unknown parameter »$1« will be ignored"
fi
@@ -537,7 +540,10 @@ exec fakeroot gdb --quiet -ex run '${DPKG:-dpkg}' --args '${DPKG:-dpkg}' --root=
EOF
chmod +x "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg"
echo "Dir::Bin::dpkg \"${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg\";" > rootdir/etc/apt/apt.conf.d/99dpkg
-
+ # Set the solver for the test case.
+ if [ "$APT_SOLVER" ]; then
+ echo "APT::Solver \"$APT_SOLVER\";" >> aptconfig.conf
+ fi
{
echo 'quiet "0";'
echo 'quiet::NoUpdate "true";'
@@ -585,6 +591,9 @@ EOF
# prefer our apt binaries over the system apt binaries
export PATH="${APTCMDLINEBINDIR}:${PATH}:/usr/sbin:/sbin"
}
+allowremovemanual() {
+ echo 'APT::Solver::RemoveManual "true";' >> ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/allow-remove-manual.conf
+}
getarchitecture() {
if [ "$1" = "native" -o -z "$1" ]; then
@@ -1550,12 +1559,22 @@ downloadfile() {
fi
}
+cleanup_solver3_pipe() {
+ if [ "$APT_SOLVER" != "3.0" ]; then
+ cat
+ else
+ # FIXME: We do not have support for listing autoremovals yet.
+ # FIXME: Progress output is different
+ sed -e '/Solving dependencies\.\.\./ d' \
+ -e "/no longer required[.:]$/,/^Use '.* autoremove'/ d"
+ fi
+}
cleanup_output() {
cat "$1" | sed \
-e '/gpgv: WARNING: This key is not suitable for signing in --compliance=gnupg mode/ d' \
- -e '/...$/ d' \
-e '/^profiling:/ d' \
| sed -e '/\.\.\.profiling:/ {N;s#\.\.\.profiling:.*\n#...#g}' \
+ | cleanup_solver3_pipe \
>"$2"
}
diff --git a/test/integration/run-tests b/test/integration/run-tests
index c1cc780..331adfc 100755
--- a/test/integration/run-tests
+++ b/test/integration/run-tests
@@ -22,7 +22,16 @@ while [ -n "$1" ]; do
elif [ "$1" = '-j' ]; then
APT_TEST_JOBS=$2
shift
- elif [ -x "$1" ]; then
+ elif [ "$1" = '--solver' ]; then
+ export APT_SOLVER="$2"
+ shift
+ elif [ "$1" = '--skip' ]; then
+ export APT_SKIP_TEST_FILE="$2"
+ shift
+ elif [ "$1" = '--only' ]; then
+ TESTLIST="$2"
+ shift
+ elif [ -e "$1" ]; then
TESTTORUN="$1"
else
echo >&2 "WARNING: Unknown parameter »$1« will be ignored"
@@ -52,14 +61,22 @@ if [ -n "$TESTTORUN" ]; then
CURRENTTRAP="rm -f \"$OUTPUT\"; $CURRENTTRAP"
trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
{
- if [ "$MSGLEVEL" -le 1 ]; then
+ if [ "$APT_SKIP_TEST_FILE" ] && grep -qFx "${TESTTORUN##*/}" "$APT_SKIP_TEST_FILE"; then
+ if [ "$MSGLEVEL" -le 2 ]; then
+ printf "${CTEST}Skip Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}"
+ else
+ printf "${CTEST}Skip Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}\n"
+ fi
+ SKIP='yes'
+ elif [ "$MSGLEVEL" -le 1 ]; then
printf "${TESTTORUN##*/}"
elif [ "$MSGLEVEL" -le 2 ]; then
printf "${CTEST}Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}: "
else
printf "${CTEST}Run Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}\n"
fi
- if ! "$TESTTORUN"; then
+
+ if [ "$SKIP" != "yes" ] && ! "$TESTTORUN"; then
FAIL='yes'
if [ "$MSGLEVEL" -le 2 ]; then
printf >&2 "\n${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}\n"
@@ -83,6 +100,9 @@ if [ -n "$TESTTORUN" ]; then
stty sane || true
cat >&2 "$OUTPUT"
stty sane || true
+ if [ "$STATS_FILE" ]; then
+ flock "$STATS_FILE" -c "echo $TESTTORUN skip=${SKIP:-no} fail=${FAIL:-no} >> \"$STATS_FILE\""
+ fi
if [ "$FAIL" = 'yes' ]; then
exit 1
else
@@ -96,8 +116,15 @@ ALL=0
FAILED_TESTS=""
DIR="$(readlink -f "$(dirname "$0")")"
cd "$DIR"
-TESTLIST="$(find . -mindepth 1 -maxdepth 1 -regex '^\./test-[^/]*$' | sort)"
+if [ -e "$TESTLIST" ]; then
+ TESTLIST="$(sort < "$TESTLIST" | sed 's#^#./#')"
+else
+ TESTLIST="$(find . -mindepth 1 -maxdepth 1 -regex '^\./test-[^/]*$' | sort)"
+fi
if [ -n "$APT_TEST_JOBS" ]; then
+ export STATS_FILE="$(mktemp)"
+ CURRENTTRAP="rm -f \"$STATS_FILE\"; $CURRENTTRAP"
+ trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
if [ "$MSGCOLOR" != 'NO' ]; then
export MSGCOLOR='ALWAYS'
fi
@@ -107,7 +134,26 @@ if [ -n "$APT_TEST_JOBS" ]; then
elif command -v parallel.moreutils >/dev/null 2>&1; then
parallel=parallel.moreutils
fi
- exec $parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST")
+ $parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST") || true
+ ALL=$(wc -l < "$STATS_FILE")
+ SKIP=$(grep -c "skip=yes" "$STATS_FILE" || true)
+ PASS=$(grep -c "skip=no fail=no" "$STATS_FILE" || true)
+ FAIL=$(grep -c "fail=yes" "$STATS_FILE" || true)
+ PASSED_TESTS=$(awk '! /fail=yes/ {print $1}' < "$STATS_FILE" | cut -f2 -d/ | sort | xargs)
+ SKIPPED_TESTS=$(awk '/fail=skip/ {print $1}' < "$STATS_FILE" | cut -f2 -d/ | sort | xargs)
+ FAILED_TESTS=$(awk '/fail=yes/ {print $1}' < "$STATS_FILE" | cut -f2 -d/ | sort | xargs)
+ echo >&2 "Statistics: $ALL tests were run: $PASS successfully and $FAIL failed, $SKIP skipped"
+ if [ -n "$FAILED_TESTS" ]; then
+ if [ $PASS -lt $FAIL ]; then
+ echo >&2 "Passed tests: $PASSED_TESTS"
+ else
+ echo >&2 "Failed tests: $FAILED_TESTS"
+ fi
+ else
+ echo >&2 'All tests seem to have been run successfully. What could possibly go wrong?'
+ fi
+ # ensure we don't overflow
+ exit $((FAIL <= 255 ? FAIL : 255))
fi
APT_TEST_SIGNINGHOME="$(mktemp --directory --tmpdir 'apt-key-signinghome.XXXXXXXXXX')"
@@ -125,6 +171,10 @@ if [ "$MSGLEVEL" -le 1 ]; then
printf "${CTEST}Running testcases${CRESET}: "
fi
for testcase in $TESTLIST; do
+ if [ "$APT_SKIP_TEST_FILE" ] && grep -qFx "${TESTTORUN##*/}" "$APT_SKIP_TEST_FILE"; then
+ printf "${CTEST}Skipping Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}\n"
+ continue
+ fi
if [ "$MSGLEVEL" -le 1 ]; then
printf "${testcase##*/}"
elif [ "$MSGLEVEL" -le 2 ]; then
diff --git a/test/integration/solver3.broken b/test/integration/solver3.broken
new file mode 100644
index 0000000..75ddbe5
--- /dev/null
+++ b/test/integration/solver3.broken
@@ -0,0 +1,32 @@
+test-allow-scores-for-all-dependency-types
+test-apt-get-autoremove
+test-apt-get-autoremove-kernel-module-providers
+test-apt-get-upgrade-by-source
+test-apt-install-file-reltag
+test-apt-install-order-matters-a-bit
+test-apt-move-and-forget-manual-sections
+test-apt-patterns
+test-apt-source-and-build-dep
+test-bug-470115-new-and-tighten-recommends
+test-bug-602412-dequote-redirect
+test-bug-611729-mark-as-manual
+test-bug-675449-essential-are-protected
+test-bug-709560-set-candidate-release
+test-bug-745046-candidate-propagation-fails
+test-bug-753297-upgradable
+test-bug-767891-force-essential-important
+test-bug-961266-hold-means-hold
+test-dont-forget-conflicts-via-unknown-architectures
+test-explore-or-groups-in-markinstall
+test-external-dependency-solver-protocol
+test-method-mirror
+test-parse-all-archs-into-cache
+test-phased-updates-new-depends
+test-phased-updates-upgrade
+test-prevent-markinstall-multiarch-same-versionscrew
+test-release-candidate-switching
+test-resolve-by-keep-new-recommends
+test-ubuntu-bug-1304403-obsolete-priority-standard
+test-ubuntu-bug-1990586
+test-ubuntu-bug-2025462-phased-dist-upgrade
+test-ubuntu-bug-614993
diff --git a/test/integration/test-allow-scores-for-all-dependency-types b/test/integration/test-allow-scores-for-all-dependency-types
index 0a527da..0d9ec6e 100755
--- a/test/integration/test-allow-scores-for-all-dependency-types
+++ b/test/integration/test-allow-scores-for-all-dependency-types
@@ -42,9 +42,13 @@ setupaptarchive
insertinstalledpackage 'libdb-dev' 'amd64' '5.1.7' 'Depends: libdb5.1-dev'
insertinstalledpackage 'libdb5.1-dev' 'amd64' '5.1.29-7'
testsuccess aptmark auto ~i
-testsuccessequal 'Reading package lists...
+testsuccessequal "Reading package lists...
Building dependency tree...
+Reading state information...
Calculating upgrade...
+The following packages were automatically installed and are no longer required:
+ libdb-dev libdb5.3-dev
+Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
libdb5.1-dev
The following NEW packages will be installed:
@@ -56,10 +60,14 @@ Remv libdb5.1-dev [5.1.29-7] [libdb-dev:amd64 ]
Inst libdb-dev [5.1.7] (5.3.0 unversioned [amd64]) []
Inst libdb5.3-dev (5.3.28-3 unversioned [amd64])
Conf libdb-dev (5.3.0 unversioned [amd64])
-Conf libdb5.3-dev (5.3.28-3 unversioned [amd64])' aptget dist-upgrade -st unversioned
-testsuccessequal 'Reading package lists...
+Conf libdb5.3-dev (5.3.28-3 unversioned [amd64])" aptget dist-upgrade -st unversioned
+testsuccessequal "Reading package lists...
Building dependency tree...
+Reading state information...
Calculating upgrade...
+The following packages were automatically installed and are no longer required:
+ libdb-dev libdb5.3-dev
+Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
libdb5.1-dev
The following NEW packages will be installed:
@@ -71,33 +79,49 @@ Remv libdb5.1-dev [5.1.29-7] [libdb-dev:amd64 ]
Inst libdb-dev [5.1.7] (5.3.0 versioned [amd64]) []
Inst libdb5.3-dev (5.3.28-3 versioned [amd64])
Conf libdb-dev (5.3.0 versioned [amd64])
-Conf libdb5.3-dev (5.3.28-3 versioned [amd64])' aptget dist-upgrade -st versioned
+Conf libdb5.3-dev (5.3.28-3 versioned [amd64])" aptget dist-upgrade -st versioned
rm -f rootdir/var/lib/dpkg/status
insertinstalledpackage 'foo' 'amd64' '1'
insertinstalledpackage 'bar' 'amd64' '1'
testsuccess aptmark auto ~i
-testsuccessequal 'Reading package lists...
+testsuccessequal "Reading package lists...
Building dependency tree...
+Reading state information...
Calculating upgrade...
+The following packages were automatically installed and are no longer required:
+ bar foo
+Use 'apt autoremove' to remove them.
The following packages have been kept back:
bar foo
-0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -st unversioned
-testsuccessequal 'Reading package lists...
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded." aptget dist-upgrade -st unversioned
+testsuccessequal "Reading package lists...
Building dependency tree...
+Reading state information...
Calculating upgrade...
+The following packages were automatically installed and are no longer required:
+ bar foo
+Use 'apt autoremove' to remove them.
The following packages have been kept back:
bar foo
-0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -st versioned
-testsuccessequal 'Reading package lists...
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded." aptget dist-upgrade -st versioned
+testsuccessequal "Reading package lists...
Building dependency tree...
+Reading state information...
Calculating upgrade...
+The following packages were automatically installed and are no longer required:
+ bar foo
+Use 'apt autoremove' to remove them.
The following packages have been kept back:
bar foo
-0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -st multipleno
-testsuccessequal 'Reading package lists...
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded." aptget dist-upgrade -st multipleno
+testsuccessequal "Reading package lists...
Building dependency tree...
+Reading state information...
Calculating upgrade...
+The following package was automatically installed and is no longer required:
+ bar
+Use 'apt autoremove' to remove it.
The following packages will be REMOVED:
foo
The following packages will be upgraded:
@@ -105,10 +129,11 @@ The following packages will be upgraded:
1 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
Remv foo [1]
Inst bar [1] (2.2 multipleyes [amd64])
-Conf bar (2.2 multipleyes [amd64])' aptget dist-upgrade -st multipleyes
+Conf bar (2.2 multipleyes [amd64])" aptget dist-upgrade -st multipleyes
testsuccessequal 'Reading package lists...
Building dependency tree...
+Reading state information...
The following NEW packages will be installed:
baz
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
@@ -116,6 +141,7 @@ Inst baz (2 unversioned [amd64])
Conf baz (2 unversioned [amd64])' aptget install baz -st unversioned
testsuccessequal 'Reading package lists...
Building dependency tree...
+Reading state information...
The following additional packages will be installed:
bar
The following packages will be REMOVED:
@@ -139,6 +165,7 @@ insertinstalledpackage 'libaudit0' 'amd64' '1'
testsuccess aptmark auto ~i
testsuccessequal 'Reading package lists...
Building dependency tree...
+Reading state information...
Calculating upgrade...
The following packages will be REMOVED:
gdm3 libaudit0
diff --git a/test/integration/test-apt-get-autoremove-real-virtual-provider b/test/integration/test-apt-get-autoremove-real-virtual-provider
index 4940ab5..d5438f8 100755
--- a/test/integration/test-apt-get-autoremove-real-virtual-provider
+++ b/test/integration/test-apt-get-autoremove-real-virtual-provider
@@ -26,7 +26,17 @@ testsuccess aptget check -s
testsuccessequal 'Reading package lists...
Building dependency tree...
Reading state information...
+Solving dependencies...
+The following packages will be REMOVED:
+ needs-provider1 needs-provider4
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Remv needs-provider1 [1]
+Remv needs-provider4 [1]' aptget autoremove -s --solver 3.0
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
The following packages will be REMOVED:
needs-provider4
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
-Remv needs-provider4 [1]' aptget autoremove -s
+Remv needs-provider4 [1]' aptget autoremove -s --solver internal
diff --git a/test/integration/test-apt-get-build-dep b/test/integration/test-apt-get-build-dep
index 403de8f..f6158a1 100755
--- a/test/integration/test-apt-get-build-dep
+++ b/test/integration/test-apt-get-build-dep
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'i386'
insertpackage 'stable' 'build-essential' 'i386' '1'
diff --git a/test/integration/test-apt-get-build-dep-barbarian b/test/integration/test-apt-get-build-dep-barbarian
index 688f7a5..b8ab121 100755
--- a/test/integration/test-apt-get-build-dep-barbarian
+++ b/test/integration/test-apt-get-build-dep-barbarian
@@ -83,6 +83,7 @@ testsuccessequal "$(installsfoosamey 'amd64' 'i386')" apt build-dep cool-foo -s
testsuccessequal "$(installsfoosamey 'i386' 'i386')" apt build-dep bad-amd64-foo -s -a i386
testsuccessequal "$(installsfoosamey 'amd64' 'i386')" apt build-dep bad-armel-foo -s -a i386
testsuccessequal "$(installsfoosamey 'i386' 'i386')" apt build-dep bad-amd64-armel-foo -s -a i386
+testfailuremsg 'E: Conflict: builddeps:bad-amd64-i386-foo:i386=1 -> not foo:i386=1 -> not builddeps:bad-amd64-i386-foo:i386=1 but builddeps:bad-amd64-i386-foo:i386=1' apt build-dep bad-amd64-i386-foo -s -a i386 --solver 3.0
testfailureequal 'Reading package lists...
Reading package lists...
Building dependency tree...
@@ -94,7 +95,8 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
builddeps:bad-amd64-i386-foo:i386 : Depends: foo:i386
-E: Unable to correct problems, you have held broken packages.' apt build-dep bad-amd64-i386-foo -s -a i386
+E: Unable to correct problems, you have held broken packages.' apt build-dep bad-amd64-i386-foo -s -a i386 --solver internal
+testfailuremsg 'E: Conflict: builddeps:bad-amd64-i386-armel-foo:i386=1 -> not foo:i386=1 -> not builddeps:bad-amd64-i386-armel-foo:i386=1 but builddeps:bad-amd64-i386-armel-foo:i386=1' apt build-dep bad-amd64-i386-armel-foo -s -a i386 --solver 3.0
testfailureequal 'Reading package lists...
Reading package lists...
Building dependency tree...
@@ -106,13 +108,14 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
builddeps:bad-amd64-i386-armel-foo:i386 : Depends: foo:i386
-E: Unable to correct problems, you have held broken packages.' apt build-dep bad-amd64-i386-armel-foo -s -a i386
+E: Unable to correct problems, you have held broken packages.' apt build-dep bad-amd64-i386-armel-foo -s -a i386 --solver internal
testsuccessequal "$(installsfoosamey 'amd64' 'armel')" apt build-dep cool-foo -s -a armel
testsuccessequal "$(installsfoosamey 'i386' 'armel')" apt build-dep bad-amd64-foo -s -a armel
testsuccessequal "$(installsfoosamey 'amd64' 'armel')" apt build-dep bad-armel-foo -s -a armel
testsuccessequal "$(installsfoosamey 'i386' 'armel')" apt build-dep bad-amd64-armel-foo -s -a armel
testsuccessequal "$(installsfoosamey 'armel' 'armel')" apt build-dep bad-amd64-i386-foo -s -a armel
+FAILUREMSG="E: Conflict: builddeps:bad-amd64-i386-armel-foo:armel=1 -> not foo:armel=1 -> not builddeps:bad-amd64-i386-armel-foo:armel=1 but builddeps:bad-amd64-i386-armel-foo:armel=1"
FAILURE='Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -124,8 +127,9 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
builddeps:bad-amd64-i386-armel-foo:armel : Depends: foo:armel
E: Unable to correct problems, you have held broken packages.'
+testfailuremsg "$FAILUREMSG" apt build-dep bad-amd64-i386-armel-foo -s -a armel --solver 3.0
testfailureequal "Reading package lists...
-$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel
+$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel --solver internal
msgmsg 'BarbarianArchitectures' 'cmdline options'
rm rootdir/etc/apt/apt.conf.d/99barbarianarchs
@@ -134,7 +138,10 @@ testsuccess aptcache gencaches
testsuccessequal "$(installsfoosamey 'mipsel' 'armel')" apt build-dep bad-amd64-i386-armel-foo -s -a armel
testsuccess aptcache gencaches -o APT::BarbarianArchitectures::=armel
testsuccessequal "$(installsfoosamey 'mipsel' 'armel')" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=armel
-testfailureequal "$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel
-testfailureequal "$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel -o APT::BarbarianArchitectures::=armel
+testfailuremsg "$FAILUREMSG" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel --solver 3.0
+testfailuremsg "$FAILUREMSG" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel -o APT::BarbarianArchitectures::=armel --solver 3.0
+testfailuremsg "$FAILUREMSG" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures=mipsel,armel --solver 3.0
+testfailureequal "$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel --solver internal
+testfailureequal "$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel -o APT::BarbarianArchitectures::=armel --solver internal
testfailureequal "Reading package lists...
-$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures=mipsel,armel
+$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures=mipsel,armel --solver internal
diff --git a/test/integration/test-apt-get-build-dep-file b/test/integration/test-apt-get-build-dep-file
index 88bf10b..bd30cfc 100755
--- a/test/integration/test-apt-get-build-dep-file
+++ b/test/integration/test-apt-get-build-dep-file
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'i386'
insertpackage 'stable' 'debhelper' 'i386' '7'
@@ -158,6 +159,8 @@ testsuccess aptget build-dep --simulate '..'
cd ../..
testfailureequal 'E: Must specify at least one package to check builddeps for' aptget build-dep
+testfailuremsg 'W: No architecture information available for armel. See apt.conf(5) APT::Architectures for setup
+E: Unsatisfiable dependency group builddeps:./foo-1.0:armel=1 -> debhelper:armel' aptget build-dep --simulate ./foo-1.0 -a armel --solver 3.0
testfailureequal "Note, using directory './foo-1.0' to get the build dependencies
Reading package lists...
Building dependency tree...
@@ -170,7 +173,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
builddeps:./foo-1.0:armel : Depends: debhelper:armel (>= 7) but it is not installable
W: No architecture information available for armel. See apt.conf(5) APT::Architectures for setup
-E: Unable to correct problems, you have held broken packages." aptget build-dep --simulate ./foo-1.0 -a armel
+E: Unable to correct problems, you have held broken packages." aptget build-dep --simulate ./foo-1.0 -a armel --solver internal
testfailureequal 'Reading package lists...
E: Unable to find a source package for foo' aptget build-dep --simulate foo
diff --git a/test/integration/test-apt-get-install-deb b/test/integration/test-apt-get-install-deb
index bcf8bae..6cbd25c 100755
--- a/test/integration/test-apt-get-install-deb
+++ b/test/integration/test-apt-get-install-deb
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64' 'i386'
# regression test for #754904
@@ -31,6 +32,7 @@ done
buildsimplenativepackage 'foo' 'i386,amd64' '1.0'
+testfailuremsg "E: Conflict: -> foo:amd64=1.0 but foo:i386=1.0 -> not foo:amd64=1.0" aptget install ./incoming/foo_1.0_i386.deb ./incoming/foo_1.0_amd64.deb -s --solver 3.0
testfailureequal "Reading package lists...
Building dependency tree...
Note, selecting 'foo:i386' instead of './incoming/foo_1.0_i386.deb'
@@ -44,7 +46,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
foo:i386 : Conflicts: foo but 1.0 is to be installed
foo : Conflicts: foo:i386 but 1.0 is to be installed
-E: Unable to correct problems, you have held broken packages." aptget install ./incoming/foo_1.0_i386.deb ./incoming/foo_1.0_amd64.deb -s
+E: Unable to correct problems, you have held broken packages." aptget install ./incoming/foo_1.0_i386.deb ./incoming/foo_1.0_amd64.deb -s --solver internal
testsuccess apt show foo --with-source ./incoming/foo_1.0_amd64.deb
testequal 'Package: foo
@@ -175,7 +177,8 @@ echo 'Package: /pkg-/
Pin: release a=experimental
Pin-Priority: 501' > rootdir/etc/apt/preferences.d/pinit
-testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install -q=0 ./incoming/pkg-last-line-parse_0_all.deb
+testfailuremsg 'E: Unsatisfiable dependency group pkg-last-line-parse:amd64=0 -> pkg-as-it-should-be:amd64' aptget install -q=0 ./incoming/pkg-last-line-parse_0_all.deb --solver 3.0
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install -q=0 ./incoming/pkg-last-line-parse_0_all.deb --solver internal
testsuccess aptget install ./incoming/pkg-as-it-should-be_0_all.deb
testsuccess aptget install ./incoming/pkg-last-line-parse_0_all.deb
testsuccess aptget install "$(readlink -f ./incoming/pkg-leading-newline_0_all.deb)"
diff --git a/test/integration/test-apt-get-satisfy b/test/integration/test-apt-get-satisfy
index 267760f..fc7e805 100755
--- a/test/integration/test-apt-get-satisfy
+++ b/test/integration/test-apt-get-satisfy
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'i386' 'amd64'
insertpackage 'stable' 'depends' 'i386' '1'
@@ -79,6 +80,8 @@ testrun 'External' 'Reading package lists...
Building dependency tree...
Execute external solver...' --solver apt
+testfailuremsg "E: Unsatisfiable dependency group satisfy:command-line:i386=1 -> depends:i386" aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --solver 3.0
+
testfailureequal "Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -89,8 +92,10 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
satisfy:command-line : Depends: depends (>= 2) but it is not going to be installed
-E: Unable to correct problems, you have held broken packages." aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]"
+E: Unable to correct problems, you have held broken packages." aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --solver internal
+if [ "$APT_SOLVER" != "3.0" ]; then
+# FIXME: solver3 doesn't produce nice errors in the external solver scenario
testfailureequal "Reading package lists...
Building dependency tree...
Execute external solver...
@@ -109,3 +114,4 @@ The following packages have unmet dependencies:
satisfy:command-line : Depends: depends (>= 2) but it is not going to be installed
Conflicts: conflicts:i386 (>= 1)
E: External solver failed with: The following packages have unmet dependencies:" aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --solver apt
+fi
diff --git a/test/integration/test-apt-get-source-only b/test/integration/test-apt-get-source-only
index 93d8284..b974146 100755
--- a/test/integration/test-apt-get-source-only
+++ b/test/integration/test-apt-get-source-only
@@ -29,6 +29,31 @@ DOWNLOADNOTFOO="Need to get 0 B/33 B of source archives.
'file:${APTARCHIVE}/not-foo_1.0.dsc' not-foo_1.0.dsc 15 SHA256:db578a571c87d2555e90245732042845be4f481755f5b2f5786ac7a26bde9f4f
'file:${APTARCHIVE}/not-foo_1.0.tar.gz' not-foo_1.0.tar.gz 18 SHA256:8701846f1cba0ca81c552ac0ec93e2a89ae113cf2872b9cd51b29b4a9ff6b122"
+if [ "$APT_SOLVER" = "3.0" ]; then
+BUILDDEPFOO="Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ builddeps:foo : Depends: foo-bd but it is not installable
+E: Unsatisfiable dependency group builddeps:foo:amd64=1 -> foo-bd:amd64"
+
+BUILDDEPNOTFOO="Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ builddeps:not-foo : Depends: not-foo-bd but it is not installable
+E: Unsatisfiable dependency group builddeps:not-foo:amd64=1 -> not-foo-bd:amd64"
+else
BUILDDEPFOO="Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -52,6 +77,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
builddeps:not-foo : Depends: not-foo-bd but it is not installable
E: Unable to correct problems, you have held broken packages."
+fi
testsuccessequal "$HEADER
Picking 'not-foo' as source package instead of 'foo'
diff --git a/test/integration/test-apt-get-upgrade b/test/integration/test-apt-get-upgrade
index 50a90ce..c9e56d9 100755
--- a/test/integration/test-apt-get-upgrade
+++ b/test/integration/test-apt-get-upgrade
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture "i386"
# simple case
@@ -60,6 +61,30 @@ Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
Conf new-dep (1.0 stable [all])
Conf upgrade-simple (2.0 unstable [all])
Conf upgrade-with-new-dep (2.0 unstable [all])'
+if [ "$APT_SOLVER" = "3.0" ]; then
+# FIXME: It would be better if we would keep back the upgrade rather than switch to sysvinit,
+# but it's not clear that is reliably possible.
+UPGRADENEW="Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ new-dep sysvinit
+The following packages have been kept back:
+ upgrade-with-conflict
+The following packages will be upgraded:
+ init upgrade-simple upgrade-with-new-dep
+3 upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
+Inst sysvinit (2 unstable [all])
+Conf sysvinit (2 unstable [all])
+Inst init [1] (2 unstable [all])
+Inst new-dep (1.0 stable [all])
+Inst upgrade-simple [1.0] (2.0 unstable [all])
+Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
+Conf init (2 unstable [all])
+Conf new-dep (1.0 stable [all])
+Conf upgrade-simple (2.0 unstable [all])
+Conf upgrade-with-new-dep (2.0 unstable [all])"
+fi
testsuccessequal "$UPGRADENEW" aptget upgrade -s --with-new-pkgs
testsuccessequal "$UPGRADENEW" apt upgrade -s
@@ -142,3 +167,54 @@ Conf upgrade-with-conflict (2.0 unstable [all])
Conf new-dep (1.0 stable [all])
Conf upgrade-simple (2.0 unstable [all])
Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade
+
+# --no-strict-pinning pulls in systemd due to the dependency
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ conflicting-dep
+The following NEW packages will be installed:
+ new-dep systemd
+The following packages will be upgraded:
+ init upgrade-simple upgrade-with-conflict upgrade-with-new-dep
+4 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv conflicting-dep [1.0]
+Inst systemd (2 unstable [all])
+Conf systemd (2 unstable [all])
+Inst init [1] (2 unstable [all])
+Inst upgrade-with-conflict [1.0] (2.0 unstable [all])
+Inst new-dep (1.0 stable [all])
+Inst upgrade-simple [1.0] (2.0 unstable [all])
+Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
+Conf init (2 unstable [all])
+Conf upgrade-with-conflict (2.0 unstable [all])
+Conf new-dep (1.0 stable [all])
+Conf upgrade-simple (2.0 unstable [all])
+Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade --no-strict-pinning --solver 3.0
+
+# --no-strict-pinning does not cause a package to be upgraded on its own, though.
+echo 'Package: upgrade-simple
+Pin: release unstable
+Pin-Priority: -1' > rootdir/etc/apt/preferences.d/no-strict-pinning.pref
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ conflicting-dep
+The following NEW packages will be installed:
+ new-dep systemd
+The following packages will be upgraded:
+ init upgrade-with-conflict upgrade-with-new-dep
+3 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv conflicting-dep [1.0]
+Inst systemd (2 unstable [all])
+Conf systemd (2 unstable [all])
+Inst init [1] (2 unstable [all])
+Inst upgrade-with-conflict [1.0] (2.0 unstable [all])
+Inst new-dep (1.0 stable [all])
+Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
+Conf init (2 unstable [all])
+Conf upgrade-with-conflict (2.0 unstable [all])
+Conf new-dep (1.0 stable [all])
+Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade --no-strict-pinning --solver 3.0
diff --git a/test/integration/test-apt-never-markauto-sections b/test/integration/test-apt-never-markauto-sections
index b47966e..a1fc873 100755
--- a/test/integration/test-apt-never-markauto-sections
+++ b/test/integration/test-apt-never-markauto-sections
@@ -47,7 +47,8 @@ Remv foreignpkg:i386 [1]
Remv nosection [1]
Remv texteditor [1]' aptget autoremove mydesktop -s
-testequal 'Reading package lists...
+testfailuremsg 'E: Conflict: not texteditor:amd64 -> not texteditor:amd64=1 -> not bad-texteditor:amd64=1 -> not mydesktop-core:amd64=1 but mydesktop:amd64 -> mydesktop:amd64=1 -> mydesktop-core:amd64=1' aptget autoremove texteditor -s --solver 3.0 #-o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1
+testsuccessequal 'Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be REMOVED:
@@ -55,8 +56,8 @@ The following packages will be REMOVED:
0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
Remv mydesktop [1]
Remv mydesktop-core [1]
-Remv texteditor [1]' aptget autoremove texteditor -s #-o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1
-testsuccess aptget autoremove texteditor -y
+Remv texteditor [1]' aptget autoremove texteditor -s --solver internal #-o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1
+testsuccess aptget autoremove texteditor -y --solver internal
testdpkgnotinstalled mydesktop mydesktop-core texteditor
testdpkginstalled browser
diff --git a/test/integration/test-bug-549968-install-depends-of-not-installed b/test/integration/test-bug-549968-install-depends-of-not-installed
index 90ce58a..39c86cc 100755
--- a/test/integration/test-bug-549968-install-depends-of-not-installed
+++ b/test/integration/test-bug-549968-install-depends-of-not-installed
@@ -25,4 +25,24 @@ The following NEW packages will be installed:
coolstuff
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Inst coolstuff (1.0 unstable [all])
-Conf coolstuff (1.0 unstable [all])" aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s
+Conf coolstuff (1.0 unstable [all])" aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s --solver internal
+
+# We check the Markers here as the autoremove nuker will also
+# prevent it, but to late - its better to fail earlier
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'extracoolstuff' is not installed, so not removed
+Solving dependencies...MANUAL coolstuff:i386
+[0] Install:coolstuff:i386=1.0 ()
+Delete extracoolstuff:i386
+[0] Reject:extracoolstuff:i386 ()
+[0] Reject:extracoolstuff:i386=1.0 (not extracoolstuff:i386)
+Optional Item (0@0) coolstuff:i386=1.0 -> | extracoolstuff:i386=1.0
+
+Recommended packages:
+ extracoolstuff
+The following NEW packages will be installed:
+ coolstuff
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst coolstuff (1.0 unstable [all])
+Conf coolstuff (1.0 unstable [all])" aptget install coolstuff extracoolstuff- -o Debug::APT::Solver=1 -s --solver 3.0
diff --git a/test/integration/test-bug-591882-conkeror b/test/integration/test-bug-591882-conkeror
index 6b90343..21c5697 100755
--- a/test/integration/test-bug-591882-conkeror
+++ b/test/integration/test-bug-591882-conkeror
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture "i386"
setupaptarchive
@@ -73,5 +74,5 @@ After this operation, 36.0 MB of additional disk space will be used.
E: Trivial Only specified but this is not a trivial operation."
# Test that the old behavior can be restored with the option
-testfailureequal "$UPGRADEFAIL" aptget dist-upgrade --trivial-only -o pkgProblemResolver::FixByInstall=0
+testfailureequal "$UPGRADEFAIL" aptget dist-upgrade --trivial-only -o pkgProblemResolver::FixByInstall=0 --solver internal
testfailureequal "$UPGRADESUCCESS" aptget dist-upgrade --trivial-only #-o pkgProblemResolver::FixByInstall=0
diff --git a/test/integration/test-bug-596498-trusted-unsigned-repo b/test/integration/test-bug-596498-trusted-unsigned-repo
index 4d0e3dc..2cfdc53 100755
--- a/test/integration/test-bug-596498-trusted-unsigned-repo
+++ b/test/integration/test-bug-596498-trusted-unsigned-repo
@@ -15,10 +15,15 @@ aptgetupdate() {
rm -rf rootdir/var/lib/apt/ rootdir/var/cache/apt/*.bin
${1:-testwarning} aptget update --allow-insecure-repositories
}
-
-PKGTEXT="$(aptget install cool --assume-no -d | head -n 8)"
-DOWNLOG="$(echo "$PKGTEXT" | tail -n 1)"
-PKGTEXT="$(echo "$PKGTEXT" | head -n 7)"
+PKGSIZE=$(aptcache show cool | awk '/^Size:/ {print $2}')
+PKGTEXT="Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ cool
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/$PKGSIZE B of archives.
+After this operation, 11.3 kB of additional disk space will be used."
+DOWNLOG="Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main i386 cool i386 1.0 [$PKGSIZE B]"
DEBFILE='rootdir/etc/apt/sources.list.d/apt-test-unstable-*.list'
testsuccessequal "$PKGTEXT
diff --git a/test/integration/test-bug-598669-install-postfix-gets-exim-heavy b/test/integration/test-bug-598669-install-postfix-gets-exim-heavy
index e7e4093..e27ddb2 100755
--- a/test/integration/test-bug-598669-install-postfix-gets-exim-heavy
+++ b/test/integration/test-bug-598669-install-postfix-gets-exim-heavy
@@ -7,6 +7,8 @@ setupenvironment
configarchitecture "i386"
setupaptarchive
+testfailuremsg "E: Conflict: -> postfix:i386=2.7.1-1 but exim4-daemon-light:i386 -> exim4-daemon-light:i386=4.72-1 -> not postfix:i386=2.7.1-1" aptget install postfix --solver 3.0
+allowremovemanual
testfailureequal "Reading package lists...
Building dependency tree...
The following packages will be REMOVED:
diff --git a/test/integration/test-bug-601961-install-info b/test/integration/test-bug-601961-install-info
index 3e13560..94a5ad2 100755
--- a/test/integration/test-bug-601961-install-info
+++ b/test/integration/test-bug-601961-install-info
@@ -47,4 +47,17 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
findutils : Depends: essentialpkg but it is not going to be installed
-E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' aptget remove essentialpkg --trivial-only
+E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' aptget remove essentialpkg --trivial-only --solver internal
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Solving dependencies...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ findutils : Depends: essentialpkg but it is not going to be installed
+E: Conflict: -> findutils:i386 but not essentialpkg:i386 -> not essentialpkg:i386=4.13a.dfsg.1-6 -> not findutils:i386=4.4.2-1+b1 -> not findutils:i386' aptget remove essentialpkg --trivial-only --solver 3.0
diff --git a/test/integration/test-bug-604222-new-and-autoremove b/test/integration/test-bug-604222-new-and-autoremove
index 78a2882..a53fcb7 100755
--- a/test/integration/test-bug-604222-new-and-autoremove
+++ b/test/integration/test-bug-604222-new-and-autoremove
@@ -18,9 +18,13 @@ insertpackage 'stable' 'libkf5kipi-data' 'i386' '4:16.08.0-1' 'Breaks: libkipi-d
insertpackage 'stable' 'libkipi-data' 'i386' '4:15.08.0-1' '' 'important'
insertpackage 'stable' 'libgphoto2-l10n' 'all' '2'
-insertpackage 'installed,stable' 'photoapp1' 'all' '1' 'Recommends: libgphoto2-l10n (= 1)'
+insertinstalledpackage 'libfoto1' 'i386' '1'
+insertpackage 'installed,stable' 'photoapp1' 'all' '1' 'Depends: libfoto1
+Recommends: libgphoto2-l10n (= 1)'
insertinstalledpackage 'photoapp2' 'all' '1'
+insertpackage 'stable' 'libfoto1t64' 'i386' '1' 'Provides: libfoto1'
insertpackage 'stable' 'photoapp2' 'all' '2' 'Conflicts: photoapp1
+Depends: libfoto1t64
Recommends: libgphoto2-l10n (= 2)'
setupaptarchive
@@ -89,6 +93,25 @@ E: Trivial Only specified but this is not a trivial operation." aptget install d
rm -f rootdir/var/lib/dpkg/status rootdir/var/lib/apt/extended_states
+if [ "$APT_SOLVER" = "3.0" ]; then
+CONFLICTING='Reading package lists...
+Building dependency tree...
+Solving dependencies...MANUAL dummy-archive:i386
+[0] Install:dummy-archive:i386=0.invalid.0 ()
+[0] Install:libavcodec52:i386=4:0.5.2-6 (dummy-archive:i386=0.invalid.0)
+[0] Reject:libvtk5-dev:i386=5.4.2-8 (dummy-archive:i386=0.invalid.0 -> libavcodec52:i386=4:0.5.2-6)
+Item (1@0) dummy-archive:i386=0.invalid.0 -> | libvtk5-dev:i386=5.4.2-8 | libopenal-dev:i386=1:1.12.854-2
+[0] Install:libopenal-dev:i386=1:1.12.854-2 (dummy-archive:i386=0.invalid.0)
+
+The following additional packages will be installed:
+ libavcodec52 libopenal-dev
+The following NEW packages will be installed:
+ dummy-archive libavcodec52 libopenal-dev
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/126 B of archives.
+After this operation, 129 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.'
+else
CONFLICTING='Reading package lists...
Building dependency tree...
MarkInstall dummy-archive:i386 < none -> 0.invalid.0 @un puN Ib > FU=1
@@ -104,10 +127,11 @@ The following NEW packages will be installed:
Need to get 0 B/126 B of archives.
After this operation, 129 kB of additional disk space will be used.
E: Trivial Only specified but this is not a trivial operation.'
+fi
-testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=0
-testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=1
-testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=small
+testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=0 -o Debug::APT::Solver=1
+testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=1 -o Debug::APT::Solver=1
+testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=small -o Debug::APT::Solver=1
insertinstalledpackage 'my-metapackage' 'i386' '1' 'Depends: gwenview'
insertinstalledpackage 'gwenview' 'i386' '4:15.08.0-1' 'Depends: libkipi-data
diff --git a/test/integration/test-bug-612099-multiarch-conflicts b/test/integration/test-bug-612099-multiarch-conflicts
index bc57395..a005127 100755
--- a/test/integration/test-bug-612099-multiarch-conflicts
+++ b/test/integration/test-bug-612099-multiarch-conflicts
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'i386' 'amd64'
buildsimplenativepackage 'libc6' 'i386' '1.0' 'stable'
diff --git a/test/integration/test-bug-612557-garbage-upgrade b/test/integration/test-bug-612557-garbage-upgrade
index e0ede78..2a4c952 100755
--- a/test/integration/test-bug-612557-garbage-upgrade
+++ b/test/integration/test-bug-612557-garbage-upgrade
@@ -17,6 +17,8 @@ testsuccess aptmark markauto python-uno openoffice.org-common
#aptmark unmarkauto openoffice.org-emailmerge
testmarkedauto python-uno openoffice.org-common
+# The 3.0 solver does not remove openoffice.org-emailmerge because it is manually installed.
+testfailuremsg "E: Conflict: -> openoffice.org-emailmerge:i386 but python-uno:i386=1:3.3.0-2 -> libreoffice-common:i386=1:3.3.0-2 -> not openoffice.org-common:i386=1:3.2.1-11+squeeze2 -> not openoffice.org-emailmerge:i386=1:3.2.1-11+squeeze2 -> not openoffice.org-emailmerge:i386" aptget --trivial-only install python-uno --solver 3.0
testfailureequal 'Reading package lists...
Building dependency tree...
Reading state information...
@@ -31,7 +33,7 @@ The following packages will be upgraded:
1 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
Need to get 0 B/84 B of archives.
After this operation, 53.2 MB disk space will be freed.
-E: Trivial Only specified but this is not a trivial operation.' aptget --trivial-only install python-uno
+E: Trivial Only specified but this is not a trivial operation.' aptget --trivial-only install python-uno --solver internal
testsuccess aptmark markauto openoffice.org-emailmerge
testmarkedauto python-uno openoffice.org-common openoffice.org-emailmerge
diff --git a/test/integration/test-bug-613420-new-garbage-dependency b/test/integration/test-bug-613420-new-garbage-dependency
index 75a653c..0d83097 100755
--- a/test/integration/test-bug-613420-new-garbage-dependency
+++ b/test/integration/test-bug-613420-new-garbage-dependency
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture "i386"
insertpackage 'unstable' 'libreoffice' 'all' '1:3.3.1~rc1-2' 'Depends: libreoffice-core'
diff --git a/test/integration/test-bug-618848-always-respect-user-requests b/test/integration/test-bug-618848-always-respect-user-requests
index 225db29..8b7b17b 100755
--- a/test/integration/test-bug-618848-always-respect-user-requests
+++ b/test/integration/test-bug-618848-always-respect-user-requests
@@ -13,6 +13,17 @@ insertpackage 'unstable' 'exim4-daemon-heavy' 'all' '1.0' 'Depends: libdb4.8'
setupaptarchive
+# This does not work in 3.0 solver: We do not remove manually installed packages.
+testfailuremsg "E: Conflict: not libdb4.8:i386 -> not libdb4.8:i386=1.0 -> not exim4-daemon-light:i386=1.0 -> not exim4:i386=1.0 but exim4:i386 -> exim4:i386=1.0" aptget remove libdb4.8 --solver 3.0 -s
+allowremovemanual
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ exim4 exim4-daemon-light libdb4.8
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv exim4 [1.0]
+Remv exim4-daemon-light [1.0]
+Remv libdb4.8 [1.0]" aptget remove libdb4.8 -s
testsuccessequal "Reading package lists...
Building dependency tree...
MarkDelete libdb4.8:i386 < 1.0 @ii pmK > FU=1
@@ -28,4 +39,4 @@ Remv exim4 [1.0]
MarkDelete exim4-daemon-light:i386 < 1.0 @ii K > FU=1
Remv exim4-daemon-light [1.0]
MarkDelete libdb4.8:i386 < 1.0 @ii K > FU=1
-Remv libdb4.8 [1.0]" aptget remove libdb4.8 -s -o Debug::pkgDepCache::Marker=1
+Remv libdb4.8 [1.0]" aptget remove libdb4.8 -s -o Debug::pkgDepCache::Marker=1 --solver internal
diff --git a/test/integration/test-bug-632221-cross-dependency-satisfaction b/test/integration/test-bug-632221-cross-dependency-satisfaction
index 0cf8d35..90cb868 100755
--- a/test/integration/test-bug-632221-cross-dependency-satisfaction
+++ b/test/integration/test-bug-632221-cross-dependency-satisfaction
@@ -35,6 +35,7 @@ insertsource 'unstable' 'source-specific-armel' 'armel' '1' 'Build-Depends: spec
setupaptarchive
+testfailuremsg "E: Unsatisfiable dependency group builddeps:forbidden-no:armel=1 -> amdboot:any:any" aptget build-dep forbidden-no -s -a armel --solver 3.0
testfailureequal 'Reading package lists...
Reading package lists...
Building dependency tree...
@@ -46,7 +47,9 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
builddeps:forbidden-no:armel : Depends: amdboot:any but it is not installable
-E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-no -s -a armel
+E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-no -s -a armel --solver internal
+
+testfailuremsg "E: Unsatisfiable dependency group builddeps:forbidden-same:armel=1 -> libc6:any:any" aptget build-dep forbidden-same -s -a armel --solver 3.0
testfailureequal 'Reading package lists...
Reading package lists...
Building dependency tree...
@@ -58,7 +61,9 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
builddeps:forbidden-same:armel : Depends: libc6:any but it is not installable
-E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-same -s -a armel
+E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-same -s -a armel --solver internal
+
+testfailuremsg 'E: Unsatisfiable dependency group builddeps:forbidden-foreign:armel=1 -> doxygen:any:any' aptget build-dep forbidden-foreign -s -a armel --solver 3.0
testfailureequal 'Reading package lists...
Reading package lists...
Building dependency tree...
@@ -70,7 +75,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
builddeps:forbidden-foreign:armel : Depends: doxygen:any but it is not installable
-E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-foreign -s -a armel
+E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-foreign -s -a armel --solver internal
testsuccessequal 'Reading package lists...
Reading package lists...
diff --git a/test/integration/test-bug-64141-install-dependencies-for-on-hold b/test/integration/test-bug-64141-install-dependencies-for-on-hold
index fe3bde6..1ad1952 100755
--- a/test/integration/test-bug-64141-install-dependencies-for-on-hold
+++ b/test/integration/test-bug-64141-install-dependencies-for-on-hold
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture 'native' 'strange-arch'
+native=$(getarchitecture 'native')
insertpackage 'unstable' 'unrelated' 'strange-arch' '1'
@@ -19,6 +20,38 @@ insertpackage 'unstable' 'libdb4.8' 'native' '4.8.30-3'
setupaptarchive
+# Solver 3.0 does not remove manual packages
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ apt
+The following packages will be upgraded:
+ libc6
+1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
+Need to get 0 B/42 B of archives.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only --solver 3.0
+
+testfailure aptget dist-upgrade --trivial-only --solver 3.0 -o debug::apt::solver=2
+testsuccess grep -Fx "Branch failed: Conflict: apt:$native -> apt:$native=0.8.10 -> not oldcrap:$native=1-1 but oldcrap:$native -> oldcrap:$native=1-1" rootdir/tmp/testfailure.output
+
+allowremovemanual
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ oldcrap
+The following NEW packages will be installed:
+ libdb4.8
+The following packages will be upgraded:
+ apt libc6
+2 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Need to get 0 B/126 B of archives.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
+
testfailureequal 'Reading package lists...
Building dependency tree...
Calculating upgrade...
diff --git a/test/integration/test-bug-657695-resolver-breaks-on-virtuals b/test/integration/test-bug-657695-resolver-breaks-on-virtuals
index 42b8521..e3ff6d1 100755
--- a/test/integration/test-bug-657695-resolver-breaks-on-virtuals
+++ b/test/integration/test-bug-657695-resolver-breaks-on-virtuals
@@ -16,6 +16,15 @@ insertpackage 'unstable' 'xserver-xorg-core' 'amd64' '2:1.11.3-0ubuntu9' 'Breaks
setupaptarchive
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ xserver-xorg-core
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' aptget dist-upgrade --trivial-only --solver 3.0
+
+allowremovemanual
+
testfailureequal 'Reading package lists...
Building dependency tree...
Calculating upgrade...
diff --git a/test/integration/test-bug-683786-build-dep-on-virtual-packages b/test/integration/test-bug-683786-build-dep-on-virtual-packages
index 831e1f8..45e40e2 100755
--- a/test/integration/test-bug-683786-build-dep-on-virtual-packages
+++ b/test/integration/test-bug-683786-build-dep-on-virtual-packages
@@ -41,6 +41,7 @@ The following NEW packages will be installed:
Inst po-debconf (1 unstable [all])
Conf po-debconf (1 unstable [all])' aptget build-dep dash -s
+testfailuremsg 'E: Unsatisfiable dependency group builddeps:dash:armel=1 -> po-debconf:armel' aptget build-dep -aarmel dash -s --solver 3.0
testfailureequal 'Reading package lists...
Reading package lists...
Building dependency tree...
@@ -52,7 +53,9 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
builddeps:dash:armel : Depends: po-debconf:armel but it is not installable
-E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel dash -s
+E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel dash -s --solver internal
+
+testfailuremsg 'E: Unsatisfiable dependency group builddeps:diffutils:armel=1 -> texi2html:armel' aptget build-dep -aarmel diffutils -s --solver 3.0
testfailureequal 'Reading package lists...
Reading package lists...
Building dependency tree...
@@ -64,7 +67,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
builddeps:diffutils:armel : Depends: texi2html:armel but it is not installable
-E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel diffutils -s
+E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel diffutils -s --solver internal
testsuccessequal "Reading package lists...
Reading package lists...
@@ -75,6 +78,7 @@ The following NEW packages will be installed:
Inst libselinux1-dev (1 unstable [amd64])
Conf libselinux1-dev (1 unstable [amd64])" aptget build-dep sed -s
+testfailuremsg 'E: Unsatisfiable dependency group builddeps:sed:armel=1 -> libselinux-dev:armel' aptget build-dep -aarmel sed -s --solver 3.0
testfailureequal 'Reading package lists...
Reading package lists...
Building dependency tree...
@@ -86,7 +90,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
builddeps:sed:armel : Depends: libselinux-dev:armel but it is not installable
-E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel sed -s
+E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel sed -s --solver internal
testsuccessequal "Reading package lists...
Reading package lists...
diff --git a/test/integration/test-bug-686346-package-missing-architecture b/test/integration/test-bug-686346-package-missing-architecture
index d28600a..a064e5d 100755
--- a/test/integration/test-bug-686346-package-missing-architecture
+++ b/test/integration/test-bug-686346-package-missing-architecture
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64'
insertinstalledpackage 'pkgb' 'none' '1'
diff --git a/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
index 9c96bbe..3bad617 100755
--- a/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
+++ b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64' 'i386'
buildsimplenativepackage 'toolkit' 'all' '1' 'stable' 'Multi-Arch: foreign'
@@ -89,7 +90,8 @@ stuff 2 amd64 none > - - none **REMOVE**'
testfileequal "${hook}-v2.list" 'libsame 2 > - **REMOVE**'
testfileequal "${hook}-v3.list" 'libsame 2 amd64 same > - - none **REMOVE**'
- observehook install stuff:i386/stable libsame:i386/stable toolkit/stable
+ # FIXME: solver3: This should not require no-strict-pinning
+ observehook install stuff:i386/stable libsame:i386/stable toolkit/stable $(test "$APT_SOLVER" != "3.0" || printf '%s' '--no-strict-pinning')
testfileequal "${hook}-v2.list" 'libsame 2 > 1 **CONFIGURE**
stuff 2 > 1 **CONFIGURE**
toolkit 2 > 1 **CONFIGURE**'
diff --git a/test/integration/test-bug-720597-build-dep-purge b/test/integration/test-bug-720597-build-dep-purge
index 4b36989..9ff0d23 100755
--- a/test/integration/test-bug-720597-build-dep-purge
+++ b/test/integration/test-bug-720597-build-dep-purge
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
# we need this construct here as it isn't really possible to fake native arch for dpkg-* tools
NATIVE="$(command dpkg --print-architecture)"
diff --git a/test/integration/test-bug-723586-any-stripped-in-single-arch b/test/integration/test-bug-723586-any-stripped-in-single-arch
index 38eb026..441bc29 100755
--- a/test/integration/test-bug-723586-any-stripped-in-single-arch
+++ b/test/integration/test-bug-723586-any-stripped-in-single-arch
@@ -29,6 +29,20 @@ Inst python3-gnupg (0.3.5-2 stable [all])
Conf python3 (3.3.2-16 unstable [amd64])
Conf python3-gnupg (0.3.5-2 stable [all])'
+if [ "$APT_SOLVER" = "3.0" ]; then
+FAILLOG='Reading package lists...
+Building dependency tree...
+Solving dependencies...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ python-mips : Depends: python3:mips but it is not installable
+E: Unsatisfiable dependency group python-mips:amd64=3 -> python3:mips:any'
+else
FAILLOG='Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -40,6 +54,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
python-mips : Depends: python3:mips but it is not installable
E: Unable to correct problems, you have held broken packages.'
+fi
testsuccessequal "$INSTALLLOG" aptget install python3-gnupg -s
aptcache showpkg python3 > showpkg.log
diff --git a/test/integration/test-bug-735967-lib32-to-i386-unavailable b/test/integration/test-bug-735967-lib32-to-i386-unavailable
index b836451..cc925d1 100755
--- a/test/integration/test-bug-735967-lib32-to-i386-unavailable
+++ b/test/integration/test-bug-735967-lib32-to-i386-unavailable
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'i386' 'amd64'
insertpackage 'unstable' 'lib32nss-mdns' 'amd64' '0.10-6' 'Depends: libnss-mdns-i386 (= 0.10-6)'
@@ -43,6 +44,7 @@ Remv lib32nss-mdns [0.9-1]
Inst libnss-mdns [0.9-1] (0.10-6 unstable [amd64])
Conf libnss-mdns (0.10-6 unstable [amd64])' aptget dist-upgrade -s
+testfailuremsg 'E: Unsatisfiable dependency group libfoo:amd64=1 -> libfoo-bin:amd64' aptget install foo -s --solver 3.0
testfailureequal 'Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -53,7 +55,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
libfoo : Depends: libfoo-bin but it is not installable
-E: Unable to correct problems, you have held broken packages.' aptget install foo -s
+E: Unable to correct problems, you have held broken packages.' aptget install foo -s --solver internal
# activate multiarch
configarchitecture 'amd64' 'i386'
diff --git a/test/integration/test-bug-747261-arch-specific-conflicts b/test/integration/test-bug-747261-arch-specific-conflicts
index e137043..093542d 100755
--- a/test/integration/test-bug-747261-arch-specific-conflicts
+++ b/test/integration/test-bug-747261-arch-specific-conflicts
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64' 'sparc' 'armel'
insertinstalledpackage 'foobar' 'armel' '1'
diff --git a/test/integration/test-bug-758153-versioned-provides-support b/test/integration/test-bug-758153-versioned-provides-support
index 7bf9d76..a057d33 100755
--- a/test/integration/test-bug-758153-versioned-provides-support
+++ b/test/integration/test-bug-758153-versioned-provides-support
@@ -7,6 +7,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64' 'i386'
insertinstalledpackage 'webapp' 'all' '1' 'Depends: httpd'
@@ -393,11 +394,18 @@ Inst needsselfprov12 (1 unstable [amd64])
Conf selfprov (2 unstable [amd64])
Conf needsselfprov12 (1 unstable [amd64])" aptget install needsselfprov12 -s --solver $solver
if [ "$solver" = 'apt' ]; then
+if [ "$APT_SOLVER" = "3.0" ]; then
+TOPDEPENDS=" needsselfprov123 : Depends: selfprov (= 1)
+ Depends: selfprov (= 2)
+ Depends: selfprov (= 3)"
+else
+TOPDEPENDS=" needsselfprov123 : Depends: selfprov (= 3)"
+fi
testfailureequal "$HEADER
The solver encountered an error of type: ERR_UNSOLVABLE
The following information might help you to understand what is wrong:
The following packages have unmet dependencies:
- needsselfprov123 : Depends: selfprov (= 3)
+$TOPDEPENDS
$SOMEPACKAGESCOULDNOT
needsselfprov123 : Depends: selfprov (= 1)
diff --git a/test/integration/test-bug-769609-triggers-still-pending-after-run b/test/integration/test-bug-769609-triggers-still-pending-after-run
index ce2c193..0a2dd25 100755
--- a/test/integration/test-bug-769609-triggers-still-pending-after-run
+++ b/test/integration/test-bug-769609-triggers-still-pending-after-run
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64'
msgtest 'Check if installed dpkg supports' 'noawait trigger'
diff --git a/test/integration/test-bug-796070-downgrade-simulate b/test/integration/test-bug-796070-downgrade-simulate
index 61ecc87..d1b6b7f 100755
--- a/test/integration/test-bug-796070-downgrade-simulate
+++ b/test/integration/test-bug-796070-downgrade-simulate
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'i386'
insertpackage 'unstable' 'apt' 'all' '1.0.10.1' 'Depends: libapt-pkg4.16 (>= 1.0.10.1)'
diff --git a/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict b/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict
index 272378b..270536f 100755
--- a/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict
+++ b/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict
@@ -15,6 +15,7 @@ Important: yes'
setupaptarchive
+# This only works on internal, we do not have magic essential autoswitch ability for 3.0
testsuccessequal "Reading package lists...
Building dependency tree...
Removing: systemd-sysv:amd64 as upgrade is not an option for runit-init:amd64 (1)
@@ -50,4 +51,4 @@ Remv init [1]
MarkDelete systemd-sysv:amd64 < 1 | none @ii H > FU=1
Remv systemd-sysv [1]
Inst runit-init (1 unstable [all])
-Conf runit-init (1 unstable [all])" apt install runit-init -so Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 -o APT::Get::Allow-Solver-Remove-Essential=1
+Conf runit-init (1 unstable [all])" apt install runit-init -so Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 -o APT::Get::Allow-Solver-Remove-Essential=1 --solver internal
diff --git a/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends b/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends
index ca6bf8d..da11fc8 100755
--- a/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends
+++ b/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends
@@ -20,6 +20,35 @@ setupaptarchive
testsuccessequal "Reading package lists...
Building dependency tree...
+Solving dependencies...MANUAL foobar:amd64
+[0] Install:foobar:amd64=1 ()
+[0] Install:requires-foo:amd64=1 (foobar:amd64=1)
+[0] Install:foo:amd64=1 (foobar:amd64=1 -> requires-foo:amd64=1)
+[0] Install:foo-depends:amd64=1 (foobar:amd64=1 -> requires-foo:amd64=1 -> foo:amd64=1)
+Item (2@0) foobar:amd64=1 -> | conflicts-foo:amd64=1 | fine-foo:amd64=1
+[1] Install:conflicts-foo:amd64=1 (foobar:amd64=1)
+[0] Reject:conflicts-foo:amd64=1 ()
+Item (1@0) foobar:amd64=1 -> | conflicts-foo:amd64=1 | fine-foo:amd64=1
+[0] Install:fine-foo:amd64=1 (foobar:amd64=1)
+
+The following additional packages will be installed:
+ fine-foo foo foo-depends requires-foo
+The following NEW packages will be installed:
+ fine-foo foo foo-depends foobar requires-foo
+0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
+Inst fine-foo (1 unstable [all])
+Inst foo-depends (1 unstable [all])
+Inst foo (1 unstable [all])
+Inst requires-foo (1 unstable [all])
+Inst foobar (1 unstable [all])
+Conf fine-foo (1 unstable [all])
+Conf foo-depends (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf requires-foo (1 unstable [all])
+Conf foobar (1 unstable [all])" apt install foobar -so Debug::APT::Solver=1 --solver 3.0
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
Installing foo:amd64 as Depends of foobar:amd64
Installing foo-depends:amd64 as Depends of foo:amd64
Installing requires-foo:amd64 as Depends of foobar:amd64
@@ -42,4 +71,4 @@ Conf fine-foo (1 unstable [all])
Conf foo-depends (1 unstable [all])
Conf foo (1 unstable [all])
Conf requires-foo (1 unstable [all])
-Conf foobar (1 unstable [all])" apt install foobar -so Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1
+Conf foobar (1 unstable [all])" apt install foobar -so Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1 --solver internal
diff --git a/test/integration/test-bug-lp1562402-nomark-removals-as-keep b/test/integration/test-bug-lp1562402-nomark-removals-as-keep
index 6e8225a..41a9591 100755
--- a/test/integration/test-bug-lp1562402-nomark-removals-as-keep
+++ b/test/integration/test-bug-lp1562402-nomark-removals-as-keep
@@ -18,6 +18,15 @@ insertinstalledpackage 'maas-region-controller' 'all' '2.0.0~alpha3+bzr4810-0ubu
setupaptarchive
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ maas-common maas-region-controller maas-region-controller-min
+0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.' aptget dist-upgrade -s --solver 3.0
+
+allowremovemanual
+
testsuccess aptget dist-upgrade -s -o Debug::pkgDepCache::AutoInstall=true -o Debug::pkgPackageManager=yes -o Debug::pkgProblemResolver=yes
testsuccessequal 'Reading package lists...
Building dependency tree...
diff --git a/test/integration/test-crossgrades b/test/integration/test-crossgrades
index 6398e7e..b428215 100755
--- a/test/integration/test-crossgrades
+++ b/test/integration/test-crossgrades
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'i386' 'amd64' 'armel'
configdpkgnoopchroot
diff --git a/test/integration/test-dpkg-i-apt-install-fix-broken b/test/integration/test-dpkg-i-apt-install-fix-broken
index 0b75b5f..5c517aa 100755
--- a/test/integration/test-dpkg-i-apt-install-fix-broken
+++ b/test/integration/test-dpkg-i-apt-install-fix-broken
@@ -14,6 +14,28 @@ setupaptarchive
testfailure dpkg -i incoming/autopkgtest-*.deb
testsuccessequal 'Reading package lists...
Building dependency tree...
+Correcting dependencies...MANUAL autopkgtest-satdep:amd64
+[0] Install:autopkgtest-satdep:amd64 ()
+[0] Install:autopkgtest-satdep:amd64=1 (autopkgtest-satdep:amd64)
+[0] Install:debhelper:amd64=1 (autopkgtest-satdep:amd64 -> autopkgtest-satdep:amd64=1)
+ Done
+Solving dependencies...AUTOMATIC debhelper:amd64 - upgrade
+MANUAL autopkgtest-satdep:amd64
+[0] Install:autopkgtest-satdep:amd64 ()
+[0] Install:autopkgtest-satdep:amd64=1 (autopkgtest-satdep:amd64)
+[0] Install:debhelper:amd64=1 (autopkgtest-satdep:amd64 -> autopkgtest-satdep:amd64=1)
+
+The following additional packages will be installed:
+ debhelper
+The following NEW packages will be installed:
+ debhelper
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+1 not fully installed or removed.
+Inst debhelper (1 stable [all])
+Conf debhelper (1 stable [all])
+Conf autopkgtest-satdep (1 stable [amd64])' apt install -fso Debug::APT::Solver=1 --solver 3.0
+testsuccessequal 'Reading package lists...
+Building dependency tree...
Correcting dependencies... MarkInstall autopkgtest-satdep:amd64 < 1 @iU K Nb Ib > FU=0
MarkInstall debhelper:amd64 < none -> 1 @un uN > FU=0
Starting pkgProblemResolver with broken count: 0
@@ -31,4 +53,4 @@ The following NEW packages will be installed:
1 not fully installed or removed.
Inst debhelper (1 stable [all])
Conf debhelper (1 stable [all])
-Conf autopkgtest-satdep (1 stable [amd64])' apt install -fso Debug::pkgProblemResolver=1 -o DEbug::pkgDepCache::Marker=1
+Conf autopkgtest-satdep (1 stable [amd64])' apt install -fso Debug::pkgProblemResolver=1 -o DEbug::pkgDepCache::Marker=1 --solver internal
diff --git a/test/integration/test-external-installation-planner-protocol b/test/integration/test-external-installation-planner-protocol
index 192f21b..1a04d24 100755
--- a/test/integration/test-external-installation-planner-protocol
+++ b/test/integration/test-external-installation-planner-protocol
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64'
buildsimplenativepackage 'libfoo' 'amd64' '3' 'experimental' 'Multi-Arch: same'
diff --git a/test/integration/test-handling-broken-orgroups b/test/integration/test-handling-broken-orgroups
index 564ea88..1c20ae4 100755
--- a/test/integration/test-handling-broken-orgroups
+++ b/test/integration/test-handling-broken-orgroups
@@ -47,6 +47,7 @@ Inst coolstuff2 (1.0-1 unstable [all])
Conf stuff (1.0-1 unstable [all])
Conf coolstuff2 (1.0-1 unstable [all])' aptget install coolstuff2 -s
+testfailuremsg 'E: Unsatisfiable dependency group coolstuff-broken:i386=1.0-1 -> cool2:i386' aptget install coolstuff-broken --solver 3.0 -s
testfailureequal 'Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -58,7 +59,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
coolstuff-broken : Depends: cool2 but it is not installable or
stuff2 but it is not installable
-E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-broken -s
+E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-broken --solver internal -s
testsuccessequal 'Reading package lists...
Building dependency tree...
@@ -94,6 +95,7 @@ Inst coolstuff-provided (1.0-1 unstable [all])
Conf extrastuff (1.0-1 unstable [all])
Conf coolstuff-provided (1.0-1 unstable [all])' aptget install coolstuff-provided -s
+testfailuremsg 'E: Unsatisfiable dependency group coolstuff-provided-broken:i386=1.0-1 -> cool2:i386' aptget install coolstuff-provided-broken --solver 3.0 -s
testfailureequal 'Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -105,4 +107,4 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
coolstuff-provided-broken : Depends: cool2 but it is not installable or
stuff-abi-2
-E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-provided-broken -s
+E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-provided-broken --solver internal -s
diff --git a/test/integration/test-ignore-provides-if-versioned-breaks b/test/integration/test-ignore-provides-if-versioned-breaks
index ebcbecf..7947d6d 100755
--- a/test/integration/test-ignore-provides-if-versioned-breaks
+++ b/test/integration/test-ignore-provides-if-versioned-breaks
@@ -32,7 +32,10 @@ insertpackage 'unstable' 'foo-same-breaker-none' 'i386' '1.0' 'Breaks: foo-same'
setupaptarchive
-
+testfailuremsg 'E: Conflict: foo:i386 but no versions are installable
+E: Uninstallable version: foo-breaker-none:i386=1.0 -> not foo:i386=4.0
+E: Uninstallable version: foo-breaker-none:i386=1.0 -> not foo:i386=2.0
+E: Uninstallable version: foo-breaker-none:i386=1.0 -> not foo:i386=2.0' aptget install foo-provider foo-breaker-none -s --solver 3.0
testfailureequal 'Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -43,7 +46,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
foo-breaker-none : Breaks: foo
-E: Unable to correct problems, you have held broken packages.' aptget install foo-provider foo-breaker-none -s
+E: Unable to correct problems, you have held broken packages.' aptget install foo-provider foo-breaker-none -s --solver internal
testsuccessequal 'Reading package lists...
Building dependency tree...
@@ -71,6 +74,10 @@ Conf foo (4.0 unstable [i386])
Conf foo-breaker-3 (1.0 unstable [i386])
Conf foo-provider (1.0 unstable [i386])' aptget install foo-provider foo-breaker-3 -s
+testfailuremsg 'E: Conflict: foo-foreign:amd64 but no versions are installable
+E: Uninstallable version: foo-foreign-breaker-none:i386=1.0 -> not foo-foreign:amd64=4.0
+E: Uninstallable version: foo-foreign-breaker-none:i386=1.0 -> not foo-foreign:amd64=2.0
+E: Uninstallable version: foo-foreign-breaker-none:i386=1.0 -> not foo-foreign:amd64=4.0' aptget install foo-foreign-provider foo-foreign-breaker-none -s --solver 3.0
testfailureequal 'Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -81,7 +88,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
foo-foreign-breaker-none : Breaks: foo-foreign
-E: Unable to correct problems, you have held broken packages.' aptget install foo-foreign-provider foo-foreign-breaker-none -s
+E: Unable to correct problems, you have held broken packages.' aptget install foo-foreign-provider foo-foreign-breaker-none -s --solver internal
testsuccessequal 'Reading package lists...
Building dependency tree...
@@ -109,6 +116,7 @@ Conf foo-foreign:amd64 (4.0 unstable [amd64])
Conf foo-foreign-breaker-3 (1.0 unstable [i386])
Conf foo-foreign-provider (1.0 unstable [i386])' aptget install foo-foreign-provider foo-foreign-breaker-3 -s
+testfailuremsg 'E: Conflict: -> foo-same:i386 but foo-same-breaker-none:i386=1.0 -> not foo-same:i386=2.0 -> not foo-same:i386' aptget install foo-same-provider foo-same-breaker-none -s --solver 3.0
testfailureequal 'Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -119,7 +127,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
foo-same-breaker-none : Breaks: foo-same
-E: Unable to correct problems, you have held broken packages.' aptget install foo-same-provider foo-same-breaker-none -s
+E: Unable to correct problems, you have held broken packages.' aptget install foo-same-provider foo-same-breaker-none -s --solver internal
testsuccessequal 'Reading package lists...
Building dependency tree...
diff --git a/test/integration/test-ignore-provides-if-versioned-conflicts b/test/integration/test-ignore-provides-if-versioned-conflicts
index 3243cfb..dd24263 100755
--- a/test/integration/test-ignore-provides-if-versioned-conflicts
+++ b/test/integration/test-ignore-provides-if-versioned-conflicts
@@ -33,6 +33,10 @@ insertpackage 'unstable' 'foo-same-breaker-none' 'i386' '1.0' 'Conflicts: foo-sa
setupaptarchive
+testfailuremsg 'E: Conflict: foo:i386 but no versions are installable
+E: Uninstallable version: foo-breaker-none:i386=1.0 -> not foo:i386=4.0
+E: Uninstallable version: foo-breaker-none:i386=1.0 -> not foo:i386=2.0
+E: Uninstallable version: foo-breaker-none:i386=1.0 -> not foo:i386=2.0' aptget install foo-provider foo-breaker-none -s --solver 3.0
testfailureequal 'Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -43,7 +47,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
foo-breaker-none : Conflicts: foo
-E: Unable to correct problems, you have held broken packages.' aptget install foo-provider foo-breaker-none -s
+E: Unable to correct problems, you have held broken packages.' aptget install foo-provider foo-breaker-none -s --solver internal
testsuccessequal 'Reading package lists...
Building dependency tree...
@@ -71,6 +75,10 @@ Conf foo (4.0 unstable [i386])
Conf foo-breaker-3 (1.0 unstable [i386])
Conf foo-provider (1.0 unstable [i386])' aptget install foo-provider foo-breaker-3 -s
+testfailuremsg 'E: Conflict: foo-foreign:amd64 but no versions are installable
+E: Uninstallable version: foo-foreign-breaker-none:i386=1.0 -> not foo-foreign:amd64=4.0
+E: Uninstallable version: foo-foreign-breaker-none:i386=1.0 -> not foo-foreign:amd64=2.0
+E: Uninstallable version: foo-foreign-breaker-none:i386=1.0 -> not foo-foreign:amd64=4.0' aptget install foo-foreign-provider foo-foreign-breaker-none -s --solver 3.0
testfailureequal 'Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -81,7 +89,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
foo-foreign-breaker-none : Conflicts: foo-foreign
-E: Unable to correct problems, you have held broken packages.' aptget install foo-foreign-provider foo-foreign-breaker-none -s
+E: Unable to correct problems, you have held broken packages.' aptget install foo-foreign-provider foo-foreign-breaker-none -s --solver internal
testsuccessequal 'Reading package lists...
Building dependency tree...
@@ -109,6 +117,7 @@ Conf foo-foreign:amd64 (4.0 unstable [amd64])
Conf foo-foreign-breaker-3 (1.0 unstable [i386])
Conf foo-foreign-provider (1.0 unstable [i386])' aptget install foo-foreign-provider foo-foreign-breaker-3 -s
+testfailuremsg 'E: Conflict: -> foo-same:i386 but foo-same-breaker-none:i386=1.0 -> not foo-same:i386=2.0 -> not foo-same:i386' aptget install foo-same-provider foo-same-breaker-none -s --solver 3.0
testfailureequal 'Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -119,7 +128,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
foo-same-breaker-none : Conflicts: foo-same
-E: Unable to correct problems, you have held broken packages.' aptget install foo-same-provider foo-same-breaker-none -s
+E: Unable to correct problems, you have held broken packages.' aptget install foo-same-provider foo-same-breaker-none -s --solver internal
testsuccessequal 'Reading package lists...
Building dependency tree...
diff --git a/test/integration/test-multiarch-allowed b/test/integration/test-multiarch-allowed
index fc63d0e..298867c 100755
--- a/test/integration/test-multiarch-allowed
+++ b/test/integration/test-multiarch-allowed
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64' 'i386'
insertpackage 'unstable' 'foo' 'amd64,i386' '1' 'Multi-Arch: allowed'
@@ -63,20 +64,23 @@ Inst needsfoo:i386 (1 unstable [i386])
Conf foo:i386 (1 unstable [i386])
Conf needsfoo:i386 (1 unstable [i386])' aptget install needsfoo:i386 -s
# FIXME: same problem, but two different unmet dependency messages depending on install order
+testfailuremsg "E: Conflict: -> needsfoo:i386=1 but foo:amd64=1 -> not foo:i386=1 -> not needsfoo:i386=1" aptget install needsfoo:i386 foo:amd64 -s --solver 3.0
testfailureequal "$BADPREFIX
The following packages have unmet dependencies:
foo : Conflicts: foo:i386 but 1 is to be installed
foo:i386 : Conflicts: foo but 1 is to be installed
-E: Unable to correct problems, you have held broken packages." aptget install needsfoo:i386 foo:amd64 -s
+E: Unable to correct problems, you have held broken packages." aptget install needsfoo:i386 foo:amd64 -s --solver internal
+testfailuremsg "E: Conflict: -> needsfoo:i386=1 but foo:amd64=1 -> not foo:i386=1 -> not needsfoo:i386=1" aptget install foo:amd64 needsfoo:i386 -s --solver 3.0
testfailureequal "$BADPREFIX
The following packages have unmet dependencies:
needsfoo:i386 : Depends: foo:i386 but it is not installable
-E: Unable to correct problems, you have held broken packages." aptget install foo:amd64 needsfoo:i386 -s
+E: Unable to correct problems, you have held broken packages." aptget install foo:amd64 needsfoo:i386 -s --solver internal
+testfailuremsg "E: Conflict: -> needsfoo:amd64=1 but foo:i386=1 -> not foo:amd64=1 -> not needsfoo:amd64=1" aptget install needsfoo foo:i386 -s --solver 3.0
testfailureequal "$BADPREFIX
The following packages have unmet dependencies:
foo : Conflicts: foo:i386 but 1 is to be installed
foo:i386 : Conflicts: foo but 1 is to be installed
-E: Unable to correct problems, you have held broken packages." aptget install needsfoo foo:i386 -s
+E: Unable to correct problems, you have held broken packages." aptget install needsfoo foo:i386 -s --solver internal
solveableinsinglearch1() {
testsuccessequal "Reading package lists...
@@ -127,6 +131,16 @@ Conf $1 (1 unstable [amd64])" aptget install $1 foo:i386 -s
testneedsfooallgood 'needsfooany'
testneedsfooallgood 'needsfoover1'
+if [ "$APT_SOLVER" = "3.0" ]; then
+NEEDSFOO2NATIVE="$BADPREFIX
+The following packages have unmet dependencies:
+ needsfoover2 : Depends: foo:any (>= 2)
+E: Unsatisfiable dependency group needsfoover2:amd64=1 -> foo:any:any"
+NEEDSFOO2FOREIGN="$BADPREFIX
+The following packages have unmet dependencies:
+ needsfoover2:i386 : Depends: foo:any (>= 2)
+E: Unsatisfiable dependency group needsfoover2:i386=1 -> foo:any:any"
+else
NEEDSFOO2NATIVE="$BADPREFIX
The following packages have unmet dependencies:
needsfoover2 : Depends: foo:any (>= 2)
@@ -135,32 +149,38 @@ NEEDSFOO2FOREIGN="$BADPREFIX
The following packages have unmet dependencies:
needsfoover2:i386 : Depends: foo:any (>= 2)
E: Unable to correct problems, you have held broken packages."
+fi
testfailureequal "$NEEDSFOO2NATIVE" aptget install needsfoover2 -s
testfailureequal "$NEEDSFOO2FOREIGN" aptget install needsfoover2:i386 -s
testfailureequal "$NEEDSFOO2FOREIGN" aptget install needsfoover2:i386 foo:i386 -s
testfailureequal "$NEEDSFOO2NATIVE" aptget install needsfoover2 foo:i386 -s
solveableinsinglearch2() {
+ testfailuremsg 'E: Conflict: hatesfoo:amd64=1 -> not foo:amd64=1 but foo:amd64=1' aptget install foo hatesfoo -s --solver 3.0
+ testfailuremsg 'E: Conflict: hatesfooany:amd64=1 -> not foo:amd64=1 but foo:amd64=1' aptget install foo hatesfooany -s --solver 3.0
+ testfailuremsg 'E: Conflict: hatesfoonative:amd64=1 -> not foo:amd64=1 but foo:amd64=1' aptget install foo hatesfoonative -s --solver 3.0
testfailureequal "$BADPREFIX
The following packages have unmet dependencies:
hatesfoo : Conflicts: foo but 1 is to be installed
-E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoo -s
+E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoo -s --solver internal
# the message differs slightly between single and multiarch
- testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install foo hatesfooany -s
+ testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install foo hatesfooany -s --solver internal
testfailureequal "$BADPREFIX
The following packages have unmet dependencies:
hatesfoonative : Conflicts: foo:amd64
-E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoonative -s
+E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoonative -s --solver internal
}
solveableinsinglearch2
+testfailuremsg "E: Conflict: hatesfoo:amd64=1 -> not foo:i386=1 but foo:i386=1" aptget install foo:i386 hatesfoo -s --solver 3.0
testfailureequal "$BADPREFIX
The following packages have unmet dependencies:
hatesfoo : Conflicts: foo:i386 but 1 is to be installed
-E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfoo -s
+E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfoo -s --solver internal
+testfailuremsg "E: Conflict: hatesfooany:amd64=1 -> not foo:i386=1 but foo:i386=1" aptget install foo:i386 hatesfooany -s --solver 3.0
testfailureequal "$BADPREFIX
The following packages have unmet dependencies:
hatesfooany : Conflicts: foo:any
-E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfooany -s
+E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfooany -s --solver internal
testsuccessequal 'Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
@@ -171,11 +191,12 @@ Inst hatesfoonative (1 unstable [amd64])
Conf foo:i386 (1 unstable [i386])
Conf hatesfoonative (1 unstable [amd64])' aptget install foo:i386 hatesfoonative -s
+testfailuremsg "E: Unsatisfiable dependency group needscoolfoo:i386=1 -> coolfoo:i386" aptget install needscoolfoo:i386 -s --solver 3.0
testfailureequal "$BADPREFIX
The following packages have unmet dependencies:
needscoolfoo:i386 : Depends: coolfoo:i386 but it is not installable
Depends: coolbar:i386 but it is not installable
-E: Unable to correct problems, you have held broken packages." aptget install needscoolfoo:i386 -s
+E: Unable to correct problems, you have held broken packages." aptget install needscoolfoo:i386 -s --solver internal
solveneedscoolfooanyin() {
local NEEDSCOOL='needscoolfooany'
if [ "$1" != 'amd64' ]; then NEEDSCOOL="${NEEDSCOOL}:$1"; fi
@@ -243,15 +264,17 @@ Inst needscoolfoover1 (1 unstable [amd64])
Conf coolfoo (1 unstable [amd64])
Conf coolfoover (1 unstable [amd64])
Conf needscoolfoover1 (1 unstable [amd64])' aptget install needscoolfoover1 -s
+ testfailuremsg "E: Unsatisfiable dependency group needscoolfoover2:amd64=1 -> coolfoo:any:any" aptget install needscoolfoover2 -s --solver 3.0
testfailureequal "$BADPREFIX
The following packages have unmet dependencies:
needscoolfoover2 : Depends: coolfoo:any (>= 2)
-E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover2 -s
+E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover2 -s --solver internal
+ testfailuremsg "E: Unsatisfiable dependency group needscoolfoover3:amd64=1 -> coolfoo:any:any" aptget install needscoolfoover3 -s --solver 3.0
testfailureequal "$BADPREFIX
The following packages have unmet dependencies:
needscoolfoover3 : Depends: coolfoo:any (>= 2)
Depends: coolbar:any (>= 3)
-E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover3 -s
+E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover3 -s --solver internal
}
solveableinsinglearch3
diff --git a/test/integration/test-multiarch-barbarian b/test/integration/test-multiarch-barbarian
index 293f227..b897834 100755
--- a/test/integration/test-multiarch-barbarian
+++ b/test/integration/test-multiarch-barbarian
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64' 'i386'
buildsimplenativepackage 'foreign-foo' 'amd64,i386' '1' 'stable' 'Multi-Arch: foreign
diff --git a/test/integration/test-multiarch-foreign b/test/integration/test-multiarch-foreign
index 713b27b..228fa88 100755
--- a/test/integration/test-multiarch-foreign
+++ b/test/integration/test-multiarch-foreign
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64' 'i386' 'armel'
insertpackage 'unstable' 'cool-foo' 'amd64,i386' '1.0' 'Depends: foo'
@@ -178,16 +179,18 @@ distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
'
+ testfailuremsg "E: Conflict: -> ${1%:*}:$4=1.0 but hates-foo:amd64=1.0 -> not ${1%:*}:$4=1.0" aptget install $1 hates-foo -s --solver 3.0
testfailureequal "$BADPREFIX
The following packages have unmet dependencies:
hates-foo : Conflicts: foo
Conflicts: foo:i386
Conflicts: foo:armel
-E: Unable to correct problems, you have held broken packages." aptget install $1 hates-foo -s
+E: Unable to correct problems, you have held broken packages." aptget install $1 hates-foo -s --solver internal
+ testfailuremsg "E: Conflict: $2:amd64=1.0 -> not foo:$4=1.0 but foo:$4=1.0" aptget install $1 $2 -s --solver 3.0
testfailureequal "$BADPREFIX
The following packages have unmet dependencies:
$2 : Conflicts: foo:$4
-E: Unable to correct problems, you have held broken packages." aptget install $1 $2 -s
+E: Unable to correct problems, you have held broken packages." aptget install $1 $2 -s --solver internal
testsuccessequal "Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
diff --git a/test/integration/test-not-upgrading-removed-depends b/test/integration/test-not-upgrading-removed-depends
index 54b2042..c7d67af 100755
--- a/test/integration/test-not-upgrading-removed-depends
+++ b/test/integration/test-not-upgrading-removed-depends
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64'
insertpackage 'unstable' 'untouchable-for-solving' 'all' '1' 'Conflicts: main'
diff --git a/test/integration/test-prefer-higher-priority-providers b/test/integration/test-prefer-higher-priority-providers
index 7c3f323..5fed20a 100755
--- a/test/integration/test-prefer-higher-priority-providers
+++ b/test/integration/test-prefer-higher-priority-providers
@@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture 'native'
+native=$(getarchitecture 'native')
insertpackage 'unstable' 'foo' 'all' '1' 'Provides: stuff' 'important'
insertpackage 'unstable' 'bar' 'all' '1' 'Provides: stuff' 'optional'
@@ -90,6 +91,10 @@ Inst awesome (1 unstable [all])
Conf baz (1 unstable [all])
Conf awesome (1 unstable [all])" aptget install awesome foo- bar- -s
+testfailuremsg "E: Unsatisfiable dependency: awesome:$native=1 -> foo:$native=1 | bar:$native=1 | baz:$native=1
+E: Not considered: foo:$native=1: not foo:$native -> not foo:$native=1
+E: Not considered: bar:$native=1: not bar:$native -> not bar:$native=1
+E: Not considered: baz:$native=1: not baz:$native -> not baz:$native=1" aptget install awesome foo- bar- baz- -s --solver 3.0
testfailureequal "Reading package lists...
Building dependency tree...
Package 'foo' is not installed, so not removed
@@ -103,4 +108,4 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
awesome : Depends: stuff
-E: Unable to correct problems, you have held broken packages." aptget install awesome foo- bar- baz- -s
+E: Unable to correct problems, you have held broken packages." aptget install awesome foo- bar- baz- -s --solver internal
diff --git a/test/integration/test-resolver-delays-remove-decisions b/test/integration/test-resolver-delays-remove-decisions
index a069954..062a2e7 100755
--- a/test/integration/test-resolver-delays-remove-decisions
+++ b/test/integration/test-resolver-delays-remove-decisions
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64' 'i386'
insertinstalledpackage 'stuff' 'all' '1'
@@ -21,6 +22,18 @@ setupaptarchive
# as we do not question the remove later on
testsuccessequal "Reading package lists...
Building dependency tree...
+The following additional packages will be installed:
+ bar
+The following NEW packages will be installed:
+ bar foobar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1 unstable [all])
+Inst foobar (1 unstable [all])
+Conf bar (1 unstable [all])
+Conf foobar (1 unstable [all])" apt install foobar -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
MarkInstall foobar:amd64 < none -> 1 @un puN Ib > FU=1
Installing foo:amd64 as Depends of foobar:amd64
Delayed Removing: stuff:amd64 as upgrade is not an option for foo:amd64 (1)
@@ -41,12 +54,29 @@ The following NEW packages will be installed:
Inst bar (1 unstable [all])
Inst foobar (1 unstable [all])
Conf bar (1 unstable [all])
-Conf foobar (1 unstable [all])" apt install foobar -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
+Conf foobar (1 unstable [all])" apt install foobar -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 --solver internal
insertinstalledpackage 'uninstallable' 'all' '1'
testsuccessequal "Reading package lists...
Building dependency tree...
+The following additional packages will be installed:
+ foo foo-dep
+The following packages will be REMOVED:
+ stuff
+The following NEW packages will be installed:
+ foo foo-dep foobar
+0 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
+Remv stuff [1]
+Inst foo-dep (1 unstable [all])
+Inst foo (1 unstable [all])
+Inst foobar (1 unstable [all])
+Conf foo-dep (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf foobar (1 unstable [all])" apt install foobar -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
MarkInstall foobar:amd64 < none -> 1 @un puN Ib > FU=1
Installing foo:amd64 as Depends of foobar:amd64
Delayed Removing: stuff:amd64 as upgrade is not an option for foo:amd64 (1)
@@ -71,11 +101,29 @@ Inst foo (1 unstable [all])
Inst foobar (1 unstable [all])
Conf foo-dep (1 unstable [all])
Conf foo (1 unstable [all])
-Conf foobar (1 unstable [all])" apt install foobar -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
+Conf foobar (1 unstable [all])" apt install foobar -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 --solver internal
# Same solution but the installs are considered protected now as there is no other solution
testsuccessequal "Reading package lists...
Building dependency tree...
+Package 'bar' is not installed, so not removed
+The following additional packages will be installed:
+ foo foo-dep
+The following packages will be REMOVED:
+ stuff
+The following NEW packages will be installed:
+ foo foo-dep foobar
+0 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
+Remv stuff [1]
+Inst foo-dep (1 unstable [all])
+Inst foo (1 unstable [all])
+Inst foobar (1 unstable [all])
+Conf foo-dep (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf foobar (1 unstable [all])" apt install foobar bar- -q=0 -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
MarkInstall foobar:amd64 < none -> 1 @un puN Ib > FU=1
Installing foo:amd64 as Depends of foobar:amd64
Removing: stuff:amd64 as upgrade is not an option for foo:amd64 (1)
@@ -103,4 +151,4 @@ Inst foo (1 unstable [all])
Inst foobar (1 unstable [all])
Conf foo-dep (1 unstable [all])
Conf foo (1 unstable [all])
-Conf foobar (1 unstable [all])" apt install foobar bar- -q=0 -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
+Conf foobar (1 unstable [all])" apt install foobar bar- -q=0 -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 --solver internal
diff --git a/test/integration/test-resolver-provider-exchange b/test/integration/test-resolver-provider-exchange
index 0a85db3..2874b88 100755
--- a/test/integration/test-resolver-provider-exchange
+++ b/test/integration/test-resolver-provider-exchange
@@ -4,9 +4,11 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64'
insertinstalledpackage 'fuse' 'all' '2'
+insertpackage 'unstable' 'fuse' 'all' '2'
insertpackage 'unstable' 'fuse3' 'all' '3' 'Conflicts: fuse
Provides: fuse'
diff --git a/test/integration/test-specific-architecture-dependencies b/test/integration/test-specific-architecture-dependencies
index 447e407..ca39f18 100755
--- a/test/integration/test-specific-architecture-dependencies
+++ b/test/integration/test-specific-architecture-dependencies
@@ -4,6 +4,7 @@ set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
+allowremovemanual
configarchitecture 'amd64' 'i386'
insertpackage 'unstable' 'libc6' 'amd64,i386' '1' 'Multi-Arch: same'
@@ -193,6 +194,7 @@ The following NEW packages will be installed:
Inst foo-depender (1 unstable [amd64])
Conf foo-depender (1 unstable [amd64])' aptget install foo-depender -s
+testfailuremsg 'E: Unsatisfiable dependency group foo-depender:i386=1 -> foo:i386' aptget install foo-depender:i386 -s --solver 3.0
testfailureequal 'Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -203,7 +205,7 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
foo-depender:i386 : Depends: foo:i386 but it is not installable
-E: Unable to correct problems, you have held broken packages.' aptget install foo-depender:i386 -s
+E: Unable to correct problems, you have held broken packages.' aptget install foo-depender:i386 -s --solver internal
testsuccessequal 'Reading package lists...
Building dependency tree...
@@ -311,6 +313,7 @@ Remv libold [1]
Inst breaker-x64 (1 unstable [amd64])
Conf breaker-x64 (1 unstable [amd64])' aptget install breaker-x64:amd64 -s
+testfailuremsg 'E: Unsatisfiable dependency group depender-x32:amd64=1 -> libc6:i386:any' aptget install depender-x32 -s --solver 3.0
testfailureequal 'Reading package lists...
Building dependency tree...
Some packages could not be installed. This may mean that you have
@@ -321,4 +324,4 @@ The following information may help to resolve the situation:
The following packages have unmet dependencies:
depender-x32 : Depends: libc6:i386 but it is not installable
-E: Unable to correct problems, you have held broken packages.' aptget install depender-x32 -s
+E: Unable to correct problems, you have held broken packages.' aptget install depender-x32 -s --solver internal
diff --git a/test/integration/test-ubuntu-bug-1974196 b/test/integration/test-ubuntu-bug-1974196
index 7c38723..08dccff 100755
--- a/test/integration/test-ubuntu-bug-1974196
+++ b/test/integration/test-ubuntu-bug-1974196
@@ -22,6 +22,19 @@ noprogress() {
testsuccessequal "Reading package lists...
Building dependency tree...
+The following additional packages will be installed:
+ depends pkg1
+The following packages will be upgraded:
+ depends pkg0 pkg1
+3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst depends [1] (2 unstable [all]) []
+Inst pkg0 [1] (2 unstable [all]) []
+Inst pkg1 [1] (2 unstable [all])
+Conf depends (2 unstable [all])
+Conf pkg0 (2 unstable [all])
+Conf pkg1 (2 unstable [all])" aptget install pkg0 -s
+testsuccessequal "Reading package lists...
+Building dependency tree...
Upgrading: depends:arm64 < 1 | 2 @ii umH Ib > due to depends:arm64 Depends on pkg0:arm64 < 1 -> 2 @ii pumU > (= 1)
MarkInstall pkg0:arm64 < 1 -> 2 @ii pumU > FU=1
MarkInstall depends:arm64 < 1 -> 2 @ii umU Ib > FU=0
@@ -40,7 +53,7 @@ Inst pkg0 [1] (2 unstable [all]) []
Inst pkg1 [1] (2 unstable [all])
Conf depends (2 unstable [all])
Conf pkg0 (2 unstable [all])
-Conf pkg1 (2 unstable [all])" aptget install pkg0 -o debug::pkgdepcache::marker=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1 -s
+Conf pkg1 (2 unstable [all])" aptget install pkg0 -o debug::pkgdepcache::marker=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1 -s --solver internal
testsuccessequal "Percentage: 0
Message: Start up solver…
diff --git a/test/integration/test-unpack-different-version-unpacked b/test/integration/test-unpack-different-version-unpacked
index e7da64c..810e2e9 100755
--- a/test/integration/test-unpack-different-version-unpacked
+++ b/test/integration/test-unpack-different-version-unpacked
@@ -14,14 +14,24 @@ cleanstatus() {
rm rootdir/var/cache/apt/*.bin
}
-#FIXME: the reported version is wrong, it should be 1, not 2
insertinstalledpackage 'libqtcore4' 'i386,amd64' '1' 'Multi-Arch: same' '' 'install ok unpacked'
+#FIXME(internal): the reported version is wrong, it should be 1, not 2
testsuccessequal 'Reading package lists...
Building dependency tree...
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
2 not fully installed or removed.
Conf libqtcore4 (2 unstable [amd64])
-Conf libqtcore4:i386 (2 unstable [i386])' aptget install -s -f
+Conf libqtcore4:i386 (2 unstable [i386])' aptget install -s -f --solver internal
+
+# FIXED(3.0): the reported version is correct now
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Solving dependencies...
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
+2 not fully installed or removed.
+Conf libqtcore4 (1 [amd64])
+Conf libqtcore4:i386 (1 [i386])' aptget install -s -f --solver 3.0
+
cleanstatus
insertinstalledpackage 'libqtcore4' 'amd64' '2' 'Multi-Arch: same' '' 'install ok unpacked'
diff --git a/test/libapt/parsedepends_test.cc b/test/libapt/parsedepends_test.cc
index 9771c5d..296750b 100644
--- a/test/libapt/parsedepends_test.cc
+++ b/test/libapt/parsedepends_test.cc
@@ -311,3 +311,55 @@ TEST(ParseDependsTest, SpaceHate)
EXPECT_EQ("1", Version);
EXPECT_EQ(pkgCache::Dep::Equals, Op);
}
+
+static void ArchLimitSpaceTesting(char const * const Depends)
+{
+ SCOPED_TRACE(Depends);
+ _config->Set("APT::Architecture", "amd64");
+ const char* const End = Depends + strlen(Depends);
+ const char* Start = Depends;
+ std::string Package;
+ std::string Version;
+ unsigned int Op = 29;
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, true, false, true, "amd64");
+ EXPECT_NE(nullptr, Start);
+ EXPECT_EQ("foobar", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(pkgCache::Dep::NoOp, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, true, false, true, "amd64");
+ EXPECT_NE(nullptr, Start);
+ EXPECT_EQ("", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(pkgCache::Dep::NoOp, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, true, false, true, "amd64");
+ EXPECT_EQ(End, Start);
+ EXPECT_EQ("baz", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(pkgCache::Dep::NoOp, Op);
+}
+TEST(ParseDependsTest, ArchLimitSpaceNormal)
+{
+ ArchLimitSpaceTesting("foobar [i386 armhf armel amd64], blah [!arm64 !x32 !amd64], baz");
+}
+TEST(ParseDependsTest, ArchLimitSpaceLove)
+{
+ ArchLimitSpaceTesting("foobar [ i386 armhf armel amd64 ] , blah [ !arm64 !x32 !amd64 ] , baz");
+}
+TEST(ParseDependsTest, ArchLimitSpaceNoLove)
+{
+ ArchLimitSpaceTesting("foobar[i386 armhf armel amd64],blah[!arm64 !x32 !amd64],baz");
+}
+TEST(ParseDependsTest, ArchLimitBadSyntax)
+{
+ std::string Package;
+ std::string Version;
+ unsigned int Op = 29;
+ for (auto const * const Depends : { "foobar [! amd64]", "foobar []", "foobar [ ]" })
+ {
+ SCOPED_TRACE(Depends);
+ EXPECT_EQ(nullptr, debListParser::ParseDepends(Depends, Depends + strlen(Depends), Package, Version, Op, true, false, true, "amd64"));
+ }
+}