]> git.ipfire.org Git - pakfire.git/commitdiff
jail: Bring back sending the build output to the logger
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 12 Oct 2024 13:51:42 +0000 (13:51 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 12 Oct 2024 13:51:42 +0000 (13:51 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/build.c
src/libpakfire/include/pakfire/jail.h
src/libpakfire/jail.c

index d790f3d655f320a0809b96172a5ac3ec4db40080..c5d6ec90766292dc0922f57289a22054293f42a0 100644 (file)
@@ -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);
 
index 0ec24f666d7723523239c7f44e55b45067c17dba..72338a641bb91af25edf14ec60af3b0fbec1459f 100644 (file)
@@ -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);
index 2e668ace19224f270c1d745232003fd5be3a4dfa..d4aebb98c631af80439a1084025b4a9f535acf14 100644 (file)
@@ -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)