Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package sysextmgr for openSUSE:Factory checked in at 2026-02-02 14:55:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/sysextmgr (Old) and /work/SRC/openSUSE:Factory/.sysextmgr.new.1995 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sysextmgr" Mon Feb 2 14:55:23 2026 rev:6 rq:1330350 version:0.0+git20250924.8eb417e Changes: -------- --- /work/SRC/openSUSE:Factory/sysextmgr/sysextmgr.changes 2025-08-09 20:04:38.290314755 +0200 +++ /work/SRC/openSUSE:Factory/.sysextmgr.new.1995/sysextmgr.changes 2026-02-02 14:56:03.660716237 +0100 @@ -1,0 +2,8 @@ +Wed Sep 24 13:41:25 UTC 2025 - Thorsten Kukuk <[email protected]> + +- Update to version 0.0+git20250924.8eb417e: + * sysextmgrd: ignore images without metadata + * Implement reading of os-release from snapshots + * Adjust for new mkosi manifest format + +------------------------------------------------------------------- Old: ---- sysextmgr-0.0+git20250806.0599a82.tar.xz New: ---- sysextmgr-0.0+git20250924.8eb417e.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sysextmgr.spec ++++++ --- /var/tmp/diff_new_pack.KkKtjh/_old 2026-02-02 14:56:04.208739402 +0100 +++ /var/tmp/diff_new_pack.KkKtjh/_new 2026-02-02 14:56:04.212739570 +0100 @@ -17,7 +17,7 @@ Name: sysextmgr -Version: 0.0+git20250806.0599a82 +Version: 0.0+git20250924.8eb417e Release: 0 Summary: Tools to manage sysext-images on MicroOS License: GPL-2.0-or-later ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.KkKtjh/_old 2026-02-02 14:56:04.260741599 +0100 +++ /var/tmp/diff_new_pack.KkKtjh/_new 2026-02-02 14:56:04.264741769 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/thkukuk/sysextmgr.git</param> -<param name="changesrevision">0599a827119c956fcf6efbfdcf2727fd368e5da7</param></service></servicedata> +<param name="changesrevision">8eb417ef8a9e102c119abb2802016f75a9af1b38</param></service></servicedata> (No newline at EOF) ++++++ sysextmgr-0.0+git20250806.0599a82.tar.xz -> sysextmgr-0.0+git20250924.8eb417e.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-0.0+git20250806.0599a82/src/images-list.c new/sysextmgr-0.0+git20250924.8eb417e/src/images-list.c --- old/sysextmgr-0.0+git20250806.0599a82/src/images-list.c 2025-08-06 11:51:22.000000000 +0200 +++ new/sysextmgr-0.0+git20250924.8eb417e/src/images-list.c 2025-09-24 15:41:25.000000000 +0200 @@ -518,13 +518,11 @@ images[pos]->remote = true; r = image_json_from_url(url, list[i], &(images[pos]->deps), verify_signature); + if (r == -ENOENT) + r = image_manifest_from_url(url, list[i], &(images[pos]->deps), verify_signature); if (r < 0) - { - if (r == -ENOENT) - r = image_manifest_from_url(url, list[i], &(images[pos]->deps), verify_signature); - if (r < 0) - return r; - } + log_msg(LOG_INFO, "Meta data for image '%s' not Ok", list[i]); + if (images[pos]->deps && osrelease) images[pos]->compatible = extension_release_validate(images[pos]->image_name, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-0.0+git20250806.0599a82/src/mkosi-manifest.c new/sysextmgr-0.0+git20250924.8eb417e/src/mkosi-manifest.c --- old/sysextmgr-0.0+git20250806.0599a82/src/mkosi-manifest.c 2025-08-06 11:51:22.000000000 +0200 +++ new/sysextmgr-0.0+git20250924.8eb417e/src/mkosi-manifest.c 2025-09-24 15:41:25.000000000 +0200 @@ -27,7 +27,7 @@ char *config_name; char *config_architecture; char *config_version; - sd_json_variant *extensions; + sd_json_variant *extension; }; static void @@ -37,7 +37,7 @@ var->config_name = mfree(var->config_name); var->config_architecture = mfree(var->config_architecture); var->config_version = mfree(var->config_version); - var->extensions = sd_json_variant_unref(var->extensions); + var->extension = sd_json_variant_unref(var->extension); } static int @@ -49,7 +49,7 @@ .config_name = NULL, .config_architecture = NULL, .config_version = NULL, - .extensions = NULL, + .extension = NULL, }; static const sd_json_dispatch_field dispatch_table[] = { { "name", SD_JSON_VARIANT_STRING, sd_json_dispatch_string, offsetof(struct manifest, config_name), 0 }, @@ -84,12 +84,12 @@ .config_name = NULL, .config_architecture = NULL, .config_version = NULL, - .extensions = NULL, + .extension = NULL, }; static const sd_json_dispatch_field dispatch_table[] = { { "manifest_version", SD_JSON_VARIANT_NUMBER, sd_json_dispatch_int, offsetof(struct manifest, manifest_version), 0 }, { "config", SD_JSON_VARIANT_OBJECT, sd_json_dispatch_variant, offsetof(struct manifest, config), 0 }, - { "extensions", SD_JSON_VARIANT_ARRAY, sd_json_dispatch_variant, offsetof(struct manifest, extensions), SD_JSON_NULLABLE }, + { "extension", SD_JSON_VARIANT_OBJECT, sd_json_dispatch_variant, offsetof(struct manifest, extension), SD_JSON_NULLABLE }, {} }; int r; @@ -103,24 +103,13 @@ return r; } - if (!sd_json_variant_is_array(p.extensions) || sd_json_variant_elements(p.extensions) != 1) + if (p.extension == NULL || sd_json_variant_is_null(p.extension)) { - fprintf(stderr, "JSON extensions is no array or has not exactly one element.\n"); + fprintf(stderr, "No JSON extension object available.\n"); return -EINVAL; } - sd_json_variant *e = sd_json_variant_by_index(p.extensions, 0); - if (!sd_json_variant_is_array(e) || sd_json_variant_elements(e) != 2) - { - fprintf(stderr, "JSON sysext data is no array or has wrong number of elements.\n"); - return -EINVAL; - } - - /* Format is: "sysext", {...} */ - - e = sd_json_variant_by_index(e, 1); - - r = parse_image_deps(e, res); + r = parse_image_deps(p.extension, res); if (r < 0) return r; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-0.0+git20250806.0599a82/src/osrelease.c new/sysextmgr-0.0+git20250924.8eb417e/src/osrelease.c --- old/sysextmgr-0.0+git20250806.0599a82/src/osrelease.c 2025-08-06 11:51:22.000000000 +0200 +++ new/sysextmgr-0.0+git20250924.8eb417e/src/osrelease.c 2025-09-24 15:41:25.000000000 +0200 @@ -6,6 +6,7 @@ #include <libeconf.h> #include "basics.h" +#include "download.h" #include "osrelease.h" void @@ -33,8 +34,10 @@ int load_os_release(const char *prefix, struct osrelease **res) { + _cleanup_free_ char *osrelease = NULL; _cleanup_(econf_freeFilep) econf_file *key_file = NULL; econf_err error; + int r; assert(res); @@ -42,12 +45,36 @@ if (res == NULL) return -ENOMEM; - /* XXX add prefix to look in snapshots */ - const char *osrelease = NULL; - if (access("/etc/os-release", F_OK) == 0) - osrelease = "/etc/os-release"; + + if (!isempty(prefix)) + { + r = join_path(prefix, "/etc/os-release", &osrelease); + if (r < 0) + return r; + } else - osrelease = "/usr/lib/os-release"; + { + osrelease = strdup("/etc/os-release"); + if (!osrelease) + return -ENOMEM; + } + + if (access(osrelease, F_OK) != 0) + { + osrelease = mfree(osrelease); + if (!isempty(prefix)) + { + r = join_path(prefix, "/usr/lib/os-release", &osrelease); + if (r < 0) + return r; + } + else + { + osrelease = strdup("/usr/lib/os-release"); + if (!osrelease) + return -ENOMEM; + } + } if ((error = econf_readFile(&key_file, osrelease, "=", "#"))) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-0.0+git20250806.0599a82/src/sysextmgrd.c new/sysextmgr-0.0+git20250924.8eb417e/src/sysextmgrd.c --- old/sysextmgr-0.0+git20250806.0599a82/src/sysextmgrd.c 2025-08-06 11:51:22.000000000 +0200 +++ new/sysextmgr-0.0+git20250924.8eb417e/src/sysextmgrd.c 2025-09-24 15:41:25.000000000 +0200 @@ -418,24 +418,27 @@ for (size_t i = 0; images[i] != NULL; i++) { - r = sd_json_variant_append_arraybo(&array, - SD_JSON_BUILD_PAIR_STRING("NAME", images[i]->name), - SD_JSON_BUILD_PAIR_STRING("IMAGE_NAME", images[i]->image_name), - SD_JSON_BUILD_PAIR_STRING("SYSEXT_VERSION_ID", images[i]->deps->sysext_version_id), - SD_JSON_BUILD_PAIR_STRING("SYSEXT_SCOPE", images[i]->deps->sysext_scope), - SD_JSON_BUILD_PAIR_STRING("ID", images[i]->deps->id), - SD_JSON_BUILD_PAIR_STRING("SYSEXT_LEVEL", images[i]->deps->sysext_level), - SD_JSON_BUILD_PAIR_STRING("VERSION_ID", images[i]->deps->version_id), - SD_JSON_BUILD_PAIR_STRING("ARCHITECTURE", images[i]->deps->architecture), - SD_JSON_BUILD_PAIR_BOOLEAN("LOCAL", images[i]->local), - SD_JSON_BUILD_PAIR_BOOLEAN("REMOTE", images[i]->remote), - SD_JSON_BUILD_PAIR_BOOLEAN("INSTALLED", images[i]->installed), - SD_JSON_BUILD_PAIR_BOOLEAN("COMPATIBLE", images[i]->compatible), - SD_JSON_BUILD_PAIR_INTEGER("REFCOUNT", images[i]->refcount)); - if(r < 0) + if (images[i]->deps) { - log_msg(LOG_ERR, "Appending array failed: %s", strerror(-r)); - /* XXX */ + r = sd_json_variant_append_arraybo(&array, + SD_JSON_BUILD_PAIR_STRING("NAME", images[i]->name), + SD_JSON_BUILD_PAIR_STRING("IMAGE_NAME", images[i]->image_name), + SD_JSON_BUILD_PAIR_STRING("SYSEXT_VERSION_ID", images[i]->deps->sysext_version_id), + SD_JSON_BUILD_PAIR_STRING("SYSEXT_SCOPE", images[i]->deps->sysext_scope), + SD_JSON_BUILD_PAIR_STRING("ID", images[i]->deps->id), + SD_JSON_BUILD_PAIR_STRING("SYSEXT_LEVEL", images[i]->deps->sysext_level), + SD_JSON_BUILD_PAIR_STRING("VERSION_ID", images[i]->deps->version_id), + SD_JSON_BUILD_PAIR_STRING("ARCHITECTURE", images[i]->deps->architecture), + SD_JSON_BUILD_PAIR_BOOLEAN("LOCAL", images[i]->local), + SD_JSON_BUILD_PAIR_BOOLEAN("REMOTE", images[i]->remote), + SD_JSON_BUILD_PAIR_BOOLEAN("INSTALLED", images[i]->installed), + SD_JSON_BUILD_PAIR_BOOLEAN("COMPATIBLE", images[i]->compatible), + SD_JSON_BUILD_PAIR_INTEGER("REFCOUNT", images[i]->refcount)); + if(r < 0) + { + log_msg(LOG_ERR, "Appending array failed: %s", strerror(-r)); + /* XXX */ + } } }
