From 8899d1360a189a21439c6adacae3f2f306140e18 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 31 Aug 2023 04:18:05 +0000 Subject: [PATCH] build: Implement custom logging that shows build time Fixes: #13250 - log: Add timestamp for each log line Signed-off-by: Michael Tremer --- src/libpakfire/build.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index a6c71ed0c..194a8a638 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -1393,6 +1393,28 @@ ERROR: return r; } +static int pakfire_build_log_callback(struct pakfire* pakfire, + void* data, int priority, const char* line, size_t length) { + struct pakfire_build* build = data; + char buffer[128]; + int r; + + // Get the runtime of the build + const time_t t = pakfire_build_duration(build); + if (t < 0) + return t; + + // Format the timestamp + r = pakfire_string_format(buffer, "%8ld", t); + if (r < 0) + return r; + + // Pass the message to the upstream logger + pakfire_log_condition(pakfire, priority, 0, "[%s] %s", buffer, line); + + return 0; +} + /* Sets up a new jail for this build */ @@ -1406,6 +1428,9 @@ static int pakfire_build_setup_jail(struct pakfire_build* build) { return r; } + // Configure our custom logging callback + pakfire_jail_set_log_callback(build->jail, pakfire_build_log_callback, build); + // Connect the jail to our cgroup r = pakfire_jail_set_cgroup(build->jail, build->cgroup); if (r) { -- 2.39.5