summaryrefslogtreecommitdiff
path: root/dev-libs/libkdumpfile
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-08-28 12:00:19 +0100
committerV3n3RiX <venerix@koprulu.sector>2024-08-28 12:00:19 +0100
commit7166f3a0a0b7886d340010458d0b130013cb9989 (patch)
tree3ff502007dde9dba943a004a3bf201ae4e0787bd /dev-libs/libkdumpfile
parent345c02ca33341652116ddec6705530223af2de85 (diff)
gentoo auto-resync : 28:08:2024 - 12:00:19
Diffstat (limited to 'dev-libs/libkdumpfile')
-rw-r--r--dev-libs/libkdumpfile/Manifest6
-rw-r--r--dev-libs/libkdumpfile/files/libkdumpfile-0.5.4-32-bit-tests.patch73
-rw-r--r--dev-libs/libkdumpfile/files/libkdumpfile-0.5.4-c99.patch48
-rw-r--r--dev-libs/libkdumpfile/files/libkdumpfile-0.5.4-disabled-compression-tests.patch68
-rw-r--r--dev-libs/libkdumpfile/libkdumpfile-0.5.4.ebuild71
-rw-r--r--dev-libs/libkdumpfile/metadata.xml11
6 files changed, 277 insertions, 0 deletions
diff --git a/dev-libs/libkdumpfile/Manifest b/dev-libs/libkdumpfile/Manifest
new file mode 100644
index 000000000000..3e84a57be4e8
--- /dev/null
+++ b/dev-libs/libkdumpfile/Manifest
@@ -0,0 +1,6 @@
+AUX libkdumpfile-0.5.4-32-bit-tests.patch 2197 BLAKE2B 3368b373a0e8e7127bc560fdfa5b370e4a42920c04d18d05a5c60bd29ad6b33703e52e0dcaa886bc91444f5e90a11e3a97e3d64692d26430d48df5c2b43e3c3b SHA512 6cc17ef0214f8fab33e6c36df457a11c2dd1feaa18804e93fde94c7e68fe96ba3ba6869231de3215a38944025741028d696ef679d44dbcbb24d2cd363ea537db
+AUX libkdumpfile-0.5.4-c99.patch 1500 BLAKE2B f7879cf9d08660ce89ae3e771c36cbe07a51767288c6dbd36be2e97a795698ca381370f16d7a3ff134b147eb2c5c01efba0bf792c5da7637df6597a355f283a9 SHA512 5b67254f2f113ea6e86a4024917bf02683ae8c9a6757edbc01f26d107ff86ae30dc111285e66513f81e36fe32188b45d52927235198217de40c256ee2effadaa
+AUX libkdumpfile-0.5.4-disabled-compression-tests.patch 2006 BLAKE2B b4c8555ca7ea47dc5f842c71dee21967d1044d874538b8f02d30f11e6dc10306ceab52de0b0e0d3e20182234ce0a2c6a2885a528831ca7fda0d4c753620f5848 SHA512 27bcd11b409bc547eaa125736015ca319a9fbaa720b078dc7eec0274ab95302dff231048404957dea5c4cfed2854909faf23df4126efcadb767e44c5926983c4
+DIST libkdumpfile-0.5.4.tar.bz2 623108 BLAKE2B 17a425c2a0545f60574255d5ec139f60a59dd2c9c047a89f9d021afe31cae959c691b550d9ad4e10c88a11f5f1bab1a4d94dab025060dcd2598837442281b3b9 SHA512 6cdd77e3460b324f4e0641fc8f4cf1dcd8b7de4ec82a37ca11e4edfa7730f90305c2724825f8b1cf8ac2e8ad104fee1b6a36775287b084db802ae2f44a55cd85
+EBUILD libkdumpfile-0.5.4.ebuild 1641 BLAKE2B 5fc355ba12741b674adeba676d8153db09b8e208110137f0aeb9ba24aeb6e2e325780a635129812aa9baba6f33f3bb0f2e6e2214d501e6104db35e7f6af2f375 SHA512 c9f9bf711bcee1bc977af49c8706e923b065543d70e037e877d99d972e5f62cd074bec2ceec0e02aa17e66f45f91a06711dc0611d524d5b05eabf57674fe9d70
+MISC metadata.xml 326 BLAKE2B 13b23cbf5c4089460907bebe9e73dad724bfea465300417f82d20748779d865459c6791d0a6d27237db88819690b4124235721c555895b3ca0a3aa5fa63ad2cf SHA512 aae2510a5c9a7662d7beaccef7c19b42be69e34bc0a2e6fb7f31d332ec7a5389f38aef97123b2f213bd4bb3376630b6989a6d71785f0198f563f9ce5d05cfdca
diff --git a/dev-libs/libkdumpfile/files/libkdumpfile-0.5.4-32-bit-tests.patch b/dev-libs/libkdumpfile/files/libkdumpfile-0.5.4-32-bit-tests.patch
new file mode 100644
index 000000000000..4b5c0cb4c8fc
--- /dev/null
+++ b/dev-libs/libkdumpfile/files/libkdumpfile-0.5.4-32-bit-tests.patch
@@ -0,0 +1,73 @@
+https://github.com/ptesarik/libkdumpfile/commit/16c73b83a78c1bfb55f3e9823b09fce549c8ec11
+
+From 16c73b83a78c1bfb55f3e9823b09fce549c8ec11 Mon Sep 17 00:00:00 2001
+From: Petr Tesarik <petr@tesarici.cz>
+Date: Thu, 23 May 2024 13:01:17 +0200
+Subject: [PATCH] Fix file cache test for 32-bit architectures
+
+If 64-bit file offsets are selected with _FILE_OFFSET_BITS on a 32-bit
+architecture, the default mmap() call takes a 64-bit off_t, but dlsym()
+returns a pointer to a function that takes a 32-bit off_t.
+
+To fix it:
+
+- always call original mmap64() if it is available,
+- use XSTRINGIFY(mmap) instead of "mmap".
+
+The latter is needed, because some systems define mmap as a macro which
+expands to another identifier.
+
+Fixes: #80
+Signed-off-by: Petr Tesarik <petr@tesarici.cz>
+---
+ configure.ac | 2 ++
+ src/kdumpfile/test-fcache.c | 13 ++++++++++++-
+ 3 files changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 04d1c6fa..93ebb39d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -61,6 +61,8 @@ AC_CHECK_SIZEOF(long)
+ AC_CHECK_SIZEOF(off_t)
+ AC_SUBST(SIZEOF_OFF_T, $ac_cv_sizeof_off_t)
+
++AC_CHECK_FUNCS(mmap64)
++
+ dnl This makes sure pkg.m4 is available.
+ m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
+
+diff --git a/src/kdumpfile/test-fcache.c b/src/kdumpfile/test-fcache.c
+index 1ed57447..604ed540 100644
+--- a/src/kdumpfile/test-fcache.c
++++ b/src/kdumpfile/test-fcache.c
+@@ -64,9 +64,20 @@ static char *mmapbuf;
+
+ static int failmmap;
+
++#ifdef HAVE_MMAP64
++
++#define STR_MMAP XSTRINGIFY(mmap64)
++static void* (*orig_mmap)(void *addr, size_t length, int prot, int flags,
++ int fd, off64_t offset);
++
++#else
++
++#define STR_MMAP XSTRINGIFY(mmap)
+ static void* (*orig_mmap)(void *addr, size_t length, int prot, int flags,
+ int fd, off_t offset);
+
++#endif
++
+ void *
+ mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)
+ {
+@@ -445,7 +456,7 @@ main(int argc, char **argv)
+ return TEST_ERR;
+ }
+
+- orig_mmap = dlsym(RTLD_NEXT, "mmap");
++ orig_mmap = dlsym(RTLD_NEXT, STR_MMAP);
+ if (!orig_mmap) {
+ fprintf(stderr, "Cannot get original mmap() address: %s\n",
+ dlerror());
diff --git a/dev-libs/libkdumpfile/files/libkdumpfile-0.5.4-c99.patch b/dev-libs/libkdumpfile/files/libkdumpfile-0.5.4-c99.patch
new file mode 100644
index 000000000000..959af60454ef
--- /dev/null
+++ b/dev-libs/libkdumpfile/files/libkdumpfile-0.5.4-c99.patch
@@ -0,0 +1,48 @@
+https://github.com/ptesarik/libkdumpfile/commit/3682f5cad70146ab35d05af251d4461ef650b4b5
+
+From 3682f5cad70146ab35d05af251d4461ef650b4b5 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Thu, 4 Jan 2024 12:36:53 +0100
+Subject: [PATCH] Python 3 does not have a tp_print member in PyTypeObject
+
+This avoids an int-conversion compiler error with current
+compilers:
+
+./kdumpfile.c:1449:9: error: initialization of 'long int' from 'int (*)(PyObject *, FILE *, int)' {aka 'int (*)(struct _object *, FILE *, int)'} makes integer from pointer without a cast
+ 1449 | attr_dir_print, /* tp_print*/
+ | ^~~~~~~~~~~~~~
+
+
+In Python 3.11, the field at this position is called tp_vectorcall_offset
+and has type Py_ssize_t, hence the error.
+--- a/python/kdumpfile.c
++++ b/python/kdumpfile.c
+@@ -1143,7 +1143,6 @@ attr_dir_repr(PyObject *_self)
+ Py_XDECREF(colon);
+ return result;
+ }
+-#endif
+
+ static int
+ attr_dir_print(PyObject *_self, FILE *fp, int flags)
+@@ -1214,6 +1213,7 @@ attr_dir_print(PyObject *_self, FILE *fp, int flags)
+ kdump_attr_iter_end(ctx, &iter);
+ return -1;
+ }
++#endif
+
+ static PyObject *
+ attr_iterkey_new(PyObject *_self)
+@@ -1446,7 +1446,11 @@ static PyTypeObject attr_dir_object_type =
+ sizeof(char), /* tp_itemsize*/
+ /* methods */
+ attr_dir_dealloc, /* tp_dealloc*/
++#if PY_MAJOR_VERSION < 3
+ attr_dir_print, /* tp_print*/
++#else
++ 0,
++#endif
+ 0, /* tp_getattr*/
+ 0, /* tp_setattr*/
+ 0, /* tp_compare*/
+
diff --git a/dev-libs/libkdumpfile/files/libkdumpfile-0.5.4-disabled-compression-tests.patch b/dev-libs/libkdumpfile/files/libkdumpfile-0.5.4-disabled-compression-tests.patch
new file mode 100644
index 000000000000..5748a27e1e81
--- /dev/null
+++ b/dev-libs/libkdumpfile/files/libkdumpfile-0.5.4-disabled-compression-tests.patch
@@ -0,0 +1,68 @@
+https://github.com/ptesarik/libkdumpfile/commit/d529a573ab2cdbda501309e377007812e6de3351
+
+From d529a573ab2cdbda501309e377007812e6de3351 Mon Sep 17 00:00:00 2001
+From: Stephen Brennan <stephen.s.brennan@oracle.com>
+Date: Fri, 19 Jan 2024 11:52:24 -0800
+Subject: [PATCH] tests: skip tests which apply to disabled compression
+
+If configured --without-libzstd, for example, the diskdump-basic-zstd
+test will return an ERROR code, causing "make check" to fail. Even using
+XFAIL_TESTS will not resolve the error, because the return code is
+ERROR, not FAIL.
+
+Instead, conditionally include the tests based on whether we are
+compiling with each compression format. This way, we don't test
+unsupported features.
+
+Signed-off-by: Stephen Brennan <stephen.s.brennan@oracle.com>
+---
+ m4/compression.m4 | 1 +
+ tests/Makefile.am | 17 +++++++++++++----
+ 2 files changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/m4/compression.m4 b/m4/compression.m4
+index 6755ef13..8cb7ce2d 100644
+--- a/m4/compression.m4
++++ b/m4/compression.m4
+@@ -32,4 +32,5 @@ AC_SUBST([$2][_REQUIRES])
+ AC_SUBST([$2][_CFLAGS])
+ AC_SUBST([$2][_LIBS])
+ AC_SUBST([$2][_PC_LIBS])
++AM_CONDITIONAL(HAVE_$2, test "x$have_$1" = xyes)
+ ])
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 0c03b20b..8ac90b39 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -196,10 +196,6 @@ test_scripts = \
+ diskdump-empty-s390x \
+ diskdump-empty-x86_64 \
+ diskdump-basic-raw \
+- diskdump-basic-zlib \
+- diskdump-basic-lzo \
+- diskdump-basic-snappy \
+- diskdump-basic-zstd \
+ diskdump-flat-raw \
+ diskdump-multiread \
+ diskdump-excluded \
+@@ -331,6 +327,19 @@ test_scripts = \
+ xlat-xen-x86_64-4.6-bigmem \
+ zero-size
+
++if HAVE_ZSTD
++test_scripts += diskdump-basic-zstd
++endif
++if HAVE_ZLIB
++test_scripts += diskdump-basic-zlib
++endif
++if HAVE_LZO
++test_scripts += diskdump-basic-lzo
++endif
++if HAVE_SNAPPY
++test_scripts += diskdump-basic-snappy
++endif
++
+ dist_check_DATA = \
+ addrmap-single-begin.expect \
+ addrmap-single-middle.expect \
+
diff --git a/dev-libs/libkdumpfile/libkdumpfile-0.5.4.ebuild b/dev-libs/libkdumpfile/libkdumpfile-0.5.4.ebuild
new file mode 100644
index 000000000000..fe48a9f877fc
--- /dev/null
+++ b/dev-libs/libkdumpfile/libkdumpfile-0.5.4.ebuild
@@ -0,0 +1,71 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+inherit autotools python-r1
+
+DESCRIPTION="Kernel coredump file access"
+HOMEPAGE="https://github.com/ptesarik/libkdumpfile"
+SRC_URI="https://github.com/ptesarik/libkdumpfile/releases/download/v${PV}/${P}.tar.bz2"
+
+LICENSE="|| ( LGPL-3+ GPL-2+ )"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="lzo snappy zlib zstd"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="
+ ${PYTHON_DEPS}
+ lzo? ( dev-libs/lzo )
+ snappy? ( app-arch/snappy:= )
+ zlib? ( sys-libs/zlib )
+ zstd? ( app-arch/zstd:= )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-c99.patch
+ "${FILESDIR}"/${P}-disabled-compression-tests.patch
+ "${FILESDIR}"/${P}-32-bit-tests.patch
+)
+
+src_prepare() {
+ default
+
+ # Can drop on next release >0.5.4
+ eautoreconf
+}
+
+src_configure() {
+ # We could make Python optional in future as libkdumpfile's
+ # builtin Python bindings appear deprecated in favour of another
+ # CFFI-based approach, but given we're adding libkdumpfile for
+ # dev-debug/drgn right now which uses *these*, let's not bother.
+ local ECONF_SOURCE=${S}
+ local myeconfargs=(
+ $(use_with lzo lzo2)
+ $(use_with snappy)
+ $(use_with zlib)
+ $(use_with zstd libzstd)
+ )
+
+ python_foreach_impl run_in_build_dir econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+ python_foreach_impl run_in_build_dir default
+}
+
+src_test() {
+ python_foreach_impl run_in_build_dir default
+}
+
+src_install() {
+ python_foreach_impl run_in_build_dir default
+ python_foreach_impl python_optimize
+ einstalldocs
+ find "${D}" -name '*.la' -delete || die
+}
diff --git a/dev-libs/libkdumpfile/metadata.xml b/dev-libs/libkdumpfile/metadata.xml
new file mode 100644
index 000000000000..57d3a905a40e
--- /dev/null
+++ b/dev-libs/libkdumpfile/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>sam@gentoo.org</email>
+ <name>Sam James</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">ptesarik/libkdumpfile</remote-id>
+ </upstream>
+</pkgmetadata>