git: 88f648d07d3c - main - devel/tevent016: Talloc based event loop library

From: Xavier Beaudouin <kiwi_at_FreeBSD.org>
Date: Thu, 30 Jan 2025 14:43:56 UTC
The branch main has been updated by kiwi:

URL: https://cgit.FreeBSD.org/ports/commit/?id=88f648d07d3c059903aee189b7e0703c37a7d04d

commit 88f648d07d3c059903aee189b7e0703c37a7d04d
Author:     Xavier Beaudouin <kiwi@FreeBSD.org>
AuthorDate: 2025-01-28 09:39:01 +0000
Commit:     Xavier Beaudouin <kiwi@FreeBSD.org>
CommitDate: 2025-01-30 14:41:59 +0000

    devel/tevent016: Talloc based event loop library
    
    tevent is a simple library that can handle the main event loop for an
    application. It supports three kinds of events: timed events, file
    descriptors becoming readable or writable and signals.
    
    Talloc is used for memory management, both internally and for private
    data provided by users of the library.
    
    This port is needed for Samba 4.20
    
    This commit is just a repocopy. I will update the port to the correct
    version and connect it to the build in the next commit.
    
    PR:             280533
    Sponsored by:   Klara, Inc.
    Approved by:    0mp (mentor)
    Approved by:    samba (0mp, kiwi)
    Differential Revision:  https://reviews.freebsd.org/D48658
---
 devel/tevent016/Makefile                           | 75 ++++++++++++++++++++++
 devel/tevent016/distinfo                           |  3 +
 .../patch-buildtools_wafsamba_samba__autoconf.py   | 35 ++++++++++
 .../patch-buildtools_wafsamba_samba__install.py    | 11 ++++
 .../files/patch-buildtools_wafsamba_wscript        | 15 +++++
 devel/tevent016/files/patch-lib_replace_wscript    | 11 ++++
 devel/tevent016/files/patch-wscript                | 11 ++++
 devel/tevent016/pkg-descr                          |  6 ++
 devel/tevent016/pkg-plist                          |  7 ++
 9 files changed, 174 insertions(+)

