Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kbd for openSUSE:Factory checked in at 2026-03-17 19:02:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kbd (Old) and /work/SRC/openSUSE:Factory/.kbd.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kbd" Tue Mar 17 19:02:22 2026 rev:130 rq:1339207 version:2.9.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kbd/kbd.changes 2026-03-06 18:16:54.643967157 +0100 +++ /work/SRC/openSUSE:Factory/.kbd.new.8177/kbd.changes 2026-03-17 19:03:29.930188412 +0100 @@ -1,0 +2,37 @@ +Mon Mar 16 05:45:52 UTC 2026 - Stanislav Brabec <[email protected]> + +- Fix conversion of h and H fr-afnor xkb keymap (boo#1259269). + +------------------------------------------------------------------- +Mon Mar 16 01:39:40 UTC 2026 - Stanislav Brabec <[email protected]> + +- Replace setfont --quiet (kbd-setfont-quiet.patch) by upstream + solution: add setfont --check that checks for setfont + availability without logging errors (boo#1212970, + kbd-setfont-check.patch). + +------------------------------------------------------------------- +Mon Mar 16 01:33:11 UTC 2026 - Stanislav Brabec <[email protected]> + +- Update to version 2.9.0: + * keymaps: + + Add Georgian font (LatCyrHebKa-16_GIA.psfu) + and keymap (i386/qwerty/ge). + + Add new i386 azerty afnor keymap (i386/azerty/fr-afnor). + + Disable characters >=U+F000 in qwertz/de_alt_UTF-8 + (drop kbd-unicode-fxxx.patch). + + Add console keymap for Mac swiss german keyboards. + * libkeymap: + + Support KT_DEAD2 diacritics. + + Fix memory leaks. + * libkbdfile: + + Detect archive type based on content. + + Add support for decompressing files without using utilities. + Use ELF_DLOPEN_METADATA if possible. + * utils: + + kbd_mode: support Disabled mode (K_OFF). + + loadkeys: Add --tkeymap to dump the keymap as text. +- Drop kbd-2.7.1-reproducible-gzip.patch, now handled by the + upstream. + +------------------------------------------------------------------- Old: ---- kbd-2.7.1-reproducible-gzip.patch kbd-2.7.1.tar.sign kbd-2.7.1.tar.xz kbd-setfont-quiet.patch kbd-unicode-fxxx.patch New: ---- kbd-2.9.0.tar.sign kbd-2.9.0.tar.xz kbd-setfont-check.patch ----------(Old B)---------- Old: + loadkeys: Add --tkeymap to dump the keymap as text. - Drop kbd-2.7.1-reproducible-gzip.patch, now handled by the upstream. Old: - Replace setfont --quiet (kbd-setfont-quiet.patch) by upstream solution: add setfont --check that checks for setfont Old: + Disable characters >=U+F000 in qwertz/de_alt_UTF-8 (drop kbd-unicode-fxxx.patch). + Add console keymap for Mac swiss german keyboards. ----------(Old E)---------- ----------(New B)---------- New: availability without logging errors (boo#1212970, kbd-setfont-check.patch). ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kbd.spec ++++++ --- /var/tmp/diff_new_pack.0ayPUS/_old 2026-03-17 19:03:31.394249085 +0100 +++ /var/tmp/diff_new_pack.0ayPUS/_new 2026-03-17 19:03:31.398249251 +0100 @@ -24,7 +24,7 @@ %define legacy_folders amiga,atari,include,mac,pine,ppc,sun Name: kbd -Version: 2.7.1 +Version: 2.9.0 Release: 0 Summary: Keyboard and Font Utilities # git: git://git.altlinux.org/people/legion/packages/kbd.git @@ -59,12 +59,8 @@ Patch13: kbd-1.15.5-loadkeys-search-path.patch # PATCH-FEATURE-OPENSUSE kbdsettings-nox86.patch [email protected] -- Disable "bios" option for NumLock settings on non x86 platforms. Patch14: kbdsettings-nox86.patch -# PATCH-FIX-SLE kbd-unicode-fxxx.patch [email protected] bsc1085432 -- Do not cause error on UNICODE characters >= 0xF000 (e. g. ligature fi) -Patch15: kbd-unicode-fxxx.patch -# PATCH-FIX-UPSTREAM bsc#1240348 -- for reproducible builds -Patch16: https://github.com/legionus/kbd/commit/eebaa3b69efd9e3d218f3436dc43ff3340020ef5.patch#/kbd-2.7.1-reproducible-gzip.patch -# PATCH-FIX-OPENSUSE kbd-setfont-quiet.patch boo1212970 [email protected] -- Implement setfont --quiet to suppress warning from systemd-vconsole-setup. -Patch17: kbd-setfont-quiet.patch +# PATCH-FIX-OPENSUSE kbd-setfont-check.patch boo1212970 [email protected] -- Implement setfont --check that checks for setfont availability without logging errors. +Patch17: kbd-setfont-check.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: bison @@ -191,6 +187,8 @@ %ifarch %{ix86} x86_64 gcc %{optflags} -o numlockbios $RPM_SOURCE_DIR/numlockbios.c %endif +# kbd-2.9.0 has a bug that would end with .gz.gz files. Work arout it. (gh#legionus/kbd#154) +rm -r data/*_Z # fix lat2-16.psfu (bnc#340579) font=data/consolefonts/lat2a-16.psfu ./src/psfxtable -i $font -it data/unimaps/lat2u.uni \ @@ -364,6 +362,10 @@ if [ "$XKBLAYOUT-$XKBVARIANT" == "de-e1" ]; then sed -i 's/^plain keycode 33 = AltGr/plain keycode 33 = +U+0066/' /tmp/"$XKBLAYOUT"-"$XKBVARIANT".map fi + # fix conversion of h and H in fr-afnor keymap (boo#1259269) + if [ "$XKBLAYOUT-$XKBVARIANT" == "fr-afnor" ]; then + sed -i '/^keycode 35 /s/AltGr AltGr AltGr AltGr/+U+0067 +U+0047 +U+0067 +U+0047/g' /tmp/"$XKBLAYOUT"-"$XKBVARIANT".map + fi # skip converted layouts which cannot input ASCII (rh#1031848) grep -q "U+0041" /tmp/"$XKBLAYOUT"-"$XKBVARIANT".map && \ gzip -cn9 /tmp/"$XKBLAYOUT"-"$XKBVARIANT".map > %{buildroot}%{kbd}/keymaps/xkb/"$XKBLAYOUT"-"$XKBVARIANT".map.gz @@ -605,6 +607,7 @@ %files devel #%%doc %%{_defaultdocdir}/kbd/html %{_includedir}/kbd +%{_includedir}/array_size.h %{_includedir}/kbdfile.h %{_includedir}/keymap.h %{_includedir}/kfont.h ++++++ kbd-2.7.1.tar.xz -> kbd-2.9.0.tar.xz ++++++ ++++ 38262 lines of diff (skipped) ++++++ kbd-setfont-check.patch ++++++ >From f5695d3e69ddc9670dc7dd28107327aceda1ec70 Mon Sep 17 00:00:00 2001 From: Alexey Gladkov <[email protected]> Date: Fri, 13 Mar 2026 10:38:38 +0100 Subject: [PATCH] setfont: check whether console is suitable for font operations Signed-off-by: Alexey Gladkov <[email protected]> --- src/include/kbd/kfont.h | 8 ++++++++ src/libkfont/kdfontop.c | 35 ++++++++++++++++++++++++++++++++--- src/libkfont/libkfont.map | 9 +++++++++ src/setfont.c | 15 +++++++++++---- 4 files changed, 60 insertions(+), 7 deletions(-) diff --git a/src/include/kbd/kfont.h b/src/include/kbd/kfont.h index 67ad917..11bc97c 100644 --- a/src/include/kbd/kfont.h +++ b/src/include/kbd/kfont.h @@ -188,6 +188,14 @@ int kfont_put_font(struct kfont_context *ctx, int consolefd, unsigned char *buf, unsigned int kfont_get_fontsize(struct kfont_context *ctx, int consolefd) KBD_ATTR_NONNULL(1); +/* + * Check whether CONSOLEFD refers to a text-mode console suitable for + * font operations through KDFONTOP. The check is silent and returns 1 + * if the console can be used, 0 otherwise. + */ +int kfont_is_font_console(struct kfont_context *ctx, int consolefd) + KBD_ATTR_NONNULL(1); + /* * Restore font (doesn't work). */ diff --git a/src/libkfont/kdfontop.c b/src/libkfont/kdfontop.c index 4f1f0d2..64d78ad 100644 --- a/src/libkfont/kdfontop.c +++ b/src/libkfont/kdfontop.c @@ -21,22 +21,30 @@ #endif static int -is_kd_text(struct kfont_context *ctx, int fd) +is_kd_text_mode(struct kfont_context *ctx, int fd, int report_errors) { unsigned int kd_mode; if (ioctl(fd, KDGETMODE, &kd_mode)) { - KFONT_ERR(ctx, "ioctl(KDGETMODE): %m"); + if (report_errors) + KFONT_ERR(ctx, "ioctl(KDGETMODE): %m"); return 0; } if (kd_mode == KD_TEXT) return 1; - KFONT_ERR(ctx, _("Console is not in text mode")); + if (report_errors) + KFONT_ERR(ctx, _("Console is not in text mode")); return 0; } +static inline int +is_kd_text(struct kfont_context *ctx, int fd) +{ + return is_kd_text_mode(ctx, fd, 1); +} + int kfont_restore_font(struct kfont_context *ctx, int fd) { @@ -176,6 +184,27 @@ kfont_get_fontsize(struct kfont_context *ctx, int fd) return 256; } +int +kfont_is_font_console(struct kfont_context *ctx, int fd) +{ + if (!is_kd_text_mode(ctx, fd, 0)) + return 0; + + struct console_font_op cfo = { + .op = KD_FONT_OP_GET, + .flags = 0, + .width = 32, + .height = 32, + .charcount = (sizeof(unsigned char) * MAXFONTSIZE) / (64 * 128 / 8), + .data = NULL, + }; + + errno = 0; + ioctl(fd, KDFONTOP, &cfo); + + return (errno != ENOSYS && errno != ENOTTY); +} + static int put_font_kdfontop(struct kfont_context *ctx, int consolefd, unsigned char *buf, unsigned int count, diff --git a/src/libkfont/libkfont.map b/src/libkfont/libkfont.map index 0ea76d2..e89cd86 100644 --- a/src/libkfont/libkfont.map +++ b/src/libkfont/libkfont.map @@ -36,3 +36,12 @@ KFONT_1.0 { local: *; }; + +/* + * symbols since kbd 2.9.0 + */ +KFONT_2.9 { + global: + kfont_is_font_console; + +} KFONT_1.0; diff --git a/src/setfont.c b/src/setfont.c index dc336c1..8a80431 100644 --- a/src/setfont.c +++ b/src/setfont.c @@ -166,10 +166,8 @@ int main(int argc, char *argv[]) { const char *ifiles[MAXIFILES]; char *mfil, *ufil, *Ofil, *ofil, *omfil, *oufil, *console; - int ifilct = 0, fd, no_m, no_u; + int ifilct, fd, no_m, no_u, restore, check_console, ret, c; unsigned int iunit, hwunit; - int restore = 0; - int ret, c; struct kfont_context *kfont; @@ -183,6 +181,7 @@ int main(int argc, char *argv[]) { "-m, --consolemap <FILE>", _("load console screen map ('none' means don't load it).") }, { "-u, --unicodemap <FILE>", _("load font unicode map ('none' means don't load it).") }, { "-C, --console <DEV>", _("the console device to be used.") }, + { "-c, --check", _("check whether console is suitable for font operations.") }, { "-d, --double", _("double size of font horizontally and vertically.") }, { "-f, --force", _("force load unicode map.") }, { "-R, --reset", _("reset the screen font, size, and unicode map to the bootup defaults.") }, @@ -193,6 +192,7 @@ int main(int argc, char *argv[]) }; const struct kbd_option opts[] = { + { "=c", "check", kbd_no_argument, 'c' }, { "=d", "double", kbd_no_argument, 'd' }, { "=f", "force", kbd_no_argument, 'f' }, { "=R", "reset", kbd_no_argument, 'R' }, @@ -218,7 +218,8 @@ int main(int argc, char *argv[]) ifiles[0] = mfil = ufil = Ofil = ofil = omfil = oufil = NULL; iunit = hwunit = 0; - no_m = no_u = 0; + ifilct = no_m = no_u = 0; + restore = check_console = 0; console = NULL; while ((c = kbd_getopt(argc, argv, opts)) != -1) { @@ -271,6 +272,9 @@ int main(int argc, char *argv[]) case 'R': restore = 1; break; + case 'c': + check_console = 1; + break; case 'd': kfont_set_option(kfont, kfont_double_size); break; @@ -316,6 +320,9 @@ int main(int argc, char *argv[]) if ((fd = getfd(console)) < 0) kbd_error(EX_OSERR, 0, _("Couldn't get a file descriptor referring to the console.")); + if (check_console) + return kfont_is_font_console(kfont, fd) ? EX_OK : EXIT_FAILURE; + int kd_mode = -1; if (!ioctl(fd, KDGETMODE, &kd_mode) && (kd_mode == KD_GRAPHICS)) { /* -- 2.51.0
