summaryrefslogtreecommitdiff
path: root/apt-pkg/packagemanager.cc
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'upstream/debian/sid' into debian/experimentalMichael Vogt2014-05-291-188/+166
|\ | | | | | | | | Conflicts: test/integration/test-bug-747261-arch-specific-conflicts
| * fix tight loop detection and temporary removesDavid Kalnischkies2014-05-221-171/+156
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * consistently fail if Smart* packagemanager actions failDavid Kalnischkies2014-05-221-46/+39
| | | | | | | | | | | | | | | | 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).
* | fix some compile errors in the now enabled #if (APT_PKG_MAJOR >= 4 && ↵Michael Vogt2014-05-071-0/+1
|/ | | | APT_PKG_MINOR < 13)
* do not configure already unpacked packages needlesslyDavid Kalnischkies2014-03-131-11/+6
| | | | | | | | | | | | | | | | | | | 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
* cleanup headers and especially #includes everywhereDavid Kalnischkies2014-03-131-2/+9
| | | | | | | | 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)
* show debug output only if told so in packagemanagerDavid Kalnischkies2014-03-131-1/+2
| | | | Git-Dch: Ignore
* Fix typos in documentation (codespell)Michael Vogt2014-02-221-8/+8
|
* restore ABI and prepare next ABI via #if (APT_PKG_MAJOR >= 4 && ↵Michael Vogt2013-10-311-6/+30
| | | | APT_PKG_MINOR >= 13)
* restore binary compatiblity with the pkgPackageManager interfaceMichael Vogt2013-10-211-0/+25
|
* re-add APT::Keep-Fds:: for the dpkg status-fd in dpkgpm.cc as we always need ↵Michael Vogt2013-10-141-13/+5
| | | | this
* move the status-fd progress reporting out of the pkgDPkgPM class, at this ↵Michael Vogt2013-10-131-5/+9
| | | | point, breaks ABI/API, lets see what we can do about this
* apt-pkg/packagemanager.cc:Michael Vogt2013-07-101-2/+2
| | | | | * apt-pkg/packagemanager.cc: - increate APT::pkgPackageManager::MaxLoopCount to 5000
* do not modify DepIterator as we might check againDavid Kalnischkies2013-06-241-5/+7
| | | | | | | | | | | | | 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
* do unpacks before configures in SmartConfigureDavid Kalnischkies2013-06-091-45/+68
| | | | | | | | | | | | | | | | | | 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
* * apt-pkg/packagemanager.cc:David Kalnischkies2012-10-241-0/+2
| | | | | - 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)
* unpack versions only in case a different version from the packageDavid Kalnischkies2012-09-031-1/+4
| | | and avoid re-unpack otherwise (Closes: #670900)
* * apt-pkg/packagemanager.cc:David Kalnischkies2012-08-301-1/+3
| | | | | - 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)
* * apt-pkg/packagemanager.cc:David Kalnischkies2012-07-181-1/+1
| | | | - do not segfault if nothing can be configured to statisfy a pre-depends (e.g. in a pre-depends loop) (Closes: #681958)
* * apt-pkg/packagemanager.cc:David Kalnischkies2012-05-191-1/+1
| | | - do not run into loop on new-pre-depends-breaks (Closes: #673536)
* ensure that apti18n.h is included last as advertised (Closes: #671623)David Kalnischkies2012-05-051-1/+2
|
* * apt-pkg/packagemanager.cc:Malcolm Scott2012-04-191-2/+2
| | | | | - iterate over all pre-depends or-group member instead of looping endlessly over the first member in SmartUnpack (LP: #985852)
* * apt-pkg/packagemanager.cc:David Kalnischkies2012-04-161-1/+1
| | | | - init counter in SmartConfigure so that the loop-breaker isn't triggered at random… (Closes: #669060)
* apt-pkg/packagemanager.cc: tweak MaxLoopCount to 500 and improve the error ↵Michael Vogt2012-04-121-3/+3
| | | | message
* add APT::pkgPackageManager::MaxLoopCount to ensure that theMichael Vogt2012-03-131-2/+12
| | | | ordering code does not get into a endless loop when it flip-flops between two states
* merged from lp:~donkult/apt/experimentalMichael Vogt2012-03-131-264/+327
|\
| * recheck dependencies in SmartUnpack after a change, tooDavid Kalnischkies2012-03-131-165/+196
| |
| * * apt-pkg/packagemanager.cc:David Kalnischkies2012-03-131-79/+111
| | | | | | | | - recheck all dependencies if we changed a package in SmartConfigure as this could break an earlier dependency (LP: #940396)
| * ensure that the fullname of a package is displayed in the debug outputDavid Kalnischkies2012-03-121-29/+29
| |
| * show which dependency couldn't be satisfied in the debug outputDavid Kalnischkies2012-03-071-1/+1
| |
* | * apt-pkg/packagemanager.cc:Michael Vogt2012-03-071-13/+13
|/ | | - fix inconsistent clog/cout usage in the debug output
* merge with apt/experimentalDavid Kalnischkies2012-03-061-8/+18
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
| * * apt-pkg/packagemanager.cc:Michael Vogt2012-03-061-4/+13
| |\ | | | | | | | | | - fix bug in predepends handling - ensure that packages that needs unpackaging are unpacked before they are configured (LP: #927993)
| | * * apt-pkg/packagemanager.cc:Michael Vogt2012-03-021-4/+13
| | | | | | | | | | | | - when calculating pre-dependencies ensure that both unpack and configure are considered (instead of only configure) LP: #927993
| * | * Treat the Important flag like the Essential flag with two differences:Julian Andres Klode2012-03-051-2/+4
| | | | | | | | | | | | - No Immediate configuration (see above) - Not automatically installed during dist-upgrade
| * | * apt-pkg/packagemanager.cc:Julian Andres Klode2012-03-051-2/+1
| |/ | | | | - Do not use immediate configuration for packages with the Important flag
* | fix a bunch of cppcheck "(warning) Member variable '<#>' is notDavid Kalnischkies2012-03-041-6/+5
| | | | | | | | initialized in the constructor." messages (no functional change)
* | * apt-pkg/packagemanager.cc:David Kalnischkies2012-03-031-12/+40
| | | | | | | | - do not try to a void a breaks if the broken package pre-depends on the breaker, but let dpkg auto-deconfigure it
* | show in the debug output if we are looping in the avoid breaksDavid Kalnischkies2012-03-031-1/+6
| |
* | eanup the ordering-code avoiding a break (no function change)David Kalnischkies2012-03-031-28/+23
|/
* fix a few esoteric cppcheck errors/warnings/infosDavid Kalnischkies2012-01-201-1/+0
|
* fix typos in comments reported by the lintian in very-picky-modesDavid Kalnischkies2012-01-201-5/+5
|
* * apt-pkg/packagemanager.cc:David Kalnischkies2012-01-191-1/+7
| | | | - ignore breaks on not-installed versions while searching for breakage loops as we don't have to avoid them
* * apt-pkg/cacheiterators.h:David Kalnischkies2012-01-191-1/+1
| | | | | | | | | - 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)
* factor out the detection of self-conflicts into Dep::IsIgnorableDavid Kalnischkies2012-01-131-1/+1
|
* do not enter an endless loop for (essential) pre-dependency loopsDavid Kalnischkies2011-10-311-12/+17
|
* * apt-pkg/packagemanager.cc:David Kalnischkies2011-10-171-9/+2
| | | | - do not fail on unpacked packages in SmartUnPack, just don't shedule them for unpack, but do all checks and configure them
* remove an extra argument for the error mesage formatDavid Kalnischkies2011-09-191-1/+1
|
* enable APT in unpack/configure ordering to handle loops as wellDavid Kalnischkies2011-09-141-156/+301
|\ | | | | | | | | 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)
| * Fixed a problem where the loop flag would be removed prematurely.Christopher Baines2011-08-161-15/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | SmartConfigure xserver-xorg-video-apm (1:1.2.3-0ubuntu1) SmartConfigure xserver-xorg-core (2:1.9.0-0ubuntu7.3) <- Loop flag set on xserver-xorg-core SmartConfigure xserver-xorg (1:7.5+6ubuntu3) SmartConfigure xserver-xorg-core (2:1.9.0-0ubuntu7.3) (Only Correct Dependancies) <- Loop flag removed prematurely SmartConfigure libpciaccess0 (0.12.0-1) SmartConfigure libpixman-1-0 (0.18.4-1) SmartConfigure xserver-xorg-video-all (1:7.5+6ubuntu3) SmartConfigure xserver-xorg-video-apm (1:1.2.3-0ubuntu1) (Only Correct Dependancies) SmartConfigure xserver-xorg-core (2:1.9.0-0ubuntu7.3) <- Incorrectly detects first run as no loop flag Also applied this fix to the SmartUnpack method.