Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libxkbcommon for openSUSE:Factory checked in at 2025-10-30 17:09:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libxkbcommon (Old) and /work/SRC/openSUSE:Factory/.libxkbcommon.new.1980 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libxkbcommon" Thu Oct 30 17:09:37 2025 rev:53 rq:1314311 version:1.12.3 Changes: -------- --- /work/SRC/openSUSE:Factory/libxkbcommon/libxkbcommon.changes 2025-10-23 16:35:26.925342101 +0200 +++ /work/SRC/openSUSE:Factory/.libxkbcommon.new.1980/libxkbcommon.changes 2025-10-30 17:09:46.510528198 +0100 @@ -1,0 +2,9 @@ +Wed Oct 29 10:14:28 UTC 2025 - Jan Engelhardt <[email protected]> + +- Update to release 1.12.3 + * Fixed `xkbcli keymap-dump` being kinda broken on Wayland + because it would commit an XDG surface without a role object. + * X11: Hardened against some malformed XKB responses with + erroneous modifiers or LEDs counts. + +------------------------------------------------------------------- Old: ---- xkbcommon-1.12.2.tar.gz New: ---- xkbcommon-1.12.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libxkbcommon.spec ++++++ --- /var/tmp/diff_new_pack.10x2Qk/_old 2025-10-30 17:09:47.482569162 +0100 +++ /var/tmp/diff_new_pack.10x2Qk/_new 2025-10-30 17:09:47.482569162 +0100 @@ -23,7 +23,7 @@ %endif Name: libxkbcommon -Version: 1.12.2 +Version: 1.12.3 Release: 0 Summary: Library for handling xkb descriptions License: MIT ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.10x2Qk/_old 2025-10-30 17:09:47.518570679 +0100 +++ /var/tmp/diff_new_pack.10x2Qk/_new 2025-10-30 17:09:47.522570848 +0100 @@ -1,5 +1,5 @@ -mtime: 1760987366 -commit: 3a768f9d79bcdc49350e7a97cfb3605ebd9030034ab3239a67dd6370bbe6c50c +mtime: 1761732881 +commit: 2027205c96d0ae06d06040a7fdb93ef1cae6a2259bf09f1ed296a04ca56c418f url: https://src.opensuse.org/jengelh/libxkbcommon revision: master ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2025-10-29 11:15:44.000000000 +0100 @@ -0,0 +1 @@ +.osc ++++++ xkbcommon-1.12.2.tar.gz -> xkbcommon-1.12.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libxkbcommon-xkbcommon-1.12.2/.github/workflows/windows.yml new/libxkbcommon-xkbcommon-1.12.3/.github/workflows/windows.yml --- old/libxkbcommon-xkbcommon-1.12.2/.github/workflows/windows.yml 2025-10-20 19:00:04.000000000 +0200 +++ new/libxkbcommon-xkbcommon-1.12.3/.github/workflows/windows.yml 2025-10-29 07:49:13.000000000 +0100 @@ -14,6 +14,11 @@ runs-on: windows-2022 permissions: contents: read + strategy: + matrix: + cc: ['cl', 'clang-cl'] + env: + CC: ${{matrix.cc}} steps: - uses: actions/checkout@v5 with: @@ -22,13 +27,11 @@ with: python-version: '3.12' - name: Install dependencies - shell: powershell + shell: cmd run: | # Jinja2 is needed for merge-modes tests python -m pip install --upgrade meson Jinja2 - Invoke-WebRequest -Uri https://github.com/lexxmark/winflexbison/releases/download/v2.5.23/win_flex_bison-2.5.23.zip -OutFile win_flex_bison.zip - Expand-Archive -Path win_flex_bison.zip -DestinationPath bin - Write-Output ((Get-Location).ToString() + "./bin") | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 + choco install -y winflexbison3 - name: Setup shell: cmd run: | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libxkbcommon-xkbcommon-1.12.2/NEWS.md new/libxkbcommon-xkbcommon-1.12.3/NEWS.md --- old/libxkbcommon-xkbcommon-1.12.2/NEWS.md 2025-10-20 19:00:04.000000000 +0200 +++ new/libxkbcommon-xkbcommon-1.12.3/NEWS.md 2025-10-29 07:49:13.000000000 +0100 @@ -1,3 +1,40 @@ +libxkbcommon [1.12.3] – 2025-10-29 +================================== + +[1.12.3]: https://github.com/xkbcommon/libxkbcommon/tree/xkbcommon-1.12.3 + +## API + +### Fixes + +- X11: Hardened against some malformed XKB responses with erroneous modifiers + or LEDs counts. + +## Tools + +### Fixes + +- Fixed support for Windows compilers other than MSVC + ([#897](https://github.com/xkbcommon/libxkbcommon/pull/897), + [#898](https://github.com/xkbcommon/libxkbcommon/pull/898), + [#899](https://github.com/xkbcommon/libxkbcommon/pull/899)). + + Contributed by Rosen Penev + +- Fixed errors in Wayland tools + ([#900](https://github.com/xkbcommon/libxkbcommon/pull/900)). + + Contributed by Ronan Pigott + +## Build system + +### Fixes + +- Fixed build setup failing in cross-compiling setups where the build + machine cannot run the host binaries + ([#885](https://github.com/xkbcommon/libxkbcommon/issues/885)). + + libxkbcommon [1.12.2] – 2025-10-20 ================================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libxkbcommon-xkbcommon-1.12.2/meson.build new/libxkbcommon-xkbcommon-1.12.3/meson.build --- old/libxkbcommon-xkbcommon-1.12.2/meson.build 2025-10-20 19:00:04.000000000 +0200 +++ new/libxkbcommon-xkbcommon-1.12.3/meson.build 2025-10-29 07:49:13.000000000 +0100 @@ -1,7 +1,7 @@ project( 'libxkbcommon', 'c', - version: '1.12.2', + version: '1.12.3', default_options: [ 'c_std=c11', 'warning_level=3', @@ -185,19 +185,34 @@ configh_data.set('PATH_MAX', 4096) endif endif +has_glibc = cc.has_function( + 'gnu_get_libc_version', + prefix: '#include <gnu/libc-version.h>' +) +has_compose_locale_fallback = false if cc.has_header_symbol('locale.h', 'newlocale', prefix: system_ext_define) # Use newlocale only if it fails on missing locales - r = cc.run( - ''' - #define _GNU_SOURCE - #include <locale.h> - int main(void){ - locale_t loc = newlocale(LC_ALL_MASK, "¡NONSENSE!", (locale_t) 0); - return (loc != (locale_t) 0); - }''', - name: 'newlocale fails on invalid locales', - ) - if r.compiled() and r.returncode() == 0 + if meson.can_run_host_binaries() + # Check newlocale implementation + r = cc.run( + ''' + #define _GNU_SOURCE + #include <locale.h> + int main(void){ + locale_t loc = newlocale(LC_ALL_MASK, "¡NONSENSE!", (locale_t) 0); + return (loc != (locale_t) 0); + }''', + name: 'newlocale fails on invalid locales', + ) + if r.compiled() and r.returncode() == 0 + has_compose_locale_fallback = true + endif + elif has_glibc + # Cannot check implementation, so enable only for implementations + # known to failed on missing locales. + has_compose_locale_fallback = true + endif + if has_compose_locale_fallback configh_data.set('HAVE_NEWLOCALE', 1) endif endif @@ -1350,6 +1365,7 @@ 'c_args': get_option('c_args'), 'c_link_args': get_option('c_link_args'), 'yacc': yacc.full_path() + ' ' + yacc.version(), + 'glibc': has_glibc, }, section: 'Compiler') summary({ 'prefix': get_option('prefix'), @@ -1365,6 +1381,7 @@ 'tools': get_option('enable-tools'), 'wayland': get_option('enable-wayland'), 'x11': get_option('enable-x11'), + 'compose locale fallback': has_compose_locale_fallback, }, section: 'Features') summary({ 'layout': get_option('default-layout'), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libxkbcommon-xkbcommon-1.12.2/src/utils.h new/libxkbcommon-xkbcommon-1.12.3/src/utils.h --- old/libxkbcommon-xkbcommon-1.12.2/src/utils.h 2025-10-20 19:00:04.000000000 +0200 +++ new/libxkbcommon-xkbcommon-1.12.3/src/utils.h 2025-10-29 07:49:13.000000000 +0100 @@ -32,8 +32,10 @@ # ifndef S_ISREG # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) # endif +#ifdef _MSC_VER typedef SSIZE_T ssize_t; #endif +#endif #include "darray.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libxkbcommon-xkbcommon-1.12.2/src/x11/keymap.c new/libxkbcommon-xkbcommon-1.12.3/src/x11/keymap.c --- old/libxkbcommon-xkbcommon-1.12.2/src/x11/keymap.c 2025-10-20 19:00:04.000000000 +0200 +++ new/libxkbcommon-xkbcommon-1.12.3/src/x11/keymap.c 2025-10-29 07:49:13.000000000 +0100 @@ -9,6 +9,7 @@ #include "xkbcommon/xkbcommon.h" #include "atom.h" +#include "keymap.h" #include "x11-priv.h" /* @@ -564,7 +565,9 @@ keymap->mods.num_mods = NUM_REAL_MODS + MIN(msb_pos(reply->virtualMods), NUM_VMODS); + FAIL_UNLESS(keymap->mods.num_mods <= XKB_MAX_MODS); + static_assert(NUM_REAL_MODS + NUM_VMODS <= XKB_MAX_MODS, ""); for (unsigned i = 0; i < NUM_VMODS; i++) { if (reply->virtualMods & (1u << i)) { uint8_t wire = *iter; @@ -578,6 +581,9 @@ } return true; + +fail: + return false; } static bool @@ -742,7 +748,9 @@ xcb_xkb_get_indicator_map_maps_iterator(reply); keymap->num_leds = msb_pos(reply->which); + FAIL_UNLESS(keymap->num_leds <= XKB_MAX_LEDS); + static_assert(XKB_MAX_LEDS == NUM_INDICATORS, ""); for (unsigned i = 0; i < NUM_INDICATORS; i++) { if (reply->which & (UINT32_C(1) << i)) { xcb_xkb_indicator_map_t *wire = iter.data; @@ -782,6 +790,9 @@ } return true; + +fail: + return false; } static bool @@ -987,7 +998,9 @@ */ keymap->mods.num_mods = NUM_REAL_MODS + MIN(msb_pos(reply->virtualMods), NUM_VMODS); + FAIL_UNLESS(keymap->mods.num_mods <= XKB_MAX_MODS); + static_assert(NUM_REAL_MODS + NUM_VMODS <= XKB_MAX_MODS, ""); for (unsigned i = 0; i < NUM_VMODS; i++) { if (reply->virtualMods & (1u << i)) { xcb_atom_t wire = *iter; @@ -1000,6 +1013,9 @@ } return true; + +fail: + return false; } static bool diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libxkbcommon-xkbcommon-1.12.2/src/xkbcomp/keymap.c new/libxkbcommon-xkbcommon-1.12.3/src/xkbcomp/keymap.c --- old/libxkbcommon-xkbcommon-1.12.2/src/xkbcomp/keymap.c 2025-10-20 19:00:04.000000000 +0200 +++ new/libxkbcommon-xkbcommon-1.12.3/src/xkbcomp/keymap.c 2025-10-29 07:49:13.000000000 +0100 @@ -362,8 +362,8 @@ * key entries without overlap with the alias entries. * - In the unlikely event that this is not the case, we need to realloc. */ -#ifdef _MSC_VER - /* MSVC does not pack bit fields as efficiently as GCC and Clang */ +#ifdef _WIN32 + /* Bit fields are not packed on Windows as efficiently as other platforms */ static_assert(sizeof(struct xkb_key_alias) == sizeof(KeycodeMatch), ""); #else static_assert(sizeof(struct xkb_key_alias) == 2 * sizeof(KeycodeMatch), ""); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libxkbcommon-xkbcommon-1.12.2/tools/interactive-wayland.c new/libxkbcommon-xkbcommon-1.12.3/tools/interactive-wayland.c --- old/libxkbcommon-xkbcommon-1.12.2/tools/interactive-wayland.c 2025-10-20 19:00:04.000000000 +0200 +++ new/libxkbcommon-xkbcommon-1.12.3/tools/interactive-wayland.c 2025-10-29 07:49:13.000000000 +0100 @@ -86,6 +86,7 @@ static struct xkb_keymap *custom_keymap = NULL; #endif +#ifndef KEYMAP_DUMP static void surface_configure(void *data, struct xdg_surface *surface, uint32_t serial) @@ -100,7 +101,6 @@ surface_configure, }; -#ifndef KEYMAP_DUMP #ifdef HAVE_MKOSTEMP static int create_tmpfile_cloexec(char *tmpname) @@ -353,7 +353,6 @@ toplevel_configure, toplevel_close }; -#endif static void surface_create(struct interactive_dpy *inter) { @@ -361,7 +360,6 @@ inter->xdg_surf = xdg_wm_base_get_xdg_surface(inter->shell, inter->wl_surf); xdg_surface_add_listener(inter->xdg_surf, &surface_listener, inter); -#ifndef KEYMAP_DUMP /* Create a window only for the interactive tool */ inter->xdg_top = xdg_surface_get_toplevel(inter->xdg_surf); xdg_toplevel_add_listener(inter->xdg_top, &toplevel_listener, inter); @@ -377,10 +375,10 @@ inter->decoration, ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE ); } -#endif wl_surface_commit(inter->wl_surf); } +#endif static void shell_ping(void *data, struct xdg_wm_base *shell, uint32_t serial) @@ -783,10 +781,14 @@ wl_list_for_each_safe(seat, tmp, &inter->seats, link) seat_destroy(seat); - if (inter->xdg_surf) - xdg_surface_destroy(inter->xdg_surf); + if (inter->decoration) + zxdg_toplevel_decoration_v1_destroy(inter->decoration); + if (inter->decoration_manager) + zxdg_decoration_manager_v1_destroy(inter->decoration_manager); if (inter->xdg_top) xdg_toplevel_destroy(inter->xdg_top); + if (inter->xdg_surf) + xdg_surface_destroy(inter->xdg_surf); if (inter->wl_surf) wl_surface_destroy(inter->wl_surf); if (inter->shell) @@ -797,10 +799,6 @@ wl_shm_destroy(inter->shm); if (inter->buf) wl_buffer_destroy(inter->buf); - if (inter->decoration) - zxdg_toplevel_decoration_v1_destroy(inter->decoration); - if (inter->decoration_manager) - zxdg_decoration_manager_v1_destroy(inter->decoration_manager); /* Do one last roundtrip to try to destroy our wl_buffer. */ wl_display_roundtrip(inter->dpy); @@ -1096,7 +1094,9 @@ goto err_conn; } +#ifndef KEYMAP_DUMP surface_create(&inter); +#endif tools_disable_stdin_echo(); do { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libxkbcommon-xkbcommon-1.12.2/tools/tools-common.c new/libxkbcommon-xkbcommon-1.12.3/tools/tools-common.c --- old/libxkbcommon-xkbcommon-1.12.2/tools/tools-common.c 2025-10-20 19:00:04.000000000 +0200 +++ new/libxkbcommon-xkbcommon-1.12.3/tools/tools-common.c 2025-10-29 07:49:13.000000000 +0100 @@ -40,7 +40,7 @@ #include "src/keymap.h" #include "src/messages-codes.h" -#ifdef _WIN32 +#if defined(_WIN32) && !defined(S_ISFIFO) #define S_ISFIFO(mode) 0 #endif
