Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Aug 2024 16:04:20 GMT
From:      Po-Chuan Hsieh <sunpoet@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 9c8d5c323a8f - main - devel/pybind11_protobuf: Add pybind11_protobuf 0.0.0.20240809
Message-ID:  <202408151604.47FG4KIY086249@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by sunpoet:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9c8d5c323a8f0ec3dc3c882483979dd8f9e98c23

commit 9c8d5c323a8f0ec3dc3c882483979dd8f9e98c23
Author:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2024-08-15 16:00:07 +0000
Commit:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2024-08-15 16:00:07 +0000

    devel/pybind11_protobuf: Add pybind11_protobuf 0.0.0.20240809
    
    pybind11_protobuf provides pybind11 bindings for Google's Protocol Buffers.
    These adapters make Protocol Buffer message types work with Pybind11 bindings.
---
 devel/Makefile                                     |   1 +
 devel/pybind11_protobuf/Makefile                   |  30 ++++
 devel/pybind11_protobuf/distinfo                   |   3 +
 devel/pybind11_protobuf/files/patch-CMakeLists.txt | 169 +++++++++++++++++++++
 devel/pybind11_protobuf/pkg-descr                  |   2 +
 devel/pybind11_protobuf/pkg-plist                  |   5 +
 6 files changed, 210 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index 5e7edde752aa..d35a1a028d2c 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -6095,6 +6095,7 @@
     SUBDIR += pybind11
     SUBDIR += pybind11-json
     SUBDIR += pybind11_abseil
+    SUBDIR += pybind11_protobuf
     SUBDIR += pybugz
     SUBDIR += pycanberra
     SUBDIR += pycdc