diff --git a/devel/tevent016/Makefile b/devel/tevent016/Makefile
new file mode 100644
index 000000000000..0ab8dec78ce6
--- /dev/null
+++ b/devel/tevent016/Makefile
@@ -0,0 +1,75 @@
+PORTNAME=			tevent
+DISTVERSION=			0.15.0
+PORTEPOCH=			0
+CATEGORIES=			devel
+MASTER_SITES=			SAMBA
+
+MAINTAINER=			samba@FreeBSD.org
+COMMENT=			Talloc based event loop library
+WWW=				https://tevent.samba.org/
+
+LICENSE=			LGPL3
+
+BUILD_DEPENDS=			talloc>=2.3.4:devel/talloc
+RUN_DEPENDS=			talloc>=2.3.4:devel/talloc
+
+USES=				compiler pkgconfig shebangfix waf
+USE_LDCONFIG=			yes
+SHEBANG_GLOB=			*.py
+WAF_CMD=			buildtools/bin/waf
+CONFIGURE_LOG=			bin/config.log
+
+PKGCONFIGDIR?=			${PREFIX}/libdata/pkgconfig
+PLIST_SUB=			PKGCONFIGDIR=${PKGCONFIGDIR:S;^${PREFIX}/;;}
+
+CONFIGURE_ARGS=			--disable-rpath \
+				--disable-rpath-install \
+				--bundled-libraries=!talloc,cmocka \
+				--builtin-libraries=replace \
+				--without-gettext
+CONFIGURE_ENV=			PYTHONHASHSEED=1
+MAKE_ENV=			PYTHONHASHSEED=1
+
+MANPAGES_DESC=			Build and install manpages (requires textproc/docbook-xsl)
+
+OPTIONS_DEFINE=			DEBUG MANPAGES PYTHON
+OPTIONS_DEFAULT=		PYTHON
+OPTIONS_SUB=			yes
+
+DEBUG_CFLAGS=			-g -ggdb3 -O0
+DEBUG_CONFIGURE_ON=		--verbose --enable-debug
+DEBUG_MAKE_ARGS=		--verbose
+
+PYTHON_USES=			gettext-runtime python
+PYTHON_USE=			python=py3kplist
+PYTHON_USES_OFF=		python:build,test
+PYTHON_CONFIGURE_OFF=		--disable-python
+
+MANPAGES_CONFIGURE_ENV_OFF=	XSLTPROC="true"
+MANPAGES_BUILD_DEPENDS=		${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:textproc/docbook-xsl \
+				xsltproc:textproc/libxslt
+# No fancy color error messages
+CFLAGS+=			${CFLAGS_${CHOSEN_COMPILER_TYPE}}
+CFLAGS_clang=			-fno-color-diagnostics
+CONFIGURE_ENV+=			NOCOLOR=yes
+MAKE_ENV+=			NOCOLOR=yes
+# Some symbols in tevent's linker version scripts are not defined, but since the
+# scripts are generated dynamically, suppress errors with lld >= 17 due to these
+# undefined symbols.
+LDFLAGS+=			-Wl,--undefined-version
+
+post-patch:
+				@${REINPLACE_CMD} -e 's|%%PKGCONFIGDIR%%|${PKGCONFIGDIR}|g' \
+					${BUILD_WRKSRC}/wscript
+
+post-install:
+				${RM} ${STAGEDIR}${PREFIX}/lib/tevent/libcmocka-tevent.so
+				${RM} ${STAGEDIR}${PREFIX}/lib/tevent/libpytalloc-util.cpython-${PYTHON_SUFFIX}-tevent.so
+				${RMDIR} ${STAGEDIR}${PREFIX}/lib/tevent
+				${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libtevent.so
+
+post-install-PYTHON-on:
+				${STRIP_CMD} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/_tevent*.so
+				${PYTHON_CMD} -m compileall -d ${PYTHON_SITELIBDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}
+
+.include <bsd.port.mk>
diff --git a/devel/tevent016/distinfo b/devel/tevent016/distinfo
new file mode 100644
index 000000000000..56e4d3c17266
--- /dev/null
+++ b/devel/tevent016/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1722344186
+SHA256 (tevent-0.15.0.tar.gz) = 662a9f277281bcf506b6bc0a0baa03e44a62229516ee34bcc703a0b82aa46905
+SIZE (tevent-0.15.0.tar.gz) = 884634
diff --git a/devel/tevent016/files/patch-buildtools_wafsamba_samba__autoconf.py b/devel/tevent016/files/patch-buildtools_wafsamba_samba__autoconf.py
new file mode 100644
index 000000000000..c5db6dc61150
--- /dev/null
+++ b/devel/tevent016/files/patch-buildtools_wafsamba_samba__autoconf.py
@@ -0,0 +1,35 @@
+--- buildtools/wafsamba/samba_autoconf.py.orig	2019-09-04 15:42:16 UTC
++++ buildtools/wafsamba/samba_autoconf.py
+@@ -573,7 +573,7 @@ def library_flags(self, libs):
+ 
+ 
+ @conf
+-def CHECK_LIB(conf, libs, mandatory=False, empty_decl=True, set_target=True, shlib=False):
++def CHECK_LIB(conf, libs, mandatory=False, empty_decl=True, set_target=True, shlib=False, msg=None):
+     '''check if a set of libraries exist as system libraries
+ 
+     returns the sublist of libs that do exist as a syslib or []
+@@ -593,11 +593,14 @@ int foo()
+             ret.append(lib)
+             continue
+ 
++        if msg is None:
++            msg = 'Checking for library %s' % lib
++
+         (ccflags, ldflags, cpppath) = library_flags(conf, lib)
+         if shlib:
+-            res = conf.check(features='c cshlib', fragment=fragment, lib=lib, uselib_store=lib, cflags=ccflags, ldflags=ldflags, uselib=lib.upper(), mandatory=False)
++            res = conf.check(features='c cshlib', fragment=fragment, lib=lib, uselib_store=lib, cflags=ccflags, ldflags=ldflags, uselib=lib.upper(), mandatory=False, msg=msg)
+         else:
+-            res = conf.check(lib=lib, uselib_store=lib, cflags=ccflags, ldflags=ldflags, uselib=lib.upper(), mandatory=False)
++            res = conf.check(lib=lib, uselib_store=lib, cflags=ccflags, ldflags=ldflags, uselib=lib.upper(), mandatory=False, msg=msg)
+ 
+         if not res:
+             if mandatory:
+@@ -949,5 +952,5 @@ def SAMBA_CHECK_UNDEFINED_SYMBOL_FLAGS(conf):
+         conf.env.undefined_ldflags = conf.ADD_LDFLAGS('-Wl,-no-undefined', testflags=True)
+ 
+         if (conf.env.undefined_ignore_ldflags == [] and
+-            conf.CHECK_LDFLAGS(['-undefined', 'dynamic_lookup'])):
++            conf.CHECK_LDFLAGS(['-undefined', 'dynamic_lookup'] + conf.env.WERROR_CFLAGS)):
+             conf.env.undefined_ignore_ldflags = ['-undefined', 'dynamic_lookup']
diff --git a/devel/tevent016/files/patch-buildtools_wafsamba_samba__install.py b/devel/tevent016/files/patch-buildtools_wafsamba_samba__install.py
new file mode 100644
index 000000000000..5a85a034aea7
--- /dev/null
+++ b/devel/tevent016/files/patch-buildtools_wafsamba_samba__install.py
@@ -0,0 +1,11 @@
+--- buildtools/wafsamba/samba_install.py.orig	2019-03-21 10:12:32 UTC
++++ buildtools/wafsamba/samba_install.py
+@@ -115,7 +115,7 @@ def install_library(self):
+                 inst_name    = bld.make_libname(t.target)
+         elif self.vnum:
+             vnum_base    = self.vnum.split('.')[0]
+-            install_name = bld.make_libname(target_name, version=self.vnum)
++            install_name = bld.make_libname(target_name, version=vnum_base)
+             install_link = bld.make_libname(target_name, version=vnum_base)
+             inst_name    = bld.make_libname(t.target)
+             if not self.private_library or not t.env.SONAME_ST:
diff --git a/devel/tevent016/files/patch-buildtools_wafsamba_wscript b/devel/tevent016/files/patch-buildtools_wafsamba_wscript
new file mode 100644
index 000000000000..3d4b6a56e345
--- /dev/null
+++ b/devel/tevent016/files/patch-buildtools_wafsamba_wscript
@@ -0,0 +1,15 @@
+--- buildtools/wafsamba/wscript.orig	2019-03-21 10:12:32 UTC
++++ buildtools/wafsamba/wscript
+@@ -82,10 +82,10 @@ def options(opt):
+ 
+     opt.add_option('--with-libiconv',
+                    help='additional directory to search for libiconv',
+-                   action='store', dest='iconv_open', default='/usr/local',
++                   action='store', dest='iconv_open', default=None,
+                    match = ['Checking for library iconv', 'Checking for iconv_open', 'Checking for header iconv.h'])
+     opt.add_option('--without-gettext',
+-                   help=("Disable use of gettext"),
++                   help=("disable use of gettext"),
+                    action="store_true", dest='disable_gettext', default=False)
+ 
+     gr = opt.option_group('developer options')
diff --git a/devel/tevent016/files/patch-lib_replace_wscript b/devel/tevent016/files/patch-lib_replace_wscript
new file mode 100644
index 000000000000..d476cec47cfb
--- /dev/null
+++ b/devel/tevent016/files/patch-lib_replace_wscript
@@ -0,0 +1,11 @@
+--- lib/replace/wscript.orig	2019-03-21 10:12:32 UTC
++++ lib/replace/wscript
+@@ -119,7 +119,7 @@ def configure(conf):
+     conf.CHECK_HEADERS('sys/atomic.h stdatomic.h')
+     conf.CHECK_HEADERS('libgen.h')
+ 
+-    if conf.CHECK_CFLAGS('-Wno-format-truncation'):
++    if conf.CHECK_CFLAGS(['-Wno-format-truncation'] + conf.env.WERROR_CFLAGS):
+         conf.define('HAVE_WNO_FORMAT_TRUNCATION', '1')
+ 
+     if conf.CHECK_CFLAGS('-Wno-unused-function'):
diff --git a/devel/tevent016/files/patch-wscript b/devel/tevent016/files/patch-wscript
new file mode 100644
index 000000000000..b17d04a3f874
--- /dev/null
+++ b/devel/tevent016/files/patch-wscript
@@ -0,0 +1,11 @@
+--- wscript.orig	2017-07-22 22:25:22 UTC
++++ wscript
+@@ -88,7 +88,7 @@ def build(bld):
+         SRC += ' tevent_port.c'
+ 
+     if bld.env.standalone_tevent:
+-        bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig'
++        bld.env.PKGCONFIGDIR = '%%PKGCONFIGDIR%%'
+         private_library = False
+     else:
+         private_library = True
diff --git a/devel/tevent016/pkg-descr b/devel/tevent016/pkg-descr
new file mode 100644
index 000000000000..0b31d18127a1
--- /dev/null
+++ b/devel/tevent016/pkg-descr
@@ -0,0 +1,6 @@
+tevent is a simple library that can handle the main event loop for an
+application. It supports three kinds of events: timed events, file
+descriptors becoming readable or writable and signals.
+
+Talloc is used for memory management, both internally and for private
+data provided by users of the library.
diff --git a/devel/tevent016/pkg-plist b/devel/tevent016/pkg-plist
new file mode 100644
index 000000000000..bf60cf03f8ed
--- /dev/null
+++ b/devel/tevent016/pkg-plist
@@ -0,0 +1,7 @@
+include/tevent.h
+lib/libtevent.so
+lib/libtevent.so.0
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/__pycache__/tevent.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/_tevent%%PYTHON_EXT_SUFFIX%%.so
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/tevent.py
+%%PKGCONFIGDIR%%/tevent.pc