summaryrefslogtreecommitdiff
path: root/apt-pkg/packagemanager.cc
AgeCommit message (Collapse)Author
2014-07-29Fix SmartConfigure to ignore ordering of packages that are already validMichael Vogt
With the change of SmartConfigure() in git commit 42d51f the ordering code was trying to re-order dependencies, even when at this point in time this was not needed. Now it will first check all targets of the given dependency and only if there is not a good one try to reorder and unpack/configure as needed. Closes: LP: #1347721
2014-05-22fix tight loop detection and temporary removesDavid Kalnischkies
As outlined in #748355 apt segfaulted if it encountered a loop between a package pre-depending on a package conflicting with the previous as it ended up in an endless loop trying to unpack 'the other package'. In this specific case as an essential package is involved a lot of force needs to be applied, but can also be caused by 'normal' tight loops and highlights a problem in how we handle breaks which we want to avoid. The fix comes in multiple entangled changes: 1. All Smart* calls are guarded with loop detection. Some already had it, some had parts of it, some did it incorrect, and some didn't even try. 2. temporary removes to avoid a loop (which is done if a loop is detected) prevent the unpack of this looping package (we tried to unpack it to avoid the conflict/breaks, but due to a loop we couldn't, so we remove/deconfigure it instead which means we can't unpack it now) 3. handle conflicts and breaks very similar instead of duplicating most of the code. The only remaining difference is, as it should: deconfigure is enough for breaks, for conflicts we need the big hammer
2014-05-22consistently fail if Smart* packagemanager actions failDavid Kalnischkies
These failure conditions come with an error message attached and the conditions aren't workaroundable (otherwise this would have been done instead of returning failure), so not erroring out here means that we execute dpkg later on with a known not-working ordering adding insult (our own error messages at the end) to injury (dpkg failure).
2014-03-13do not configure already unpacked packages needlesslyDavid Kalnischkies
The unpack of a M-A:same package will force the unpack of all its siblings directly to prevent that they could be separated by later immediate actions. In commit 634985f8 a call to SmartConfigure was introduced to configure these packages at the time the installation order encounters them. Usually, the unpack order is already okay, so that this 'earlier' unpack was not needed and if it wouldn't have been done, the package would now only be unpacked, but by configuring the package now we impose new requirements which must be satisfied. The code is clever enough to handle this most of the time (it worked for 2 years!), but it isn't needed and in very coupled cases this can fail. Removing this call again removes this extra burden and so simplifies the ordering as can be seen in the modified tests. Famous last words, but I don't see a reason for this extra burden to exist hence the remove. Closes: 740843
2014-03-13cleanup headers and especially #includes everywhereDavid Kalnischkies
Beside being a bit cleaner it hopefully also resolves oddball problems I have with high levels of parallel jobs. Git-Dch: Ignore Reported-By: iwyu (include-what-you-use)
2014-03-13show debug output only if told so in packagemanagerDavid Kalnischkies
Git-Dch: Ignore
2014-02-22Fix typos in documentation (codespell)Michael Vogt
2013-10-31restore ABI and prepare next ABI via #if (APT_PKG_MAJOR >= 4 && ↵Michael Vogt
APT_PKG_MINOR >= 13)
2013-10-21restore binary compatiblity with the pkgPackageManager interfaceMichael Vogt
2013-10-14re-add APT::Keep-Fds:: for the dpkg status-fd in dpkgpm.cc as we always need ↵Michael Vogt
this
2013-10-13move the status-fd progress reporting out of the pkgDPkgPM class, at this ↵Michael Vogt
point, breaks ABI/API, lets see what we can do about this
2013-07-10apt-pkg/packagemanager.cc:Michael Vogt
* apt-pkg/packagemanager.cc: - increate APT::pkgPackageManager::MaxLoopCount to 5000
2013-06-24do not modify DepIterator as we might check againDavid Kalnischkies
fixup for 42d51f333e8ef522fed02cdfc48663488d56c3a3 The for-loop iterating over the DepIterators which need configuration can (and will be in 'complicated' situations) run multiple times, so we can't just GlobOr on the DepIterator as it modifies it, so that the next iteration over the list ends up checking another dependency leading us into a 'Internal error, packages left unconfigured. foopkg' maybe or we are 'lucky' and calculate a solution which might break down the line Git-Dch: Ignore
2013-06-09do unpacks before configures in SmartConfigureDavid Kalnischkies
Splits the big loop over dependencies in SmartConfigure which unpacks and configures dependencies into two loops and reverse their order, so that all dependencies which need to be unpacked are handled first and only after that configures are issued for dependencies. This is needed as otherwise the unpack of a (new) dependency will be issued in between a configure call for two (or more) packages which form a loop, which means the configure calls aren't part of the same dpkg call and therefore dpkg bails out. Such tight loops should really be avoided as they are usually wrong – and in reality the dependencies in libreoffice were greatly simplified thanks to Rene Engelhard so the problem is gone for the benefit of all. Closes: 707578
2012-10-24* apt-pkg/packagemanager.cc:David Kalnischkies
- do not do lock-step configuration for a M-A:same package if it isn't unpacked yet in SmartConfigure and do not unpack a M-A:same package again in SmartUnPack if we have already configured it (LP: #1062503)
2012-09-03unpack versions only in case a different version from the packageDavid Kalnischkies
and avoid re-unpack otherwise (Closes: #670900)
2012-08-30* apt-pkg/packagemanager.cc:David Kalnischkies
- unpack versions in case a different version from the package is currently in unpack state to recover from broken system states (like different file in M-A:same package and other dpkg errors)
2012-07-18* apt-pkg/packagemanager.cc:David Kalnischkies
- do not segfault if nothing can be configured to statisfy a pre-depends (e.g. in a pre-depends loop) (Closes: #681958)
2012-05-19* apt-pkg/packagemanager.cc:David Kalnischkies
- do not run into loop on new-pre-depends-breaks (Closes: #673536)
2012-05-05ensure that apti18n.h is included last as advertised (Closes: #671623)David Kalnischkies
2012-04-19* apt-pkg/packagemanager.cc:Malcolm Scott
- iterate over all pre-depends or-group member instead of looping endlessly over the first member in SmartUnpack (LP: #985852)
2012-04-16* apt-pkg/packagemanager.cc:David Kalnischkies
- init counter in SmartConfigure so that the loop-breaker isn't triggered at random… (Closes: #669060)
2012-04-12apt-pkg/packagemanager.cc: tweak MaxLoopCount to 500 and improve the error ↵Michael Vogt
message
2012-03-13add APT::pkgPackageManager::MaxLoopCount to ensure that theMichael Vogt
ordering code does not get into a endless loop when it flip-flops between two states
2012-03-13merged from lp:~donkult/apt/experimentalMichael Vogt
2012-03-13recheck dependencies in SmartUnpack after a change, tooDavid Kalnischkies
2012-03-13* apt-pkg/packagemanager.cc:David Kalnischkies
- recheck all dependencies if we changed a package in SmartConfigure as this could break an earlier dependency (LP: #940396)
2012-03-12ensure that the fullname of a package is displayed in the debug outputDavid Kalnischkies
2012-03-07show which dependency couldn't be satisfied in the debug outputDavid Kalnischkies
2012-03-07* apt-pkg/packagemanager.cc:Michael Vogt
- fix inconsistent clog/cout usage in the debug output
2012-03-06merge with apt/experimentalDavid Kalnischkies
* apt-pkg/packagemanager.cc: - fix bug in predepends handling - ensure that packages that needs unpackaging are unpacked before they are configured (LP: #927993) [ Julian Andres Klode ] * apt-pkg/deb/deblistparser.cc: - Set the Essential flag on APT instead of only Important * apt-pkg/packagemanager.cc: - Do not use immediate configuration for packages with the Important flag * Treat the Important flag like the Essential flag with those differences: - No Immediate configuration (see above) - Not automatically installed during dist-upgrade - No higher score for installation ordering
2012-03-06* apt-pkg/packagemanager.cc:Michael Vogt
- fix bug in predepends handling - ensure that packages that needs unpackaging are unpacked before they are configured (LP: #927993)
2012-03-05* Treat the Important flag like the Essential flag with two differences:Julian Andres Klode
- No Immediate configuration (see above) - Not automatically installed during dist-upgrade
2012-03-05* apt-pkg/packagemanager.cc:Julian Andres Klode
- Do not use immediate configuration for packages with the Important flag
2012-03-04fix a bunch of cppcheck "(warning) Member variable '<#>' is notDavid Kalnischkies
initialized in the constructor." messages (no functional change)
2012-03-03* apt-pkg/packagemanager.cc:David Kalnischkies
- do not try to a void a breaks if the broken package pre-depends on the breaker, but let dpkg auto-deconfigure it
2012-03-03show in the debug output if we are looping in the avoid breaksDavid Kalnischkies
2012-03-03eanup the ordering-code avoiding a break (no function change)David Kalnischkies
2012-03-02* apt-pkg/packagemanager.cc:Michael Vogt
- when calculating pre-dependencies ensure that both unpack and configure are considered (instead of only configure) LP: #927993
2012-01-20fix a few esoteric cppcheck errors/warnings/infosDavid Kalnischkies
2012-01-20fix typos in comments reported by the lintian in very-picky-modesDavid Kalnischkies
2012-01-19* apt-pkg/packagemanager.cc:David Kalnischkies
- ignore breaks on not-installed versions while searching for breakage loops as we don't have to avoid them
2012-01-19* apt-pkg/cacheiterators.h:David Kalnischkies
- return the correct version arch for all+foreign, too The flag is interpreted at a few other places in different styles so this commit ensures that the flag check is consistent everywhere (checking for Same in flag style is a bit too much as it isn't used in combination with others anyway, but who knows and just for consistency)
2012-01-13factor out the detection of self-conflicts into Dep::IsIgnorableDavid Kalnischkies
2011-10-31do not enter an endless loop for (essential) pre-dependency loopsDavid Kalnischkies
2011-10-17* apt-pkg/packagemanager.cc:David Kalnischkies
- do not fail on unpacked packages in SmartUnPack, just don't shedule them for unpack, but do all checks and configure them
2011-09-19remove an extra argument for the error mesage formatDavid Kalnischkies
2011-09-14enable APT in unpack/configure ordering to handle loops as wellDavid Kalnischkies
as tight dependencies between immediate packages better enabling also the possibility to mark all packages as immediate (at least Closes: #353290, #540227, #559733, #621836, #639290)
2011-09-13merge with debian/sidDavid Kalnischkies
2011-09-13merge with debian/experimentalDavid Kalnischkies