diff --git a/devel/pybind11_protobuf/Makefile b/devel/pybind11_protobuf/Makefile
new file mode 100644
index 000000000000..88cd22cc3eb7
--- /dev/null
+++ b/devel/pybind11_protobuf/Makefile
@@ -0,0 +1,30 @@
+PORTNAME=	pybind11_protobuf
+PORTVERSION=	0.0.0.20240809
+CATEGORIES=	devel
+
+MAINTAINER=	sunpoet@FreeBSD.org
+COMMENT=	Pybind11 bindings for Google's Protocol Buffers
+WWW=		https://github.com/pybind/pybind11_protobuf
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	abseil>=20230125:devel/abseil \
+		pybind11>=2.11.1:devel/pybind11
+LIB_DEPENDS=	libabsl_base.so:devel/abseil \
+		libprotobuf.so:devel/protobuf
+
+USES=		cmake compiler:c++17-lang python
+
+CFLAGS+=	-I${WRKSRC}
+CMAKE_ARGS=	-DCMAKE_INSTALL_PYDIR=${PYTHON_SITELIBDIR}
+CMAKE_OFF=	BUILD_TESTING
+CMAKE_ON=	USE_SYSTEM_ABSEIL \
+		USE_SYSTEM_PROTOBUF \
+		USE_SYSTEM_PYBIND
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	pybind
+GH_TAGNAME=	f1b2459
+
+.include <bsd.port.mk>
diff --git a/devel/pybind11_protobuf/distinfo b/devel/pybind11_protobuf/distinfo
new file mode 100644
index 000000000000..ad0ae136ad66
--- /dev/null
+++ b/devel/pybind11_protobuf/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1723644507
+SHA256 (pybind-pybind11_protobuf-0.0.0.20240809-f1b2459_GH0.tar.gz) = ac216afa9a50c37834906f224fbe8d3e47b2b0299cb12ff12588233a479413ee
+SIZE (pybind-pybind11_protobuf-0.0.0.20240809-f1b2459_GH0.tar.gz) = 56508
diff --git a/devel/pybind11_protobuf/files/patch-CMakeLists.txt b/devel/pybind11_protobuf/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..8bbae9aae903
--- /dev/null
+++ b/devel/pybind11_protobuf/files/patch-CMakeLists.txt
@@ -0,0 +1,169 @@
+--- CMakeLists.txt.orig	2024-08-09 17:15:35 UTC
++++ CMakeLists.txt
+@@ -39,9 +39,9 @@ if(USE_SYSTEM_PROTOBUF)
+   set(_absl_package_args 20230125)
+ endif()
+ if(USE_SYSTEM_PROTOBUF)
+-  set(_protobuf_package_args 4.23.3 REQUIRED)
++  set(_protobuf_package_args REQUIRED)
+ else()
+-  set(_protobuf_package_args 4.23.3)
++  set(_protobuf_package_args)
+ endif()
+ if(USE_SYSTEM_PYBIND)
+   set(_pybind11_package_args 2.11.1 REQUIRED)
+@@ -52,32 +52,11 @@ set(ABSL_ENABLE_INSTALL ON)
+ set(ABSL_PROPAGATE_CXX_STD ON)
+ set(ABSL_ENABLE_INSTALL ON)
+ 
+-include(FetchContent)
+-FetchContent_Declare(
+-  absl
+-  GIT_REPOSITORY "https://github.com/abseil/abseil-cpp.git"
+-  GIT_TAG 20230125.3
+-  FIND_PACKAGE_ARGS ${_absl_package_args} NAMES absl)
+-
+-# cmake-format: off
+-FetchContent_Declare(
+-  Protobuf
+-  GIT_REPOSITORY "https://github.com/protocolbuffers/protobuf.git"
+-  GIT_TAG v23.3
+-  GIT_SUBMODULES ""
+-  FIND_PACKAGE_ARGS ${_protobuf_package_args} NAMES protobuf)
+-set(protobuf_BUILD_TESTS OFF CACHE INTERNAL "")
+-# cmake-format: on
+-
+-FetchContent_Declare(
+-  pybind11
+-  GIT_REPOSITORY "https://github.com/pybind/pybind11.git"
+-  GIT_TAG v2.11.1
+-  FIND_PACKAGE_ARGS ${_pybind11_package_args} NAMES pybind11)
+-
+ message(CHECK_START "Checking for external dependencies")
++find_package(absl ${_absl_package_args})
++find_package(protobuf ${_protobuf_package_args})
++find_package(pybind11 ${_pybind11_package_args})
+ list(APPEND CMAKE_MESSAGE_INDENT "  ")
+-FetchContent_MakeAvailable(absl Protobuf pybind11)
+ list(POP_BACK CMAKE_MESSAGE_INDENT)
+ 
+ # ============================================================================
+@@ -97,7 +76,7 @@ add_library(
+ # ============================================================================
+ # pybind11_native_proto_caster shared library
+ add_library(
+-  pybind11_native_proto_caster STATIC
++  pybind11_native_proto_caster SHARED
+   # bazel: pybind_library: native_proto_caster
+   pybind11_protobuf/native_proto_caster.h
+   # bazel: pybind_library: enum_type_caster
+@@ -106,6 +85,16 @@ add_library(
+   pybind11_protobuf/proto_cast_util.cc
+   pybind11_protobuf/proto_cast_util.h
+   pybind11_protobuf/proto_caster_impl.h)
++add_library(
++  pybind11_native_proto_caster_static STATIC
++  # bazel: pybind_library: native_proto_caster
++  pybind11_protobuf/native_proto_caster.h
++  # bazel: pybind_library: enum_type_caster
++  pybind11_protobuf/enum_type_caster.h
++  # bazel: pybind_library: proto_cast_util
++  pybind11_protobuf/proto_cast_util.cc
++  pybind11_protobuf/proto_cast_util.h
++  pybind11_protobuf/proto_caster_impl.h)
+ 
+ target_link_libraries(
+   pybind11_native_proto_caster
+@@ -117,22 +106,45 @@ target_link_libraries(
+   protobuf::libprotobuf
+   pybind11::pybind11
+   ${Python_LIBRARIES})
++target_link_libraries(
++  pybind11_native_proto_caster_static
++  absl::flat_hash_map
++  absl::flat_hash_set
++  absl::hash
++  absl::strings
++  absl::optional
++  protobuf::libprotobuf
++  pybind11::pybind11
++  ${Python_LIBRARIES})
+ 
+ target_include_directories(
+   pybind11_native_proto_caster
+   PRIVATE ${PROJECT_SOURCE_DIR} ${protobuf_INCLUDE_DIRS} ${protobuf_SOURCE_DIR}
+           ${pybind11_INCLUDE_DIRS})
++target_include_directories(
++  pybind11_native_proto_caster_static
++  PRIVATE ${PROJECT_SOURCE_DIR} ${protobuf_INCLUDE_DIRS} ${protobuf_SOURCE_DIR}
++          ${pybind11_INCLUDE_DIRS})
++set_target_properties(pybind11_native_proto_caster_static PROPERTIES OUTPUT_NAME pybind11_native_proto_caster)
+ 
+ # ============================================================================
+ # pybind11_wrapped_proto_caster shared library
+ add_library(
+-  pybind11_wrapped_proto_caster STATIC
++  pybind11_wrapped_proto_caster SHARED
+   # bazel: pybind_library: wrapped_proto_caster
+   pybind11_protobuf/wrapped_proto_caster.h
+   # bazel: pybind_library: proto_cast_util
+   pybind11_protobuf/proto_cast_util.cc
+   pybind11_protobuf/proto_cast_util.h
+   pybind11_protobuf/proto_caster_impl.h)
++add_library(
++  pybind11_wrapped_proto_caster_static STATIC
++  # bazel: pybind_library: wrapped_proto_caster
++  pybind11_protobuf/wrapped_proto_caster.h
++  # bazel: pybind_library: proto_cast_util
++  pybind11_protobuf/proto_cast_util.cc
++  pybind11_protobuf/proto_cast_util.h
++  pybind11_protobuf/proto_caster_impl.h)
+ 
+ target_link_libraries(
+   pybind11_wrapped_proto_caster
+@@ -144,11 +156,26 @@ target_link_libraries(
+   protobuf::libprotobuf
+   pybind11::pybind11
+   ${Python_LIBRARIES})
++target_link_libraries(
++  pybind11_wrapped_proto_caster_static
++  absl::flat_hash_map
++  absl::flat_hash_set
++  absl::hash
++  absl::strings
++  absl::optional
++  protobuf::libprotobuf
++  pybind11::pybind11
++  ${Python_LIBRARIES})
+ 
+ target_include_directories(
+   pybind11_wrapped_proto_caster
+   PRIVATE ${PROJECT_SOURCE_DIR} ${protobuf_INCLUDE_DIRS} ${protobuf_SOURCE_DIR}
+           ${pybind11_INCLUDE_DIRS})
++target_include_directories(
++  pybind11_wrapped_proto_caster_static
++  PRIVATE ${PROJECT_SOURCE_DIR} ${protobuf_INCLUDE_DIRS} ${protobuf_SOURCE_DIR}
++          ${pybind11_INCLUDE_DIRS})
++set_target_properties(pybind11_wrapped_proto_caster_static PROPERTIES OUTPUT_NAME pybind11_wrapped_proto_caster)
+ 
+ if(BUILD_TESTING)
+   add_subdirectory(pybind11_protobuf/tests)
+@@ -171,3 +198,18 @@ endif()
+ #
+ # proto_cast_util
+ #
++
++install(
++  TARGETS pybind11_native_proto_caster pybind11_native_proto_caster_static pybind11_wrapped_proto_caster pybind11_wrapped_proto_caster_static
++  EXPORT pybind11_protobufTargets
++  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++  RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
++)
++install(
++  TARGETS pybind11_proto_utils
++  EXPORT pybind11_protobufTargets
++  LIBRARY DESTINATION ${CMAKE_INSTALL_PYDIR}
++  ARCHIVE DESTINATION ${CMAKE_INSTALL_PYDIR}
++  RUNTIME DESTINATION ${CMAKE_INSTALL_PYDIR}
++)
diff --git a/devel/pybind11_protobuf/pkg-descr b/devel/pybind11_protobuf/pkg-descr
new file mode 100644
index 000000000000..f09891059e83
--- /dev/null
+++ b/devel/pybind11_protobuf/pkg-descr
@@ -0,0 +1,2 @@
+pybind11_protobuf provides pybind11 bindings for Google's Protocol Buffers.
+These adapters make Protocol Buffer message types work with Pybind11 bindings.
diff --git a/devel/pybind11_protobuf/pkg-plist b/devel/pybind11_protobuf/pkg-plist
new file mode 100644
index 000000000000..f37f88738eb5
--- /dev/null
+++ b/devel/pybind11_protobuf/pkg-plist
@@ -0,0 +1,5 @@
+lib/libpybind11_native_proto_caster.a
+lib/libpybind11_native_proto_caster.so
+lib/libpybind11_wrapped_proto_caster.a
+lib/libpybind11_wrapped_proto_caster.so
+%%PYTHON_SITELIBDIR%%/pybind11_proto_utils%%PYTHON_EXT_SUFFIX%%.so



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202408151604.47FG4KIY086249>