Commit Graph

272 Commits

Author SHA1 Message Date
Martchus 70a98ffedc Make name of build action to execute custom command shorter 2022-03-12 21:37:59 +01:00
Martchus 6437c7eb42 Avoid concurrent AJAX requests and show loading indication 2022-03-12 18:53:46 +01:00
Martchus ac0d64fe3e Allow everyone to see build action details 2022-03-10 23:19:02 +01:00
Martchus 30e3d0343e Fix condition in `Package::isPkgInfoFileOrBinary()` 2022-03-10 23:04:18 +01:00
Martchus 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
Martchus 14e6698628 Fix setting build actions table width to 100 % 2022-03-08 23:44:36 +01:00
Martchus 7814b8a336 Avoid installing static library of lmdb-safe 2022-03-08 00:47:38 +01:00
Martchus 55f081153e Add command to delete invalid build actions from DB 2022-03-07 23:36:48 +01:00
Martchus 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
Martchus afc61bcad6 Speed up AUR updates using `PackageUpdater` 2022-03-05 16:10:33 +01:00
Martchus 8fdf7bfb04 Print certain resource limits on server startup 2022-03-05 12:34:26 +01:00
Martchus 9acd10fa4c Catch `boost::exception`s 2022-03-05 12:34:05 +01:00
Martchus 9b6be51dd3 Allow reloading library dependencies of specific packages 2022-03-04 21:51:25 +01:00
Martchus 4293eb92bf Ignore libs for cross-compilation when checking any packages for binaries
Not really generic yet (e.g. doesn't cover `aarch64-linux-gnu-glibc`) but
good enough for now.
2022-03-04 21:50:56 +01:00
Martchus 1f3abd5596 Distinguish Android libs from GNU/Linux libs 2022-03-04 21:48:28 +01:00
Martchus 3d3ba1457a Adapt tests 2022-03-04 09:30:19 +01:00
Martchus c633eea607 Add any-packages containing binaries as problem when checking for errors 2022-03-03 23:08:14 +01:00
Martchus 8e18b4747f Assume the filename as library name for ELF libraries without soname field 2022-03-03 23:00:16 +01:00
Martchus 6456273951 Fix early return for special handling of `mingw-w64-crt` 2022-03-03 22:43:31 +01:00
Martchus cbfdf2236e Skip DLLs provided by Windows when checking for unresolvable DLLs 2022-03-03 22:40:48 +01:00
Martchus c2e7f40767 Fix typos 2022-03-01 00:43:06 +01:00
Martchus 79123e4cd9 Improve error handling of server
* Return with non-zero exit code when an exception occurred
* Handle exceptions when terminating the service
2022-03-01 00:39:50 +01:00
Martchus 659a8b0e8b Update xterm.js to 4.18.0 2022-03-01 00:30:48 +01:00
Martchus 02bf5faba4 Remove output route from CLI 2022-03-01 00:28:08 +01:00
Martchus b6901afcc2 Add memory limits to systemd service for io_uring 2022-02-27 00:07:49 +01:00
Martchus e5f0a36730 Update README.md 2022-02-26 23:16:25 +01:00
Martchus 0343685910 Adapt tests for limiting 2022-02-25 23:18:26 +01:00
Martchus 67fa8def0b Name additional threads 2022-02-25 23:09:46 +01:00
Martchus 2071327a71 Fix building packages using signed git repositories as source 2022-02-25 23:09:16 +01:00
Martchus 22cfb4bb29 Use std::string_view when parsing pkg info 2022-02-25 23:08:12 +01:00
Martchus fd35aa0da6 Parse sources and size from pkg info 2022-02-25 23:07:55 +01:00
Martchus 90ff9678fe Limit results returned by the API for better scalability 2022-02-25 00:29:43 +01:00
Martchus ff7f039519 Ensure problems of repos with different archs but the same name aren't mixed up 2022-02-22 22:50:51 +01:00
Martchus 382169ab6e Fix varoius build action related problems
* Fix crashes in some situations
* Fix aborting reloading library dependencies
2022-02-22 22:49:40 +01:00
Martchus 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
Martchus 5c62014b3b Fix variable name in fallback code when BOOST_ASIO_HAS_FILE 2022-02-22 20:22:00 +01:00
Martchus a25db1f9e0 Log usage of `io_uring` 2022-02-22 00:08:21 +01:00
Martchus 839a4b0831 Fix wrong variable name in `buildactionlivestreaming.cpp` 2022-02-22 00:05:35 +01:00
Martchus 3dfdce58af lmdb: Update subrepo 2022-02-21 23:49:09 +01:00
Martchus 8ea2f5fd62 Reintroduce cache file as it is still required for "lastUpdate" for DBs
Maybe it makes more sense to use LMDB for this as well. On the other hand
it is an easy way of keeping the remaining state persistent.
2022-02-20 20:17:42 +01:00
Martchus 9c4f0277bd Unlock output lock early
The following things are read-only or guarded by other mutex.
2022-02-20 19:51:46 +01:00
Martchus bdbfd42e5e Avoid package object being reused after 3d7310af3 2022-02-20 19:50:44 +01:00
Martchus d11ba43bf0 lmdb: Avoid getting packages with empty name, can lead to exception 2022-02-20 19:28:44 +01:00
Martchus 334bb1faa9 Use io_uring for async file I/O 2022-02-20 18:44:07 +01:00
Martchus 8115721913 Fix handling error computing db order when reloading dependencies 2022-02-20 00:18:49 +01:00
Martchus 93afb3883d Write build action "output" log to a logfile like for sub-processes 2022-02-20 00:11:23 +01:00
Martchus a7de520549 Use lazy-deserialization and package cache when searching in package name 2022-02-19 00:11:59 +01:00
Martchus 3d7310af30 lmdb: Get `std::shared_ptr` directly from iterator 2022-02-18 19:23:00 +01:00
Martchus 68c11be6bb Call `addDepsAndProvidesFromOtherPackage` *before* clearing existing packages 2022-02-16 19:54:21 +01:00
Martchus b3b396df5f Allow ignoring copying errors due to existing files when moving packages 2022-02-16 19:47:25 +01:00