summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Avoid extra out-of-cache hash table deduplication for package namesJulian Andres Klode2020-01-083-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were de-duplicating package name strings in StoreString, but also deduplicating most of them by them being in groups, so we had extra hash table lookups that could be avoided in NewGroup(). To continue deduplicating names across binary packages and source packages, insert groups for source packages as well. This is also a good first step in allowing efficient lookup of packages by source package - we can extend Group later by a list of SourceVersion objects, or alternatively, simply add a by-source chain into pkgCache::Version. This change improves performance by about 10% (913 to 814 ms), while having no significant overhead on the cache size: --- before +++ after @@ -1,7 +1,7 @@ -Total package names: 109536 (2.191 k) -Total package structures: 118689 (4.748 k) +Total package names: 119642 (2.393 k) +Total package structures: 118687 (4.747 k) Normal packages: 83309 - Pure virtual packages: 3365 + Pure virtual packages: 3363 Single virtual packages: 17811 Mixed virtual packages: 1973 Missing: 12231 @@ -10,21 +10,21 @@ Total distinct descriptions: 149291 (3.583 k) Total dependencies: 484135/156650 (12,2 M) Total ver/file relations: 57421 (1.378 k) Total Desc/File relations: 18219 (437 k) -Total Provides mappings: 29963 (719 k) +Total Provides mappings: 29959 (719 k) Total globbed strings: 226993 (5.332 k) Total slack space: 26,8 k -Total space accounted for: 38,1 M +Total space accounted for: 38,3 M Total buckets in PkgHashTable: 50503 - Unused: 5727 - Used: 44776 - Utilization: 88.6601% - Average entries: 2.65073 + Unused: 5728 + Used: 44775 + Utilization: 88.6581% + Average entries: 2.65074 Longest: 60 Shortest: 1 Total buckets in GrpHashTable: 50503 - Unused: 5727 - Used: 44776 - Utilization: 88.6601% - Average entries: 2.44631 - Longest: 10 + Unused: 4649 + Used: 45854 + Utilization: 90.7946% + Average entries: 2.60919 + Longest: 11 Shortest: 1
* Merge branch 'pu/macro-cleanup' into 'master'Julian Andres Klode2020-01-075-38/+11
|\ | | | | | | | | Pu/macro cleanup See merge request apt-team/apt!91
| * Only define likely/unlikely if APT_COMPILING_APT setJulian Andres Klode2020-01-072-0/+5
| | | | | | | | This ensures that we do not leak simple words like that.
| * Remove various unused macros like MAX/MIN/ABS/APT_CONSTJulian Andres Klode2020-01-071-33/+0
| | | | | | | | | | We don't use them, APT_CONST is APT_PURE now, and MAX/MIN/etc are available as proper templates in the C++ standard library.
| * Rename _count() macro to APT_ARRAY_SIZE()Julian Andres Klode2020-01-074-5/+6
|/
* Merge branch 'pu/gtest-fixes' into 'master'Julian Andres Klode2020-01-074-49/+97
|\ | | | | | | | | Pu/gtest fixes See merge request apt-team/apt!90
| * debian/rules: Adjust for -DWITH_TESTS=OFF in nocheck buildJulian Andres Klode2020-01-071-1/+8
| | | | | | | | Gbp-Dch: ignore
| * gtests: Fix netrc parser test regression from https-only changesJulian Andres Klode2020-01-071-24/+57
| | | | | | | | | | | | We missed that because the CI never ran GTests, because it did not find the GTest library and failed silently (until the previous commit).
| * Add support for GTest 1.9, do not fail silently if its missingJulian Andres Klode2020-01-072-24/+32
| | | | | | | | | | | | Require passing -DWITH_TESTS=OFF to CMakeList to disable unit tests, rather than ignoring them if GTest cannot be found; which just happened on CI...
* | Merge branch 'patch-1' into 'master'Julian Andres Klode2020-01-071-2/+2
|\ \ | |/ |/| | | | | Fix typo in README.md See merge request apt-team/apt!87
| * Fix typo in README.mdDenis Mosolov2020-01-071-2/+2
|/
* Avoid #define _error, use anonymous C++ struct insteadJulian Andres Klode2020-01-072-1/+5
| | | | | | | | | | | | Replace the macro with an anonymous struct that provides an inline operator->() returning the _error pointer. This change is ABI compatible, and the inline macro is not exported. We should consider if we want to avoid the function call and directly export the thread_local variable instead, when we do break ABI. Closes: #948338
* Drop g++ build-dependency to help crossbuildingDavid Kalnischkies2020-01-051-1/+0
| | | | | | | | | Introduced to help with an ABI break this is now long enough in the past that we can go back to not explicitly depend on g++ anymore as it is part of build-essential. References: f63b3e01e436a8c0b4711b69a1a8794161e4c5a7 Closes: #948201
* satisfy: Fix segmentation fault when called with empty argumentJulian Andres Klode2019-12-062-1/+5
| | | | | | | | | apt satisfy "" caused a segmentation fault because we were iterating over the characters, checking if the next character was the end of the string; when it could also be the current character. Instead, check whether the next character is before the end of the string, rather than identical to the end.
* gitlab-ci: Use ccacheJulian Andres Klode2019-12-051-8/+13
|
* gitlab-ci: Do not do coverageJulian Andres Klode2019-12-041-6/+4
|
* Release 1.9.51.9.5Julian Andres Klode2019-12-0260-170/+1838
|
* Merge branch 'master' into 'master'Julian Andres Klode2019-12-021-1/+1
|\ | | | | | | | | Fix a mistake in man french translation See merge request apt-team/apt!83
| * Fix a mistake in man french translationAnthony Papillon2019-11-281-1/+1
| |
* | Merge branch 'pu/patterns-phase2' into 'master'Julian Andres Klode2019-12-024-5/+283
|\ \ | | | | | | | | | | | | Pu/patterns phase2 See merge request apt-team/apt!85
| * | patterns: Add ?sectionJulian Andres Klode2019-11-264-2/+22
| | |
| * | patterns: Add ?all-versionsJulian Andres Klode2019-11-264-0/+27
| | |
| * | patterns: Implement ?narrow(...), as ?any-version(?and(...))Julian Andres Klode2019-11-263-1/+13
| | | | | | | | | | | | | | | This is pure syntactic sugar - ?narrow does not exist in the abstract syntax.
| * | patterns: Add ?any-versionJulian Andres Klode2019-11-264-0/+38
| | |
| * | patterns: Add ?originJulian Andres Klode2019-11-254-0/+26
| | |
| * | patterns: Add ?archiveJulian Andres Klode2019-11-254-0/+25
| | |
| * | patterns: Add ?source-name and ?source-versionJulian Andres Klode2019-11-254-2/+39
| | |
| * | patterns: Add ?versionJulian Andres Klode2019-11-254-0/+42
| | |
| * | patterns: Add base class for regular expression matchingJulian Andres Klode2019-11-252-0/+51
| | |
* | | Merge branch 'pu/netrc-https' into 'master'Julian Andres Klode2019-12-024-15/+73
|\ \ \ | |_|/ |/| | | | | | | | netrc: Restrict auth.conf data to https by default See merge request apt-team/apt!84
| * | netrc: Restrict auth.conf entries to https by defaultJulian Andres Klode2019-12-024-15/+73
|/ / | | | | | | | | | | | | | | | | | | | | | | This avoids downgrade attacks where an attacker could inject Location: http://private.example/ and then (having access to raw data to private.example, for example, by opening a port there, or sniffing network traffic) read the credentials for the private repository. Closes: #945911
* | Remove failed trusted signature instead of index on IMS hitDavid Kalnischkies2019-11-272-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While passing the combi Release and Release.gpg to the gpgv method for verification the filename of Release is placed where usually Release.gpg is assumed in the rest of the code. The "usual" cases like passing verification and failing verification ending in an error are taking care of this, but the code path dealing with a failed verification, but ignoring said failure (e.g. due to trusted=yes) was not which results in the wrong file being removed later on (in case the index happens to be unmodified since the last update call) leading us into the abyss of strange failures (fixed in the previous commit) were nothing should have changed. This is not a security issue in this form as the repository needs to fail verification & the user forcing apt to ignore the failure and carry on anyhow. It does show however how complicated the code and its various interconnected paths can become. Reported-By: Val "pinkieval" Lorentz on IRC
* | Use correct filename on IMS-hit reverify for indicesDavid Kalnischkies2019-11-272-11/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If we have no old Release file, but old indices we can't compare hashsums with the new Release file and hence must request the indices again and have to react to IMS hits if they didn't change. We used to symlink the old index file to the partial directory, but that usually meant that we linked an uncompressed file to a compressed file, which not all uncompressors can deal with transparently resulting in strange failures. We could do without the symlink, but that would require changes in the codepaths dealing with failure as they would rename the file to FAILED.
* | Fix skip-bug-601016-description-translation testDavid Kalnischkies2019-11-261-6/+7
| | | | | | | | | | | | | | | | | | | | | | Skipped tests do not age very well as changes to the infrastructure go by unnoticied. In this case we are fetching Translation files now differently meaning only if mentioned in Release file, which broke this test. As it makes use of LC_ALL and utf8 locales it can't really be reenabled, but it might be able to serve as an example for others and hence at least deserves being fixed. Gbp-Dch: Ignore
* | Fix some style warnings from cppcheckDavid Kalnischkies2019-11-265-29/+31
| | | | | | | | | | | | | | | | Unused variable, std::algorithms instead of raw for-loops. There should be no observeable difference in behaviour. Reported-By: cppcheck Gbp-Dch: Ignore
* | German manpage translation updateChris Leick2019-11-261-57/+62
| |
* | Merge branch 'fix-progressbar-size' into 'master'Julian Andres Klode2019-11-253-1/+51
|\ \ | |/ |/| | | | | Fix progress bar width for multibyte charsets See merge request apt-team/apt!81
| * Fix progress bar width for multibyte charsetsАлексей Шилин2019-11-251-1/+1
| | | | | | | | | | | | | | | | When using locale in which symbols occupy more than 1 byte (for example, ru_RU.UTF-8), the progress bar width was calculated incorrectly because std::string::size() returns the number of bytes rather than the number of actual characters. Use the newly introduced APT::String::DisplayLength() to calculate the width instead.
| * strutl: Add APT::String::DisplayLength() functionАлексей Шилин2019-11-252-0/+50
|/ | | | | | Returns string length, but unlike std::string::size() it honors multibyte characters. This allows to properly calculate visible sizes of console messages.
* Merge branch 'readme-anonscm' into 'master'Julian Andres Klode2019-11-251-1/+1
|\ | | | | | | | | README.md: fix dead anonscm link See merge request apt-team/apt!78
| * README.md: fix dead anonscm linkAnatoly Borodin2019-10-301-1/+1
| | | | | | | | https://anonscm.debian.org/git/apt/apt.git/tree/doc/style.txt is not available anymore.
* | Merge branch 'search-in-all-translations' into 'master'Julian Andres Klode2019-11-254-49/+228
|\ \ | |/ |/| | | | | Search in all available description translations See merge request apt-team/apt!79
| * Search in all available description translationsАлексей Шилин2019-11-254-49/+228
|/ | | | | | | | | | | | When multiple translations of package descriptions are available, perform search in all of them. It allows using search patterns in any of the configured languages. Previously, only the first available translation was searched. As the result, patterns in e.g. English never matched packages which had their descriptions translated into local language. Closes: #490000
* Parse 'show' arguments for the 'info' alias as wellJulian Andres Klode2019-09-272-2/+78
| | | | | | | We recently made info an alias for show, but we did not change the command-line parser to work around it. LP: #1843812
* Release 1.9.41.9.4Julian Andres Klode2019-09-195-6/+19
|
* Fix use of GTest to adjust for GTest 1.9Julian Andres Klode2019-09-191-1/+1
| | | | | | GTest 1.9 uses a variable defined in the parent directory, thus failing to configure. Configure the project in the parent directory instead.
* Pass --abort-after=1 to dpkg when using --force-dependsJulian Andres Klode2019-09-192-0/+30
| | | | | | | | | | Using --force-depends causes dpkg to continue removing packages a package depends upon even if that package fails to be removed, because dpkg turns off all sanity checks. So we gotta tell dpkg to stop immediately if there's an error removing stuff. Closes: #935910 LP: #1844634
* srvrec: Use re-entrant resolver functionsJulian Andres Klode2019-08-222-3/+8
| | | | | This should probably make those functions thread-safe, which might be useful for some external users.
* apt.systemd.daily: Do not numerically check if intervals equal 0Julian Andres Klode2019-08-221-8/+8
| | | | | | | | Commit 1d9e29c9e2a5591b42a99a721b901fc003ed9149 added support for suffixes to to intervals, but did not adjust the code to actually support them by replacing -eq with =. LP: #1840995
* CMake: Produce a fatal error if triehash could not be foundJulian Andres Klode2019-08-211-0/+4
|