summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Release 2.1.32.1.3Julian Andres Klode2020-05-185-6/+25
|
* private-search: Only use V.TranslatedDescription() if goodJulian Andres Klode2020-05-181-1/+1
| | | | | | | | | | | When we could not find a translated description, we were pushing V.TranslatedDescription() to the vector, but that one might not have been good either. Add the check so we don't crash later when trying to access it. LP: #1877987
* Recognize propagated protected in pkgProblemResolverDavid Kalnischkies2020-05-185-17/+33
| | | | | | | | | | | | | | | | | | | | | | | | | Turns out that pkgDepCache and pkgProblemResolver maintain two (semi) independent sets of protected flags – except that a package if marked protected in the pkgProblemResolver is automatically also marked in the pkgDepCache as protected. This way the pkgProblemResolver will have as protected only the direct user requests while pkgDepCache will (hopefully) propagate the flag to unavoidable dependencies of these requests nowadays. The pkgProblemResolver was only checking his own protected flag though and based on that calls our Mark* methods usually without checking return, leading to it believing it could e.g. remove packages it actually can't remove as pkgDepCache will not allow it as it is marked as protected there. Teaching it to check for the flag in the pkgDepCache instead avoids it believing in the wrong things eventually giving up. The scoring is keeping the behaviour of adding the large score boost only for the direct user requests though as there is no telling which other sideeffects this might have if too many packages get too many points from the get-go. Second part of fixing #960705, now with pkgProblemResolver output which looks more like the whole class of problem is resolved rather than a teeny tiny edgecase it was before.
* Propagate protected to already satisfied dependenciesDavid Kalnischkies2020-05-183-46/+89
| | | | | | | | The previous commit deals with negative, now we add the positive side of things as well which makes this a recursive endevour. As we can push the protected flag forward only if a single solution for a dependency exists it is easy for trees to not get it, so if resolving becomes difficult it won't help at all.
* Propagate protected to already satisfied conflictsDavid Kalnischkies2020-05-182-30/+113
| | | | | | | | | | | If we propagate protected e.g. due to a user request we should also act upon (at the moment) satisfied negative dependencies so that the resolver knows that installing this package later is not an option. That the problem resolver is trying bad solutions is a bug by itself which existed before and after and should be worked on. Closes: #960705
* Deal with protected solution providers firstDavid Kalnischkies2020-05-181-3/+6
| | | | | | | | For positive dependencies this isn't giving much as the dependency should already be satisfied by such a provider if its protectiveness would help, but it doesn't hurt to check them first and for negative dependencies it means that we check those first which are the most likely to fail to be removed – which is a good idea.
* Support negative dependencies in VCI::FromDependencyDavid Kalnischkies2020-05-181-75/+37
| | | | | | The important change is adding IsIgnoreable() as it will deal with self-conflicts and such, but while we are at it lets sprinkle in some refactoring.
* Move the MarkInstall helpers into static functionsDavid Kalnischkies2020-05-182-63/+74
| | | | | | | | Reducing the scope of these helpers might allow us to move them elsewhere and share them or it is a rather pointless exercise, we will see where it leads us to later on. Gbp-Dch: Ignore
* Keep going if a dep is bad for user requests to improve errorsDavid Kalnischkies2020-05-186-27/+75
| | | | | | | | | | | | | | We exit early from installing dependencies of a package only if it is not a user request to avoid polluting the state with installs which might not be needed (or detrimental even) for alternative choices. We do continue with installing dependencies though if it is a user request as it will improve error reporting for apt and can even help aptitude not hang itself so much as we trim the problem space down for its resolver dealing with all the easy things. Similar things can be said about the testcase I have short-circuit previously… keep going test, do what you should do to report errors!
* Skip reading data from tar members if nobody will look at itDavid Kalnischkies2020-05-181-28/+28
| | | | | | | | The variable this is read to is named Junk and that it is for usecases like apt-ftparchive which just looks at the items metadata, so instead of performing this hunked read for data nobody will process we just tell our FileFd to skip ahead (Internally it might still loop over the data depending on which compressor is involved).
* Properly handle interrupted write() call in ExtractTarDavid Kalnischkies2020-05-181-1/+1
| | | | | | With FileFd::Write we already have a helper for this situation we can just make use of here instead of hoping for the best or rolling our own solution here.
* Allow prefix to be a complete filename for GetTempFileDavid Kalnischkies2020-05-1814-359/+203
| | | | | | | | | | | | | Our testcases had their own implementation of GetTempFile with the feature of a temporary file with a choosen suffix. Merging this into GetTempFile lets us drop this duplicate and hence test more our code rather than testing our helpers for test implementation. And then hashsums_test had another implementation… and extracttar wasn't even trying to use a real tempfile… one GetTempFile to rule them all! That also ensures that these tempfiles are created in a temporary directory rather than the current directory which is a nice touch and tries a little harder to clean up those tempfiles.
* Prefer use of O_TMPFILE in GetTempFile if availableDavid Kalnischkies2020-05-181-5/+12
| | | | | Not all filesystems implement this feature in all versions of Linux, so this open call can fail & we have to fallback to our old method.
* Release 2.1.2, take 22.1.2Julian Andres Klode2020-05-133-3/+3
|
* Fix location of testdeb in added regression testsJulian Andres Klode2020-05-131-4/+4
|
* Release 2.1.2Julian Andres Klode2020-05-1248-365/+362
|
* SECURITY UPDATE: Fix out of bounds read in .ar and .tar implementation ↵Julian Andres Klode2020-05-123-3/+98
| | | | | | | | | | | | | | | | | | | | | (CVE-2020-3810) When normalizing ar member names by removing trailing whitespace and slashes, an out-out-bound read can be caused if the ar member name consists only of such characters, because the code did not stop at 0, but would wrap around and continue reading from the stack, without any limit. Add a check to abort if we reached the first character in the name, effectively rejecting the use of names consisting just of slashes and spaces. Furthermore, certain error cases in arfile.cc and extracttar.cc have included member names in the output that were not checked at all and might hence not be nul terminated, leading to further out of bound reads. Fixes Debian/apt#111 LP: #1878177
* Dutch program translation updateFrans Spiesschaert2020-05-101-2/+2
| | | | Closes: #960186
* Release 2.1.12.1.1Julian Andres Klode2020-05-085-44/+30
|
* Use "po4a --porefs file" instead of undocumented compat nolineDavid Kalnischkies2020-05-081-1/+1
| | | | References: https://github.com/mquinson/po4a/commit/329f472a378d42c7a33e8110e5091be61480a0fc
* Drop nowrap from po4a --porefs as it is no longer supportedDavid Kalnischkies2020-05-081-1/+1
| | | | | | Upstream says it had no effect before, so it seems safe to adapt. References: https://github.com/mquinson/po4a/commit/ac1e97305b6073ed87fa8cf0a2e32f9b1255d0f1
* Fix typo in Polish translation of --help messagesArtur Grącki2020-05-081-3/+3
| | | | | | Also translating two related strings along the way. References: https://github.com/Debian/apt/pull/107
* Allow aptitude to MarkInstall broken packages via FromUserDavid Kalnischkies2020-05-083-10/+59
| | | | | | | | | | | | | | | | | | apt marks packages coming from the commandline among others as protected to ensure the various resolver parts do not fiddle with the state of these packages. aptitude (and potentially others) do not so the state is modified (to a Keep which for uninstalled means it is not going to be installed) due to being uninstallable before the call fails – basically reverting at least some state changes the call made before it realized it has to fail, which is usually a good idea, except if users expect you to not do it. They do set the FromUser option though which has beside controlling autobit also gained the notion of "the user is always right" over time and can be used for this one here as well preventing the state revert. References: 0de399391372450d0162b5a09bfca554b2d27c3d Reported-By: Jessica Clarke <jrtc27@debian.org> on IRC
* Release 2.1.02.1.0Julian Andres Klode2020-05-044-4/+27
|
* doc/po: Merge nl with template, update templateJulian Andres Klode2020-05-042-4797/+7184
| | | | | | We did not merge nl with the template when we updated it, hence we have quite a bit of churn in that commit and this one.
* Merge branch 'pu/wildcards' into 'master'Julian Andres Klode2020-05-043-6/+44
|\ | | | | | | | | Reinstate * wildcards See merge request apt-team/apt!118
| * apt list: Fix behavior of regex vs fnmatch vs wildcardsJulian Andres Klode2020-05-042-8/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously (and still in cacheset), patterns where only allowed to start with ? or ~, which ignores the fact that a pattern might just as well start with a negation, such a !~nfoo. Also, we ignored the --regex flag if it looked like this, which was somewhat bad. Let's change this all: * If --regex is given, arguments are always interpreted as regex * If it is a valid package wildcard (name or * characters), then it will be interpreted as a wildcard - this set of characters is free from meaningful overlap with patterns. * Otherwise, the argument is interpreted as a pattern. For a future version, we need to adapt parsing for cacheset and list to use a common parser, to avoid differences in their interpretation. Likely, this code will go into the pattern parser, such that it generates a pattern given a valid fnmatch argument for example.
| * Reinstate * wildcardsJulian Andres Klode2020-05-042-2/+39
|/ | | | | | | | | | | | Reinstate * wildcards as they are safe to use, but do not allow any other special characters such as ? or []. Notably, ? would overlap with patterns, and [] might overlap with future pattern extensions (alternative bracketing style), it's also hard to explain. Closes: #953531 LP: #1872200
* Merge branch 'feature/markinstall' into 'master'Julian Andres Klode2020-05-049-250/+424
|\ | | | | | | | | Refactor MarkInstall fixing various or-group handling issues See merge request apt-team/apt!117
| * Protect a package while resolving in MarkInstallDavid Kalnischkies2020-04-274-39/+48
| | | | | | | | | | | | | | | | Strange things happen if while resolving the dependencies of a package said dependencies want to remove the package. The allow-scores test e.g. removed the preferred alternative in favor of the last one now that they were exclusive. In our or-group for Recommends we would "just" not statisfy the Recommends and for Depends we engage the ProblemResolver…
| * Prefer upgrading installed orgroup membersDavid Kalnischkies2020-04-273-57/+75
| | | | | | | | | | | | | | | | In normal upgrade scenarios this is no problem as the orgroup member will be marked for upgrade already, but on a not fully upgraded system (or while you operate on a different target release) we would go with our usual "first come first serve" approach which might lead us to install another provider who comes earlier – bad if the providers conflict.
| * Propagate Protected flag to single-option dependenciesDavid Kalnischkies2020-04-277-21/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a package is protected and has a dependency satisfied only by a single package (or conflicts with a package) this package must be part of the solution and so we can help later actions not exploring dead ends by propagating the protected flag to these "pseudo-protected" packages. An (obscure) bug this can help prevent (to some extend) is shown in test-apt-never-markauto-sections by not causing irreversible autobit transfers. As a sideeffect it seems also to help our crude ShowBroken to display slightly more helpful messages involving the packages which are actually in conflict.
| * Fail earlier on impossible Conflicts in MarkInstallDavid Kalnischkies2020-04-272-17/+24
| | | | | | | | | | | | | | | | MarkDelete is not recursive as MarkInstall is and we can not conflict with ourselves anyhow, so we can move the unavoidable deletes before changing the state of the package in question avoiding the need for the state update in case of conflicts we can not deal with (e.g. the package conflicts with an explicit user request).
| * Split up MarkInstall into private helper methodsDavid Kalnischkies2020-04-272-64/+113
| | | | | | | | | | Should be easier to move the code bits around then and it helps in documenting a bit what the blocks do and how they interact (or not).
| * Discard candidate if its dependencies can't be satisfiedDavid Kalnischkies2020-04-272-1/+17
| | | | | | | | | | | | We do pretty much the same in IsInstallOk, but here we have already set the state, so we have to unroll the state as well to sort-of replicate the state we were in before this MarkInstall failed.
| * Refactor and reorder MarkInstall codeDavid Kalnischkies2020-04-271-134/+145
| | | | | | | | | | | | | | This fixes no bugs per se, but the idea is to delay more costly changes and check easier things first. It e.g. inhibits the moving of the autobit until we are sure that this MarkInstall call isn't going to fail (e.g. because a dependency isn't satisfiable).
| * Explore or-groups for Recommends further than firstDavid Kalnischkies2020-04-272-30/+82
| | | | | | | | | | | | | | | | | | | | | | | | | | | | MarkInstall only looks at the first alternative in an or-group which has a fighting chance of being satisfiable (= the package itself satisfies the dependency, if it is installable itself is not considered). This is "hidden" for Depends by the problem resolver who will try another member of the or-group later, but Recommends are not a problem for it, so for them the alternatives are never further explored. Exploring the or-group in MarkInstall seems like the better choice for both types as that frees the problem resolver to deal with the hard things like package conflicts.
| * Discard impossible candidate versions also for non-installedDavid Kalnischkies2020-04-262-27/+22
|/ | | | | | | | We reseted the candidate for installed packages back to the version which is installed if one of the (critical) dependencies of it is not statisfiable, but we can do the same for non-installed packages by discarding the candidate which beside slightly helping the resolver also improves error messages generated by apt as a sideeffect.
* Avoid -Wuseless-cast to intDavid Kalnischkies2020-04-261-2/+2
| | | | | Reported-By: gcc -Wuseless-cast Gbp-Dch: Ignore
* Add correct std namespace to nullptr_tDavid Kalnischkies2020-04-261-3/+3
| | | | | Reported-By: clangd Gbp-Dch: Ignore
* Dutch manpages translation updateFrans Spiesschaert2020-04-221-7787/+4871
| | | | Closes: #956313
* Release 2.0.22.0.2Julian Andres Klode2020-04-096-7/+30
|
* Merge branch 'pu/user-agent-include-service' into 'master'Julian Andres Klode2020-04-094-2/+23
|\ | | | | | | | | ubuntu: http: Add non-interactive to user agent if run by systemd See merge request apt-team/apt!114
| * ubuntu: http: Add non-interactive to user agent if run by systemdJulian Andres Klode2020-04-094-2/+23
|/ | | | | | | | | | | | | | | Include that apt is being run from a service in the user agent, so traffic can be analysed for interactive vs non-interactive use, and prioritised accordingly. It looks like this now: User-Agent: Debian APT-HTTP/1.3 (2.0.1) non-interactive A previous version included the full service names, but this raised some privacy concerns. LP: #1825000
* test/integration/apt.pem: Regenerate with SHA2 hashesJulian Andres Klode2020-04-061-45/+45
| | | | | | | | | Recent GnuTLS 3.6.11 -> 3.6.13 update in Ubuntu broke our test certificate, it's signed with SHA1. Regenerate with SHA2. openssl req -newkey rsa:2048 -x509 -sha256 -days 36500 -nodes -out apt.crt -keyout apt.key -subj "/CN=localhost/O=APT Testcases GmbH/ST=Some-State/C=DE" cat apt.key apt.crt > test/integration/apt.pem
* Fix "string match{ing,es}" and whitespace typo in apt-patterns(7)Chris Leick2020-04-0511-26/+24
|
* German manpage translation updateChris Leick2020-04-051-121/+187
|
* Fix gramma in apt(8): "by append(+ing) a"Marco Ippolito2020-04-0511-12/+12
| | | | Closes: #955412
* Dutch program translation updateFrans Spiesschaert2020-04-051-612/+25
| | | | Closes: #955505
* Simplified Chinese program translation updateBoyuan Yang2020-03-271-47/+33
| | | | Closes: #955023