package/kbd: fix zlib build, add optional dependencies

Buildroot commit 930660890b bumped kbd to
version 2.9.0 which includes optional support for various compression
libraries. This commit adds the corresponding configure options and a
fix for build errors caused by zlib.

The build error was happening when a zlib was compiled before kbd.
The issue can be reproduced with the commands:

    cat >.config <<EOF
    BR2_aarch64=y
    BR2_TOOLCHAIN_EXTERNAL=y
    BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
    BR2_PACKAGE_KBD=y
    BR2_PACKAGE_ZLIB=y
    EOF
    make olddefconfig
    make zlib
    make kbd

The compilation fails with the erro:

    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__),
          |                              ^~~~

Fixes:
https://autobuild.buildroot.net/results/8ff/8ff6c3d940b68069f748f12646f7516ec86172c1/

Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
[Julien:
 - add commands to reproduce the issue
 - update patch "Upstream:" link to upstream commit
]
Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
Bernd Kuhls
2025-12-07 19:33:47 +01:00
committed by Julien Olivain
parent 8344efd764
commit d98d9ba28f
2 changed files with 64 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
From 488872421ef38215d2797f78497eb559d8eec32a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= <sairon@users.noreply.github.com>
Date: Fri, 5 Dec 2025 16:45:36 +0100
Subject: [PATCH] libkbdfile: fix zlib build
Upstream: https://github.com/legionus/kbd/commit/2f9a4e56c2ef245fbe840677aad9d5932e17f50d
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
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 a0fd9e2..d3b8d5c 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.
--
2.47.3

View File

@@ -13,6 +13,35 @@ KBD_CONF_OPTS = \
KBD_DEPENDENCIES = \
$(TARGET_NLS_DEPENDENCIES) \
host-pkgconf
ifeq ($(BR2_PACKAGE_BZIP2),y)
KBD_CONF_OPTS += --with-bzip2
KBD_DEPENDENCIES += bzip2
else
KBD_CONF_OPTS += --without-bzip2
endif
ifeq ($(BR2_PACKAGE_XZ),y)
KBD_CONF_OPTS += --with-lzma
KBD_DEPENDENCIES += xz
else
KBD_CONF_OPTS += --without-lzma
endif
ifeq ($(BR2_PACKAGE_ZLIB),y)
KBD_CONF_OPTS += --with-zlib
KBD_DEPENDENCIES += zlib
else
KBD_CONF_OPTS += --without-zlib
endif
ifeq ($(BR2_PACKAGE_ZSTD),y)
KBD_CONF_OPTS += --with-zstd
KBD_DEPENDENCIES += zstd
else
KBD_CONF_OPTS += --without-zstd
endif
KBD_LICENSE = GPL-2.0+
KBD_LICENSE_FILES = COPYING CREDITS