From: Michael Tremer Date: Sat, 12 Oct 2024 13:51:42 +0000 (+0000) Subject: jail: Bring back sending the build output to the logger X-Git-Tag: 0.9.30~1082 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8313d3535546afb2a6084c8caddf14c2d150eeab;p=pakfire.git jail: Bring back sending the build output to the logger Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index d790f3d65..c5d6ec907 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -135,8 +135,8 @@ static double pakfire_build_duration(struct pakfire_build* build) { return pakfire_timespec_delta(&now, &build->time_start); } -static int pakfire_build_jail_log_callback(struct pakfire_ctx* ctx, - void* data, int priority, const char* line, size_t length) { +static int pakfire_build_output_callback( + struct pakfire_ctx* ctx, void* data, const char* buffer, size_t length) { struct pakfire_build* build = data; // Get the runtime of the build @@ -150,15 +150,15 @@ static int pakfire_build_jail_log_callback(struct pakfire_ctx* ctx, const unsigned int ms = (unsigned int)(t * 1000.0) % 1000; if (h) - pakfire_ctx_log_condition(ctx, priority, "[%02u:%02u:%02u.%04u] %.*s", h, m, s, ms, (int)length, line); + CTX_INFO(ctx, "[%02u:%02u:%02u.%04u] %.*s", h, m, s, ms, (int)length, buffer); else if (m) - pakfire_ctx_log_condition(ctx, priority, "[ %02u:%02u.%04u] %.*s", m, s, ms, (int)length, line); + CTX_INFO(ctx, "[ %02u:%02u.%04u] %.*s", m, s, ms, (int)length, buffer); else - pakfire_ctx_log_condition(ctx, priority, "[ %02u.%04u] %.*s", s, ms, (int)length, line); + CTX_INFO(ctx, "[ %02u.%04u] %.*s", s, ms, (int)length, buffer); - return 0; + return length; } static int __pakfire_build_setup_repo(struct pakfire* pakfire, @@ -293,7 +293,8 @@ static int pakfire_build_run_script( } // Execute the script - r = pakfire_jail_exec_script(build->jail, script, length, args); + r = pakfire_jail_exec_script(build->jail, script, length, args, + stdin_callback, stdin_data, stdout_callback, stdout_data); if (r) CTX_ERROR(build->ctx, "Script '%s' failed with status %d\n", filename, r); @@ -1046,10 +1047,9 @@ static int pakfire_build_stage(struct pakfire_build* build, goto ERROR; } -#warning We are thworing away the output here. Do we want this? - // Run the script - r = pakfire_jail_exec_script(build->jail, script, strlen(script), NULL); + r = pakfire_jail_exec_script(build->jail, script, strlen(script), NULL, + NULL, NULL, pakfire_build_output_callback, build); if (r) CTX_ERROR(build->ctx, "Build stage '%s' failed with status %d\n", stage, r); diff --git a/src/libpakfire/include/pakfire/jail.h b/src/libpakfire/include/pakfire/jail.h index 0ec24f666..72338a641 100644 --- a/src/libpakfire/include/pakfire/jail.h +++ b/src/libpakfire/include/pakfire/jail.h @@ -84,9 +84,9 @@ int pakfire_jail_run_script(struct pakfire* pakfire, const char* script, const size_t length, const char* argv[], int flags); int pakfire_jail_exec_script(struct pakfire_jail* jail, - const char* script, - const size_t size, - const char* args[]); + const char* script, const size_t size, const char* args[], + pakfire_pty_stdin_callback stdin_callback, void* stdin_data, + pakfire_pty_stdout_callback stdout_callback, void* stdout_data); int pakfire_jail_shell(struct pakfire_jail* jail); int pakfire_jail_ldconfig(struct pakfire* pakfire); diff --git a/src/libpakfire/jail.c b/src/libpakfire/jail.c index 2e668ace1..d4aebb98c 100644 --- a/src/libpakfire/jail.c +++ b/src/libpakfire/jail.c @@ -1551,9 +1551,9 @@ int pakfire_jail_communicate( } int pakfire_jail_exec_script(struct pakfire_jail* jail, - const char* script, - const size_t size, - const char* args[]) { + const char* script, const size_t size, const char* args[], + pakfire_pty_stdin_callback stdin_callback, void* stdin_data, + pakfire_pty_stdout_callback stdout_callback, void* stdout_data) { char path[PATH_MAX]; const char** argv = NULL; FILE* f = NULL; @@ -1612,7 +1612,8 @@ int pakfire_jail_exec_script(struct pakfire_jail* jail, argv[i] = args[i-1]; // Run the script - r = pakfire_jail_exec(jail, argv, 0, NULL); + r = pakfire_jail_communicate(jail, argv, 0, + stdin_callback, stdin_data, stdout_callback, stdout_data); ERROR: if (argv) @@ -1661,7 +1662,7 @@ int pakfire_jail_run_script(struct pakfire* pakfire, goto ERROR; // Execute the command - r = pakfire_jail_exec_script(jail, script, length, argv); + r = pakfire_jail_exec_script(jail, script, length, argv, NULL, NULL, NULL, NULL); ERROR: if (jail)