mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-01-06 02:17:34 -08:00
sys-apps/kbd: backport various fixes to 2.9.0
Closes: https://bugs.gentoo.org/964410 Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
parent
cc35cf664b
commit
74e283b875
55
sys-apps/kbd/files/kbd-2.9.0-install-no-attr.patch
Normal file
55
sys-apps/kbd/files/kbd-2.9.0-install-no-attr.patch
Normal file
@ -0,0 +1,55 @@
|
||||
https://github.com/legionus/kbd/commit/db82eb6f86e6c0b8ac4260e88b88d66e1cd7c077
|
||||
|
||||
From db82eb6f86e6c0b8ac4260e88b88d66e1cd7c077 Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Gladkov <legion@kernel.org>
|
||||
Date: Wed, 10 Sep 2025 10:45:25 +0200
|
||||
Subject: [PATCH] Preserve only necessary metadata during install
|
||||
|
||||
"cp -a" tries to preserve all attributes if possible. This implies
|
||||
preserving mode, any ACL, xattr permissions, and security context.
|
||||
|
||||
In some cases (such as fakeroot), it is not possible to preserve that
|
||||
all attributes are preserved.
|
||||
|
||||
cp: failed to preserve ownership for /tmp/.pkgmk/pkg/usr/share/kbd/keymaps/i386/qwertz/sr-latin.map.gz: Operation not supported
|
||||
|
||||
To avoid this, we will require that only the necessary attributes be
|
||||
preserved. It is important for us to preserve the simlinks.
|
||||
|
||||
Signed-off-by: Alexey Gladkov <legion@kernel.org>
|
||||
---
|
||||
data/Makefile.am | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/data/Makefile.am b/data/Makefile.am
|
||||
index a730062b..4d2ae3d1 100644
|
||||
--- a/data/Makefile.am
|
||||
+++ b/data/Makefile.am
|
||||
@@ -44,21 +44,21 @@ endif
|
||||
|
||||
install-consolefonts: $(SRC_FONTDIR) $(SRC_PARTIALDIR)
|
||||
mkdir -p -m 755 -- $(DESTDIR)$(datadir)/$(FONTDIR)
|
||||
- cp -a -- $(SRC_FONTDIR)/* $(DESTDIR)$(datadir)/$(FONTDIR)/
|
||||
+ cp -dPR -- $(SRC_FONTDIR)/* $(DESTDIR)$(datadir)/$(FONTDIR)/
|
||||
mkdir -p -m 755 -- $(DESTDIR)$(datadir)/$(FONTDIR)/$(PARTIALDIR)
|
||||
- cp -a -- $(SRC_PARTIALDIR)/* $(DESTDIR)$(datadir)/$(FONTDIR)/$(PARTIALDIR)/
|
||||
+ cp -dPR -- $(SRC_PARTIALDIR)/* $(DESTDIR)$(datadir)/$(FONTDIR)/$(PARTIALDIR)/
|
||||
|
||||
install-consoletrans:
|
||||
mkdir -p -m 755 -- $(DESTDIR)$(datadir)/$(TRANSDIR)
|
||||
- cp -a -- $(srcdir)/$(TRANSDIR)/* $(DESTDIR)$(datadir)/$(TRANSDIR)/
|
||||
+ cp -dPR -- $(srcdir)/$(TRANSDIR)/* $(DESTDIR)$(datadir)/$(TRANSDIR)/
|
||||
|
||||
install-unimaps:
|
||||
mkdir -p -m 755 -- $(DESTDIR)$(datadir)/$(UNIMAPDIR)
|
||||
- cp -a -- $(srcdir)/$(UNIMAPDIR)/* $(DESTDIR)$(datadir)/$(UNIMAPDIR)/
|
||||
+ cp -dPR -- $(srcdir)/$(UNIMAPDIR)/* $(DESTDIR)$(datadir)/$(UNIMAPDIR)/
|
||||
|
||||
install-keymaps: $(SRC_KEYMAPDIR)
|
||||
mkdir -p -m 755 -- $(DESTDIR)$(datadir)/$(KEYMAPDIR)
|
||||
- cp -ar -- $(SRC_KEYMAPDIR)/* $(DESTDIR)$(datadir)/$(KEYMAPDIR)/
|
||||
+ cp -dPR -- $(SRC_KEYMAPDIR)/* $(DESTDIR)$(datadir)/$(KEYMAPDIR)/
|
||||
cd "$(DESTDIR)$(datadir)/$(KEYMAPDIR)"; \
|
||||
for f in $(IGNORE_KEYMAPS); do ! test -e "$$f" || rm -f -- "$$f"; done
|
||||
rm -f $(DESTDIR)$(datadir)/$(KEYMAPDIR)/ppc
|
||||
|
||||
41
sys-apps/kbd/files/kbd-2.9.0-install-posix.patch
Normal file
41
sys-apps/kbd/files/kbd-2.9.0-install-posix.patch
Normal file
@ -0,0 +1,41 @@
|
||||
https://github.com/legionus/kbd/commit/51ee1d95fae950323b62d3f31b14dc1e0e436762
|
||||
|
||||
From 51ee1d95fae950323b62d3f31b14dc1e0e436762 Mon Sep 17 00:00:00 2001
|
||||
From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me>
|
||||
Date: Fri, 31 Oct 2025 04:44:33 +0100
|
||||
Subject: [PATCH] data/Makefile.am: put `--` between end of option and mode
|
||||
|
||||
POSIX comforming getopt(3) will stop parsing options at the mode argument
|
||||
(provided it doesn't starts with a dash).
|
||||
So prior to this change `--` would be taken as a file argument
|
||||
because getopt(3) already stopped.
|
||||
|
||||
Signed-off-by: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
|
||||
---
|
||||
data/Makefile.am | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/data/Makefile.am b/data/Makefile.am
|
||||
index 4d2ae3d1..8cd3610a 100644
|
||||
--- a/data/Makefile.am
|
||||
+++ b/data/Makefile.am
|
||||
@@ -22,15 +22,15 @@ V_PACK_1 =
|
||||
|
||||
# compress data files - do not touch the distribution but copy first
|
||||
$(SRC_KEYMAPDIR): $(KEYMAPDIR)
|
||||
- $(V_PACK)cp -r -- "$<" "$@" && chmod -R u+w -- "$@" && \
|
||||
+ $(V_PACK)cp -r -- "$<" "$@" && chmod -R -- u+w "$@" && \
|
||||
$(srcdir)/compress.sh "$@"/*/*.map "$@"/*/*/*.map
|
||||
|
||||
$(SRC_FONTDIR): $(FONTDIR)
|
||||
- $(V_PACK)cp -r -- "$<" "$@" && chmod -R u+w -- "$@" && \
|
||||
+ $(V_PACK)cp -r -- "$<" "$@" && chmod -R -- u+w "$@" && \
|
||||
$(srcdir)/compress.sh "$@"/*
|
||||
|
||||
$(SRC_PARTIALDIR): $(PARTIALDIR)
|
||||
- $(V_PACK)cp -r -- "$<" "$@" && chmod -R u+w -- "$@" && \
|
||||
+ $(V_PACK)cp -r -- "$<" "$@" && chmod -R -- u+w "$@" && \
|
||||
$(srcdir)/compress.sh "$@"/*
|
||||
|
||||
# (not yet screenmaps - some other time)
|
||||
|
||||
45
sys-apps/kbd/files/kbd-2.9.0-nullptr.patch
Normal file
45
sys-apps/kbd/files/kbd-2.9.0-nullptr.patch
Normal file
@ -0,0 +1,45 @@
|
||||
https://github.com/legionus/kbd/commit/c5473634bbb653f0b61bd237d0e4bdfc9cfe3650
|
||||
|
||||
From c5473634bbb653f0b61bd237d0e4bdfc9cfe3650 Mon Sep 17 00:00:00 2001
|
||||
From: Bohai Li <lbhlbhlbh2002@icloud.com>
|
||||
Date: Wed, 19 Nov 2025 00:31:52 +0800
|
||||
Subject: [PATCH] Fix NULL reference in option parser
|
||||
|
||||
If an option that needs an argument is given, but the argument is
|
||||
actually missing, the optind will increase by 1 and return, and if
|
||||
the option is the last option, a NULL reference occurs at
|
||||
setfont.c:290. This bug is fixed by returning '!' instead of '?' to
|
||||
main and process this condition separately.
|
||||
|
||||
Signed-off-by: Bohai Li <lbhlbhlbh2002@icloud.com>
|
||||
---
|
||||
src/setfont.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/setfont.c b/src/setfont.c
|
||||
index 18eb6386..dc336c18 100644
|
||||
--- a/src/setfont.c
|
||||
+++ b/src/setfont.c
|
||||
@@ -158,8 +158,8 @@ kbd_getopt(int argc, char **argv, const struct kbd_option *opts)
|
||||
return '?';
|
||||
|
||||
required_argument:
|
||||
- kbd_warning(0, "option '%s' requires an argument", name);
|
||||
- return '?';
|
||||
+ optind--;
|
||||
+ return '!';
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
@@ -296,6 +296,10 @@ int main(int argc, char *argv[])
|
||||
kbd_error(EX_USAGE, 0, _("Too many input files."));
|
||||
ifiles[ifilct++] = argv[optind++];
|
||||
break;
|
||||
+ case '!':
|
||||
+ kbd_warning(0, "option '%s' requires an argument", argv[optind]);
|
||||
+ usage(EX_USAGE, opthelp);
|
||||
+ break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
54
sys-apps/kbd/files/kbd-2.9.0-time64.patch
Normal file
54
sys-apps/kbd/files/kbd-2.9.0-time64.patch
Normal file
@ -0,0 +1,54 @@
|
||||
https://github.com/legionus/kbd/commit/2f9a4e56c2ef245fbe840677aad9d5932e17f50d
|
||||
|
||||
From 2f9a4e56c2ef245fbe840677aad9d5932e17f50d Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Gladkov <legion@kernel.org>
|
||||
Date: Mon, 8 Dec 2025 11:28:24 +0100
|
||||
Subject: [PATCH] libkbdfile: Fix problem with undeclared sym_gzopen
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
A compile error occurs on certain systems:
|
||||
|
||||
kbdfile-zlib.c: In function 'dlopen_note':
|
||||
elf-note.h:27:30: error: 'sym_gzopen' undeclared (first use in this function); did you mean 'sym_gzopen64'?
|
||||
27 | #define DLSYM_ARG(symbol__) &sym_##symbol__, STRINGIFY(symbol__),
|
||||
|
||||
kbdfile-zlib.c: In function 'kbdfile_decompressor_zlib': kbdfile-zlib.c:61:15: error: implicit declaration of function 'sym_gzopen'; did you mean 'sym_gzopen64'?
|
||||
[-Wimplicit-function-declaration]
|
||||
61 | gzf = sym_gzopen(file->pathname, "rb");
|
||||
|
||||
The problem arises because if -D_FILE_OFFSET_BITS=64 is specified, which
|
||||
in zlib ultimately makes gzopen a macro that expands to gzopen64.
|
||||
DECLARE_SYM(gzopen) from elf-note.h then expands gzopen to gzopen64,
|
||||
resulting in sym_gzopen64 declared. That's why no sym_gzopen exists.
|
||||
|
||||
Link: https://github.com/legionus/kbd/pull/150
|
||||
Suggested-by: Jan Čermák <sairon@sairon.cz>
|
||||
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
|
||||
Signed-off-by: Alexey Gladkov <legion@kernel.org>
|
||||
---
|
||||
src/libkbdfile/elf-note.h | 5 +----
|
||||
1 file changed, 1 insertion(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/libkbdfile/elf-note.h b/src/libkbdfile/elf-note.h
|
||||
index a0fd9e23..d3b8d5c9 100644
|
||||
--- a/src/libkbdfile/elf-note.h
|
||||
+++ b/src/libkbdfile/elf-note.h
|
||||
@@ -26,14 +26,11 @@ int dlsym_many(void **dlp, const char *filename, ...);
|
||||
*/
|
||||
#define DLSYM_ARG(symbol__) &sym_##symbol__, STRINGIFY(symbol__),
|
||||
|
||||
-/* For symbols being dynamically loaded */
|
||||
-#define DECLARE_DLSYM(symbol) static typeof(symbol) *sym_##symbol
|
||||
-
|
||||
/*
|
||||
* Helper defines, to be done locally before including this header to switch between
|
||||
* implementations
|
||||
*/
|
||||
-#define DECLARE_SYM(sym__) DECLARE_DLSYM(sym__);
|
||||
+#define DECLARE_SYM(sym__) static typeof(sym__) *sym_##sym__;
|
||||
|
||||
/*
|
||||
* Originally from systemd codebase.
|
||||
|
||||
33
sys-apps/kbd/files/kbd-2.9.0-uninit.patch
Normal file
33
sys-apps/kbd/files/kbd-2.9.0-uninit.patch
Normal file
@ -0,0 +1,33 @@
|
||||
https://github.com/legionus/kbd/commit/7aa15f4c44b570a667b4911a2b6db0e6b9145da5
|
||||
|
||||
From 7aa15f4c44b570a667b4911a2b6db0e6b9145da5 Mon Sep 17 00:00:00 2001
|
||||
From: Tommy-Zhang3759 <tommyzhang4707@outlook.com>
|
||||
Date: Sat, 6 Dec 2025 05:18:43 +1100
|
||||
Subject: [PATCH] setfont: Initialize data pointer when resetting font
|
||||
|
||||
When resetting the font to default, the `data` field in the
|
||||
`console_font_op` structure must be explicitly set to NULL.
|
||||
|
||||
Previously, this field was left uninitialized. The kernel treats a
|
||||
non-NULL `data` pointer as a pointer to a font name string. This caused
|
||||
the ioctl to fail with -EFAULT (Bad address) because it attempted to
|
||||
read from a garbage address.
|
||||
|
||||
Signed-off-by: Yutao Zhang <tommyzhang4707@outlook.com>
|
||||
---
|
||||
src/libkfont/kdfontop.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/libkfont/kdfontop.c b/src/libkfont/kdfontop.c
|
||||
index 8f132ff5..4f1f0d2a 100644
|
||||
--- a/src/libkfont/kdfontop.c
|
||||
+++ b/src/libkfont/kdfontop.c
|
||||
@@ -46,6 +46,7 @@ kfont_restore_font(struct kfont_context *ctx, int fd)
|
||||
return -1;
|
||||
|
||||
cfo.op = KD_FONT_OP_SET_DEFAULT;
|
||||
+ cfo.data = NULL;
|
||||
|
||||
if (ioctl(fd, KDFONTOP, &cfo)) {
|
||||
KFONT_ERR(ctx, "ioctl(KD_FONT_OP_SET_DEFAULT): %m");
|
||||
|
||||
109
sys-apps/kbd/kbd-2.9.0-r1.ebuild
Normal file
109
sys-apps/kbd/kbd-2.9.0-r1.ebuild
Normal file
@ -0,0 +1,109 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit autotools multiprocessing
|
||||
|
||||
if [[ ${PV} == 9999 ]] ; then
|
||||
inherit autotools git-r3
|
||||
EGIT_REPO_URI="https://github.com/legionus/kbd.git https://git.kernel.org/pub/scm/linux/kernel/git/legion/kbd.git"
|
||||
EGIT_BRANCH="master"
|
||||
else
|
||||
if [[ $(ver_cut 3) -lt 90 ]] ; then
|
||||
SRC_URI="https://www.kernel.org/pub/linux/utils/kbd/${P}.tar.xz"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
else
|
||||
inherit autotools
|
||||
SRC_URI="https://github.com/legionus/kbd/archive/v${PV}.tar.gz -> ${P}.tar.gz"
|
||||
fi
|
||||
fi
|
||||
|
||||
DESCRIPTION="Keyboard and console utilities"
|
||||
HOMEPAGE="https://kbd-project.org/"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
IUSE="bzip2 lzma nls selinux pam test zlib zstd"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
DEPEND="
|
||||
app-alternatives/gzip
|
||||
bzip2? ( app-arch/bzip2 )
|
||||
lzma? ( app-arch/xz-utils )
|
||||
pam? (
|
||||
!app-misc/vlock
|
||||
sys-libs/pam
|
||||
)
|
||||
zlib? ( virtual/zlib:= )
|
||||
zstd? ( app-arch/zstd:= )
|
||||
"
|
||||
RDEPEND="
|
||||
${DEPEND}
|
||||
selinux? ( sec-policy/selinux-loadkeys )
|
||||
"
|
||||
BDEPEND="
|
||||
sys-devel/flex
|
||||
virtual/pkgconfig
|
||||
test? ( dev-libs/check )
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${P}-install-no-attr.patch
|
||||
"${FILESDIR}"/${P}-install-posix.patch
|
||||
"${FILESDIR}"/${P}-nullptr.patch
|
||||
"${FILESDIR}"/${P}-uninit.patch
|
||||
"${FILESDIR}"/${P}-time64.patch
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
# Rename conflicting keymaps to have unique names, bug #293228
|
||||
# See also https://github.com/legionus/kbd/issues/76.
|
||||
pushd "${S}"/data/keymaps/i386 &> /dev/null || die
|
||||
mv fgGIod/trf.map fgGIod/trf-fgGIod.map || die
|
||||
mv olpc/es.map olpc/es-olpc.map || die
|
||||
mv olpc/pt.map olpc/pt-olpc.map || die
|
||||
mv qwerty/cz.map qwerty/cz-qwerty.map || die
|
||||
popd &> /dev/null || die
|
||||
|
||||
#if [[ ${PV} == 9999 ]] || [[ $(ver_cut 3) -ge 90 ]] ; then
|
||||
# eautoreconf
|
||||
#fi
|
||||
|
||||
# Drop after 2.9.0
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# https://github.com/legionus/kbd/issues/121
|
||||
unset LEX
|
||||
|
||||
local myeconfargs=(
|
||||
--disable-werror
|
||||
# No Valgrind for the testsuite
|
||||
--disable-memcheck
|
||||
|
||||
$(use_enable nls)
|
||||
$(use_enable pam vlock)
|
||||
$(use_enable test tests)
|
||||
$(use_with bzip2)
|
||||
$(use_with lzma)
|
||||
$(use_with zlib)
|
||||
$(use_with zstd)
|
||||
)
|
||||
|
||||
econf "${myeconfargs[@]}"
|
||||
}
|
||||
|
||||
src_test() {
|
||||
emake -Onone check TESTSUITEFLAGS="--jobs=$(get_makeopts_jobs)"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
default
|
||||
|
||||
# USE="test" installs .la files
|
||||
find "${ED}" -type f -name "*.la" -delete || die
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user