sys-libs/libnbd: add 1.22.2

Dropped test dependency on sys-block/nbd. The only dependency required
for test is sys-block/ndbkit. However, it will test sys-block/nbd and
app-emulation/qemu, if present.
The examples were automagically added, so made that a seperate use flag
Add Python 3.13 support
Add support for compiling rust binding
If support for a particular for a partical feature wasn't enabled, 0 tests
would be run for that, which while not fatal, produces a QA warning. Worked
around it by removing what isn't select in the top-level Makefile.am with
sed
Test calls certtool, go net-libs/gnutls[tools] required to test.

Closes: https://bugs.gentoo.org/884245
Closes: https://bugs.gentoo.org/884247
Closes: https://bugs.gentoo.org/926647
Closes: https://bugs.gentoo.org/938348
Closes: https://bugs.gentoo.org/938349
Closes: https://bugs.gentoo.org/946553
Closes: https://bugs.gentoo.org/952745
Closes: https://bugs.gentoo.org/955251

Signed-off-by: Christopher Byrne <salah.coronya@gmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/40808
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Christopher Byrne
2025-02-28 01:26:18 -06:00
committed by Sam James
parent 3dbe53573f
commit 7354829ce0
5 changed files with 330 additions and 0 deletions

View File

@@ -1 +1,2 @@
DIST libnbd-1.18.1.tar.gz 1482736 BLAKE2B d3f0b2993fa1392df93b0bbc5d63805489ad1a82cf5bcc5eb5c3b5b7e7e6c40095471ab8fc964cc0e5c7a99affa7150f7be38cc16c42f27fc4cdc16bd0ca0359 SHA512 f4262666be55d580550e053355f14f80d352bf869ae7241e9fa032a9b5cd9e027eb89a536871c1206422413fc7ed745da7d612b3e1413f76ec17168705fbf12c
DIST libnbd-1.22.1.tar.gz 1565817 BLAKE2B f06ab0002b21a2960614fa2f704f007dc90713994c8a9dd8dd769d8ef02a451e45a84c8ed9b59c8d9334ab8c4ba4fa0339afa88bc0b959ea280d1d8fecd07e0a SHA512 3f265ed59020c394c5e1f46c51d0ae7f3e7e54461739da964ac92b5c4c8bc98ea9813b93342e025f5f770b688d16d155d6e74d715beab482a040115df6be5afa

View File

@@ -0,0 +1,79 @@
From 2934e26841b88604ed1bf23e3728d7b69d018c72 Mon Sep 17 00:00:00 2001
From: Christopher Byrne <salah.coronya@gmail.com>
Date: Sat, 14 Jun 2025 21:26:24 -0500
Subject: [PATCH 2/2] Makefile.am: Conditionally compile some SUBDIRS
Otherwise, the Makefile will try to compile them. The correct machinery
is in configure.ac, so just add the conditions to Makefile.am
---
Makefile.am | 41 ++++++++++++++++++++++++++++++-----------
1 file changed, 30 insertions(+), 11 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index f31e067..1d00ebd 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -42,30 +42,49 @@ SUBDIRS = \
common/utils \
lib \
docs \
- examples \
valgrind \
. \
tests \
- python \
- sh \
info \
copy \
dump \
- fuse \
- ublk \
- ocaml \
- ocaml/examples \
- ocaml/tests \
- golang \
- golang/examples \
- rust \
interop \
fuzzing \
bash-completion \
$(NULL)
+if HAVE_FUSE
+SUBDIRS += fuse
+endif
+
+if HAVE_UBLK
+SUBDIRS += ublk
+endif
+
+if HAVE_GOLANG
+SUBDIRS += golang
+endif
+
+if HAVE_OCAML
+SUBDIRS += ocaml ocaml/tests
+endif
+
+if HAVE_PYTHON
+SUBDIRS += python sh
+endif
+
+if HAVE_RUST
+SUBDIRS += rust
+endif
+
if BUILD_EXAMPLES
SUBDIRS += examples
+if HAVE_OCAML
+SUBDIRS += ocaml/examples
+endif
+if HAVE_GOLANG
+SUBDIRS += golang/examples
+endif
endif
noinst_SCRIPTS = run
--
2.49.0

View File

