Proposal to enable logging under non-systemd linux distros
Dear webkit maintainers, I am a contributor to postmarketos/alpine linux. We recently bumped into some runtime crashes in webkit2gtk which were very hard to debug due to the lack of logging. The reason for the lack of logging seems to be that alpine configures webkit2gtk with -DPORT=GTK -DUSE_SYSTEMD=OFF and then the USE_JOURNALD macro does not get set. However, in systems like alpine which do not use systemd, it is common that a compatible logind, elogind[1], be used. When this is the case, then the current functions used for logging to systemd's journal are perfectly compatible. To make sure it works, I have create a small patch/hack to test it, which compiled in a system with elogind instead of systemd USE_SYSTEMD=ON: diff -ru a/Source/cmake/FindSystemd.cmake b/Source/cmake/FindSystemd.cmake --- a/Source/cmake/FindSystemd.cmake +++ b/Source/cmake/FindSystemd.cmake @@ -68,6 +68,11 @@ HINTS ${PC_SYSTEMD_LIBDIR} ${PC_SYSTEMD_LIBRARY_DIRS} ) +find_library(Systemd_LIBRARY + NAMES ${Systemd_NAMES} elogind + HINTS ${PC_SYSTEMD_LIBDIR} ${PC_SYSTEMD_LIBRARY_DIRS} +) + include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Systemd FOUND_VAR Systemd_FOUND I would be happy to contribute a decent patch, but as it would modify the parameters available for distros to configure, I have some doubts about which would be the best way to proceed. I could see two options: - Create a new configuration option (USE_ELOGIND), most likely muplicating most of systemd cmake code. - Rename USE_SYSTEMD to USE_JOURNALD and have a conditional check which looks for elogind if libsystemd is not found, similar to the hack I used for proof-testing. My question is, which of these two options would be best suitable? If none of them is, which would be the better way to add the possibility to configure webkit2gtk using elogind? Best regards and thank you very much for your time, Pablo Correa Gómez. [1] https://github.com/elogind/elogind
On Wed, Oct 20 2021 at 02:07:56 AM +0200, Pablo Correa Gomez via webkit-dev <webkit-dev@lists.webkit.org> wrote:
- Rename USE_SYSTEMD to USE_JOURNALD and have a conditional check which looks for elogind if libsystemd is not found, similar to the hack I used for proof-testing.
This one! Do this one! We don't need two different build options for systemd vs. elogind, when all we really care about is whether the journald API is available. Michael P.S. (We might also consider adding an environment variable to redirect all log messages to stderr. This is *almost* possible now after https://trac.webkit.org/changeset/283469/webkit, but requires more playing with the #if guards. Don't worry about this if you're not interested in working on it. I just mention it in case that sounds like your idea of an exciting project. ;)
On Tue, 2021-10-19 at 19:32 -0500, Michael Catanzaro wrote:
On Wed, Oct 20 2021 at 02:07:56 AM +0200, Pablo Correa Gomez via webkit-dev <webkit-dev@lists.webkit.org> wrote:
- Rename USE_SYSTEMD to USE_JOURNALD and have a conditional check which looks for elogind if libsystemd is not found, similar to the hack I used for proof-testing.
This one! Do this one! We don't need two different build options for systemd vs. elogind, when all we really care about is whether the journald API is available.
Thank you very much! I opened a bug and sent a patch: https://bugs.webkit.org/show_bug.cgi?id=232080 I apologize if there any obvious bug, first time contributing to this project and I am still a bit lost.
Michael
P.S. (We might also consider adding an environment variable to redirect all log messages to stderr. This is *almost* possible now after https://trac.webkit.org/changeset/283469/webkit, but requires more playing with the #if guards. Don't worry about this if you're not interested in working on it. I just mention it in case that sounds like your idea of an exciting project. ;)
Unfortunately this a bit far beyond what I can do. But sounds like a great idea if it ever gets implemented :) Thank you very much for the good work in this project! Pablo Correa Gómez.
participants (2)
-
Michael Catanzaro
-
Pablo Correa Gomez