summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-10-21Release 2.1.11Julian Andres Klode
2020-10-21Do not produce late error if immediate configuration fails, just warnJulian Andres Klode
We are seeing more and more installations fail due to immediate configuration issues related to libc6. Immediate configuration is supposed to ensure that an essential package is configured immediately, just in case some other packages use a part of the essential package that only works if that package is configured. This used to be a warning, it was turned into an error in some commit I can't remember right now, but importantly, the error missed a return, which means that ordering completed succesfully and packages were being installed anyway; and after all that happened successfully, we'd print an error at the end and exit with an error code, which is not super useful. Revert the error back to a warning such that the behavior stays the same but we do not fail (unless we mess up ordering which then gets caught by a consistency check later on. Closes: #953260 Closes: #972552 LP: #1871268
2020-09-10Dutch manpages translation updateFrans Spiesschaert
Closes: #970037 [jak: Fix typo extended_status -> extended_states]
2020-09-09doc: Bump Ubuntu release from focal to groovyJulian Andres Klode
2020-08-27Fix "extended_states" typo in apt-mark(8)JCGoran
Closes: #969086
2020-08-11Release 2.1.10Julian Andres Klode
2020-08-11Merge branch 'pu/http-debug' into 'master'Julian Andres Klode
Add better acquire debugging support See merge request apt-team/apt!130
2020-08-11Rewrite HttpServerState::Die()Julian Andres Klode
The old code was fairly confusing, and contradictory. Notably, the second `if` also only applied to the Data state, whereas we already terminated the Data state earlier. This was bad. The else fallback applied in three cases: (1) We reached our limit (2) We are Persistent (3) We are headers Now, it always failed as a transient error if it had nothing left in the buffer. BUT: Nothing left in the buffer is the correct thing to happen if we were fetching content. Checking all combinations for the flags, we can compare the results of Die() between 2.1.7 - the last "known-acceptable-ish" version and this version: 2.1.7 this Data !Persist !Space !Limit OK (A) OK Data !Persist !Space Limit OK (A) OK Data !Persist Space !Limit OK (C) OK Data !Persist Space Limit OK OK Data Persist !Space !Limit ERR ERR * Data Persist !Space Limit OK (B) OK Data Persist Space !Limit ERR ERR Data Persist Space Limit OK OK => Data connections are OK if they have not reached their limit, or are persistent (in which case they'll probably be chunked) Header !Persist !Space !Limit ERR ERR Header !Persist !Space Limit ERR ERR Header !Persist Space !Limit OK OK Header !Persist Space Limit OK OK Header Persist !Space !Limit ERR ERR Header Persist !Space Limit ERR ERR Header Persist Space !Limit OK OK Header Persist Space Limit OK OK => Common scheme here is that header connections are fine if they have read something into the input buffer (Space). The rest does not matter. (A) Non-persistent connections with !space always enter the else clause, hence success (B) no Space means we enter the if/else, we go with else because IsLimit(), and we succeed because we don't have space (C) Having space we do enter the while (WriteSpace()) loop, but we never reach IsLimit(), hence we fall through. Given that our connection is not persistent, we fall through to the else case, and there we win because we have data left to write.
2020-08-11http: Fully flush local file both before/after server readJulian Andres Klode
We do not want to end up in a code path while reading content from the server where we have local data left to write, which can happen if a previous read included both headers and content. Restructure Flush() to accept a new argument to allow incomplete flushs (which do not match our limit), so that it can flush as far as possible, and modify Go() and use that before and after reading from the server.
2020-08-11http: Do not use non-blocking local I/OJulian Andres Klode
This causes some more issues, really.
2020-08-11http: Restore successful exits from Die()Julian Andres Klode
We have successfully finished reading data if our buffer is empty, so we don't need to do any further checks.
2020-08-11acquire: Do not hide _errror messages in Fail()Julian Andres Klode
If we have errors pending, always log them with our failure message to provide more context.
2020-08-10Merge branch 'pu/allow-release-info-change-suite' into 'master'Julian Andres Klode
Default Acquire::AllowReleaseInfoChange::Suite to "true" See merge request apt-team/apt!128
2020-08-10Default Acquire::AllowReleaseInfoChange::Suite to "true"Julian Andres Klode
Closes: #931566
2020-08-10Release 2.1.9Julian Andres Klode
2020-08-10Merge branch 'pu/http-fix-infinite-loop' into 'master'Julian Andres Klode
http: Fix infinite loop on read errors See merge request apt-team/apt!126
2020-08-10updated catalan translationsAleix Vidal i Gaya
See merge request !127 for more information.
2020-08-10Do not retry on failure to fetchJulian Andres Klode
While we fixed the infinite retrying earlier, we still have problems if we retry in the middle of a transfer, we might end up resuming downloads that are already done and read more than we should (removing the IsOpen() check so that it always retries makes test-ubuntu-bug-1098738-apt-get-source-md5sum fail with wrong file sizes). I think the retrying was added to fixup pipelining messups, but we have better solutions now, so let's get rid of it, until we have implemented this properly.
2020-08-05basehttp: Correctly handle non-transient failure from RunData()Julian Andres Klode
When we failed after a retry, we only communicated failure as transient, but this seems wrong, especially given that the code now always triggers a retry when Die() is called, as Die() closes the server fd. Instead, remove the error handling in that code path, and reuse the existing fatal-ish error code handling path.
2020-08-05http: Fix infinite loop on read errorsJulian Andres Klode
If there was a transient error and the server fd was closed, the code would infinitely retry - it never reached FailCounter >= 2 because it falls through to the end of the loop, which sets FailCounter = 0. Add a continue just like the DNS rotation code has, so that the retry actually fails after 2 attempts. Also rework the error logic to forward the actual error message.
2020-08-04Release 2.1.8Julian Andres Klode
2020-08-04Merge branch 'pu/http-fixes-2' into 'master'Julian Andres Klode
Pu/http fixes 2 See merge request apt-team/apt!125
2020-08-04Merge branch 'master' into 'master'Julian Andres Klode
Support marking all newly installed packages as automatically installed See merge request apt-team/apt!110
2020-08-04Merge branch 'pu/less-slaves' into 'master'Julian Andres Klode
Remove master/slave terminology See merge request apt-team/apt!124
2020-08-04Replace whitelist/blacklist with allowlist/denylistJulian Andres Klode
2020-08-04gpgv: Rename master to primaryJulian Andres Klode
2020-08-04CMake/Translations: Replace master with primaryJulian Andres Klode
2020-08-04aptwebserver: Rename slaves to workersJulian Andres Klode
Apologies.
2020-08-04Merge branch 'pu/apt-key-deprecated' into 'master'Julian Andres Klode
Fully deprecate apt-key, schedule removal for Q2/2022 See merge request apt-team/apt!119
2020-08-04http: Always write to the file if there's something to writeJulian Andres Klode
We only add the file to the select() call if we have data to write to it prior to the select() call. This is problematic: Assuming we enter Go() with no data to write to the file, but we read some from the server as well as an EOF, we end up not writing it to the file because we did not add the file to the select. We can't always add the file to the select(), because it's basically always ready and we don't want to wake up if we don't have anything to read or write. So for a solution, let's just always write data to the file if there's data to write to it. If some gets leftover, or if some was already present when we started Go(), it will still be added to the select() call and unblock it. Closes: #959518
2020-07-25Merge branch 'pu/http-fixes' into 'master'Julian Andres Klode
Pu/http fixes See merge request apt-team/apt!122
2020-07-24http: Redesign reading of pending dataJulian Andres Klode
Instead of reading the data early, disable the timeout for the select() call and read the data later. Also, change Read() to call only once to drain the buffer in such instances. We could optimize this to call read() multiple times if there is also pending stuff on the socket, but that it slightly more complex and should not provide any benefits.
2020-07-24http: On select timeout, error out directly, do not call Die()Julian Andres Klode
The error handling in Die() that's supposed to add useful error messages is not super useful here.
2020-07-24http: Finish copying data from server to file before sending stuff to serverJulian Andres Klode
This avoids a case where we read data, then write to the server and only then realize the connection was closed. It is somewhat slower, though.
2020-07-24http: Die(): Do not flush the buffer, error out insteadJulian Andres Klode
By changing the buffer implementation to return true if it read or wrote something, even on EOF, we should not have a need to flush the buffer in Die() anymore - we should only be calling Die() if the buffer is empty now.
2020-07-24http: Only return false for EOF if we actually did not read anythingJulian Andres Klode
This should avoid the need to Flush the buffer in Die(), because if we read anything, we are returning true, and not entering Die() at that point. Also Write() does not have a concept of EOF, so get rid of code handling that there. Was that copied from Read()?
2020-07-24http: Die(): Merge flushing code from Flush()Julian Andres Klode
Die() needs its own Copy() of Flush() because it needs to return success or failure based on some states, but those are not precisely the same as Flush(), as Flush() will always return false at the end, for example, but we want to fall through to our error handling.
2020-07-24http: Always Close() the connection in Die()Julian Andres Klode
If we reached Die() there was an issue with the server connection, so we should always explicitly close it.
2020-07-14CMake: Rename add_slaves() to add_links()Julian Andres Klode
Sorry!
2020-07-08Release 2.1.7Julian Andres Klode
2020-07-07Detect pkg-config-dpkghook failure in tests to avoid fallbackDavid Kalnischkies
dpkg (>= 1.20.3) has better support for its own DPKG_ROOT resulting in architectures for the root being reported rather than the host system. Sadly the hookscript from pkg-config is not prepared for this resulting in our `dpkg --add-architecture` calls failing in the hook after dpkg has successfully added the architecture internally. The failure triggered fallback handling in the tests to work with an older version of dpkg with a different multi-arch implementation. So instead of doing the fallback, we ignore the failure if it seems like pkg-config-dpkghook is involved only producing a bunch of warnings to hint at this problem, but otherwise make the tests work again as it is a post-invoke script. References: #824774
2020-07-07Fix test due to display change in ls (coreutils 8.32)David Kalnischkies
The test runs ls on the opened fds and greps the result for 'root root' which is how ls (<= 8.30) used to report user and group for these. Now that Debian contains 8.32 it reports user and group of the process owning them (supposedly). grepping for both unbreaks the test. lr-x------ 1 root root 64 Jul 7 19:07 0 -> 'pipe:[10458045]' lrwx------ 1 root root 64 Jul 7 19:07 1 -> /dev/pts/12 lrwx------ 1 root root 64 Jul 7 19:07 2 -> /dev/pts/12 lr-x------ 1 root root 64 Jul 7 19:07 3 -> /proc/1266484/fd vs (assuming user:group is david:david) lr-x------ 1 david david 64 Jul 7 19:07 0 -> 'pipe:[10458045]' lrwx------ 1 david david 64 Jul 7 19:07 1 -> /dev/pts/12 lrwx------ 1 david david 64 Jul 7 19:07 2 -> /dev/pts/12 lr-x------ 1 david david 64 Jul 7 19:07 3 -> /proc/1266484/fd
2020-07-02Reorder config check before result looping for SRV parsing debugDavid Kalnischkies
It isn't needed to iterate over all results if we will be doing nothing anyhow as it isn't that common to have that debug option enabled.
2020-07-02Reorder config check before checking systemd for non-interactive httpDavid Kalnischkies
If this option is disabled (which it is by default in Debian), we don't have to make the call and the checks around it. Not that it really matters that much as if it would we would be better checking only once.
2020-07-02Dutch program translation updateFrans Spiesschaert
Closes: #963008
2020-07-02Add dependency points in the resolver also to providersDavid Kalnischkies
We were traditionally adding points for some dependency types to the real package, but we should also do it for providers of that package to help the resolver especially if the real package is for some reason not tagged for removal yet/anymore. While at it we ensure that the points are only attributed once for each package as especially with versioned provides a package can nowadays provide another many times and would hence acquire a lot of points.
2020-07-02Filter out impossible solutions for protected propagationDavid Kalnischkies
If the package providing the given solution is tagged already for removal (or at least for "not installing") we can ignore this solution as a possibility as it is not one, which means we can avoid exploring the option and potentially forward the protected flag further if that helps in reducing the possibilities to a single one.
2020-07-02Delay removals due to Conflicts until Depends are resolvedDavid Kalnischkies
Marking a package for removal is fine if we know that we have to remove that package, but if we are in an alternative branch we might not go this route in the end and hence have a package pointlessly marked for removal which isn't questioned later on. We check if we are allowed to remove that package to avoid working on the positive dependencies if not, but we mark them for removal only after all the other dependencies are successfully resolved. In an ideal world we would let the problemResolver do its job on them, but the resolver might decide against doing the removal exploring another option like the next alternative, which might be a good idea, but is not the behaviour we had before, so that is the best we can do for now without changing the resolver drastically.
2020-07-01Merge branch 'patch-1' into 'master'Julian Andres Klode
Minor Catalan grammar typo See merge request apt-team/apt!123
2020-06-30Minor Catalan grammar typoSergio Oller Moreno