commit:     a3beee1fbdab5f9849bddcb82dabb68b91e9e831
Author:     Christopher Byrne <salah.coronya <AT> gmail <DOT> com>
AuthorDate: Wed Jan 14 03:15:08 2026 +0000
Commit:     Arsen Arsenović <arsen <AT> gentoo <DOT> org>
CommitDate: Fri Jan 16 21:09:31 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a3beee1f

sys-libs/libnbd: add 1.24.0

Signed-off-by: Christopher Byrne <salah.coronya <AT> gmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/45370
Signed-off-by: Arsen Arsenović <arsen <AT> gentoo.org>

 sys-libs/libnbd/Manifest                           |   1 +
 ...ile.am-Conditionally-compile-some-SUBDIRS.patch |  66 ++++++++++
 ...ld-Remove-automagic-compiling-of-examples.patch | 136 +++++++++++++++++++++
 ...build-define-TLS_PRIORITY-unconditionally.patch |  25 ++++
 sys-libs/libnbd/libnbd-1.24.0.ebuild               | 116 ++++++++++++++++++
 5 files changed, 344 insertions(+)

diff --git a/sys-libs/libnbd/Manifest b/sys-libs/libnbd/Manifest
index d789a31feaaa..4d944857f422 100644
--- a/sys-libs/libnbd/Manifest
+++ b/sys-libs/libnbd/Manifest
@@ -2,3 +2,4 @@ DIST libnbd-1.18.1.tar.gz 1482736 BLAKE2B 
d3f0b2993fa1392df93b0bbc5d63805489ad1a
 DIST libnbd-1.22.5.tar.gz 1574844 BLAKE2B 
ab3bdea1774c9aadd2613ac56ada0d8797c75186ec0f84980231f0ad4bf3f71cf4a0f909f160b33b8719c3eee993cf6e7151dddb6a427eeedfa0e605f5e93804
 SHA512 
5440f1755a4724265336d59af37aaba9e8426821689d045ce307316772ceb3e8d7840838b2a2f378db014e6927f4627fc3f33a58b24519e515af6474d0669bf2
 DIST libnbd-1.23.4.tar.gz 1578765 BLAKE2B 
5760ef9270c37a3ec8391183951612ea30becd79df6e4fd33719eadf95c823080770f291abe23c02482bfacee7f4f7097baf343c2bbc6ae797a5eb29cb30f51b
 SHA512 
870615431885f6755808a33d287be57ec4b019199daf40a0643d5c6fe4d00d04424a82c55324106f07c96b4004896121654ab545a7c9e05c64728c2fa853f5d4
 DIST libnbd-1.23.9.tar.gz 1594098 BLAKE2B 
af1448d4e071600d3c2e74b77131c00f79a30ac279be2782dc94da91bab16cdd47657cf53522d1ffb022075a0da0b54fd19a4ec86a44e87bfc73fffd0d2a5b1b
 SHA512 
0ff4fa3aea2e841fe22990055e073afa7262781d764c05830a14cec64142d5c859411d6cf593f95c12a0a47eb38b1cd6f4bf969af0e229ccc6dc7b44641ede49
+DIST libnbd-1.24.0.tar.gz 1621956 BLAKE2B 
c44ff4147a1166a3b165afdd6af85ab415e3d8d27dc27514f5a4cb814b8f6bd60d27a38e445bb4b2050338476daf2a1e691c02c93067c45383b45cfef4a8381f
 SHA512 
db05b606a19b3efb6a53c05b5b7ea96571892b7540fff1f4df0c53d0f82e3817f724fd0aa665597b58a4613545b03d7df6e1ac8f3fa64c7f85e824ca2221f3ae

diff --git 
a/sys-libs/libnbd/files/libnbd-1.24.0-Makefile.am-Conditionally-compile-some-SUBDIRS.patch
 
b/sys-libs/libnbd/files/libnbd-1.24.0-Makefile.am-Conditionally-compile-some-SUBDIRS.patch
new file mode 100644
index 000000000000..52ff73660406
--- /dev/null
+++ 
b/sys-libs/libnbd/files/libnbd-1.24.0-Makefile.am-Conditionally-compile-some-SUBDIRS.patch
@@ -0,0 +1,66 @@
+diff --git a/Makefile.am b/Makefile.am
+index d587a092..18df2ad1 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -42,31 +42,50 @@ SUBDIRS = \
+       common/utils \
+       lib \
+       docs \
+-      examples \
+       valgrind \
+       . \
+       tests \
+-      python \
+-      sh \
+       info \
+       copy \
+       dump \
+-      fuse \
+       misc \
+-      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

diff --git 
a/sys-libs/libnbd/files/libnbd-1.24.0-build-Remove-automagic-compiling-of-examples.patch
 
