From: Michael Tremer Date: Fri, 4 Oct 2024 18:09:06 +0000 (+0000) Subject: job: Initialize Pakfire in the child process X-Git-Tag: 0.9.30~1167 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa92a9ecb0648dd45c46672741aa393a1f60a981;p=pakfire.git job: Initialize Pakfire in the child process Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/job.c b/src/libpakfire/job.c index 7fdac057b..171a87b57 100644 --- a/src/libpakfire/job.c +++ b/src/libpakfire/job.c @@ -275,13 +275,44 @@ static int pakfire_job_parent(struct pakfire_job* job) { } static int pakfire_job_child(struct pakfire_job* job) { + struct pakfire* pakfire = NULL; + FILE* conf = NULL; + int r; + // Fetch our PID pid_t pid = getpid(); CTX_DEBUG(job->ctx, "Launched job child as PID %d\n", pid); + // Map the configuration + conf = fmemopen(job->conf, strlen(job->conf), "r"); + if (!conf) { + CTX_ERROR(job->ctx, "Could not map the configuration into memory: %m\n"); + r = -errno; + goto ERROR; + } + + // Create a new Pakfire instance + r = pakfire_create(&pakfire, job->ctx, NULL, job->arch, conf, PAKFIRE_FLAGS_BUILD); + if (r) { + CTX_ERROR(job->ctx, "Could not initialize Pakfire: %m\n"); + r = -errno; + goto ERROR; + } + // XXX TODO - return 1; + for (unsigned int i = 0; i < 5; i++) { + printf("WORK\n"); + sleep(1); + } + +ERROR: + if (pakfire) + pakfire_unref(pakfire); + if (conf) + fclose(conf); + + return r; } /*