From: Michael Tremer Date: Thu, 26 Jun 2025 14:58:38 +0000 (+0000) Subject: job: Create a directory for the packages X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8f19ae57a85243442343391a4f38511bff725213;p=pakfire.git job: Create a directory for the packages Signed-off-by: Michael Tremer --- diff --git a/src/pakfire/job.c b/src/pakfire/job.c index 8fc6ad07..b6a39e94 100644 --- a/src/pakfire/job.c +++ b/src/pakfire/job.c @@ -73,6 +73,9 @@ struct pakfire_job { PAKFIRE_JOB_CCACHE = (1 << 1), } flags; + // Result Directory + char resultdir[PATH_MAX]; + // Package URL char pkg[PATH_MAX]; @@ -257,6 +260,9 @@ static void pakfire_job_free(struct pakfire_job* job) { if (job->uploads.logfile) free(job->uploads.logfile); + // Cleanup the result directory + pakfire_rmtree(job->resultdir, 0); + if (job->client) pakfire_client_unref(job->client); if (job->config) @@ -850,6 +856,7 @@ int pakfire_job_stream_logs(struct pakfire_job* self) { int pakfire_job_create(struct pakfire_job** job, struct pakfire_ctx* ctx, struct pakfire_client* client, struct pakfire_builder* builder, json_object* data) { struct pakfire_job* j = NULL; + char* p = NULL; int r; // Allocate a new object @@ -896,6 +903,19 @@ int pakfire_job_create(struct pakfire_job** job, struct pakfire_ctx* ctx, goto ERROR; } + // Create a template for the result path + r = pakfire_string_set(j->resultdir, PAKFIRE_TMP_DIR "/pakfire-result.XXXXXX"); + if (r < 0) + goto ERROR; + + // Create a place for the result + p = pakfire_mkdtemp(j->resultdir); + if (!p) { + ERROR(j->ctx, "Failed to create a temporary directory: %m\n"); + r = -errno; + goto ERROR; + } + // Parse the job r = pakfire_parse_job(j, data); if (r)