]> git.ipfire.org Git - people/ms/pakfire.git/commitdiff
builder: Submit our architecture when opening the control socket
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 1 Jul 2025 08:07:16 +0000 (08:07 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 1 Jul 2025 08:07:16 +0000 (08:07 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/builder.c
src/pakfire/builder.h
src/pakfire/client.c

index 7a5fd1dad79672cfddac59b4063e2bedcfd9c4d4..bbb98e745b023444a9c543f01fe5e7d623448237 100644 (file)
@@ -23,6 +23,7 @@
 // systemd
 #include <systemd/sd-event.h>
 
+#include <pakfire/arch.h>
 #include <pakfire/client.h>
 #include <pakfire/ctx.h>
 #include <pakfire/builder.h>
@@ -60,6 +61,9 @@ struct pakfire_builder {
        sd_event_source* reconnect_timer;
        uint64_t reconnect_holdoff;
 
+       // Arch
+       const char* arch;
+
        // Jobs
        pakfire_job* jobs[MAX_JOBS];
        unsigned int running_jobs;
@@ -105,6 +109,11 @@ int pakfire_builder_create(pakfire_builder** builder,
        // Store a reference to the client
        self->client = pakfire_client_ref(client);
 
+       // Determine the builder's architecture
+       r = pakfire_arch_native(&self->arch);
+       if (r < 0)
+               goto ERROR;
+
        // Return the pointer
        *builder = self;
        return 0;
@@ -128,6 +137,12 @@ pakfire_builder* pakfire_builder_unref(pakfire_builder* self) {
        return NULL;
 }
 
+// Arch
+
+const char* pakfire_builder_get_arch(pakfire_builder* self) {
+       return self->arch;
+}
+
 int pakfire_builder_connect(pakfire_builder* self) {
        // Bail if we are already connected
        if (self->control)
@@ -492,8 +507,6 @@ int pakfire_builder_terminate_jobs(pakfire_builder* self) {
        Called after a job has exited
 */
 int pakfire_builder_job_finished(pakfire_builder* self, pakfire_job* job) {
-       int r;
-
        DEBUG(self->ctx, "Removing job %p\n", job);
 
        for (unsigned int i = 0; i < MAX_JOBS; i++) {
index 45e239d13c1a3a26c4f801eb39a55c99c8c78653..bbe2743db0a6081510d5e9c6ffc0f22223388758 100644 (file)
@@ -37,6 +37,9 @@ int pakfire_builder_create(pakfire_builder** builder,
 pakfire_builder* pakfire_builder_ref(pakfire_builder* self);
 pakfire_builder* pakfire_builder_unref(pakfire_builder* self);
 
+// Arch
+const char* pakfire_builder_get_arch(pakfire_builder* self);
+
 // Connect
 int pakfire_builder_connect(pakfire_builder* self);
 
index f4c7aca1f53da617b76170d2443164336cf3f101..97716bbe2945a7cc02c30d7392aee58980c85290 100644 (file)
@@ -804,6 +804,7 @@ ERROR:
 
 int pakfire_client_builder_connect(pakfire_client* self, pakfire_builder* builder) {
        pakfire_xfer* xfer = NULL;
+       const char* arch = NULL;
        int r;
 
        // Create a new xfer
@@ -811,6 +812,16 @@ int pakfire_client_builder_connect(pakfire_client* self, pakfire_builder* builde
        if (r < 0)
                goto ERROR;
 
+       // Fetch the builder's architecture
+       arch = pakfire_builder_get_arch(builder);
+
+       // Send the architecture
+       if (arch) {
+               r = pakfire_xfer_add_query(xfer, "arch", "%s", arch);
+               if (r < 0)
+                       goto ERROR;
+       }
+
        // Enable authentication
        r = pakfire_client_xfer_auth(self, xfer);
        if (r < 0)