@@ -0,0 +1,149 @@
From 53e0ade7f46525e048cea7bd321cdf370800e18a Mon Sep 17 00:00:00 2001
From: Christopher Byrne <salah.coronya@gmail.com>
Date: Sat, 14 Jun 2025 21:01:17 -0500
Subject: [PATCH 1/2] build: Remove automagic compiling of examples
---
Makefile.am | 4 +++
configure.ac | 93 +++++++++++++++++++++++++++++-----------------------
2 files changed, 56 insertions(+), 41 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 129e393..f31e067 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -64,6 +64,10 @@ SUBDIRS = \
bash-completion \
$(NULL)
+if BUILD_EXAMPLES
+SUBDIRS += examples
+endif
+
noinst_SCRIPTS = run
# Check no files are missing from EXTRA_DIST rules, and that all
diff --git a/configure.ac b/configure.ac
index 84ec09d..d27a605 100644
--- a/configure.ac
+++ b/configure.ac
@@ -308,57 +308,67 @@ AS_IF([test "$with_libxml2" != "no"],[
])
AM_CONDITIONAL([HAVE_LIBXML2], [test "x$LIBXML2_LIBS" != "x"])
+dnl Examples
+AC_ARG_ENABLE([examples],
+ [AS_HELP_STRING([--disable-examples],
+ [disable building of glib and libev examples @<:@default=check@:>@])],
+ [],
+ [with_examples=check])
+
+AS_IF([test "$enable_examples" != "no"],[
dnl glib2 main loop for examples that interoperate with the glib main loop.
-PKG_CHECK_MODULES([GLIB], [glib-2.0], [
- printf "glib2 version is "; $PKG_CONFIG --modversion glib-2.0
- AC_SUBST([GLIB_CFLAGS])
- AC_SUBST([GLIB_LIBS])
-],[
- AC_MSG_WARN([glib2 not found, some examples will not be compiled])
-])
-AM_CONDITIONAL([HAVE_GLIB], [test "x$GLIB_LIBS" != "x"])
+ PKG_CHECK_MODULES([GLIB], [glib-2.0], [
+ printf "glib2 version is "; $PKG_CONFIG --modversion glib-2.0
+ AC_SUBST([GLIB_CFLAGS])
+ AC_SUBST([GLIB_LIBS])
+ ], [
+ AC_MSG_WARN([glib2 not found, some examples will not be compiled])
+ ])
dnl libev support for examples that interoperate with libev event loop.
-PKG_CHECK_MODULES([LIBEV], [libev], [
- printf "libev version is "; $PKG_CONFIG --modversion libev
- AC_SUBST([LIBEV_CFLAGS])
- AC_SUBST([LIBEV_LIBS])
-],[
- dnl no pkg-config for libev, searching manually:
- AC_CHECK_HEADERS([ev.h], [
- AC_CHECK_LIB([ev], [ev_time], [
- AC_SUBST([LIBEV_LIBS], ["-lev"])
- ],
- [
- AC_MSG_WARN([libev not found, some examples will not be compiled])
- ])
- ],[
- AC_MSG_WARN([ev.h not found, some examples will not be compiled])
+ PKG_CHECK_MODULES([LIBEV], [libev], [
+ printf "libev version is "; $PKG_CONFIG --modversion libev
+ AC_SUBST([LIBEV_CFLAGS])
+ AC_SUBST([LIBEV_LIBS])
+ ],[
+dnl no pkg-config for libev, searching manually:
+ AC_CHECK_HEADERS([ev.h], [
+ AC_CHECK_LIB([ev], [ev_time], [
+ AC_SUBST([LIBEV_LIBS], ["-lev"])
+ ],
+ [
+ AC_MSG_WARN([libev not found, some examples will not be compiled])
+ ])
+ ],[
+ AC_MSG_WARN([ev.h not found, some examples will not be compiled])
+ ])
])
-])
-AS_IF([test "x$LIBEV_LIBS" != "x"], [
- old_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $LIBEV_CFLAGS -Werror=strict-aliasing -O2"
- AC_MSG_CHECKING([if the compiler is new enough for good aliasing rules])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([
- #include <ev.h>
-
- static void cb (struct ev_loop *l, ev_timer *t, int e) { }
- static ev_timer timer;
+ AS_IF([test "x$LIBEV_LIBS" != "x"], [
+ old_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $LIBEV_CFLAGS -Werror=strict-aliasing -O2"
+ AC_MSG_CHECKING([if the compiler is new enough for good aliasing rules])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([
+ #include <ev.h>
+
+ static void cb (struct ev_loop *l, ev_timer *t, int e) { }
+ static ev_timer timer;
+ ], [
+ ev_timer_init (&timer, cb, 0, .1);
+ ])
], [
- ev_timer_init (&timer, cb, 0, .1);
+ AC_MSG_RESULT([yes])
+ ], [
+ AC_MSG_RESULT([no])
+ LIBEV_CFLAGS="$LIBEV_CFLAGS -Wno-strict-aliasing"
])
- ], [
- AC_MSG_RESULT([yes])
- ], [
- AC_MSG_RESULT([no])
- LIBEV_CFLAGS="$LIBEV_CFLAGS -Wno-strict-aliasing"
+ CFLAGS="$old_CFLAGS"
])
- CFLAGS="$old_CFLAGS"
])
+AM_CONDITIONAL([HAVE_GLIB], [test "x$GLIB_LIBS" != "x"])
AM_CONDITIONAL([HAVE_LIBEV], [test "x$LIBEV_LIBS" != "x"])
+AM_CONDITIONAL([BUILD_EXAMPLES], [test "x$enable_examples" != "xno" ])
dnl FUSE 3 is optional to build the nbdfuse program.
AC_ARG_ENABLE([fuse],
@@ -378,6 +388,7 @@ AS_IF([test "x$enable_fuse" != "xno"],[
])
AM_CONDITIONAL([HAVE_FUSE],[test "x$enable_fuse" != "xno"])
+
dnl libublksrv is optional to build the nbdublk program.
AC_ARG_ENABLE([ublk],
AS_HELP_STRING([--disable-ublk], [disable ublk (nbdublk) support]),
--
2.49.0

View File

@@ -0,0 +1,98 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
RUST_OPTIONAL=1
RUST_REQ_USE="rustfmt"
PYTHON_COMPAT=( python3_{10..13} )
inherit autotools bash-completion-r1 python-single-r1 rust
MY_PV_1="$(ver_cut 1-2)"
MY_PV_2="$(ver_cut 2)"
[[ $(( ${MY_PV_2} % 2 )) -eq 0 ]] && SD="stable" || SD="development"
DESCRIPTION="NBD client library in userspace"
HOMEPAGE="https://gitlab.com/nbdkit/libnbd"
SRC_URI="https://download.libguestfs.org/libnbd/${MY_PV_1}-${SD}/${P}.tar.gz"
LICENSE="LGPL-2.1+"
SLOT="0"
KEYWORDS="~amd64 ~ppc64 ~sparc ~x86"
IUSE="examples fuse gnutls go ocaml python rust test"
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
RESTRICT="!test? ( test )"
# libxml2 - URI support
RDEPEND="
dev-libs/libxml2
examples? ( dev-libs/glib
dev-libs/libev )
fuse? ( sys-fs/fuse:3 )
gnutls? ( net-libs/gnutls:= )
go? ( dev-lang/go )
ocaml? ( >=dev-lang/ocaml-4.03:=[ocamlopt] )
python? ( ${PYTHON_DEPS} )
"
DEPEND="
${RDEPEND}
test? ( sys-block/nbdkit[gnutls?]
net-libs/gnutls:=[tools]
ocaml? ( dev-ml/findlib[ocamlopt] )
)
"
BDEPEND="dev-lang/perl
rust? ( ${RUST_DEPEND} )"
PATCHES=(
"${FILESDIR}/${PN}-1.22.2-build-Remove-automagic-compiling-of-examples.patch"
"${FILESDIR}/${PN}-1.22.2-Makefile.am-Conditionally-compile-some-SUBDIRS.patch"
)
pkg_setup() {
if use rust; then
rust_pkg_setup
fi
if use python; then
python_setup
fi
}
src_prepare() {
default
# Broken under sandbox.
cat <<-EOF > lib/test-fork-safe-execvpe.sh || die
#!/bin/sh
:
EOF
eautoreconf
}
src_configure() {
local myeconfargs=(
$(use_enable examples)
$(use_enable fuse)
$(use_enable go golang)
$(use_enable ocaml)
$(use_enable python)
$(use_enable rust)
$(use_with gnutls)
--disable-ublk # Not in portage
--with-libxml2
)
export bashcompdir="$(get_bashcompdir)"
econf "${myeconfargs[@]}"
}
src_install() {
default
find "${ED}" -name '*.la' -delete || die
use python && python_optimize
}

View File

@@ -15,5 +15,8 @@
<flag name="go">
Build bindings for <pkg>dev-lang/go</pkg>
</flag>
<flag name="rust">
Build bindings for <pkg>dev-lang/rust</pkg>
</flag>
</use>
</pkgmetadata>