]> git.ipfire.org Git - people/ms/pakfire.git/commitdiff
cli: builder: Check if the requested arch is supported
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 31 Oct 2023 17:39:05 +0000 (17:39 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 31 Oct 2023 17:39:05 +0000 (17:39 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/cli/pakfire-builder.c
src/libpakfire/arch.c
src/libpakfire/include/pakfire/arch.h
src/libpakfire/libpakfire.sym

index 5c30678d250f021a0a120e452d7f11a50b5ea30c..bc5675429f6fc9f8e394ba39c065916da1f99216 100644 (file)
@@ -25,6 +25,7 @@
 #include <syslog.h>
 #include <unistd.h>
 
+#include <pakfire/arch.h>
 #include <pakfire/pakfire.h>
 #include <pakfire/string.h>
 
@@ -99,7 +100,10 @@ static error_t parse(int key, char* arg, struct argp_state* state, void* data) {
 
        switch (key) {
                case OPT_ARCH:
-                       // XXX Check if the architecture is supported
+                       // Check if the architecture is supported
+                       if (!pakfire_arch_is_supported_by_host(arg))
+                               argp_failure(state, EXIT_FAILURE, 0, "Unsupported architecture: %s", arg);
+
                        config->arch = arg;
                        break;
 
index 4c714277b273248b0e4f4a534dc0e8beb06c8acc..03b1cf9ecc82ed0d87185d476de1b1fce3b21b72 100644 (file)
@@ -223,7 +223,7 @@ static const char* pakfire_arch_is_natively_supported_by_host(const char* name)
        return NULL;
 }
 
-const char* pakfire_arch_is_supported_by_host(const char* name) {
+PAKFIRE_EXPORT const char* pakfire_arch_is_supported_by_host(const char* name) {
        const char* arch = NULL;
 
        // Check if we natively support this architecture
index 0fa67787b40645488f5163d63c1e369bbb101fa2..ac7649cc07f0cbc18dcd5db9ec9b87c5186c8ea7 100644 (file)
@@ -25,6 +25,8 @@ int pakfire_arch_supported(const char* name);
 const char** pakfire_supported_arches(void);
 const char* pakfire_arch_native(void);
 
+const char* pakfire_arch_is_supported_by_host(const char* name);
+
 #ifdef PAKFIRE_PRIVATE
 
 unsigned long pakfire_arch_personality(const char* name);
@@ -40,7 +42,6 @@ int __pakfire_arch_buildtarget(char* buffer, size_t length, const char* arch, co
 const char* pakfire_arch_platform(const char* name);
 int pakfire_arch_is_compatible(const char* name, const char* compatible_arch);
 
-const char* pakfire_arch_is_supported_by_host(const char* name);
 char* pakfire_arch_find_interpreter(const char* name);
 
 #endif
index 57ffb8295da514bdf36a34c8522475a1c41086cf..fd416cd102ef37d0ea14f06596eb75d2c0e9a9fe 100644 (file)
@@ -59,6 +59,7 @@ global:
        pakfire_arch_native;
        pakfire_arch_supported;
        pakfire_supported_arches;
+       pakfire_arch_is_supported_by_host;
 
        # archive
        pakfire_archive_extract;