b/sys-libs/libnbd/files/libnbd-1.24.0-build-Remove-automagic-compiling-of-examples.patch
new file mode 100644
index 000000000000..05f1cdfe52b5
--- /dev/null
+++ 
b/sys-libs/libnbd/files/libnbd-1.24.0-build-Remove-automagic-compiling-of-examples.patch
@@ -0,0 +1,136 @@
+diff --git a/Makefile.am b/Makefile.am
+index 32213efa..d587a092 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -65,6 +65,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 6c7cae8a..920625d6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -327,57 +327,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], [
+-    PRINT_PKG_VERSION([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], [
++         PRINT_PKG_VERSION([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], [
+-    PRINT_PKG_VERSION(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], [
++         PRINT_PKG_VERSION(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],
+@@ -397,6 +407,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]),

diff --git 
a/sys-libs/libnbd/files/libnbd-1.24.0-build-define-TLS_PRIORITY-unconditionally.patch
 
b/sys-libs/libnbd/files/libnbd-1.24.0-build-define-TLS_PRIORITY-unconditionally.patch
new file mode 100644
index 000000000000..817d099b1764
--- /dev/null
+++ 
b/sys-libs/libnbd/files/libnbd-1.24.0-build-define-TLS_PRIORITY-unconditionally.patch
@@ -0,0 +1,25 @@
+diff --git a/configure.ac b/configure.ac
+index 6c7cae8a..dafcf606 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -275,8 +275,6 @@ AS_IF([test "$GNUTLS_LIBS" != ""],[
+         [tls_priority=$withval],
+         [tls_priority=NORMAL])
+     AC_MSG_RESULT([$tls_priority])
+-    AC_DEFINE_UNQUOTED([TLS_PRIORITY],["$tls_priority"],
+-                       [Default TLS session priority string])
+ 
+     # Check for working <gnutls/socket.h>.  This is only needed for
+     # gnutls 3.7.9 and no other version (unfortunately used by Debian
+@@ -299,6 +297,11 @@ AS_IF([test "$GNUTLS_LIBS" != ""],[
+     LIBS="$old_LIBS"
+ ])
+ 
++dnl Define unconditionally because TLS_PRIORITY must be defined to
++dnl compile, even if GNUTLS support isn't enabled
++AC_DEFINE_UNQUOTED([TLS_PRIORITY],["$tls_priority"],
++                   [Default TLS session priority string])
++
+ dnl certtool (part of GnuTLS) for testing TLS with certificates.
+ dnl macOS has its own program called certtool and packages the
+ dnl GnuTLS tool as "gnutls-certtool".

diff --git a/sys-libs/libnbd/libnbd-1.24.0.ebuild 
b/sys-libs/libnbd/libnbd-1.24.0.ebuild
new file mode 100644
index 000000000000..c9808d5a1372
--- /dev/null
+++ b/sys-libs/libnbd/libnbd-1.24.0.ebuild
@@ -0,0 +1,116 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit autotools bash-completion-r1 dot-a python-single-r1
+
+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 ~loong ~ppc64 ~sparc ~x86"
+IUSE="examples fuse gnutls go ocaml python 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}
+       ocaml? ( dev-ml/findlib )
+       test? ( sys-block/nbdkit[gnutls?]
+               net-libs/gnutls:=[tools]
+               ocaml? ( dev-ml/findlib[ocamlopt] )
+)
+"
+BDEPEND="dev-lang/perl"
+
+PATCHES=(
+       
"${FILESDIR}/${PN}-1.24.0-build-Remove-automagic-compiling-of-examples.patch"
+       
"${FILESDIR}/${PN}-1.24.0-Makefile.am-Conditionally-compile-some-SUBDIRS.patch"
+       
"${FILESDIR}/${PN}-1.24.0-build-define-TLS_PRIORITY-unconditionally.patch"
+       "${FILESDIR}/${PN}-1.22.5-which-hunt.patch"
+)
+
+pkg_setup() {
+       if use python; then
+               python_setup
+       fi
+}
+
+src_prepare() {
+       default
+
+       # Some tests require impossible to provide features, such as fuse.
+       # These are marked by requires_... in the functions.sh shell
+       # library.  Rather than listing these tests, let's list out the
+       # impossible to support features and make them skip.
+       cat <<-EOF >> tests/functions.sh.in || die
+               requires_fuse ()
+               {
+                       requires false
+               }
+       EOF
+
+       # Broken under sandbox.
+       cat <<-EOF > lib/test-fork-safe-execvpe.sh || die
+       #!/bin/sh
+       :
+       EOF
+
+       eautoreconf
+}
+
+src_configure() {
+       # /usr/lib64/ocaml/nbd/libmlnbd.a
+       # /usr/lib64/ocaml/stublibs/dllmlnbd.so
+       use ocaml && lto-guarantee-fat
+
+       local myeconfargs=(
+               $(use_enable examples)
+               $(use_enable fuse)
+               $(use_enable go golang)
+               $(use_enable ocaml)
+               $(use_enable python)
+               $(use_with gnutls)
+               $(use_with !gnutls with-tls-priority NORMAL)
+               --disable-rust
+               --disable-ublk # Not in portage
+               --with-libxml2
+       )
+
+       export bashcompdir="$(get_bashcompdir)"
+
+       econf "${myeconfargs[@]}"
+}
+
+src_install() {
+       default
+
+       use fuse || bashcomp_alias nbdsh nbdfuse
+       bashcomp_alias nbdsh nbdublk
+
+       use ocaml && strip-lto-bytecode
+
+       find "${ED}" -name '*.la' -delete || die
+       use python && python_optimize
+}

Reply via email to