Commit Graph

168 Commits

Author SHA1 Message Date
Martchus c155176098 Fix missing build date in package search
* Avoid using buildDate of PackageInfo in favor of the same field in
  PackageBase
    * PackageInfo::buildDate should be removed on the next breaking change
* Do not really use the deprecated attribute because it is still used by
  (de)serialization code until it is removed for good
2022-06-08 22:44:58 +02:00
Martchus 94c4b8addc Improve misleading test name 2022-05-31 21:34:20 +02:00
Martchus 55c7c62c7c Speed up returning build actions table by avoiding deserializing whole obj 2022-05-31 20:54:02 +02:00
Martchus 645bb0fe54 Use arch-specific sub-directory within cache dir when conducting build 2022-05-31 20:27:42 +02:00
Martchus f2902f1d08 Apply clang-format 2022-05-31 20:13:21 +02:00
Martchus ecebf9fbde Fix showing arch of packages after optimization
* Move the binary package arch truly into the base package
2022-05-31 20:13:15 +02:00
Martchus b74392c34d Speed up deserialization when serving providing packages as well 2022-05-31 19:40:12 +02:00
Martchus 68d67f543f Refactor to optimize deserialization of base-data
* Break backwards compatibility
* Allow to deserialize only base-data of packages and build
  actions to potentially speed up showing tables
* Speed up package search in many cases by only deserializing
  base-data (unless details are actually wanted)
2022-05-31 19:04:57 +02:00
Martchus ae44624989 Rebuild package DBs as well when fixing DBs 2022-05-15 00:32:46 +02:00
Martchus 40cfe9883c Ensure there are no more leftovers in "clean-repository-" DBs 2022-05-15 00:07:39 +02:00
Martchus f37739ec07 Avoid compilation error with GCC 12
Make operator<< for iteratable objects visible prior to call site like it
is already done in other places.
2022-05-12 21:01:58 +02:00
Martchus 438fccd6cd Avoid fatal warning about potential null pointer deref from GCC 12
It is about code included from Boost.Asio (some io_uring related code) so
let's just not treat it as fatal error.
2022-05-12 20:45:25 +02:00
Martchus 4c98887b02 Fix warning about possibly unused value 2022-05-12 20:33:23 +02:00
Martchus 5a6d68b318 Fix using files DB in CleanRepository 2022-05-07 01:59:14 +02:00
Martchus c2d5e2f749 Use DB path when checking timestamps in repo cleanup
Otherwise it can break if files DBs are used.
2022-05-02 22:23:35 +02:00
Martchus 1950619f21 Add link to UI in root page 2022-05-01 22:21:42 +02:00
Martchus e343b3ca44 Split `ResourceUsage` into `MemoryUsage` and setup specific stats 2022-04-24 18:25:22 +02:00
Martchus 142f6466ae Show resource usage in UI 2022-04-23 19:56:22 +02:00
Martchus a780b26ef6 Log package cache size on startup 2022-04-20 22:47:29 +02:00
Martchus 26caa78956 Reduce memory usage when loading packages
* Avoid creation of map with all archive contents; instead parse packages
  while walking though the archive
* Avoid instantiation of std::string in come cases (using std::string_view)
* Reuse libarchive's archive entry when walking though archive
* Use visitor-based database parser in all places to avoid intermediate big
  array with all package objects
2022-04-20 22:47:10 +02:00
Martchus 2ca6ce1eec Prevent crash in package search when index is broken 2022-04-19 00:24:31 +02:00
Martchus 1f3f0b0df1 Avoid high memory usage when reloading database
Especially when enabling files DBs it is quite problematic to store all
package objects of a database within one big array. This change avoids the
array and instead adds the packages directly. The disadvantage is that
clearing the database isn't as simple anymore.
2022-04-19 00:23:46 +02:00
Martchus edb014011c Make package search more efficient
* Avoid keeping list of all packages in memory by pushing each package
  directly to the JSON array
* Avoid check for database before pushing each package; do it only before
  reaching the next database
* Remove no longer required functions
2022-04-17 23:39:25 +02:00
Martchus 4578b30ea2 Remove hard-coded build directories in test data 2022-04-15 19:58:35 +02:00
Martchus eae8af6571 Avoid big build action IDs by reusing older/lower ones 2022-04-15 19:20:01 +02:00
Martchus e15f65ac16 Extend tests for conducting build 2022-04-07 23:18:14 +02:00
Martchus 08421fa719 Don't rely on local pkg dir when reloading library deps
Since 11f1849fde the cache dir is also set as local pkg dir
so we cannot rely on packages really existing there.
2022-04-07 21:35:05 +02:00
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