git: 5a585e4ae52b - main - devel/libcds: New port: C++ library of Concurrent Data Structures

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Mon, 26 Sep 2022 06:30:35 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=5a585e4ae52b8c1715ca2a64a9bb464b6caed337

commit 5a585e4ae52b8c1715ca2a64a9bb464b6caed337
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2022-09-26 06:29:48 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2022-09-26 06:30:27 +0000

    devel/libcds: New port: C++ library of Concurrent Data Structures
---
 devel/Makefile                                     |   1 +
 devel/libcds/Makefile                              |  22 ++
 devel/libcds/distinfo                              |   3 +
 devel/libcds/files/patch-test_CMakeLists.txt.gtest |  17 +
 devel/libcds/pkg-descr                             |  22 ++
 devel/libcds/pkg-plist                             | 360 +++++++++++++++++++++
 6 files changed, 425 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index dc445d542f75..d91c584b9c15 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -1120,6 +1120,7 @@
     SUBDIR += libcbor
     SUBDIR += libccid
     SUBDIR += libcdb
+    SUBDIR += libcds
     SUBDIR += libcfu
     SUBDIR += libchipcard
     SUBDIR += libcidr
diff --git a/devel/libcds/Makefile b/devel/libcds/Makefile
new file mode 100644
index 000000000000..878b10c12594
--- /dev/null
+++ b/devel/libcds/Makefile
@@ -0,0 +1,22 @@
+PORTNAME=	libcds
+DISTVERSIONPREFIX=	v
+DISTVERSION=	2.3.3-102
+DISTVERSIONSUFFIX=	-g9985d2a8
+CATEGORIES=	devel
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	C++ library of Concurrent Data Structures
+WWW=		https://github.com/khizmax/libcds
+
+LICENSE=	BSL
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+USES=		cmake:testing compiler:c++11-lang
+USE_LDCONFIG=	yes
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	khizmax
+
+CMAKE_TESTING_ON=	LIBCDS_WITH_TESTS # tests fail to compile, see https://github.com/khizmax/libcds/issues/173
+
+.include <bsd.port.mk>
diff --git a/devel/libcds/distinfo b/devel/libcds/distinfo
new file mode 100644
index 000000000000..bf966ca92815
--- /dev/null
+++ b/devel/libcds/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1664166610
+SHA256 (khizmax-libcds-v2.3.3-102-g9985d2a8_GH0.tar.gz) = 9ea263bb20f47e36a0db8f0f891f4da30706378774ab53c09b5dc9763ff2afa0
+SIZE (khizmax-libcds-v2.3.3-102-g9985d2a8_GH0.tar.gz) = 1466062
diff --git a/devel/libcds/files/patch-test_CMakeLists.txt.gtest b/devel/libcds/files/patch-test_CMakeLists.txt.gtest
new file mode 100644
index 000000000000..5a6b3b1f5217
--- /dev/null
+++ b/devel/libcds/files/patch-test_CMakeLists.txt.gtest
@@ -0,0 +1,17 @@
+--- test/CMakeLists.txt.gtest.orig	2022-09-26 04:31:53 UTC
++++ test/CMakeLists.txt.gtest
+@@ -5,11 +5,11 @@ project(googletest-download NONE)
+ include(ExternalProject)
+ ExternalProject_Add(googletest
+     GIT_REPOSITORY https://github.com/google/googletest.git
+-    GIT_TAG master
++    GIT_TAG main
+     SOURCE_DIR "${CMAKE_BINARY_DIR}/test/googletest-src"
+     BINARY_DIR "${CMAKE_BINARY_DIR}/test/googletest-build"
+     CONFIGURE_COMMAND ""
+     BUILD_COMMAND ""
+     INSTALL_COMMAND ""
+     TEST_COMMAND ""
+-)
+\ No newline at end of file
++)
diff --git a/devel/libcds/pkg-descr b/devel/libcds/pkg-descr
new file mode 100644
index 000000000000..82d0a586f5cd
--- /dev/null
+++ b/devel/libcds/pkg-descr
@@ -0,0 +1,22 @@
+The Concurrent Data Structures (CDS) library is a collection of concurrent
+containers that don't require external (manual) synchronization for shared
+access, and safe memory reclamation (SMR) algorithms like Hazard Pointer and
+user-space RCU that is used as an epoch-based SMR.
+
+CDS is mostly header-only template library. Only SMR core implementation is
+segregated to .so file.
+
+The library contains the implementations of the following containers:
+* lock-free stack with optional elimination support
+* several algo for lock-free queue, including classic Michael & Scott
+  algorithm and its derivatives, the flat combining queue, the segmented queue.
+* several implementation of unordered set/map - lock-free and fine-grained
+  lock-based
+* flat-combining technique
+* lock-free skip-list
+* lock-free FeldmanHashMap/Set Multi-Level Array Hash with thread-safe
+  bidirectional iterator support
+* Bronson's et al algorithm for fine-grained lock-based AVL tree
+
+Generally, each container has an intrusive and non-intrusive (STL-like) version
+belonging to cds::intrusive and cds::container namespace respectively.
diff --git a/devel/libcds/pkg-plist b/devel/libcds/pkg-plist
new file mode 100644
index 000000000000..bf6a08210aa4
--- /dev/null
+++ b/devel/libcds/pkg-plist
@@ -0,0 +1,360 @@
+include/cds/algo/atomic.h
+include/cds/algo/backoff_strategy.h
+include/cds/algo/base.h
+include/cds/algo/bit_reversal.h
+include/cds/algo/bitop.h
+include/cds/algo/elimination.h
+include/cds/algo/elimination_opt.h
+include/cds/algo/elimination_tls.h
+include/cds/algo/flat_combining.h
+include/cds/algo/flat_combining/defs.h
+include/cds/algo/flat_combining/kernel.h
+include/cds/algo/flat_combining/wait_strategy.h
+include/cds/algo/int_algo.h
+include/cds/algo/split_bitstring.h
+include/cds/compiler/backoff.h
+include/cds/compiler/bitop.h
+include/cds/compiler/clang/defs.h
+include/cds/compiler/cxx11_atomic.h
+include/cds/compiler/defs.h
+include/cds/compiler/feature_tsan.h
+include/cds/compiler/gcc/amd64/backoff.h
+include/cds/compiler/gcc/amd64/bitop.h
+include/cds/compiler/gcc/amd64/cxx11_atomic.h
+include/cds/compiler/gcc/arm7/backoff.h
+include/cds/compiler/gcc/arm8/backoff.h
+include/cds/compiler/gcc/compiler_barriers.h
+include/cds/compiler/gcc/compiler_macro.h
+include/cds/compiler/gcc/defs.h
+include/cds/compiler/gcc/ia64/backoff.h
+include/cds/compiler/gcc/ia64/bitop.h
+include/cds/compiler/gcc/ia64/cxx11_atomic.h
+include/cds/compiler/gcc/ppc64/backoff.h
+include/cds/compiler/gcc/ppc64/bitop.h
+include/cds/compiler/gcc/sparc/backoff.h
+include/cds/compiler/gcc/sparc/bitop.h
+include/cds/compiler/gcc/sparc/cxx11_atomic.h
+include/cds/compiler/gcc/x86/backoff.h
+include/cds/compiler/gcc/x86/bitop.h
+include/cds/compiler/gcc/x86/cxx11_atomic.h
+include/cds/compiler/gcc/x86/cxx11_atomic32.h
+include/cds/compiler/icl/compiler_barriers.h
+include/cds/compiler/icl/defs.h
+include/cds/compiler/vc/amd64/backoff.h
+include/cds/compiler/vc/amd64/bitop.h
+include/cds/compiler/vc/amd64/cxx11_atomic.h
+include/cds/compiler/vc/compiler_barriers.h
+include/cds/compiler/vc/defs.h
+include/cds/compiler/vc/x86/backoff.h
+include/cds/compiler/vc/x86/bitop.h
+include/cds/compiler/vc/x86/cxx11_atomic.h
+include/cds/container/basket_queue.h
+include/cds/container/bronson_avltree_map_rcu.h
+include/cds/container/cuckoo_map.h
+include/cds/container/cuckoo_set.h
+include/cds/container/details/base.h
+include/cds/container/details/bronson_avltree_base.h
+include/cds/container/details/cuckoo_base.h
+include/cds/container/details/ellen_bintree_base.h
+include/cds/container/details/feldman_hashmap_base.h
+include/cds/container/details/feldman_hashset_base.h
+include/cds/container/details/guarded_ptr_cast.h
+include/cds/container/details/iterable_list_base.h
+include/cds/container/details/lazy_list_base.h
+include/cds/container/details/make_iterable_kvlist.h
+include/cds/container/details/make_iterable_list.h
+include/cds/container/details/make_lazy_kvlist.h
+include/cds/container/details/make_lazy_list.h
+include/cds/container/details/make_michael_kvlist.h
+include/cds/container/details/make_michael_list.h
+include/cds/container/details/make_skip_list_map.h
+include/cds/container/details/make_skip_list_set.h
+include/cds/container/details/make_split_list_set.h
+include/cds/container/details/make_split_list_set_iterable_list.h
+include/cds/container/details/make_split_list_set_lazy_list.h
+include/cds/container/details/make_split_list_set_michael_list.h
+include/cds/container/details/michael_list_base.h
+include/cds/container/details/michael_map_base.h
+include/cds/container/details/michael_set_base.h
+include/cds/container/details/skip_list_base.h
+include/cds/container/details/split_list_base.h
+include/cds/container/ellen_bintree_map_dhp.h
+include/cds/container/ellen_bintree_map_hp.h
+include/cds/container/ellen_bintree_map_rcu.h
+include/cds/container/ellen_bintree_set_dhp.h
+include/cds/container/ellen_bintree_set_hp.h
+include/cds/container/ellen_bintree_set_rcu.h
+include/cds/container/fcdeque.h
+include/cds/container/fcpriority_queue.h
+include/cds/container/fcqueue.h
+include/cds/container/fcstack.h
+include/cds/container/feldman_hashmap_dhp.h
+include/cds/container/feldman_hashmap_hp.h
+include/cds/container/feldman_hashmap_rcu.h
+include/cds/container/feldman_hashset_dhp.h
+include/cds/container/feldman_hashset_hp.h
+include/cds/container/feldman_hashset_rcu.h
+include/cds/container/impl/bronson_avltree_map_rcu.h
+include/cds/container/impl/ellen_bintree_map.h
+include/cds/container/impl/ellen_bintree_set.h
+include/cds/container/impl/feldman_hashmap.h
+include/cds/container/impl/feldman_hashset.h
+include/cds/container/impl/iterable_kvlist.h
+include/cds/container/impl/iterable_list.h
+include/cds/container/impl/lazy_kvlist.h
+include/cds/container/impl/lazy_list.h
+include/cds/container/impl/michael_kvlist.h
+include/cds/container/impl/michael_list.h
+include/cds/container/impl/skip_list_map.h
+include/cds/container/impl/skip_list_set.h
+include/cds/container/iterable_kvlist_dhp.h
+include/cds/container/iterable_kvlist_hp.h
+include/cds/container/iterable_list_dhp.h
+include/cds/container/iterable_list_hp.h
+include/cds/container/lazy_kvlist_dhp.h
+include/cds/container/lazy_kvlist_hp.h
+include/cds/container/lazy_kvlist_nogc.h
+include/cds/container/lazy_kvlist_rcu.h
+include/cds/container/lazy_list_dhp.h
+include/cds/container/lazy_list_hp.h
+include/cds/container/lazy_list_nogc.h
+include/cds/container/lazy_list_rcu.h
+include/cds/container/michael_kvlist_dhp.h
+include/cds/container/michael_kvlist_hp.h
+include/cds/container/michael_kvlist_nogc.h
+include/cds/container/michael_kvlist_rcu.h
+include/cds/container/michael_list_dhp.h
+include/cds/container/michael_list_hp.h
+include/cds/container/michael_list_nogc.h
+include/cds/container/michael_list_rcu.h
+include/cds/container/michael_map.h
+include/cds/container/michael_map_nogc.h
+include/cds/container/michael_map_rcu.h
+include/cds/container/michael_set.h
+include/cds/container/michael_set_nogc.h
+include/cds/container/michael_set_rcu.h
+include/cds/container/moir_queue.h
+include/cds/container/mspriority_queue.h
+include/cds/container/msqueue.h
+include/cds/container/optimistic_queue.h
+include/cds/container/rwqueue.h
+include/cds/container/segmented_queue.h
+include/cds/container/skip_list_map_dhp.h
+include/cds/container/skip_list_map_hp.h
+include/cds/container/skip_list_map_nogc.h
+include/cds/container/skip_list_map_rcu.h
+include/cds/container/skip_list_set_dhp.h
+include/cds/container/skip_list_set_hp.h
+include/cds/container/skip_list_set_nogc.h
+include/cds/container/skip_list_set_rcu.h
+include/cds/container/split_list_map.h
+include/cds/container/split_list_map_nogc.h
+include/cds/container/split_list_map_rcu.h
+include/cds/container/split_list_set.h
+include/cds/container/split_list_set_nogc.h
+include/cds/container/split_list_set_rcu.h
+include/cds/container/striped_map.h
+include/cds/container/striped_map/boost_flat_map.h
+include/cds/container/striped_map/boost_list.h
+include/cds/container/striped_map/boost_map.h
+include/cds/container/striped_map/boost_slist.h
+include/cds/container/striped_map/boost_unordered_map.h
+include/cds/container/striped_map/std_hash_map.h
+include/cds/container/striped_map/std_list.h
+include/cds/container/striped_map/std_map.h
+include/cds/container/striped_set.h
+include/cds/container/striped_set/adapter.h
+include/cds/container/striped_set/boost_flat_set.h
+include/cds/container/striped_set/boost_list.h
+include/cds/container/striped_set/boost_set.h
+include/cds/container/striped_set/boost_slist.h
+include/cds/container/striped_set/boost_stable_vector.h
+include/cds/container/striped_set/boost_unordered_set.h
+include/cds/container/striped_set/boost_vector.h
+include/cds/container/striped_set/std_hash_set.h
+include/cds/container/striped_set/std_list.h
+include/cds/container/striped_set/std_set.h
+include/cds/container/striped_set/std_vector.h
+include/cds/container/treiber_stack.h
+include/cds/container/vyukov_mpmc_cycle_queue.h
+include/cds/container/weak_ringbuffer.h
+include/cds/details/aligned_allocator.h
+include/cds/details/aligned_type.h
+include/cds/details/allocator.h
+include/cds/details/binary_functor_wrapper.h
+include/cds/details/bit_reverse_counter.h
+include/cds/details/bitop_generic.h
+include/cds/details/bounded_container.h
+include/cds/details/defs.h
+include/cds/details/is_aligned.h
+include/cds/details/make_const_type.h
+include/cds/details/marked_ptr.h
+include/cds/details/size_t_cast.h
+include/cds/details/throw_exception.h
+include/cds/details/type_padding.h
+include/cds/gc/default_gc.h
+include/cds/gc/details/hp_common.h
+include/cds/gc/details/retired_ptr.h
+include/cds/gc/dhp.h
+include/cds/gc/hp.h
+include/cds/gc/hp_membar.h
+include/cds/gc/nogc.h
+include/cds/init.h
+include/cds/intrusive/basket_queue.h
+include/cds/intrusive/cuckoo_set.h
+include/cds/intrusive/details/base.h
+include/cds/intrusive/details/ellen_bintree_base.h
+include/cds/intrusive/details/feldman_hashset_base.h
+include/cds/intrusive/details/iterable_list_base.h
+include/cds/intrusive/details/lazy_list_base.h
+include/cds/intrusive/details/michael_list_base.h
+include/cds/intrusive/details/michael_set_base.h
+include/cds/intrusive/details/node_traits.h
+include/cds/intrusive/details/raw_ptr_disposer.h
+include/cds/intrusive/details/single_link_struct.h
+include/cds/intrusive/details/skip_list_base.h
+include/cds/intrusive/details/split_list_base.h
+include/cds/intrusive/ellen_bintree_dhp.h
+include/cds/intrusive/ellen_bintree_hp.h
+include/cds/intrusive/ellen_bintree_rcu.h
+include/cds/intrusive/fcqueue.h
+include/cds/intrusive/fcstack.h
+include/cds/intrusive/feldman_hashset_dhp.h
+include/cds/intrusive/feldman_hashset_hp.h
+include/cds/intrusive/feldman_hashset_rcu.h
+include/cds/intrusive/free_list.h
+include/cds/intrusive/free_list_cached.h
+include/cds/intrusive/free_list_selector.h
+include/cds/intrusive/free_list_tagged.h
+include/cds/intrusive/impl/ellen_bintree.h
+include/cds/intrusive/impl/feldman_hashset.h
+include/cds/intrusive/impl/iterable_list.h
+include/cds/intrusive/impl/lazy_list.h
+include/cds/intrusive/impl/michael_list.h
+include/cds/intrusive/impl/skip_list.h
+include/cds/intrusive/iterable_list_dhp.h
+include/cds/intrusive/iterable_list_hp.h
+include/cds/intrusive/lazy_list_dhp.h
+include/cds/intrusive/lazy_list_hp.h
+include/cds/intrusive/lazy_list_nogc.h
+include/cds/intrusive/lazy_list_rcu.h
+include/cds/intrusive/michael_list_dhp.h
+include/cds/intrusive/michael_list_hp.h
+include/cds/intrusive/michael_list_nogc.h
+include/cds/intrusive/michael_list_rcu.h
+include/cds/intrusive/michael_set.h
+include/cds/intrusive/michael_set_nogc.h
+include/cds/intrusive/michael_set_rcu.h
+include/cds/intrusive/moir_queue.h
+include/cds/intrusive/mspriority_queue.h
+include/cds/intrusive/msqueue.h
+include/cds/intrusive/optimistic_queue.h
+include/cds/intrusive/options.h
+include/cds/intrusive/segmented_queue.h
+include/cds/intrusive/skip_list_dhp.h
+include/cds/intrusive/skip_list_hp.h
+include/cds/intrusive/skip_list_nogc.h
+include/cds/intrusive/skip_list_rcu.h
+include/cds/intrusive/split_list.h
+include/cds/intrusive/split_list_nogc.h
+include/cds/intrusive/split_list_rcu.h
+include/cds/intrusive/striped_set.h
+include/cds/intrusive/striped_set/adapter.h
+include/cds/intrusive/striped_set/boost_avl_set.h
+include/cds/intrusive/striped_set/boost_list.h
+include/cds/intrusive/striped_set/boost_set.h
+include/cds/intrusive/striped_set/boost_sg_set.h
+include/cds/intrusive/striped_set/boost_slist.h
+include/cds/intrusive/striped_set/boost_splay_set.h
+include/cds/intrusive/striped_set/boost_treap_set.h
+include/cds/intrusive/striped_set/boost_unordered_set.h
+include/cds/intrusive/striped_set/resizing_policy.h
+include/cds/intrusive/striped_set/striping_policy.h
+include/cds/intrusive/treiber_stack.h
+include/cds/intrusive/vyukov_mpmc_cycle_queue.h
+include/cds/lock/array.h
+include/cds/lock/spinlock.h
+include/cds/memory/pool_allocator.h
+include/cds/memory/vyukov_queue_pool.h
+include/cds/opt/buffer.h
+include/cds/opt/compare.h
+include/cds/opt/hash.h
+include/cds/opt/options.h
+include/cds/opt/permutation.h
+include/cds/opt/value_cleaner.h
+include/cds/os/aix/alloc_aligned.h
+include/cds/os/aix/timer.h
+include/cds/os/aix/topology.h
+include/cds/os/alloc_aligned.h
+include/cds/os/details/fake_topology.h
+include/cds/os/free_bsd/alloc_aligned.h
+include/cds/os/free_bsd/timer.h
+include/cds/os/free_bsd/topology.h
+include/cds/os/hpux/alloc_aligned.h
+include/cds/os/hpux/timer.h
+include/cds/os/hpux/topology.h
+include/cds/os/libc/alloc_aligned.h
+include/cds/os/linux/alloc_aligned.h
+include/cds/os/linux/timer.h
+include/cds/os/linux/topology.h
+include/cds/os/osx/timer.h
+include/cds/os/osx/topology.h
+include/cds/os/posix/alloc_aligned.h
+include/cds/os/posix/fake_topology.h
+include/cds/os/posix/thread.h
+include/cds/os/posix/timer.h
+include/cds/os/sunos/alloc_aligned.h
+include/cds/os/sunos/timer.h
+include/cds/os/sunos/topology.h
+include/cds/os/thread.h
+include/cds/os/timer.h
+include/cds/os/topology.h
+include/cds/os/win/alloc_aligned.h
+include/cds/os/win/thread.h
+include/cds/os/win/timer.h
+include/cds/os/win/topology.h
+include/cds/sync/injecting_monitor.h
+include/cds/sync/lock_array.h
+include/cds/sync/monitor.h
+include/cds/sync/pool_monitor.h
+include/cds/sync/spinlock.h
+include/cds/threading/details/_common.h
+include/cds/threading/details/auto_detect.h
+include/cds/threading/details/cxx11.h
+include/cds/threading/details/cxx11_manager.h
+include/cds/threading/details/gcc.h
+include/cds/threading/details/gcc_manager.h
+include/cds/threading/details/msvc.h
+include/cds/threading/details/msvc_manager.h
+include/cds/threading/details/pthread.h
+include/cds/threading/details/pthread_manager.h
+include/cds/threading/details/wintls.h
+include/cds/threading/details/wintls_manager.h
+include/cds/threading/model.h
+include/cds/urcu/details/base.h
+include/cds/urcu/details/check_deadlock.h
+include/cds/urcu/details/gp.h
+include/cds/urcu/details/gp_decl.h
+include/cds/urcu/details/gpb.h
+include/cds/urcu/details/gpi.h
+include/cds/urcu/details/gpt.h
+include/cds/urcu/details/sh.h
+include/cds/urcu/details/sh_decl.h
+include/cds/urcu/details/sig_buffered.h
+include/cds/urcu/dispose_thread.h
+include/cds/urcu/exempt_ptr.h
+include/cds/urcu/general_buffered.h
+include/cds/urcu/general_instant.h
+include/cds/urcu/general_threaded.h
+include/cds/urcu/options.h
+include/cds/urcu/raw_ptr.h
+include/cds/urcu/signal_buffered.h
+include/cds/user_setup/allocator.h
+include/cds/user_setup/cache_line.h
+include/cds/user_setup/threading.h
+include/cds/version.h
+lib/cmake/LibCDS/LibCDSConfig-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/LibCDS/LibCDSConfig.cmake
+lib64/libcds-s.a
+lib64/libcds.so
+lib64/libcds.so.2.3.3