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-08-21 16:50:18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/sysextmgr (Old) and /work/SRC/openSUSE:Factory/.sysextmgr.new.1258 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sysextmgr" Fri Aug 21 16:50:18 2026 rev:12 rq:1372294 version:1.3.0+git20260820.0628c3a Changes: -------- --- /work/SRC/openSUSE:Factory/sysextmgr/sysextmgr.changes 2026-08-18 16:35:56.422763223 +0200 +++ /work/SRC/openSUSE:Factory/.sysextmgr.new.1258/sysextmgr.changes 2026-08-21 16:51:04.585174433 +0200 @@ -1,0 +2,9 @@ +Thu Aug 20 13:36:40 UTC 2026 - Thorsten Kukuk <[email protected]> + +- Update to version 1.3.0+git20260820.0628c3a: + * Release version 1.3.0 + * ID_LIKE is optional, don't error out + * Update ci-opensuse. remove outdated meson*.yml + * Add a PCRE2 regular expression filter to list + +------------------------------------------------------------------- Old: ---- sysextmgr-1.2.0+git20260817.3f4cd50.tar.xz New: ---- sysextmgr-1.3.0+git20260820.0628c3a.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sysextmgr.spec ++++++ --- /var/tmp/diff_new_pack.mU7uGE/_old 2026-08-21 16:51:06.163231107 +0200 +++ /var/tmp/diff_new_pack.mU7uGE/_new 2026-08-21 16:51:06.168231287 +0200 @@ -16,7 +16,7 @@ # Name: sysextmgr -Version: 1.2.0+git20260817.3f4cd50 +Version: 1.3.0+git20260820.0628c3a Release: 0 Summary: Tools to manage systemd-sysext images License: GPL-2.0-or-later @@ -28,6 +28,7 @@ BuildRequires: pkgconfig BuildRequires: pkgconfig(libeconf) BuildRequires: pkgconfig(libsystemd) >= 257 +BuildRequires: pkgconfig(libpcre2-8) BuildRequires: pkgconfig(smartcols) BuildRequires: pkgconfig(zlib) Requires: %{_bindir}/systemd-dissect ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.mU7uGE/_old 2026-08-21 16:51:06.314236530 +0200 +++ /var/tmp/diff_new_pack.mU7uGE/_new 2026-08-21 16:51:06.333237213 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/openSUSE/sysextmgr.git</param> -<param name="changesrevision">3f4cd502eb4b280d5defe0367b3dc10f3a9fbdb3</param></service></servicedata> +<param name="changesrevision">0628c3a76e4d7d07e7087c3bac1a31f3f0b617a5</param></service></servicedata> (No newline at EOF) ++++++ sysextmgr-1.2.0+git20260817.3f4cd50.tar.xz -> sysextmgr-1.3.0+git20260820.0628c3a.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/.github/workflows/ci-opensuse.yml new/sysextmgr-1.3.0+git20260820.0628c3a/.github/workflows/ci-opensuse.yml --- old/sysextmgr-1.2.0+git20260817.3f4cd50/.github/workflows/ci-opensuse.yml 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/.github/workflows/ci-opensuse.yml 2026-08-20 15:36:39.000000000 +0200 @@ -8,12 +8,12 @@ container: registry.opensuse.org/opensuse/tumbleweed:latest steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Install devel packages run: | zypper ref - zypper --non-interactive in --no-recommends meson gcc libeconf-devel systemd-devel valgrind diffutils libzio-devel zlib-devel docbook5-xsl-stylesheets libxslt-tools libsmartcols-devel + zypper --non-interactive in --no-recommends meson gcc libeconf-devel systemd-devel valgrind diffutils libzio-devel zlib-devel docbook5-xsl-stylesheets libxslt-tools libsmartcols-devel pcre2-devel - name: Setup meson run: meson setup build --auto-features=enabled @@ -34,7 +34,7 @@ - name: Install devel packages run: | zypper ref - zypper --non-interactive in --no-recommends meson gcc libeconf-devel systemd-devel valgrind diffutils libzio-devel zlib-devel docbook5-xsl-stylesheets libxslt-tools libsmartcols-devel + zypper --non-interactive in --no-recommends meson gcc libeconf-devel systemd-devel valgrind diffutils libzio-devel zlib-devel docbook5-xsl-stylesheets libxslt-tools libsmartcols-devel pcre2-devel - name: Setup meson run: meson setup build --auto-features=enabled -Db_sanitize=address,undefined diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/.github/workflows/meson-sanitizer.yml new/sysextmgr-1.3.0+git20260820.0628c3a/.github/workflows/meson-sanitizer.yml --- old/sysextmgr-1.2.0+git20260817.3f4cd50/.github/workflows/meson-sanitizer.yml 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/.github/workflows/meson-sanitizer.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,26 +0,0 @@ -name: meson sanitizer - -on: [push, pull_request] - -jobs: - build: - - runs-on: ubuntu-latest - steps: - - name: Install pam-devel - run: sudo apt-get install libeconf-dev libsystemd-dev - - uses: actions/checkout@v3 - - uses: BSFishy/[email protected] - with: - action: build - directory: build - setup-options: -Db_sanitize=address,undefined - options: --verbose - meson-version: 0.61.4 - - uses: BSFishy/[email protected] - with: - action: test - directory: build - setup-options: -Db_sanitize=address,undefined - options: --verbose - meson-version: 0.61.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/.github/workflows/meson.yml new/sysextmgr-1.3.0+git20260820.0628c3a/.github/workflows/meson.yml --- old/sysextmgr-1.2.0+git20260817.3f4cd50/.github/workflows/meson.yml 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/.github/workflows/meson.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,22 +0,0 @@ -name: meson build & test - -on: [push, pull_request] - -jobs: - build: - - runs-on: ubuntu-latest - steps: - - name: Install pam-devel - run: sudo apt-get install libeconf-dev libsystemd-dev - - uses: actions/checkout@v3 - - uses: BSFishy/[email protected] - with: - action: build - options: --verbose - meson-version: 0.61.4 - - uses: BSFishy/[email protected] - with: - action: test - options: --verbose - meson-version: 0.61.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/README.md new/sysextmgr-1.3.0+git20260820.0628c3a/README.md --- old/sysextmgr-1.2.0+git20260817.3f4cd50/README.md 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/README.md 2026-08-20 15:36:39.000000000 +0200 @@ -114,6 +114,7 @@ * *url* - URL from where to get sysext images * *sysext_store_dir* - Local directory where to store sysext images, default: `/var/lib/sysext-store` * *extensions_dir* - Directory with symlinks pointing to sysext images which systemd-sysext will enable at startup, default: `/etc/extensions` +* *filter* - PCRE2 regular expression used by `sysextmgrcli list` to filter the images shown by name; can be overridden with `--filter` ### Example configuration file: ``` @@ -123,3 +124,11 @@ [sysextmgrd] verbose=true ``` + +### Example configuration file with a filter: + +Only show sysext images ending with `.sysext.raw` which don't start with `uki-rescue-`: +``` +[default] +filter=^(?!uki-rescue-).*\.sysext\.raw$ +``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/bash-completion/sysextmgrcli new/sysextmgr-1.3.0+git20260820.0628c3a/bash-completion/sysextmgrcli --- old/sysextmgr-1.2.0+git20260817.3f4cd50/bash-completion/sysextmgrcli 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/bash-completion/sysextmgrcli 2026-08-20 15:36:39.000000000 +0200 @@ -40,7 +40,7 @@ opts='-u --url -v --verbose -h --help' ;; list) - opts='-u --url -a --all -v --verbose -h --help' + opts='-u --url -a --all -f --filter -v --verbose -h --help' ;; merge-json) opts='-o --output -h --help' @@ -62,7 +62,7 @@ _filedir -d return ;; - -u|--url|-n|--name) + -u|--url|-n|--name|-f|--filter) return ;; esac diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/include/sysextmgr.h new/sysextmgr-1.3.0+git20260820.0628c3a/include/sysextmgr.h --- old/sysextmgr-1.2.0+git20260817.3f4cd50/include/sysextmgr.h 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/include/sysextmgr.h 2026-08-20 15:36:39.000000000 +0200 @@ -12,6 +12,7 @@ char *url; char *sysext_store_dir; char *extensions_dir; + char *filter; }; extern struct config config; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/man/sysextmgr.conf.5.xml new/sysextmgr-1.3.0+git20260820.0628c3a/man/sysextmgr.conf.5.xml --- old/sysextmgr-1.2.0+git20260817.3f4cd50/man/sysextmgr.conf.5.xml 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/man/sysextmgr.conf.5.xml 2026-08-20 15:36:39.000000000 +0200 @@ -97,6 +97,19 @@ </para> </listitem> </varlistentry> + + <varlistentry> + <term><varname>filter=</varname></term> + <listitem> + <para> + Specifies a PCRE2 regular expression (see + <citerefentry><refentrytitle>pcre2syntax</refentrytitle><manvolnum>3</manvolnum></citerefentry>) + used to filter the images shown by <command>sysextmgrcli list</command>. Only images + whose name matches are listed. Can be overridden with the <option>--filter</option> + command line option. + </para> + </listitem> + </varlistentry> </variablelist> </refsect1> @@ -110,6 +123,11 @@ [sysextmgrd] verbose=true]]></programlisting> </example> + <example> + <title>A sysextmgr.conf file only showing images ending with ".sysext.raw" which don't start with "uki-rescue-"</title> + <programlisting><![CDATA[[default] +filter=^(?!uki-rescue-).*\.sysext\.raw$]]></programlisting> + </example> </refsect1> <refsect1> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/man/sysextmgrcli.1.xml new/sysextmgr-1.3.0+git20260820.0628c3a/man/sysextmgrcli.1.xml --- old/sysextmgr-1.2.0+git20260817.3f4cd50/man/sysextmgrcli.1.xml 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/man/sysextmgrcli.1.xml 2026-08-20 15:36:39.000000000 +0200 @@ -47,6 +47,10 @@ <listitem><para>List images with incompatible architecture too.</para></listitem> </varlistentry> <varlistentry> + <term><option>-f</option>, <option>--filter</option> <replaceable>REGEX</replaceable></term> + <listitem><para>Only list images whose name matches the PCRE2 regular expression <replaceable>REGEX</replaceable>.</para></listitem> + </varlistentry> + <varlistentry> <term><option>-u</option>, <option>--url URL</option></term> <listitem><para>Remote directory URL with sysext images.</para></listitem> </varlistentry> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/meson.build new/sysextmgr-1.3.0+git20260820.0628c3a/meson.build --- old/sysextmgr-1.2.0+git20260817.3f4cd50/meson.build 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/meson.build 2026-08-20 15:36:39.000000000 +0200 @@ -13,7 +13,7 @@ 'c_std=gnu17', 'warning_level=2'], license : ['GPL-2.0-or-later', 'LGPL-2.1-or-later'], - version : '1.2.0', + version : '1.3.0', ) conf = configuration_data() @@ -73,6 +73,7 @@ smartcols = dependency('smartcols', required : true) libsystemd = dependency('libsystemd', version: '>= 257', required : true) libz = dependency('zlib', required : true) +libpcre2 = dependency('libpcre2-8', required : true) #libzio = dependency('libzio', required : true) libzio = declare_dependency(dependencies : cc.find_library('zio')) @@ -106,7 +107,7 @@ executable('sysextmgrd', sysextmgrd_c, include_directories : inc, - dependencies : [libeconf, libsystemd, libzio, libz], + dependencies : [libeconf, libsystemd, libzio, libz, libpcre2], install_dir : libexecdir, install : true) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/src/config.c new/sysextmgr-1.3.0+git20260820.0628c3a/src/config.c --- old/sysextmgr-1.2.0+git20260817.3f4cd50/src/config.c 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/src/config.c 2026-08-20 15:36:39.000000000 +0200 @@ -15,7 +15,8 @@ .verify_signature = true, .url = NULL, .sysext_store_dir = SYSEXT_STORE_DIR, - .extensions_dir = EXTENSIONS_DIR + .extensions_dir = EXTENSIONS_DIR, + .filter = NULL }; static econf_err @@ -115,6 +116,9 @@ r = getStringValueDef(key_file, defgroup, "extensions_dir", &config.extensions_dir, config.extensions_dir); if (r < 0) return r; + r = getStringValueDef(key_file, defgroup, "filter", &config.filter, config.filter); + if (r < 0) + return r; } return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/src/main-list.c new/sysextmgr-1.3.0+git20260820.0628c3a/src/main-list.c --- old/sysextmgr-1.2.0+git20260817.3f4cd50/src/main-list.c 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/src/main-list.c 2026-08-20 15:36:39.000000000 +0200 @@ -13,6 +13,7 @@ static bool arg_verbose = false; static bool arg_all = false; +static char *arg_filter = NULL; struct list_images { bool success; @@ -115,6 +116,17 @@ } } + if (arg_filter) + { + r = sd_json_variant_merge_objectbo(¶ms, + SD_JSON_BUILD_PAIR("Filter", SD_JSON_BUILD_STRING(arg_filter))); + if (r < 0) + { + fprintf(stderr, "Failed to add \"filter\" to parameter list: %s\n", strerror(-r)); + return r; + } + } + r = sd_varlink_call(link, "org.openSUSE.sysextmgr.ListImages", params, &result, &error_id); if (r < 0) { @@ -247,12 +259,14 @@ struct option const longopts[] = { {"url", required_argument, NULL, 'u'}, {"verbose", no_argument, NULL, 'v'}, + {"all", no_argument, NULL, 'a'}, + {"filter", required_argument, NULL, 'f'}, {NULL, 0, NULL, '\0'} }; char *url = NULL; int c, r; - while ((c = getopt_long(argc, argv, "u:va", longopts, NULL)) != -1) + while ((c = getopt_long(argc, argv, "u:vaf:", longopts, NULL)) != -1) { switch (c) { @@ -265,6 +279,9 @@ case 'a': arg_all = true; break; + case 'f': + arg_filter = optarg; + break; default: usage(EXIT_FAILURE); break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/src/osrelease.c new/sysextmgr-1.3.0+git20260820.0628c3a/src/osrelease.c --- old/sysextmgr-1.2.0+git20260817.3f4cd50/src/osrelease.c 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/src/osrelease.c 2026-08-20 15:36:39.000000000 +0200 @@ -89,16 +89,17 @@ return -1; } - if ((error = econf_getStringValue(key_file, NULL, "ID_LIKE", &(*res)->id_like))) + if ((error = econf_getStringValue(key_file, NULL, "VERSION_ID", &(*res)->version_id))) { - fprintf(stderr, "ERROR: couldn't get key 'ID_LIKE' from %s: %s\n", - osrelease, econf_errString(error)); + fprintf(stderr, "ERROR: couldn't get key 'VERSION_ID' from %s: %s\n", osrelease, econf_errString(error)); return -1; } - if ((error = econf_getStringValue(key_file, NULL, "VERSION_ID", &(*res)->version_id))) + if ((error = econf_getStringValue(key_file, NULL, "ID_LIKE", &(*res)->id_like)) + && error != ECONF_NOKEY) { - fprintf(stderr, "ERROR: couldn't get key 'VERSION_ID' from %s: %s\n", osrelease, econf_errString(error)); + fprintf(stderr, "ERROR: couldn't get key 'ID_LIKE' from %s: %s\n", + osrelease, econf_errString(error)); return -1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/src/sysextmgrcli.c new/sysextmgr-1.3.0+git20260820.0628c3a/src/sysextmgrcli.c --- old/sysextmgr-1.2.0+git20260817.3f4cd50/src/sysextmgrcli.c 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/src/sysextmgrcli.c 2026-08-20 15:36:39.000000000 +0200 @@ -56,9 +56,10 @@ fputs("\n", output); fputs("list - list all images and if they are compatible\n", output); - fputs("Options for merge-json:\n", output); + fputs("Options for list:\n", output); fputs(" -u, --url URL Remote directory with sysext images\n", output); fputs(" -a, --all List images with incompatible architecture too\n", output); + fputs(" -f, --filter REGEX Only list images matching the PCRE2 regular expression\n", output); fputs(" -v, --verbose Verbose output\n", output); fputs("\n", output); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/src/sysextmgrd.c new/sysextmgr-1.3.0+git20260820.0628c3a/src/sysextmgrd.c --- old/sysextmgr-1.2.0+git20260817.3f4cd50/src/sysextmgrd.c 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/src/sysextmgrd.c 2026-08-20 15:36:39.000000000 +0200 @@ -29,6 +29,9 @@ #include <string.h> #include <ctype.h> +#define PCRE2_CODE_UNIT_WIDTH 8 +#include <pcre2.h> + #include <systemd/sd-daemon.h> #include <systemd/sd-varlink.h> #include <sys/stat.h> @@ -339,6 +342,7 @@ bool all_architecture; char *install; char *prefix; + char *filter; }; static void @@ -347,6 +351,21 @@ var->url = mfree(var->url); var->install = mfree(var->install); var->prefix = mfree(var->prefix); + var->filter = mfree(var->filter); +} + +static void +pcre2_code_freep(pcre2_code **p) +{ + if (*p) + pcre2_code_free(*p); +} + +static void +pcre2_match_data_freep(pcre2_match_data **p) +{ + if (*p) + pcre2_match_data_free(*p); } static int @@ -361,19 +380,24 @@ .all_architecture = false, .install = NULL, .prefix = NULL, + .filter = NULL, }; static const sd_json_dispatch_field dispatch_table[] = { { "URL", SD_JSON_VARIANT_STRING, sd_json_dispatch_string, offsetof(struct parameters, url), 0}, { "Verbose", SD_JSON_VARIANT_BOOLEAN, sd_json_dispatch_stdbool, offsetof(struct parameters, verbose), 0}, { "All", SD_JSON_VARIANT_BOOLEAN, sd_json_dispatch_stdbool, offsetof(struct parameters, all_architecture), 0}, + { "Filter", SD_JSON_VARIANT_STRING, sd_json_dispatch_string, offsetof(struct parameters, filter), 0}, {} }; _cleanup_(free_os_releasep) struct osrelease *osrelease = NULL; _cleanup_(free_image_entry_list) struct image_entry **images = NULL; _cleanup_(free_image_entry_list) struct image_entry **images_remote = NULL; _cleanup_(free_image_entry_list) struct image_entry **images_local = NULL; + _cleanup_(pcre2_code_freep) pcre2_code *filter_regex = NULL; + _cleanup_(pcre2_match_data_freep) pcre2_match_data *filter_match_data = NULL; size_t n_remote = 0, n_local = 0, n_etc = 0; const char *url = NULL; + const char *filter = NULL; int r; log_msg(LOG_INFO, "Varlink method \"ListImages\" called..."); @@ -526,10 +550,40 @@ /* sort list */ qsort(images, n, sizeof(struct image_entry *), image_cmp); + /* use filter from config if none got provided via parameter */ + filter = p.filter ? p.filter : config.filter; + + if (filter) + { + int errorcode; + PCRE2_SIZE erroroffset; + + filter_regex = pcre2_compile((PCRE2_SPTR)filter, PCRE2_ZERO_TERMINATED, 0, + &errorcode, &erroroffset, NULL); + if (filter_regex == NULL) + { + PCRE2_UCHAR errbuf[256]; + + pcre2_get_error_message(errorcode, errbuf, sizeof(errbuf)); + return api_error(link, "Invalid filter regular expression '%s' at offset %zu: %s", + filter, erroroffset, errbuf); + } + + filter_match_data = pcre2_match_data_create_from_pattern(filter_regex, NULL); + if (filter_match_data == NULL) + { + reset_verbose_log(); + return out_of_memory_error(link); + } + } + for (size_t i = 0; images[i] != NULL; i++) { if (images[i]->deps && - (p.all_architecture || extention_architecture_compatible(images[i]->deps->architecture))) + (p.all_architecture || extention_architecture_compatible(images[i]->deps->architecture)) && + (!filter_regex || + pcre2_match(filter_regex, (PCRE2_SPTR)images[i]->image_name, + PCRE2_ZERO_TERMINATED, 0, 0, filter_match_data, NULL) >= 0)) { log_msg(LOG_INFO, "--------"); log_msg(LOG_INFO, "name: %s", images[i]->name); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/src/varlink-org.openSUSE.sysextmgr.c new/sysextmgr-1.3.0+git20260820.0628c3a/src/varlink-org.openSUSE.sysextmgr.c --- old/sysextmgr-1.2.0+git20260817.3f4cd50/src/varlink-org.openSUSE.sysextmgr.c 2026-08-17 16:47:00.000000000 +0200 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/src/varlink-org.openSUSE.sysextmgr.c 2026-08-20 15:36:39.000000000 +0200 @@ -83,6 +83,8 @@ SD_VARLINK_DEFINE_INPUT(Verbose, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE), SD_VARLINK_FIELD_COMMENT("Show all architectures"), SD_VARLINK_DEFINE_INPUT(All, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE), + SD_VARLINK_FIELD_COMMENT("PCRE2 regular expression to filter the list of images by name"), + SD_VARLINK_DEFINE_INPUT(Filter, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), SD_VARLINK_FIELD_COMMENT("If call succeeded"), SD_VARLINK_DEFINE_OUTPUT(Success, SD_VARLINK_BOOL, 0), SD_VARLINK_FIELD_COMMENT("Data of sysext images"), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sysextmgr-1.2.0+git20260817.3f4cd50/sysextmgr.conf.example new/sysextmgr-1.3.0+git20260820.0628c3a/sysextmgr.conf.example --- old/sysextmgr-1.2.0+git20260817.3f4cd50/sysextmgr.conf.example 1970-01-01 01:00:00.000000000 +0100 +++ new/sysextmgr-1.3.0+git20260820.0628c3a/sysextmgr.conf.example 2026-08-20 15:36:39.000000000 +0200 @@ -0,0 +1,15 @@ +# Example sysextmgr.conf +# +# Only show sysext images for openSUSE MicroOS, whose (full) image name +# ends with ".sysext.raw" and which do not start with "uki-rescue-" in +# the output of "sysextmgrcli list". The filter is a PCRE2 regular +# expression (see pcre2syntax(3)) matched against the image name. +# +# Install this as one of: +# /etc/sysextmgr/sysextmgr.conf +# /usr/share/sysextmgr/sysextmgr.conf +# to make the filter the default for all users. + +[default] +url=https://download.opensuse.org/tumbleweed/appliances/ +filter=^(?!uki-rescue-).*\.sysext\.raw$
