f5394db6b1
Avoid crash when searching for empty dependency/library
2022-03-20 17:21:41 +01:00
13cccd3bc9
Improve creating license info
2022-03-15 01:10:15 +01:00
af66549d87
Avoid possibly accessing packageCacheDirs when it is empty
2022-03-15 01:08:19 +01:00
11f1849fde
Keep local pkg paths deduced from pacman config
...
It makes the setup easier and shouldn't hurt otherwise.
2022-03-15 01:07:36 +01:00
0e04235d0e
Generate meaningful error message if path for "licenses" package not configured
2022-03-14 01:07:26 +01:00
30e3d0343e
Fix condition in Package::isPkgInfoFileOrBinary()
2022-03-10 23:04:18 +01:00
6699bfa49e
lmdb: Avoid storing empty keys possibly leading to MDB_BAD_VALSIZE
...
This might prevent errors like:
```
Unable to parse retrieved database file for "community-staging@x86_64": Getting data: MDB_BAD_VALSIZE: Unsupported size of key/DB name/data, or wrong DUPFIXED size
```
2022-03-10 22:45:11 +01:00
7814b8a336
Avoid installing static library of lmdb-safe
2022-03-08 00:47:38 +01:00
7ade757c8d
Avoid locking whole config when updating DBs
...
* Only lock the config for writing the reloading the config file
* Make sure all write operations to the database acquire an "update mutex"
to ensure only one write operation happens at a time
* Do *not* acquire any additional locks when reading from a database as it
should be safe to do so even when a write operation happens because
* LMDB read and write transactions can happen at the same time
* The package cache has its own mutex anyways
* Write ops to the package cache try to lock the "update mutex" to
prevent writing "old" data to the cache during updates
* Make "lastUpdate" atomic to avoid locking the config when accessing it
2022-03-05 18:55:52 +01:00
1f3abd5596
Distinguish Android libs from GNU/Linux libs
2022-03-04 21:48:28 +01:00
3d3ba1457a
Adapt tests
2022-03-04 09:30:19 +01:00
8e18b4747f
Assume the filename as library name for ELF libraries without soname field
2022-03-03 23:00:16 +01:00
6456273951
Fix early return for special handling of mingw-w64-crt
2022-03-03 22:43:31 +01:00
cbfdf2236e
Skip DLLs provided by Windows when checking for unresolvable DLLs
2022-03-03 22:40:48 +01:00
c2e7f40767
Fix typos
2022-03-01 00:43:06 +01:00
22cfb4bb29
Use std::string_view when parsing pkg info
2022-02-25 23:08:12 +01:00
fd35aa0da6
Parse sources and size from pkg info
2022-02-25 23:07:55 +01:00
90ff9678fe
Limit results returned by the API for better scalability
2022-02-25 00:29:43 +01:00
9e15129d9d
Ignore null-dereference warning
...
It is about
```
return result_type{ storageEntry.id, storageEntry.ref.relatedStorage };
```
but it isn't clear why the compiler thinks there's a problem.
2022-02-22 22:46:53 +01:00
bdbfd42e5e
Avoid package object being reused after 3d7310af3
2022-02-20 19:50:44 +01:00
d11ba43bf0
lmdb: Avoid getting packages with empty name, can lead to exception
2022-02-20 19:28:44 +01:00
a7de520549
Use lazy-deserialization and package cache when searching in package name
2022-02-19 00:11:59 +01:00
3d7310af30
lmdb: Get std::shared_ptr
directly from iterator
2022-02-18 19:23:00 +01:00
68c11be6bb
Call addDepsAndProvidesFromOtherPackage
*before* clearing existing packages
2022-02-16 19:54:21 +01:00
557fd1a738
lmdb: Use lmdb to store build actions
2022-02-13 21:04:54 +01:00
3c4f81bd55
lmdb: Declare use of lmdb on level of lmdb-safe
2022-02-05 21:52:20 +01:00
ff8b644221
Avoid redundant code in PackageUpdaterPrivate::submit() applying previous commit in all versions
2022-02-04 17:57:11 +01:00
e5a3b5f311
Fix accidentally removing dependency from index when already provided by existing package
2022-02-03 22:10:22 +01:00
90379678ad
Improve error handling when opening archive
...
* Treat an empty archive buffer/file as error as this should never happen
and it is better to fail early than replacing existing data with nothing
* Query error message also when opening archive from file
2022-02-02 21:16:56 +01:00
d1d65dac80
Use CacheRef(storage, entry)
c'tor as it is generally preferred
...
Passing any string here is more likely a mistake, see previous commit
2022-02-01 22:59:09 +01:00
2a256e6ac1
Fix using dangling ref of package name as hash key
2022-02-01 22:57:13 +01:00
3f9f5eae3f
Avoid exceeding txn limit when pulling deps by avoiding recursion
2022-02-01 21:51:19 +01:00
82eaae5d36
Remove unused object
2022-01-31 21:39:57 +01:00
66f59fecb9
Make storing lib deps more efficient and allow for intermediate reads
2022-01-31 21:32:07 +01:00
162f56c5e3
Fix passing around different versions of PackageSpec
...
The way this is passed has gotten a bit inconsistent; let's just make it
compatible both ways.
2022-01-31 21:32:07 +01:00
92f83fadb6
Fix/simplify move c'tor/assignment of Database
2022-01-31 20:48:02 +01:00
eafa797262
lmdb: Avoid installing lmdb-safe when building it as part of this project
...
* Build lmdb-safe always as static library
* Disable install targets of lmdb-safe
2022-01-30 21:11:39 +01:00
ecf25ca260
lmdb: Build lmdb-safe as own CMake project/library
2022-01-30 01:28:03 +01:00
cd98c39c54
lmdb: Test clearing all packages
2022-01-26 00:47:12 +01:00
0e61a726e1
Set lastUpdate
to zero when clearing packages
...
Since reloading packages is now avoided clearing packages should not itself
count as update as it would prevent loading packages again.
2022-01-26 00:46:36 +01:00
66d3e7b301
lmdb: Remove unused function
2022-01-26 00:44:07 +01:00
45922b47ec
lmdb: Allow configuring cache limit
2022-01-26 00:41:53 +01:00
218dfecf56
Avoid loading databases when modification date is <= last update
...
* Do HTTP head request first when loading database from mirror to avoid
downloading the full database all the time
* Use the last modification date of the local database file because with
the persistent storage even local database reloads became a bit expensive
2022-01-25 00:13:10 +01:00
fe09463b0a
lmdb: Fix replacing existing packages when updating package via cache
2022-01-25 00:04:25 +01:00
26f787fb42
lmdb: Do not make lmdb a public dependency as it is only used within libpkg
2022-01-23 19:47:28 +01:00
f088e54c61
lmdb: Use package cache when querying packages for dependencies
...
* Use package cache when querying packages for dependencies or library
names
* Avoid manual instantiations of `std::shared_ptr<Package>`
2022-01-21 20:35:43 +01:00
fcdd4fa7b3
lmdb: Fix warning about type conversion
2022-01-21 20:29:52 +01:00
9af3e4783f
lmdb: Remove obsolete code
2022-01-21 20:29:25 +01:00
f73753792c
lmdb: Use caching when finding package via ID
2022-01-20 23:33:02 +01:00
231571f2d1
lmdb: Generalize caching to be able to use it for other types than packages
2022-01-19 23:33:07 +01:00