Previously, after the version bump to v247, we broke journalctl --grep
as libpcre2 was lazily loaded during runtime using dlopen(3). This
ensures that we have a test case that alerts us when it fails again.
This ensures that all the features that are implemented via dlopen(3)
are available (or explicitly deactivated) by pointing dlopen to the
absolute store path instead of relying on the linkers runtime lookup
code.
All of the dlopen calls have to be handled. When new ones are introduced
by upstream (or one of our patches) those must be explicitly declared,
otherwise the build will fail.
As of systemd version 247 we've seen a few errors like `libpcre2.… not
found` when using e.g. --grep with journalctl. Those errors should
become less unexpected now.
There are generally two classes of dlopen calls. Those that we want to
support and those that should be deactivated / unsupported. This change
enforces that we handle all dlopen calls explicitly. Meaning: There is
not a single dlopen call in the code source tree that we did not
explicitly handle.
In order to do this I introduced a list of attributes that maps from
shared object name to the package that contains them. The package can be
null meaning the reference should be nuked and the shared object will
never be loadable during runtime (because it points at an invalid store
path location).
This package[1] is a replacement for the old phantomjs-integration[2]
which is practically EOL. It is basically used to render PNGs of panels
that triggered an alert in Grafana.
This package internally uses `puppeteer`[3] to control a headless
Chromium instance. Even though puppeteer recommends to use a fixed
revision of `chromium`, I checked that our default `pkgs.chromium` works
fine as well. Also, I don't think it's a good idea to use outdated
browser versions[4].
I used the latest revision from `master` on purpose since compiling the
code with `tsc` from `v2.0` didn't work and I couldn't figure out why.
[1] https://grafana.com/grafana/plugins/grafana-image-renderer
[2] https://grafana.com/blog/2020/05/07/grafana-7.0-preview-new-image-renderer-plugin-to-replace-phantomjs/
[3] https://github.com/puppeteer/puppeteer
[4] currently, puppeteer v2.0.0 is used which recommends revision 706915
(v79.0.3945.130).
This check helps with making sure that we provide all the required
shared libraries to brave. If something is missing, the command will get
ENOENT, otherwise it should terminate normally.
Darwin requires qtmacextra in the buildInputs, otherwise compilation
fails with:
CMake Error at /nix/store/05nmn6v1hrk56zqs61s2awvykha51fx9-qtbase-5.12.7-dev/lib/cmake/Qt5/Qt5Config.cmake:28 (find_package):
By not providing "FindQt5MacExtras.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"Qt5MacExtras", but CMake did not find one.
Could not find a package configuration file provided by "Qt5MacExtras" with
any of the following names:
Qt5MacExtrasConfig.cmake
qt5macextras-config.cmake
Add the installation prefix of "Qt5MacExtras" to CMAKE_PREFIX_PATH or set
"Qt5MacExtras_DIR" to a directory containing one of the above files. If
"Qt5MacExtras" provides a separate development package or SDK, be sure it
has been installed.
Call Stack (most recent call first):
gui/CMakeLists.txt:7 (find_package)
-- Configuring incomplete, errors occurred!
See also "/tmp/nix-build-chiaki-2.0.1.drv-0/chiaki/build/CMakeFiles/CMakeOutput.log".
Chiaki supports the touchpad on DualShock4 controllers when they are
connected via USB and requires libevdev & udev for this. Add both
libraries if chiaki is to be built for a Linux host.