Martchus
7c627e6a12
Use `auto` in `getPackages()`
2022-03-22 21:03:56 +01:00
Martchus
56afe0c710
Fix returning newly retrieved AUR packages
2022-03-22 21:03:01 +01:00
Martchus
d163f56abf
Log whether `io_uring` is used/configured
2022-03-20 17:37:33 +01:00
Martchus
d5e2b5489d
Provide filename for artefact downloads
2022-03-15 23:22:34 +01:00
Martchus
69a81f7583
Remove unused function declaration
2022-03-15 22:27:50 +01:00
Martchus
83c7426fce
Allow specifying output path for license info
2022-03-15 22:23:34 +01:00
Martchus
13cccd3bc9
Improve creating license info
2022-03-15 01:10:15 +01:00
Martchus
f87829ba85
Save state after reloading configuration
2022-03-15 01:07:51 +01:00
Martchus
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
Martchus
b0234ff02e
Improve MIME-type when serving artefacts
2022-03-15 00:21:08 +01:00
Martchus
59cd593a3b
Display template name
2022-03-12 22:46:42 +01:00
Martchus
70a98ffedc
Make name of build action to execute custom command shorter
2022-03-12 21:37:59 +01:00
Martchus
ac0d64fe3e
Allow everyone to see build action details
2022-03-10 23:19:02 +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
c633eea607
Add any-packages containing binaries as problem when checking for errors
2022-03-03 23:08:14 +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
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
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
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
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
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
b3b396df5f
Allow ignoring copying errors due to existing files when moving packages
2022-02-16 19:47:25 +01:00
Martchus
8949b5f3c1
Fix resetting running build actions on server startup
2022-02-16 19:17:29 +01:00
Martchus
557fd1a738
lmdb: Use lmdb to store build actions
2022-02-13 21:04:54 +01:00
Martchus
4fbe3df095
Allow enabling Boost.Asio's support for using `io_uring`
...
It won't likely do much regarding file handling as code is currently still
using `boost::asio::posix::stream_descriptor` or Boost.Beast's file
handling (which uses blocking I/O). I suppose one needs to use the new file
API described here under "Asio 1.22.0 / Boost 1.78":
https://www.boost.org/doc/libs/1_78_0/doc/html/boost_asio/history.html
2022-02-05 20:31:11 +01:00
Martchus
e582d5f406
Remove useless blank line
2022-02-03 22:07:22 +01:00
Martchus
4ed645be94
Fix handling of head requests
...
* Fix condition for skipping
* Open destination file only if the request is not skipped (when doing a
head request first)
2022-02-02 21:18:07 +01:00
Martchus
66f59fecb9
Make storing lib deps more efficient and allow for intermediate reads
2022-01-31 21:32:07 +01:00
Martchus
45922b47ec
lmdb: Allow configuring cache limit
2022-01-26 00:41:53 +01:00
Martchus
d4d187463a
Fix problems with global locks
...
* Aquire the mutex before setting `m_exclusivelyOwned = false`; otherwise
it might be set after `lock()` has checked it but before `lock()` has
entered `wait()` leading to a deadlock
* Check state again after `wait()` because it may also be unblocked
"spuriously" so it isn't guaranteed that the state will have actually
changed after unblocking
2022-01-25 22:49:20 +01:00
Martchus
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
Martchus
300f74fb10
lmdb: Open LMDB file after restoring cache so DBs added from cache have the storage initialized
2022-01-25 00:01:59 +01:00