diff options
author | Sam James <sam@gentoo.org> | 2021-12-03 22:48:19 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2021-12-03 22:48:19 +0000 |
commit | 2c26edb3d736e1e00b6d1739d506abb2183d8dfe (patch) | |
tree | 0246badaf53cea86a64ea3e33b526acea4ccc74e /sci-libs/vtk | |
parent | virtual/mpi: add USE=nullmpi (diff) | |
download | gentoo-2c26edb3d736e1e00b6d1739d506abb2183d8dfe.tar.gz gentoo-2c26edb3d736e1e00b6d1739d506abb2183d8dfe.tar.bz2 gentoo-2c26edb3d736e1e00b6d1739d506abb2183d8dfe.zip |
sci-libs/vtk: [QA] Revert "fix build with new deps versions"
This reverts commit 4893345530421b0d6168b5278d57d69fc08f7fdf.
Rationale:
- Several patches far beyond the size limit;
- Change was NAKed on IRC;
- A PR is in progress for a newer version which would require fewer
patches;
- Invasive patches which aren't strictly needed. They add compatibility
for newer versions of some software, but most of this comes with VTK 9.1
(for which, as mentioned, there's a PR well in progress by the maintainer)
and we can apply a smaller set of patches to that version if required.
- Missing sign-off / provenance for some patches;
Bug: https://bugs.gentoo.org/827310
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'sci-libs/vtk')
9 files changed, 0 insertions, 3303 deletions
diff --git a/sci-libs/vtk/files/vtk-9.0.3-TBB-2021.04-fix.patch b/sci-libs/vtk/files/vtk-9.0.3-TBB-2021.04-fix.patch deleted file mode 100644 index 2927368a7fdc..000000000000 --- a/sci-libs/vtk/files/vtk-9.0.3-TBB-2021.04-fix.patch +++ /dev/null @@ -1,229 +0,0 @@ -Patch is based on following upstream commits: - -56cf03534c58a21f3cea608e4f53b7e7e00670fc by Mickael PHILIT <mickey.phy@gmail.com> -ded89c1e3a025874bfd69feb6c67fa21d6af36d4 by Mickael PHILIT <mickey.phy@gmail.com> -3e5313e71c35aaeabfd4e65e090031716460d35e by Timothée Couble <timothee.couble@kitware.com> - -Backported by Vyacheslav Perestoronin <perestoronin@gmail.com> - -Adapted by Vadim Misbakh-Soloviov <mva@gentoo.org> - ---- a/CMake/FindTBB.cmake -+++ b/CMake/FindTBB.cmake -@@ -424,12 +424,18 @@ findpkg_finish(TBB_MALLOC_PROXY tbbmalloc_proxy) - #============================================================================= - #parse all the version numbers from tbb - if(NOT TBB_VERSION) -- -- #only read the start of the file -- file(STRINGS -+ if (EXISTS "${TBB_INCLUDE_DIR}/oneapi/tbb/version.h") -+ file(STRINGS -+ "${TBB_INCLUDE_DIR}/oneapi/tbb/version.h" -+ TBB_VERSION_CONTENTS -+ REGEX "VERSION") -+ else() -+ #only read the start of the file -+ file(STRINGS - "${TBB_INCLUDE_DIR}/tbb/tbb_stddef.h" - TBB_VERSION_CONTENTS - REGEX "VERSION") -+ endif() - - string(REGEX REPLACE - ".*#define TBB_VERSION_MAJOR ([0-9]+).*" "\\1" ---- a/Common/Core/SMP/TBB/vtkSMPTools.cxx -+++ b/Common/Core/SMP/TBB/vtkSMPTools.cxx -@@ -22,47 +22,50 @@ - #define __TBB_NO_IMPLICIT_LINKAGE 1 - #endif - --#include <tbb/task_scheduler_init.h> -+#include <tbb/task_arena.h> - - #ifdef _MSC_VER - #pragma pop_macro("__TBB_NO_IMPLICIT_LINKAGE") - #endif - --struct vtkSMPToolsInit --{ -- tbb::task_scheduler_init Init; -- -- vtkSMPToolsInit(int numThreads) -- : Init(numThreads) -- { -- } --}; -- --static bool vtkSMPToolsInitialized = 0; --static int vtkTBBNumSpecifiedThreads = 0; -+static tbb::task_arena taskArena; - static vtkSimpleCriticalSection vtkSMPToolsCS; - - //-------------------------------------------------------------------------------- - void vtkSMPTools::Initialize(int numThreads) - { - vtkSMPToolsCS.Lock(); -- if (!vtkSMPToolsInitialized) -+ -+ // If numThreads <= 0, don't create a task_arena -+ // and let TBB do the default thing. -+ if (numThreads > 0 && numThreads != taskArena.max_concurrency()) - { -- // If numThreads <= 0, don't create a task_scheduler_init -- // and let TBB do the default thing. -- if (numThreads > 0) -+ if (taskArena.is_active()) - { -- static vtkSMPToolsInit aInit(numThreads); -- vtkTBBNumSpecifiedThreads = numThreads; -+ taskArena.terminate(); - } -- vtkSMPToolsInitialized = true; -+ taskArena.initialize(numThreads); - } -+ - vtkSMPToolsCS.Unlock(); - } - - //-------------------------------------------------------------------------------- - int vtkSMPTools::GetEstimatedNumberOfThreads() - { -- return vtkTBBNumSpecifiedThreads ? vtkTBBNumSpecifiedThreads -- : tbb::task_scheduler_init::default_num_threads(); -+ return taskArena.max_concurrency(); -+} -+ -+//------------------------------------------------------------------------------ -+void vtk::detail::smp::vtkSMPTools_Impl_For_TBB(vtkIdType first, vtkIdType last, vtkIdType grain, -+ ExecuteFunctorPtrType functorExecuter, void* functor) -+{ -+ if (taskArena.is_active()) -+ { -+ taskArena.execute([&] { functorExecuter(functor, first, last, grain); }); -+ } -+ else -+ { -+ functorExecuter(functor, first, last, grain); -+ } - } ---- a/Common/Core/SMP/TBB/vtkSMPToolsInternal.h.in -+++ b/Common/Core/SMP/TBB/vtkSMPToolsInternal.h.in -@@ -12,7 +12,8 @@ - PURPOSE. See the above copyright notice for more information. - - =========================================================================*/ --#include "vtkNew.h" -+ -+#include "vtkCommonCoreModule.h" // For export macro - - #ifdef _MSC_VER - # pragma push_macro("__TBB_NO_IMPLICIT_LINKAGE") -@@ -34,6 +35,10 @@ - namespace smp - { - -+typedef void (*ExecuteFunctorPtrType)(void*, vtkIdType, vtkIdType, vtkIdType); -+void VTKCOMMONCORE_EXPORT vtkSMPTools_Impl_For_TBB(vtkIdType first, vtkIdType last, vtkIdType grain, -+ ExecuteFunctorPtrType functorExecuter, void* functor); -+ - //-------------------------------------------------------------------------------- - template <typename T> - class FuncCall -@@ -43,22 +48,22 @@ - void operator=(const FuncCall&) = delete; - - public: -- void operator() (const tbb::blocked_range<vtkIdType>& r) const -- { -- o.Execute(r.begin(), r.end()); -+ void operator()(const tbb::blocked_range<vtkIdType>& r) const { -+ o.Execute(r.begin(), r.end()); - } - -- FuncCall (T& _o) : o(_o) -+ FuncCall(T& _o) -+ : o(_o) - { - } - }; - - //-------------------------------------------------------------------------------- - template <typename FunctorInternal> --void vtkSMPTools_Impl_For( -- vtkIdType first, vtkIdType last, vtkIdType grain, -- FunctorInternal& fi) -+void ExecuteFunctor(void* functor, vtkIdType first, vtkIdType last, vtkIdType grain) - { -+ FunctorInternal& fi = *reinterpret_cast<FunctorInternal*>(functor); -+ - vtkIdType n = last - first; - if (!n) - { -@@ -66,32 +71,37 @@ - } - if (grain > 0) - { -- tbb::parallel_for(tbb::blocked_range<vtkIdType>(first, last, grain), FuncCall<FunctorInternal>(fi)); -+ tbb::parallel_for( -+ tbb::blocked_range<vtkIdType>(first, last, grain), FuncCall<FunctorInternal>(fi)); - } - else - { -- tbb::parallel_for(tbb::blocked_range<vtkIdType>(first, last), FuncCall<FunctorInternal>(fi)); -+ tbb::parallel_for( -+ tbb::blocked_range<vtkIdType>(first, last), FuncCall<FunctorInternal>(fi)); - } - } - - //-------------------------------------------------------------------------------- --template<typename RandomAccessIterator> --void vtkSMPTools_Impl_Sort(RandomAccessIterator begin, -- RandomAccessIterator end) -+template <typename FunctorInternal> -+void vtkSMPTools_Impl_For(vtkIdType first, vtkIdType last, vtkIdType grain, FunctorInternal& fi) -+{ -+ vtkSMPTools_Impl_For_TBB(first, last, grain, ExecuteFunctor<FunctorInternal>, &fi); -+} -+ -+//-------------------------------------------------------------------------------- -+template <typename RandomAccessIterator> -+void vtkSMPTools_Impl_Sort(RandomAccessIterator begin, RandomAccessIterator end) - { - tbb::parallel_sort(begin, end); - } - - //-------------------------------------------------------------------------------- --template<typename RandomAccessIterator, typename Compare> --void vtkSMPTools_Impl_Sort(RandomAccessIterator begin, -- RandomAccessIterator end, -- Compare comp) -+template <typename RandomAccessIterator, typename Compare> -+void vtkSMPTools_Impl_Sort(RandomAccessIterator begin, RandomAccessIterator end, Compare comp) - { - tbb::parallel_sort(begin, end, comp); - } - -- --}//namespace smp --}//namespace detail --}//namespace vtk -+} // namespace smp -+} // namespace detail -+} // namespace vtk ---- a/Common/Core/vtkSMPTools.h -+++ b/Common/Core/vtkSMPTools.h -@@ -228,11 +228,8 @@ public: - * Initialize the underlying libraries for execution. This is - * not required as it is automatically called before the first - * execution of any parallel code. However, it can be used to -- * control the maximum number of threads used when the back-end -- * supports it (currently Simple and TBB only). Make sure to call -- * it before any other parallel operation. -- * When using Kaapi, use the KAAPI_CPUCOUNT env. variable to control -- * the number of threads used in the thread pool. -+ * control the maximum number of threads used. Make sure to call -+ * it before the parallel operation. - */ - static void Initialize(int numThreads = 0); - diff --git a/sci-libs/vtk/files/vtk-9.0.3-cuda-11.5.0.patch b/sci-libs/vtk/files/vtk-9.0.3-cuda-11.5.0.patch deleted file mode 100644 index dc0094516f21..000000000000 --- a/sci-libs/vtk/files/vtk-9.0.3-cuda-11.5.0.patch +++ /dev/null @@ -1,25 +0,0 @@ -This patch was sent by Vyacheslav Perestoronin <perestoronin@gmail.com> - -Declared purpose is to make VTK to build with CUDA-11.5 release. - ---- a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/internal/brigand.hpp -+++ b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/internal/brigand.hpp -@@ -1057,18 +1057,6 @@ - { - using type = S<L, Ls...>; - }; -- template <typename L1, typename L2, typename... Ls> -- struct find<true, false, L1, L2, Ls...> : find<true, F<Ts..., L2>::value, L2, Ls...> -- { -- }; -- template <typename L0, typename L1, typename L2, typename L3, typename L4, typename L5, -- typename L6, typename L7, typename L8, -- typename... Ls> -- struct find<false, false, L0, L1, L2, L3, L4, L5, L6, L7, L8, Ls...> -- : find<true, F<Ts..., L8>::value, L8, Ls...> -- { -- }; -- - #ifndef BRIGAND_COMP_CUDA - template <typename L1, typename L2, typename L3, typename L4, typename L5, typename L6, - typename L7, typename L8, typename L9, typename L10, typename L11, typename L12, diff --git a/sci-libs/vtk/files/vtk-9.0.3-fix-gcc10-return-local-addr-in-wrappers-upstream-commit-55c74ed3.patch b/sci-libs/vtk/files/vtk-9.0.3-fix-gcc10-return-local-addr-in-wrappers-upstream-commit-55c74ed3.patch deleted file mode 100644 index 6ac2f7c2a6bc..000000000000 --- a/sci-libs/vtk/files/vtk-9.0.3-fix-gcc10-return-local-addr-in-wrappers-upstream-commit-55c74ed3.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 55c74ed3854736cc6cb43fd242f1db5249aea5e4 Mon Sep 17 00:00:00 2001 -From: David Gobbi <david.gobbi@gmail.com> -Date: Fri, 29 May 2020 10:24:16 -0600 -Subject: [PATCH] Fix gcc10 return-local-addr warning in wrappers - -There was a warning from gcc10 because it thought a stack-allocated -array variable was being returned. ---- - Wrapping/Tools/vtkParseExtras.c | 10 +++++----- - Wrapping/Tools/vtkParsePreprocess.c | 27 ++++++++++++++++----------- - 2 files changed, 21 insertions(+), 16 deletions(-) - -diff --git a/Wrapping/Tools/vtkParseExtras.c b/Wrapping/Tools/vtkParseExtras.c -index 88a73c15d8d..853ed135f6f 100644 ---- a/Wrapping/Tools/vtkParseExtras.c -+++ b/Wrapping/Tools/vtkParseExtras.c -@@ -251,13 +251,13 @@ static const char* vtkparse_string_replace( - if (any_replaced) - { - /* return a string that was allocated with malloc */ -- if (result == result_store) -+ tmp = (char*)malloc(strlen(result) + 1); -+ strcpy(tmp, result); -+ cp = tmp; -+ if (result != result_store) - { -- tmp = (char*)malloc(strlen(result) + 1); -- strcpy(tmp, result); -- result = tmp; -+ free(result); - } -- cp = result; - } - } - -diff --git a/Wrapping/Tools/vtkParsePreprocess.c b/Wrapping/Tools/vtkParsePreprocess.c -index 4f30cfa2cb5..bd2e7cbb116 100644 ---- a/Wrapping/Tools/vtkParsePreprocess.c -+++ b/Wrapping/Tools/vtkParsePreprocess.c -@@ -4405,14 +4405,16 @@ const char* vtkParsePreprocess_ExpandMacro( - } - return macro->Definition; - } -- -- if (rp == stack_rp) -+ else - { -- rp = (char*)malloc(strlen(stack_rp) + 1); -- strcpy(rp, stack_rp); -+ char* tmp = (char*)malloc(strlen(rp) + 1); -+ strcpy(tmp, rp); -+ if (rp != stack_rp) -+ { -+ free(rp); -+ } -+ return tmp; - } -- -- return rp; - } - - /** -@@ -4631,14 +4633,17 @@ const char* vtkParsePreprocess_ProcessString(PreprocessInfo* info, const char* t - } - return tp; - } -- if (rp == stack_rp) -+ else - { -- rp = (char*)malloc(strlen(stack_rp) + 1); -- strcpy(rp, stack_rp); -+ char* tmp = (char*)malloc(strlen(rp) + 1); -+ strcpy(tmp, rp); -+ if (rp != stack_rp) -+ { -+ free(rp); -+ } -+ return tmp; - } - } -- -- return rp; - } - - /** --- -GitLab - diff --git a/sci-libs/vtk/files/vtk-9.0.3-pegtl-3.patch b/sci-libs/vtk/files/vtk-9.0.3-pegtl-3.patch deleted file mode 100644 index a7c41231f4b1..000000000000 --- a/sci-libs/vtk/files/vtk-9.0.3-pegtl-3.patch +++ /dev/null @@ -1,75 +0,0 @@ -Based on patch from Zoltán Fridrich <zfridric@redhat.com> -Reworked by Vyacheslav Perestoronin <perestoronin@gmail.com> -Little fixes by Vadim Misbakh-Soloviov <mva@gentoo.org> - ---- a/IO/MotionFX/vtkMotionFXCFGGrammar.h -+++ b/IO/MotionFX/vtkMotionFXCFGGrammar.h -@@ -23,7 +23,12 @@ - - // for debugging - // clang-format off -+#if TAO_PEGTL_VERSION_MAJOR >= 3 -+#include VTK_PEGTL(pegtl/contrib/trace.hpp) -+#else - #include VTK_PEGTL(pegtl/contrib/tracer.hpp) -+#endif -+ - // clang-format on - - namespace MotionFX ---- a/IO/MotionFX/vtkMotionFXCFGReader.cxx -+++ b/IO/MotionFX/vtkMotionFXCFGReader.cxx -@@ -1014,14 +1014,24 @@ - if (this->isOrientation) - { - std::vector<double> numbers; -+#if TAO_PEGTL_VERSION_MAJOR >= 3 -+ tao::pegtl::complete_trace<MotionFX::OrientationsPositionFile::Grammar, -+ Actions::PositionFile::action>(in, numbers, this->positions); -+#else - tao::pegtl::parse<MotionFX::OrientationsPositionFile::Grammar, - Actions::PositionFile::action /*, tao::pegtl::tracer*/>(in, numbers, this->positions); -+#endif - } - else - { - std::vector<double> numbers; -+#if TAO_PEGTL_VERSION_MAJOR >= 3 -+ tao::pegtl::complete_trace<MotionFX::LegacyPositionFile::Grammar, -+ Actions::PositionFile::action>(in, numbers, this->positions); -+#else - tao::pegtl::parse<MotionFX::LegacyPositionFile::Grammar, - Actions::PositionFile::action /*, tao::pegtl::tracer*/>(in, numbers, this->positions); -+#endif - } - return true; - } -- catch (const tao::pegtl::input_error& e) -+ catch (const std::filesystem::filesystem_error& e) - { - vtkGenericWarningMacro("PositionFileMotion::read_position_file failed: " << e.what()); - } -@@ -1050,7 +1060,11 @@ - { - tao::pegtl::read_input<> in(filename); - Actions::CFG::ActiveState state(this->Motions); -+#if TAO_PEGTL_VERSION_MAJOR >= 3 -+ tao::pegtl::complete_trace<MotionFX::CFG::Grammar, Actions::CFG::action>(in, state); -+#else - tao::pegtl::parse<MotionFX::CFG::Grammar, Actions::CFG::action>(in, state); -+#endif - if (this->Motions.size() == 0) - { - vtkGenericWarningMacro( -@@ -1061,7 +1075,11 @@ - if (getenv("MOTIONFX_DEBUG_GRAMMAR") != nullptr) - { - tao::pegtl::read_input<> in2(filename); -+#if TAO_PEGTL_VERSION_MAJOR >= 3 -+ tao::pegtl::complete_trace<MotionFX::CFG::Grammar, tao::pegtl::nothing>(in2); -+#else - tao::pegtl::parse<MotionFX::CFG::Grammar, tao::pegtl::nothing, tao::pegtl::tracer>(in2); -+#endif - } - return false; - } diff --git a/sci-libs/vtk/files/vtk-9.0.3-proj-api-fix-upstream-commit-03256388.patch b/sci-libs/vtk/files/vtk-9.0.3-proj-api-fix-upstream-commit-03256388.patch deleted file mode 100644 index 1431ae04a5af..000000000000 --- a/sci-libs/vtk/files/vtk-9.0.3-proj-api-fix-upstream-commit-03256388.patch +++ /dev/null @@ -1,163 +0,0 @@ -Almost original commit patch. -Slightly modified (to make it apply on top of 9.0.3 release tarball) by -Vadim Misbakh-Soloviov <mva@gentoo.org> - -Modified part is last 3 lines in the second hunk of first file: -``` -} -else -{ -``` - -Original commit patch had a bit different code there, while 9.0.3 has this. - ---- -From 0325638832e35c8c8c6fc96e2c1d887aeea3dd43 Mon Sep 17 00:00:00 2001 -From: Julien Schueller <schueller@phimeca.com> -Date: Mon, 8 Mar 2021 10:57:46 +0100 -Subject: [PATCH] Geovis: Use proj>=5 api - -Closes #18130 ---- - Geovis/Core/vtkGeoProjection.cxx | 17 ++++++++++++++++- - Geovis/Core/vtkGeoTransform.cxx | 28 ++++++++++++++-------------- - ThirdParty/libproj/vtk_libproj.h.in | 7 +------ - 3 files changed, 31 insertions(+), 21 deletions(-) - -diff --git a/Geovis/Core/vtkGeoProjection.cxx b/Geovis/Core/vtkGeoProjection.cxx -index 7ff6526a5d3..0a0d06eba19 100644 ---- a/Geovis/Core/vtkGeoProjection.cxx -+++ b/Geovis/Core/vtkGeoProjection.cxx -@@ -121,7 +121,11 @@ vtkGeoProjection::~vtkGeoProjection() - this->SetPROJ4String(nullptr); - if (this->Projection) - { -+#if PROJ_VERSION_MAJOR >= 5 -+ proj_destroy(this->Projection); -+#else - pj_free(this->Projection); -+#endif - } - delete this->Internals; - this->Internals = nullptr; -@@ -185,13 +189,21 @@ int vtkGeoProjection::UpdateProjection() - - if (this->Projection) - { -+#if PROJ_VERSION_MAJOR >= 5 -+ proj_destroy(this->Projection); -+#else - pj_free(this->Projection); -+#endif - this->Projection = nullptr; - } - - if (this->PROJ4String && strlen(this->PROJ4String)) - { -+#if PROJ_VERSION_MAJOR >= 5 -+ this->Projection = proj_create(PJ_DEFAULT_CTX, this->PROJ4String); -+#else - this->Projection = pj_init_plus(this->PROJ4String); -+#endif - } - else - { -@@ -234,8 +246,11 @@ int vtkGeoProjection::UpdateProjection() - stringHolder[i] = param.str(); - pjArgs[3 + i] = stringHolder[i].c_str(); - } -- -+#if PROJ_VERSION_MAJOR >= 5 -+ this->Projection = proj_create_argv(PJ_DEFAULT_CTX, argSize, const_cast<char**>(pjArgs)); -+#else - this->Projection = pj_init(argSize, const_cast<char**>(pjArgs)); -+#endif - delete[] pjArgs; - } - this->ProjectionMTime = this->GetMTime(); -diff --git a/Geovis/Core/vtkGeoTransform.cxx b/Geovis/Core/vtkGeoTransform.cxx -index 5c2c74279de..1c99b6b11be 100644 ---- a/Geovis/Core/vtkGeoTransform.cxx -+++ b/Geovis/Core/vtkGeoTransform.cxx -@@ -163,8 +163,12 @@ void vtkGeoTransform::InternalTransformPoints(double* x, vtkIdType numPts, int s - projPJ src = this->SourceProjection ? this->SourceProjection->GetProjection() : nullptr; - projPJ dst = this->DestinationProjection ? this->DestinationProjection->GetProjection() : nullptr; - int delta = stride - 2; -+#if PROJ_VERSION_MAJOR >= 5 -+ PJ_COORD c, c_out; -+#else - projLP lp; - projXY xy; -+#endif - if (src) - { - // Convert from src system to lat/long using inverse of src transform -@@ -172,17 +176,15 @@ void vtkGeoTransform::InternalTransformPoints(double* x, vtkIdType numPts, int s - for (vtkIdType i = 0; i < numPts; ++i) - { - #if PROJ_VERSION_MAJOR >= 5 -- xy.x = coord[0]; -- xy.y = coord[1]; -+ c.xy.x = coord[0]; -+ c.xy.y = coord[1]; -+ c_out = proj_trans(src, PJ_INV, c); -+ coord[0] = c_out.lp.lam; -+ coord[1] = c_out.lp.phi; - #else - xy.u = coord[0]; - xy.v = coord[1]; --#endif - lp = pj_inv(xy, src); --#if PROJ_VERSION_MAJOR >= 5 -- coord[0] = lp.lam; -- coord[1] = lp.phi; --#else - coord[0] = lp.u; - coord[1] = lp.v; - #endif -@@ -208,17 +210,15 @@ void vtkGeoTransform::InternalTransformPoints(double* x, vtkIdType numPts, int s - for (vtkIdType i = 0; i < numPts; ++i) - { - #if PROJ_VERSION_MAJOR >= 5 -- lp.lam = coord[0]; -- lp.phi = coord[1]; -+ c.lp.lam = coord[0]; -+ c.lp.phi = coord[1]; -+ c_out = proj_trans(src, PJ_FWD, c); -+ coord[0] = c_out.xy.x; -+ coord[1] = c_out.xy.y; - #else - lp.u = coord[0]; - lp.v = coord[1]; --#endif - xy = pj_fwd(lp, dst); --#if PROJ_VERSION_MAJOR >= 5 -- coord[0] = xy.x; -- coord[1] = xy.y; --#else - coord[0] = xy.u; - coord[1] = xy.v; - #endif -diff --git a/ThirdParty/libproj/vtk_libproj.h.in b/ThirdParty/libproj/vtk_libproj.h.in -index 4d8ffc3c5d5..c4182c4db2b 100644 ---- a/ThirdParty/libproj/vtk_libproj.h.in -+++ b/ThirdParty/libproj/vtk_libproj.h.in -@@ -28,14 +28,9 @@ - #if VTK_MODULE_USE_EXTERNAL_vtklibproj - # if VTK_LibPROJ_MAJOR_VERSION >= 5 - # include <proj.h> --# endif --# if VTK_LibPROJ_MAJOR_VERSION < 6 -+# else - # include <projects.h> - # endif --# if VTK_LibPROJ_MAJOR_VERSION >= 6 --# define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H 1 --# endif --# include <proj_api.h> - # include <geodesic.h> - #else - # include <vtklibproj/src/projects.h> --- -GitLab - diff --git a/sci-libs/vtk/files/vtk-9.0.3-tbb-fix-for-bundled-vtkm.patch b/sci-libs/vtk/files/vtk-9.0.3-tbb-fix-for-bundled-vtkm.patch deleted file mode 100644 index f2e1e39d6315..000000000000 --- a/sci-libs/vtk/files/vtk-9.0.3-tbb-fix-for-bundled-vtkm.patch +++ /dev/null @@ -1,504 +0,0 @@ -Patch was backported by Vadim Misbakh-Soloviov <mva@gentoo.org> from vtk-m repo. - -Paths was changed to be relative to ${S}. - -Also, some spaces in removed header (tonot be detected as reversed). - ---- -From 904e784e895229d675cd7b3b43a963fdc5813ac8 Mon Sep 17 00:00:00 2001 -From: Kenneth Moreland <morelandkd@ornl.gov> -Date: Fri, 4 Jun 2021 09:30:52 -0600 -Subject: [PATCH] Remove TBB parallel_sort patch - -Years ago we discovered a problem with TBB's parallel sort, which we -patch in our local repo and submitted a change to TBB, which has been -accepted. - -The code to decide whether to use our parallel_sort patch does not work -with the latest versions of TBB because it requires including a header -that changed names to get the TBB version. - -We no longer support any TBB version with this bug, so just remove the -patch from VTK-m. ---- - vtkm/cont/tbb/internal/CMakeLists.txt | 1 - - vtkm/cont/tbb/internal/FunctorsTBB.h | 10 +- - vtkm/cont/tbb/internal/parallel_sort.h | 273 ------------------------- - 3 files changed, 1 insertion(+), 283 deletions(-) - delete mode 100644 vtkm/cont/tbb/internal/parallel_sort.h - -diff --git a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/CMakeLists.txt b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/CMakeLists.txt -index 1283307be..ffbf1e845 100644 ---- a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/CMakeLists.txt -+++ b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/CMakeLists.txt -@@ -25,7 +25,6 @@ endif() - - vtkm_declare_headers(${headers} - ParallelSortTBB.hxx -- parallel_sort.h - ) - - #These sources need to always be built -diff --git a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/FunctorsTBB.h b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/FunctorsTBB.h -index dc988f7f8..c538c2240 100644 ---- a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/FunctorsTBB.h -+++ b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/FunctorsTBB.h -@@ -38,15 +38,6 @@ VTKM_THIRDPARTY_PRE_INCLUDE - // correct settings so that we don't clobber any existing function - #include <vtkm/internal/Windows.h> - --#include <tbb/tbb_stddef.h> --#if (TBB_VERSION_MAJOR == 4) && (TBB_VERSION_MINOR == 2) --//we provide an patched implementation of tbb parallel_sort --//that fixes ADL for std::swap. This patch has been submitted to Intel --//and is fixed in TBB 4.2 update 2. --#include <vtkm/cont/tbb/internal/parallel_sort.h> --#else --#include <tbb/parallel_sort.h> --#endif - - #include <numeric> - #include <tbb/blocked_range.h> -@@ -54,6 +45,7 @@ VTKM_THIRDPARTY_PRE_INCLUDE - #include <tbb/parallel_for.h> - #include <tbb/parallel_reduce.h> - #include <tbb/parallel_scan.h> -+#include <tbb/parallel_sort.h> - #include <tbb/partitioner.h> - #include <tbb/tick_count.h> - -diff --git a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/parallel_sort.h b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/parallel_sort.h -deleted file mode 100644 -index 3451a369f..000000000 ---- a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/parallel_sort.h -+++ /dev/null -@@ -1,273 +0,0 @@ --/* -- Copyright 2005-2013 Intel Corporation. All Rights Reserved. -- -- This file is part of Threading Building Blocks. -- -- Threading Building Blocks is free software; you can redistribute it -- and/or modify it under the terms of the GNU General Public License -- version 2 as published by the Free Software Foundation. -- -- Threading Building Blocks is distributed in the hope that it will be -- useful, but WITHOUT ANY WARRANTY; without even the implied warranty -- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with Threading Building Blocks; if not, write to the Free Software -- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -- -- As a special exception, you may use this file as part of a free software -- library without restriction. Specifically, if other files instantiate -- templates or use macros or inline functions from this file, or you compile -- this file and link it with other files to produce an executable, this -- file does not by itself cause the resulting executable to be covered by -- the GNU General Public License. This exception does not however -- invalidate any other reasons why the executable file might be covered by -- the GNU General Public License. --*/ -- --#ifndef __TBB_parallel_sort_H --#define __TBB_parallel_sort_H -- --#include <tbb/blocked_range.h> --#include <tbb/parallel_for.h> -- --#include <algorithm> --#include <functional> --#include <iterator> -- --namespace tbb --{ -- --//! @cond INTERNAL --namespace internal --{ -- --//! Range used in quicksort to split elements into subranges based on a value. --/** The split operation selects a splitter and places all elements less than or equal -- to the value in the first range and the remaining elements in the second range. -- @ingroup algorithms */ --template <typename RandomAccessIterator, typename Compare> --class quick_sort_range : private no_assign --{ -- -- inline size_t median_of_three(const RandomAccessIterator& array, -- size_t l, -- size_t m, -- size_t r) const -- { -- return comp(array[l], array[m]) -- ? (comp(array[m], array[r]) ? m : (comp(array[l], array[r]) ? r : l)) -- : (comp(array[r], array[m]) ? m : (comp(array[r], array[l]) ? r : l)); -- } -- -- inline size_t pseudo_median_of_nine(const RandomAccessIterator& array, -- const quick_sort_range& range) const -- { -- size_t offset = range.size / 8u; -- return median_of_three(array, -- median_of_three(array, 0, offset, offset * 2), -- median_of_three(array, offset * 3, offset * 4, offset * 5), -- median_of_three(array, offset * 6, offset * 7, range.size - 1)); -- } -- --public: -- static const size_t grainsize = 500; -- const Compare& comp; -- RandomAccessIterator begin; -- size_t size; -- -- quick_sort_range(RandomAccessIterator begin_, size_t size_, const Compare& comp_) -- : comp(comp_) -- , begin(begin_) -- , size(size_) -- { -- } -- -- bool empty() const { return size == 0; } -- bool is_divisible() const { return size >= grainsize; } -- -- quick_sort_range(quick_sort_range& range, split) -- : comp(range.comp) -- { -- using std::swap; -- RandomAccessIterator array = range.begin; -- RandomAccessIterator key0 = range.begin; -- size_t m = pseudo_median_of_nine(array, range); -- if (m) -- swap(array[0], array[m]); -- -- size_t i = 0; -- size_t j = range.size; -- // Partition interval [i+1,j-1] with key *key0. -- for (;;) -- { -- __TBB_ASSERT(i < j, nullptr); -- // Loop must terminate since array[l]==*key0. -- do -- { -- --j; -- __TBB_ASSERT(i <= j, "bad ordering relation?"); -- } while (comp(*key0, array[j])); -- do -- { -- __TBB_ASSERT(i <= j, nullptr); -- if (i == j) -- goto partition; -- ++i; -- } while (comp(array[i], *key0)); -- if (i == j) -- goto partition; -- swap(array[i], array[j]); -- } -- partition: -- // Put the partition key were it belongs -- swap(array[j], *key0); -- // array[l..j) is less or equal to key. -- // array(j..r) is greater or equal to key. -- // array[j] is equal to key -- i = j + 1; -- begin = array + i; -- size = range.size - i; -- range.size = j; -- } --}; -- --#if __TBB_TASK_GROUP_CONTEXT --//! Body class used to test if elements in a range are presorted --/** @ingroup algorithms */ --template <typename RandomAccessIterator, typename Compare> --class quick_sort_pretest_body : internal::no_assign --{ -- const Compare& comp; -- --public: -- quick_sort_pretest_body(const Compare& _comp) -- : comp(_comp) -- { -- } -- -- void operator()(const blocked_range<RandomAccessIterator>& range) const -- { -- task& my_task = task::self(); -- RandomAccessIterator my_end = range.end(); -- -- int i = 0; -- for (RandomAccessIterator k = range.begin(); k != my_end; ++k, ++i) -- { -- if (i % 64 == 0 && my_task.is_cancelled()) -- break; -- -- // The k-1 is never out-of-range because the first chunk starts at begin+serial_cutoff+1 -- if (comp(*(k), *(k - 1))) -- { -- my_task.cancel_group_execution(); -- break; -- } -- } -- } --}; --#endif /* __TBB_TASK_GROUP_CONTEXT */ -- --//! Body class used to sort elements in a range that is smaller than the grainsize. --/** @ingroup algorithms */ --template <typename RandomAccessIterator, typename Compare> --struct quick_sort_body --{ -- void operator()(const quick_sort_range<RandomAccessIterator, Compare>& range) const -- { -- //SerialQuickSort( range.begin, range.size, range.comp ); -- std::sort(range.begin, range.begin + range.size, range.comp); -- } --}; -- --//! Wrapper method to initiate the sort by calling parallel_for. --/** @ingroup algorithms */ --template <typename RandomAccessIterator, typename Compare> --void parallel_quick_sort(RandomAccessIterator begin, RandomAccessIterator end, const Compare& comp) --{ --#if __TBB_TASK_GROUP_CONTEXT -- task_group_context my_context; -- const int serial_cutoff = 9; -- -- __TBB_ASSERT(begin + serial_cutoff < end, "min_parallel_size is smaller than serial cutoff?"); -- RandomAccessIterator k; -- for (k = begin; k != begin + serial_cutoff; ++k) -- { -- if (comp(*(k + 1), *k)) -- { -- goto do_parallel_quick_sort; -- } -- } -- -- parallel_for(blocked_range<RandomAccessIterator>(k + 1, end), -- quick_sort_pretest_body<RandomAccessIterator, Compare>(comp), -- auto_partitioner(), -- my_context); -- -- if (my_context.is_group_execution_cancelled()) -- do_parallel_quick_sort: --#endif /* __TBB_TASK_GROUP_CONTEXT */ -- parallel_for(quick_sort_range<RandomAccessIterator, Compare>(begin, end - begin, comp), -- quick_sort_body<RandomAccessIterator, Compare>(), -- auto_partitioner()); --} -- --} // namespace internal --//! @endcond -- --//! @cond INTERNAL --/** \page parallel_sort_iter_req Requirements on iterators for parallel_sort -- Requirements on value type \c T of \c RandomAccessIterator for \c parallel_sort: -- - \code void swap( T& x, T& y ) \endcode Swaps \c x and \c y -- - \code bool Compare::operator()( const T& x, const T& y ) \endcode -- True if x comes before y; --**/ -- --/** \name parallel_sort -- See also requirements on \ref parallel_sort_iter_req "iterators for parallel_sort". **/ --//@{ -- --//! Sorts the data in [begin,end) using the given comparator --/** The compare function object is used for all comparisons between elements during sorting. -- The compare object must define a bool operator() function. -- @ingroup algorithms **/ --//! @endcond --template <typename RandomAccessIterator, typename Compare> --void parallel_sort(RandomAccessIterator begin, RandomAccessIterator end, const Compare& comp) --{ -- const int min_parallel_size = 500; -- if (end > begin) -- { -- if (end - begin < min_parallel_size) -- { -- std::sort(begin, end, comp); -- } -- else -- { -- internal::parallel_quick_sort(begin, end, comp); -- } -- } --} -- --//! Sorts the data in [begin,end) with a default comparator \c std::less<RandomAccessIterator> --/** @ingroup algorithms **/ --template <typename RandomAccessIterator> --inline void parallel_sort(RandomAccessIterator begin, RandomAccessIterator end) --{ -- parallel_sort( -- begin, end, std::less<typename std::iterator_traits<RandomAccessIterator>::value_type>()); --} -- --//! Sorts the data in the range \c [begin,end) with a default comparator \c std::less<T> --/** @ingroup algorithms **/ --template <typename T> --inline void parallel_sort(T* begin, T* end) --{ -- parallel_sort(begin, end, std::less<T>()); --} --//@} -- --} // namespace tbb -- --#endif --- -GitLab - -From 97a2408fc4a24eed8eaeb38f36315b4306e54f58 Mon Sep 17 00:00:00 2001 -From: Robert Maynard <robert.maynard@kitware.com> -Date: Mon, 1 Jun 2020 16:58:02 -0400 -Subject: [PATCH] Correct warnings for using TBB 2020 deprecated functions - ---- - vtkm/cont/tbb/internal/ParallelSortTBB.cxx | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/ParallelSortTBB.cxx b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/ParallelSortTBB.cxx -index 3076b3a9c..9243017e6 100644 ---- a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/ParallelSortTBB.cxx -+++ b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/ParallelSortTBB.cxx -@@ -54,7 +54,7 @@ - #include <vtkm/internal/Windows.h> - - #include <tbb/task.h> --#include <tbb/tbb_thread.h> -+#include <thread> - - #if defined(VTKM_MSVC) - #pragma pop_macro("__TBB_NO_IMPLICITLINKAGE") -@@ -69,7 +69,7 @@ namespace tbb - namespace sort - { - --const size_t MAX_CORES = ::tbb::tbb_thread::hardware_concurrency(); -+const size_t MAX_CORES = std::thread::hardware_concurrency(); - - // Simple TBB task wrapper around a generic functor. - template <typename FunctorType> --- -GitLab - -From 1eea0bee122fa3ef47cc488d97f82e008d69c8bd Mon Sep 17 00:00:00 2001 -From: Kenneth Moreland <morelandkd@ornl.gov> -Date: Fri, 4 Jun 2021 09:34:30 -0600 -Subject: [PATCH] Use TBB task_group for radix sort - -TBB 2020 introduced a new class called `task_group`. TBB 2021 removed -the old class `task` as its functionality was replaced by `task_group`. -Our parallel radix sort for TBB was implemented using `task`s, so change -it to use `task_group` (which actually cleans up the code a bit). ---- - vtkm/cont/internal/ParallelRadixSort.h | 2 +- - vtkm/cont/tbb/internal/ParallelSortTBB.cxx | 35 ++++++++++++++++++++-- - 2 files changed, 33 insertions(+), 4 deletions(-) - -diff --git a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/internal/ParallelRadixSort.h b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/internal/ParallelRadixSort.h -index 7604aacd7..cca8f6b72 100644 ---- a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/internal/ParallelRadixSort.h -+++ b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/internal/ParallelRadixSort.h -@@ -485,7 +485,7 @@ struct RunTask - } - - template <typename ThreaderData = void*> -- void operator()(ThreaderData tData = nullptr) -+ void operator()(ThreaderData tData = nullptr) const - { - size_t num_nodes_at_current_height = (size_t)pow(2, (double)binary_tree_height_); - if (num_threads_ <= num_nodes_at_current_height) -diff --git a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/ParallelSortTBB.cxx b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/ParallelSortTBB.cxx -index 9243017e6..d99406954 100644 ---- a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/ParallelSortTBB.cxx -+++ b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/ParallelSortTBB.cxx -@@ -53,7 +53,7 @@ - // correct settings so that we don't clobber any existing function - #include <vtkm/internal/Windows.h> - --#include <tbb/task.h> -+#include <tbb/tbb.h> - #include <thread> - - #if defined(VTKM_MSVC) -@@ -71,6 +71,7 @@ namespace sort - - const size_t MAX_CORES = std::thread::hardware_concurrency(); - -+#if TBB_VERSION_MAJOR < 2020 - // Simple TBB task wrapper around a generic functor. - template <typename FunctorType> - struct TaskWrapper : public ::tbb::task -@@ -94,7 +95,7 @@ struct RadixThreaderTBB - size_t GetAvailableCores() const { return MAX_CORES; } - - template <typename TaskType> -- void RunParentTask(TaskType task) -+ void RunParentTask(TaskType task) const - { - using Task = TaskWrapper<TaskType>; - Task& root = *new (::tbb::task::allocate_root()) Task(task); -@@ -102,7 +103,7 @@ struct RadixThreaderTBB - } - - template <typename TaskType> -- void RunChildTasks(TaskWrapper<TaskType>* wrapper, TaskType left, TaskType right) -+ void RunChildTasks(TaskWrapper<TaskType>* wrapper, TaskType left, TaskType right) const - { - using Task = TaskWrapper<TaskType>; - ::tbb::empty_task& p = *new (wrapper->allocate_continuation())::tbb::empty_task(); -@@ -115,6 +116,34 @@ struct RadixThreaderTBB - } - }; - -+#else // TBB_VERSION_MAJOR >= 2020 -+ -+// In TBB version 2020, the task class was deprecated. Instead, we use the simpler task_group. -+ -+struct RadixThreaderTBB -+{ -+ std::shared_ptr<::tbb::task_group> TaskGroup = -+ std::shared_ptr<::tbb::task_group>(new ::tbb::task_group); -+ -+ size_t GetAvailableCores() const { return MAX_CORES; } -+ -+ template <typename TaskType> -+ void RunParentTask(TaskType task) const -+ { -+ this->TaskGroup->run_and_wait(task); -+ // All tasks should be complete at this point. -+ } -+ -+ template <typename TaskType> -+ void RunChildTasks(void*, TaskType left, TaskType right) const -+ { -+ this->TaskGroup->run(left); -+ this->TaskGroup->run(right); -+ } -+}; -+ -+#endif -+ - VTKM_INSTANTIATE_RADIX_SORT_FOR_THREADER(RadixThreaderTBB) - } - } -diff --git a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/ParallelSortTBB.cxx b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/ParallelSortTBB.cxx -index d99406954..73db80ed6 100644 ---- a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/ParallelSortTBB.cxx -+++ b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/cont/tbb/internal/ParallelSortTBB.cxx -@@ -53,7 +53,13 @@ - // correct settings so that we don't clobber any existing function - #include <vtkm/internal/Windows.h> - -+#if TBB_VERSION_MAJOR >= 2020 -+#include <tbb/task.h> -+#include <tbb/task_group.h> -+#else - #include <tbb/tbb.h> -+#endif -+ - #include <thread> - - #if defined(VTKM_MSVC) diff --git a/sci-libs/vtk/files/vtk-9.0.3-use-std-atomic-part1.patch b/sci-libs/vtk/files/vtk-9.0.3-use-std-atomic-part1.patch deleted file mode 100644 index ee52c32e53fe..000000000000 --- a/sci-libs/vtk/files/vtk-9.0.3-use-std-atomic-part1.patch +++ /dev/null @@ -1,811 +0,0 @@ -This is a bit packported upstream commit patch, that removes vtkAtomic -and switches codebase to use std::atomic. This patch is kinda required -for patchset for supporting modern versions of dev-cpp/tbb. - -Patch backported by Vadim Misbakh-Solovov <mva@gentoo.org> - -Original patch url: https://gitlab.kitware.com/vtk/vtk/-/commit/4ca62d8c73.patch - ---- a/Common/Core/CMakeLists.txt -+++ b/Common/Core/CMakeLists.txt -@@ -266,7 +266,6 @@ set(headers - vtkArchiver.h - vtkArrayIteratorIncludes.h - vtkAssume.h -- vtkAtomicTypeConcepts.h - vtkAutoInit.h - vtkBuffer.h - vtkCollectionRange.h ---- a/Common/Core/SMP/OpenMP/vtkAtomic.cxx -+++ /dev/null -@@ -1,173 +0,0 @@ --/*========================================================================= -- -- Program: Visualization Toolkit -- Module: vtkAtomic.cxx -- -- Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen -- All rights reserved. -- See Copyright.txt or http://www.kitware.com/Copyright.htm for details. -- -- This software is distributed WITHOUT ANY WARRANTY; without even -- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -- PURPOSE. See the above copyright notice for more information. -- --=========================================================================*/ -- --#include "vtkAtomic.h" -- --namespace detail --{ -- --vtkTypeInt64 AtomicOps<8>::AddAndFetch(vtkTypeInt64* ref, vtkTypeInt64 val) --{ -- vtkTypeInt64 result; --#pragma omp atomic capture -- { -- (*ref) += val; -- result = *ref; -- } --#pragma omp flush -- return result; --} -- --vtkTypeInt64 AtomicOps<8>::SubAndFetch(vtkTypeInt64* ref, vtkTypeInt64 val) --{ -- vtkTypeInt64 result; --#pragma omp atomic capture -- { -- (*ref) -= val; -- result = *ref; -- } --#pragma omp flush -- return result; --} -- --vtkTypeInt64 AtomicOps<8>::PreIncrement(vtkTypeInt64* ref) --{ -- vtkTypeInt64 result; --#pragma omp atomic capture -- result = ++(*ref); --#pragma omp flush -- return result; --} -- --vtkTypeInt64 AtomicOps<8>::PreDecrement(vtkTypeInt64* ref) --{ -- vtkTypeInt64 result; --#pragma omp atomic capture -- result = --(*ref); --#pragma omp flush -- return result; --} -- --vtkTypeInt64 AtomicOps<8>::PostIncrement(vtkTypeInt64* ref) --{ -- vtkTypeInt64 result; --#pragma omp atomic capture -- result = (*ref)++; --#pragma omp flush -- return result; --} -- --vtkTypeInt64 AtomicOps<8>::PostDecrement(vtkTypeInt64* ref) --{ -- vtkTypeInt64 result; --#pragma omp atomic capture -- result = (*ref)--; --#pragma omp flush -- return result; --} -- --vtkTypeInt64 AtomicOps<8>::Load(const vtkTypeInt64* ref) --{ -- vtkTypeInt64 result; --#pragma omp flush --#pragma omp atomic read -- result = *ref; -- return result; --} -- --void AtomicOps<8>::Store(vtkTypeInt64* ref, vtkTypeInt64 val) --{ --#pragma omp atomic write -- *ref = val; --#pragma omp flush --} -- --vtkTypeInt32 AtomicOps<4>::AddAndFetch(vtkTypeInt32* ref, vtkTypeInt32 val) --{ -- vtkTypeInt32 result; --#pragma omp atomic capture -- { -- (*ref) += val; -- result = *ref; -- } --#pragma omp flush -- return result; --} -- --vtkTypeInt32 AtomicOps<4>::SubAndFetch(vtkTypeInt32* ref, vtkTypeInt32 val) --{ -- vtkTypeInt32 result; --#pragma omp atomic capture -- { -- (*ref) -= val; -- result = *ref; -- } --#pragma omp flush -- return result; --} -- --vtkTypeInt32 AtomicOps<4>::PreIncrement(vtkTypeInt32* ref) --{ -- vtkTypeInt32 result; --#pragma omp atomic capture -- result = ++(*ref); --#pragma omp flush -- return result; --} -- --vtkTypeInt32 AtomicOps<4>::PreDecrement(vtkTypeInt32* ref) --{ -- vtkTypeInt32 result; --#pragma omp atomic capture -- result = --(*ref); --#pragma omp flush -- return result; --} -- --vtkTypeInt32 AtomicOps<4>::PostIncrement(vtkTypeInt32* ref) --{ -- vtkTypeInt32 result; --#pragma omp atomic capture -- result = (*ref)++; --#pragma omp flush -- return result; --} -- --vtkTypeInt32 AtomicOps<4>::PostDecrement(vtkTypeInt32* ref) --{ -- vtkTypeInt32 result; --#pragma omp atomic capture -- result = (*ref)--; --#pragma omp flush -- return result; --} -- --vtkTypeInt32 AtomicOps<4>::Load(const vtkTypeInt32* ref) --{ -- vtkTypeInt32 result; --#pragma omp flush --#pragma omp atomic read -- result = *ref; -- return result; --} -- --void AtomicOps<4>::Store(vtkTypeInt32* ref, vtkTypeInt32 val) --{ --#pragma omp atomic write -- *ref = val; --#pragma omp flush --} -- --} ---- a/Common/Core/SMP/OpenMP/vtkAtomic.h.in -+++ /dev/null -@@ -1,293 +0,0 @@ --/*========================================================================= -- -- Program: Visualization Toolkit -- Module: vtkAtomic.h -- -- Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen -- All rights reserved. -- See Copyright.txt or http://www.kitware.com/Copyright.htm for details. -- -- This software is distributed WITHOUT ANY WARRANTY; without even -- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -- PURPOSE. See the above copyright notice for more information. -- --=========================================================================*/ --// .NAME vtkAtomic - --// .SECTION Description -- --#ifndef vtkAtomic_h --#define vtkAtomic_h -- --#include "vtkCommonCoreModule.h" // For export macro --#include "vtkAtomicTypeConcepts.h" --#include "vtkSystemIncludes.h" -- --#include <cstddef> -- -- --#ifndef __VTK_WRAP__ --namespace detail --{ -- --template <size_t size> class AtomicOps; -- --template <> class VTKCOMMONCORE_EXPORT AtomicOps<8> --{ --public: -- typedef vtkTypeInt64 atomic_type; -- -- static vtkTypeInt64 AddAndFetch(vtkTypeInt64 *ref, vtkTypeInt64 val); -- static vtkTypeInt64 SubAndFetch(vtkTypeInt64 *ref, vtkTypeInt64 val); -- static vtkTypeInt64 PreIncrement(vtkTypeInt64 *ref); -- static vtkTypeInt64 PreDecrement(vtkTypeInt64 *ref); -- static vtkTypeInt64 PostIncrement(vtkTypeInt64 *ref); -- static vtkTypeInt64 PostDecrement(vtkTypeInt64 *ref); -- static vtkTypeInt64 Load(const vtkTypeInt64 *ref); -- static void Store(vtkTypeInt64 *ref, vtkTypeInt64 val); --}; -- --template <> class VTKCOMMONCORE_EXPORT AtomicOps<4> --{ --public: -- typedef vtkTypeInt32 atomic_type; -- -- static vtkTypeInt32 AddAndFetch(vtkTypeInt32 *ref, vtkTypeInt32 val); -- static vtkTypeInt32 SubAndFetch(vtkTypeInt32 *ref, vtkTypeInt32 val); -- static vtkTypeInt32 PreIncrement(vtkTypeInt32 *ref); -- static vtkTypeInt32 PreDecrement(vtkTypeInt32 *ref); -- static vtkTypeInt32 PostIncrement(vtkTypeInt32 *ref); -- static vtkTypeInt32 PostDecrement(vtkTypeInt32 *ref); -- static vtkTypeInt32 Load(const vtkTypeInt32 *ref); -- static void Store(vtkTypeInt32 *ref, vtkTypeInt32 val); --}; -- --} // detail --#endif // __VTK_WRAP__ -- -- --template <typename T> class vtkAtomic : private vtk::atomic::detail::IntegralType<T> --{ --private: -- typedef detail::AtomicOps<sizeof(T)> Impl; -- --public: -- vtkAtomic() : Atomic(0) -- { -- } -- -- vtkAtomic(T val) : Atomic(static_cast<typename Impl::atomic_type>(val)) -- { -- } -- -- vtkAtomic(const vtkAtomic<T> &atomic) -- : Atomic(static_cast<typename Impl::atomic_type>(atomic.load())) -- { -- } -- -- T operator++() -- { -- return static_cast<T>(Impl::PreIncrement(&this->Atomic)); -- } -- -- T operator++(int) -- { -- return static_cast<T>(Impl::PostIncrement(&this->Atomic)); -- } -- -- T operator--() -- { -- return static_cast<T>(Impl::PreDecrement(&this->Atomic)); -- } -- -- T operator--(int) -- { -- return static_cast<T>(Impl::PostDecrement(&this->Atomic)); -- } -- -- T operator+=(T val) -- { -- return static_cast<T>(Impl::AddAndFetch(&this->Atomic, -- static_cast<typename Impl::atomic_type>(val))); -- } -- -- T operator-=(T val) -- { -- return static_cast<T>(Impl::SubAndFetch(&this->Atomic, -- static_cast<typename Impl::atomic_type>(val))); -- } -- -- operator T() const -- { -- return static_cast<T>(Impl::Load(&this->Atomic)); -- } -- -- T operator=(T val) -- { -- Impl::Store(&this->Atomic, static_cast<typename Impl::atomic_type>(val)); -- return val; -- } -- -- vtkAtomic<T>& operator=(const vtkAtomic<T> &atomic) -- { -- this->store(atomic.load()); -- return *this; -- } -- -- T load() const -- { -- return static_cast<T>(Impl::Load(&this->Atomic)); -- } -- -- void store(T val) -- { -- Impl::Store(&this->Atomic, static_cast<typename Impl::atomic_type>(val)); -- } -- --private: -- typename Impl::atomic_type Atomic; --}; -- -- --template <typename T> class vtkAtomic<T*> --{ --private: -- typedef detail::AtomicOps<sizeof(T*)> Impl; -- --public: -- vtkAtomic() : Atomic(0) -- { -- } -- -- vtkAtomic(T* val) -- : Atomic(reinterpret_cast<typename Impl::atomic_type>(val)) -- { -- } -- -- vtkAtomic(const vtkAtomic<T*> &atomic) -- : Atomic(reinterpret_cast<typename Impl::atomic_type>(atomic.load())) -- { -- } -- -- T* operator++() -- { -- return reinterpret_cast<T*>(Impl::AddAndFetch(&this->Atomic, sizeof(T))); -- } -- -- T* operator++(int) -- { -- T* val = reinterpret_cast<T*>(Impl::AddAndFetch(&this->Atomic, sizeof(T))); -- return --val; -- } -- -- T* operator--() -- { -- return reinterpret_cast<T*>(Impl::SubAndFetch(&this->Atomic, sizeof(T))); -- } -- -- T* operator--(int) -- { -- T* val = reinterpret_cast<T*>(Impl::AddAndFetch(&this->Atomic, sizeof(T))); -- return ++val; -- } -- -- T* operator+=(std::ptrdiff_t val) -- { -- return reinterpret_cast<T*>(Impl::AddAndFetch(&this->Atomic, -- val * sizeof(T))); -- } -- -- T* operator-=(std::ptrdiff_t val) -- { -- return reinterpret_cast<T*>(Impl::SubAndFetch(&this->Atomic, -- val * sizeof(T))); -- } -- -- operator T*() const -- { -- return reinterpret_cast<T*>(Impl::Load(&this->Atomic)); -- } -- -- T* operator=(T* val) -- { -- Impl::Store(&this->Atomic, -- reinterpret_cast<typename Impl::atomic_type>(val)); -- return val; -- } -- -- vtkAtomic<T*>& operator=(const vtkAtomic<T*> &atomic) -- { -- this->store(atomic.load()); -- return *this; -- } -- -- T* load() const -- { -- return reinterpret_cast<T*>(Impl::Load(&this->Atomic)); -- } -- -- void store(T* val) -- { -- Impl::Store(&this->Atomic, -- reinterpret_cast<typename Impl::atomic_type>(val)); -- } -- --private: -- typename Impl::atomic_type Atomic; --}; -- -- --template <> class vtkAtomic<void*> --{ --private: -- typedef detail::AtomicOps<sizeof(void*)> Impl; -- --public: -- vtkAtomic() : Atomic(0) -- { -- } -- -- vtkAtomic(void* val) -- : Atomic(reinterpret_cast<Impl::atomic_type>(val)) -- { -- } -- -- vtkAtomic(const vtkAtomic<void*> &atomic) -- : Atomic(reinterpret_cast<Impl::atomic_type>(atomic.load())) -- { -- } -- -- operator void*() const -- { -- return reinterpret_cast<void*>(Impl::Load(&this->Atomic)); -- } -- -- void* operator=(void* val) -- { -- Impl::Store(&this->Atomic, -- reinterpret_cast<Impl::atomic_type>(val)); -- return val; -- } -- -- vtkAtomic<void*>& operator=(const vtkAtomic<void*> &atomic) -- { -- this->store(atomic.load()); -- return *this; -- } -- -- void* load() const -- { -- return reinterpret_cast<void*>(Impl::Load(&this->Atomic)); -- } -- -- void store(void* val) -- { -- Impl::Store(&this->Atomic, -- reinterpret_cast<Impl::atomic_type>(val)); -- } -- --private: -- Impl::atomic_type Atomic; --}; -- --#endif --// VTK-HeaderTest-Exclude: vtkAtomic.h ---- a/Common/Core/SMP/OpenMP/vtkSMPThreadLocalImpl.h.in -+++ b/Common/Core/SMP/OpenMP/vtkSMPThreadLocalImpl.h.in -@@ -33,7 +33,6 @@ - #define vtkSMPThreadLocalImpl_h - - #include "vtkCommonCoreModule.h" // For export macro --#include "vtkAtomic.h" - #include "vtkConfigure.h" - #include "vtkSystemIncludes.h" - - #include <atomic> -@@ -49,7 +49,7 @@ typedef void* StoragePointerType; - - struct Slot - { -- vtkAtomic<ThreadIdType> ThreadId; -+ std::atomic<ThreadIdType> ThreadId; - omp_lock_t ModifyLock; - StoragePointerType Storage; - -@@ -66,7 +66,7 @@ private: - struct HashTableArray - { - size_t Size, SizeLg; -- vtkAtomic<size_t> NumberOfEntries; -+ std::atomic<size_t> NumberOfEntries; - Slot *Slots; - HashTableArray *Prev; - -@@ -90,8 +90,8 @@ public: - size_t Size() const; - - private: -- vtkAtomic<HashTableArray*> Root; -- vtkAtomic<size_t> Count; -+ std::atomic<HashTableArray*> Root; -+ std::atomic<size_t> Count; - - friend class ThreadSpecificStorageIterator; - }; ---- a/Common/Core/SMP/Sequential/vtkAtomic.cxx -+++ /dev/null -@@ -1,278 +0,0 @@ --/*========================================================================= -- -- Program: Visualization Toolkit -- Module: vtkAtomic.cxx -- -- Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen -- All rights reserved. -- See Copyright.txt or http://www.kitware.com/Copyright.htm for details. -- -- This software is distributed WITHOUT ANY WARRANTY; without even -- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -- PURPOSE. See the above copyright notice for more information. -- --=========================================================================*/ -- --#include "vtkAtomic.h" -- --#if !defined(VTK_GCC_ATOMICS_32) && !defined(VTK_APPLE_ATOMICS_32) && \ -- !defined(VTK_WINDOWS_ATOMICS_32) --#define VTK_LOCK_BASED_ATOMICS_32 --#endif -- --#if !defined(VTK_GCC_ATOMICS_64) && !defined(VTK_APPLE_ATOMICS_64) && \ -- !defined(VTK_WINDOWS_ATOMICS_64) --#define VTK_LOCK_BASED_ATOMICS_64 --#endif -- --#if defined(VTK_WINDOWS_ATOMICS_32) || defined(VTK_WINDOWS_ATOMICS_64) --#include "vtkWindows.h" --#endif -- --#if defined(VTK_LOCK_BASED_ATOMICS_32) || defined(VTK_LOCK_BASED_ATOMICS_64) -- --#include "vtkSimpleCriticalSection.h" -- --class CriticalSectionGuard --{ --public: -- CriticalSectionGuard(vtkSimpleCriticalSection& cs) -- : CriticalSection(cs) -- { -- this->CriticalSection.Lock(); -- } -- -- ~CriticalSectionGuard() { this->CriticalSection.Unlock(); } -- --private: -- // not copyable -- CriticalSectionGuard(const CriticalSectionGuard&); -- void operator=(const CriticalSectionGuard&); -- -- vtkSimpleCriticalSection& CriticalSection; --}; -- --#if defined(VTK_LOCK_BASED_ATOMICS_64) --detail::AtomicOps<8>::atomic_type::atomic_type(vtkTypeInt64 init) -- : var(init) --{ -- this->csec = new vtkSimpleCriticalSection; --} -- --detail::AtomicOps<8>::atomic_type::~atomic_type() --{ -- delete this->csec; --} --#endif -- --#if defined(VTK_LOCK_BASED_ATOMICS_32) --detail::AtomicOps<4>::atomic_type::atomic_type(vtkTypeInt32 init) -- : var(init) --{ -- this->csec = new vtkSimpleCriticalSection; --} -- --detail::AtomicOps<4>::atomic_type::~atomic_type() --{ -- delete this->csec; --} --#endif -- --#endif // VTK_LOCK_BASED_ATOMICS -- --namespace detail --{ -- --#if defined(VTK_WINDOWS_ATOMICS_64) || defined(VTK_LOCK_BASED_ATOMICS_64) -- --vtkTypeInt64 AtomicOps<8>::AddAndFetch(atomic_type* ref, vtkTypeInt64 val) --{ --#if defined(VTK_WINDOWS_ATOMICS_64) --#if defined(VTK_HAS_INTERLOCKEDADD) -- return InterlockedAdd64(ref, val); --#else -- return InterlockedExchangeAdd64(ref, val) + val; --#endif --#else -- CriticalSectionGuard csg(*ref->csec); -- return ref->var += val; --#endif --} -- --vtkTypeInt64 AtomicOps<8>::SubAndFetch(atomic_type* ref, vtkTypeInt64 val) --{ --#if defined(VTK_WINDOWS_ATOMICS_64) --#if defined(VTK_HAS_INTERLOCKEDADD) -- return InterlockedAdd64(ref, -val); --#else -- return InterlockedExchangeAdd64(ref, -val) - val; --#endif --#else -- CriticalSectionGuard csg(*ref->csec); -- return ref->var -= val; --#endif --} -- --vtkTypeInt64 AtomicOps<8>::PreIncrement(atomic_type* ref) --{ --#if defined(VTK_WINDOWS_ATOMICS_64) -- return InterlockedIncrement64(ref); --#else -- CriticalSectionGuard csg(*ref->csec); -- return ++(ref->var); --#endif --} -- --vtkTypeInt64 AtomicOps<8>::PreDecrement(atomic_type* ref) --{ --#if defined(VTK_WINDOWS_ATOMICS_64) -- return InterlockedDecrement64(ref); --#else -- CriticalSectionGuard csg(*ref->csec); -- return --(ref->var); --#endif --} -- --vtkTypeInt64 AtomicOps<8>::PostIncrement(atomic_type* ref) --{ --#if defined(VTK_WINDOWS_ATOMICS_64) -- vtkTypeInt64 val = InterlockedIncrement64(ref); -- return --val; --#else -- CriticalSectionGuard csg(*ref->csec); -- return (ref->var)++; --#endif --} -- --vtkTypeInt64 AtomicOps<8>::PostDecrement(atomic_type* ref) --{ --#if defined(VTK_WINDOWS_ATOMICS_64) -- vtkTypeInt64 val = InterlockedDecrement64(ref); -- return ++val; --#else -- CriticalSectionGuard csg(*ref->csec); -- return (ref->var)--; --#endif --} -- --vtkTypeInt64 AtomicOps<8>::Load(const atomic_type* ref) --{ --#if defined(VTK_WINDOWS_ATOMICS_64) -- vtkTypeInt64 val; -- InterlockedExchange64(&val, *ref); -- return val; --#else -- CriticalSectionGuard csg(*ref->csec); -- return ref->var; --#endif --} -- --void AtomicOps<8>::Store(atomic_type* ref, vtkTypeInt64 val) --{ --#if defined(VTK_WINDOWS_ATOMICS_64) -- InterlockedExchange64(ref, val); --#else -- CriticalSectionGuard csg(*ref->csec); -- ref->var = val; --#endif --} -- --#endif // defined(VTK_WINDOWS_ATOMICS_64) || defined(VTK_LOCK_BASED_ATOMICS_64) -- --#if defined(VTK_WINDOWS_ATOMICS_32) || defined(VTK_LOCK_BASED_ATOMICS_32) -- --vtkTypeInt32 AtomicOps<4>::AddAndFetch(atomic_type* ref, vtkTypeInt32 val) --{ --#if defined(VTK_WINDOWS_ATOMICS_32) --#if defined(VTK_HAS_INTERLOCKEDADD) -- return InterlockedAdd(reinterpret_cast<long*>(ref), val); --#else -- return InterlockedExchangeAdd(reinterpret_cast<long*>(ref), val) + val; --#endif --#else -- CriticalSectionGuard csg(*ref->csec); -- return ref->var += val; --#endif --} -- --vtkTypeInt32 AtomicOps<4>::SubAndFetch(atomic_type* ref, vtkTypeInt32 val) --{ --#if defined(VTK_WINDOWS_ATOMICS_32) --#if defined(VTK_HAS_INTERLOCKEDADD) -- return InterlockedAdd(reinterpret_cast<long*>(ref), -val); --#else -- return InterlockedExchangeAdd(reinterpret_cast<long*>(ref), -val) - val; --#endif --#else -- CriticalSectionGuard csg(*ref->csec); -- return ref->var -= val; --#endif --} -- --vtkTypeInt32 AtomicOps<4>::PreIncrement(atomic_type* ref) --{ --#if defined(VTK_WINDOWS_ATOMICS_32) -- return InterlockedIncrement(reinterpret_cast<long*>(ref)); --#else -- CriticalSectionGuard csg(*ref->csec); -- return ++(ref->var); --#endif --} -- --vtkTypeInt32 AtomicOps<4>::PreDecrement(atomic_type* ref) --{ --#if defined(VTK_WINDOWS_ATOMICS_32) -- return InterlockedDecrement(reinterpret_cast<long*>(ref)); --#else -- CriticalSectionGuard csg(*ref->csec); -- return --(ref->var); --#endif --} -- --vtkTypeInt32 AtomicOps<4>::PostIncrement(atomic_type* ref) --{ --#if defined(VTK_WINDOWS_ATOMICS_32) -- vtkTypeInt32 val = InterlockedIncrement(reinterpret_cast<long*>(ref)); -- return --val; --#else -- CriticalSectionGuard csg(*ref->csec); -- return (ref->var)++; --#endif --} -- --vtkTypeInt32 AtomicOps<4>::PostDecrement(atomic_type* ref) --{ --#if defined(VTK_WINDOWS_ATOMICS_32) -- vtkTypeInt32 val = InterlockedDecrement(reinterpret_cast<long*>(ref)); -- return ++val; --#else -- CriticalSectionGuard csg(*ref->csec); -- return (ref->var)--; --#endif --} -- --vtkTypeInt32 AtomicOps<4>::Load(const atomic_type* ref) --{ --#if defined(VTK_WINDOWS_ATOMICS_32) -- long val; -- InterlockedExchange(&val, *ref); -- return val; --#else -- CriticalSectionGuard csg(*ref->csec); -- return ref->var; --#endif --} -- --void AtomicOps<4>::Store(atomic_type* ref, vtkTypeInt32 val) --{ --#if defined(VTK_WINDOWS_ATOMICS_32) -- InterlockedExchange(reinterpret_cast<long*>(ref), val); --#else -- CriticalSectionGuard csg(*ref->csec); -- ref->var = val; --#endif --} -- --#endif // defined(VTK_WINDOWS_ATOMICS_32) || defined(VTK_LOCK_BASED_ATOMICS_32) -- --} // namespace detail diff --git a/sci-libs/vtk/files/vtk-9.0.3-use-std-atomic-part2.patch b/sci-libs/vtk/files/vtk-9.0.3-use-std-atomic-part2.patch deleted file mode 100644 index e2520af7748c..000000000000 --- a/sci-libs/vtk/files/vtk-9.0.3-use-std-atomic-part2.patch +++ /dev/null @@ -1,851 +0,0 @@ ---- a/Common/Core/SMP/Sequential/vtkAtomic.h.in -+++ /dev/null -@@ -1,467 +0,0 @@ --/*========================================================================= -- -- Program: Visualization Toolkit -- Module: vtkAtomic.h -- -- Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen -- All rights reserved. -- See Copyright.txt or http://www.kitware.com/Copyright.htm for details. -- -- This software is distributed WITHOUT ANY WARRANTY; without even -- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -- PURPOSE. See the above copyright notice for more information. -- --=========================================================================*/ --// .NAME vtkAtomic - Provides support for atomic integers --// .SECTION Description --// Objects of atomic types are C++ objects that are free from data races; --// that is, if one thread writes to an atomic object while another thread --// reads from it, the behavior is well-defined. vtkAtomic provides --// a subset of the std::atomic API and implementation for the following types, --// 32 bit signed and unsigned integers, 64 bit signed and unsigned integers, --// and pointers. For these types, vtkAtomic defines a --// number of operations that happen atomically - without interruption --// by another thread. Furthermore, these operations happen in a --// sequentially-consistent way and use full memory fences. This means --// that operations relating to atomic variables happen in the specified --// order and the results are made visible to other processing cores to --// guarantee proper sequential operation. Other memory access patterns --// supported by std::atomic are not currently supported. --// --// Note that when atomic operations are not available on a particular --// platform or compiler, mutexes, which are significantly slower, are used --// as a fallback. -- --#ifndef vtkAtomic_h --#define vtkAtomic_h -- --#include "vtkCommonCoreModule.h" // For export macro --#include "vtkAtomicTypeConcepts.h" --#include "vtkConfigure.h" --#include "vtkSystemIncludes.h" --#include "vtkType.h" -- --#include <cstddef> -- --#cmakedefine VTK_HAVE_ATOMIC_BUILTINS -- --// Assume 64-bit atomic operations are not available on 32 bit platforms --#if defined(VTK_HAVE_ATOMIC_BUILTINS) --# define VTK_GCC_ATOMICS_32 --# if VTK_SIZEOF_VOID_P == 8 --# define VTK_GCC_ATOMICS_64 --# endif --#elif defined(_WIN32) && defined(_MSC_VER) --# define VTK_WINDOWS_ATOMICS_32 --# if VTK_SIZEOF_VOID_P == 8 --# define VTK_WINDOWS_ATOMICS_64 --# endif --#endif -- -- --#if defined(_WIN32) && defined(_MSC_VER) --// disable warning about the padding due to alignment --# pragma warning(disable:4324) --# define VTK_ALIGN(X) __declspec(align(X)) --#elif defined(__GNUC__) // gcc compatible compiler --# define VTK_ALIGN(X) __attribute__ ((aligned (X))) --#else --# define VTK_ALIGN(X) --#endif -- -- --class vtkSimpleCriticalSection; -- -- --#ifndef __VTK_WRAP__ --namespace detail --{ -- --template <size_t size> class AtomicOps; -- --#if defined(VTK_GCC_ATOMICS_64) --template <> class AtomicOps<8> --{ --public: -- typedef vtkTypeInt64 VTK_ALIGN(8) atomic_type; -- typedef vtkTypeInt64 value_type; -- -- static value_type AddAndFetch(value_type *ref, value_type val) -- { -- return __atomic_add_fetch(ref, val, __ATOMIC_SEQ_CST); -- } -- -- static value_type SubAndFetch(value_type *ref, value_type val) -- { -- return __atomic_sub_fetch(ref, val, __ATOMIC_SEQ_CST); -- } -- -- static value_type PreIncrement(value_type *ref) -- { -- return __atomic_add_fetch(ref, 1, __ATOMIC_SEQ_CST); -- } -- -- static value_type PreDecrement(value_type *ref) -- { -- return __atomic_sub_fetch(ref, 1, __ATOMIC_SEQ_CST); -- } -- -- static value_type PostIncrement(value_type *ref) -- { -- return __atomic_fetch_add(ref, 1, __ATOMIC_SEQ_CST); -- } -- -- static value_type PostDecrement(value_type *ref) -- { -- return __atomic_fetch_sub(ref, 1, __ATOMIC_SEQ_CST); -- } -- -- static value_type Load(const value_type *ref) -- { -- return __atomic_load_n(ref, __ATOMIC_SEQ_CST); -- } -- -- static void Store(value_type *ref, value_type val) -- { -- __atomic_store_n(ref, val, __ATOMIC_SEQ_CST); -- } --}; -- --#else -- --template <> class VTKCOMMONCORE_EXPORT AtomicOps<8> --{ --public: --#if defined(VTK_WINDOWS_ATOMICS_64) -- typedef vtkTypeInt64 VTK_ALIGN(8) atomic_type; --#else -- struct VTKCOMMONCORE_EXPORT atomic_type -- { -- vtkTypeInt64 var; -- vtkSimpleCriticalSection *csec; -- -- atomic_type(vtkTypeInt64 init); -- ~atomic_type(); -- }; --#endif -- typedef vtkTypeInt64 value_type; -- -- static vtkTypeInt64 AddAndFetch(atomic_type *ref, vtkTypeInt64 val); -- static vtkTypeInt64 SubAndFetch(atomic_type *ref, vtkTypeInt64 val); -- static vtkTypeInt64 PreIncrement(atomic_type *ref); -- static vtkTypeInt64 PreDecrement(atomic_type *ref); -- static vtkTypeInt64 PostIncrement(atomic_type *ref); -- static vtkTypeInt64 PostDecrement(atomic_type *ref); -- static vtkTypeInt64 Load(const atomic_type *ref); -- static void Store(atomic_type *ref, vtkTypeInt64 val); --}; -- --#endif -- --#if defined(VTK_GCC_ATOMICS_32) --template <> class AtomicOps<4> --{ --public: -- typedef vtkTypeInt32 VTK_ALIGN(4) atomic_type; -- typedef vtkTypeInt32 value_type; -- -- static value_type AddAndFetch(value_type *ref, value_type val) -- { -- return __atomic_add_fetch(ref, val, __ATOMIC_SEQ_CST); -- } -- -- static value_type SubAndFetch(value_type *ref, value_type val) -- { -- return __atomic_sub_fetch(ref, val, __ATOMIC_SEQ_CST); -- } -- -- static value_type PreIncrement(value_type *ref) -- { -- return __atomic_add_fetch(ref, 1, __ATOMIC_SEQ_CST); -- } -- -- static value_type PreDecrement(value_type *ref) -- { -- return __atomic_sub_fetch(ref, 1, __ATOMIC_SEQ_CST); -- } -- -- static value_type PostIncrement(value_type *ref) -- { -- return __atomic_fetch_add(ref, 1, __ATOMIC_SEQ_CST); -- } -- -- static value_type PostDecrement(value_type *ref) -- { -- return __atomic_fetch_sub(ref, 1, __ATOMIC_SEQ_CST); -- } -- -- static value_type Load(const value_type *ref) -- { -- return __atomic_load_n(ref, __ATOMIC_SEQ_CST); -- } -- -- static void Store(value_type *ref, value_type val) -- { -- __atomic_store_n(ref, val, __ATOMIC_SEQ_CST); -- } --}; -- --#else -- --template <> class VTKCOMMONCORE_EXPORT AtomicOps<4> --{ --public: --#if defined(VTK_WINDOWS_ATOMICS_32) -- typedef vtkTypeInt32 VTK_ALIGN(4) atomic_type; --#else -- struct VTKCOMMONCORE_EXPORT atomic_type -- { -- vtkTypeInt32 var; -- vtkSimpleCriticalSection *csec; -- -- atomic_type(vtkTypeInt32 init); -- ~atomic_type(); -- }; --#endif -- typedef vtkTypeInt32 value_type; -- -- static vtkTypeInt32 AddAndFetch(atomic_type *ref, vtkTypeInt32 val); -- static vtkTypeInt32 SubAndFetch(atomic_type *ref, vtkTypeInt32 val); -- static vtkTypeInt32 PreIncrement(atomic_type *ref); -- static vtkTypeInt32 PreDecrement(atomic_type *ref); -- static vtkTypeInt32 PostIncrement(atomic_type *ref); -- static vtkTypeInt32 PostDecrement(atomic_type *ref); -- static vtkTypeInt32 Load(const atomic_type *ref); -- static void Store(atomic_type *ref, vtkTypeInt32 val); --}; -- --#endif --} --#endif // __VTK_WRAP__ -- --template <typename T> class vtkAtomic : private vtk::atomic::detail::IntegralType<T> --{ --private: -- typedef detail::AtomicOps<sizeof(T)> Impl; -- --public: -- vtkAtomic() : Atomic(0) -- { -- } -- -- vtkAtomic(T val) : Atomic(static_cast<typename Impl::value_type>(val)) -- { -- } -- -- vtkAtomic(const vtkAtomic<T> &atomic) -- : Atomic(static_cast<typename Impl::value_type>(atomic.load())) -- { -- } -- -- T operator++() -- { -- return static_cast<T>(Impl::PreIncrement(&this->Atomic)); -- } -- -- T operator++(int) -- { -- return static_cast<T>(Impl::PostIncrement(&this->Atomic)); -- } -- -- T operator--() -- { -- return static_cast<T>(Impl::PreDecrement(&this->Atomic)); -- } -- -- T operator--(int) -- { -- return static_cast<T>(Impl::PostDecrement(&this->Atomic)); -- } -- -- T operator+=(T val) -- { -- return static_cast<T>(Impl::AddAndFetch(&this->Atomic, -- static_cast<typename Impl::value_type>(val))); -- } -- -- T operator-=(T val) -- { -- return static_cast<T>(Impl::SubAndFetch(&this->Atomic, -- static_cast<typename Impl::value_type>(val))); -- } -- -- operator T() const -- { -- return static_cast<T>(Impl::Load(&this->Atomic)); -- } -- -- T operator=(T val) -- { -- Impl::Store(&this->Atomic, static_cast<typename Impl::value_type>(val)); -- return val; -- } -- -- vtkAtomic<T>& operator=(const vtkAtomic<T> &atomic) -- { -- this->store(atomic.load()); -- return *this; -- } -- -- T load() const -- { -- return static_cast<T>(Impl::Load(&this->Atomic)); -- } -- -- void store(T val) -- { -- Impl::Store(&this->Atomic, static_cast<typename Impl::value_type>(val)); -- } -- --private: -- typename Impl::atomic_type Atomic; --}; -- -- --template <typename T> class vtkAtomic<T*> --{ --private: -- typedef detail::AtomicOps<sizeof(T*)> Impl; -- --public: -- vtkAtomic() : Atomic(0) -- { -- } -- -- vtkAtomic(T* val) -- : Atomic(reinterpret_cast<typename Impl::value_type>(val)) -- { -- } -- -- vtkAtomic(const vtkAtomic<T*> &atomic) -- : Atomic(reinterpret_cast<typename Impl::value_type>(atomic.load())) -- { -- } -- -- T* operator++() -- { -- return reinterpret_cast<T*>(Impl::AddAndFetch(&this->Atomic, sizeof(T))); -- } -- -- T* operator++(int) -- { -- T* val = reinterpret_cast<T*>(Impl::AddAndFetch(&this->Atomic, sizeof(T))); -- return --val; -- } -- -- T* operator--() -- { -- return reinterpret_cast<T*>(Impl::SubAndFetch(&this->Atomic, sizeof(T))); -- } -- -- T* operator--(int) -- { -- T* val = reinterpret_cast<T*>(Impl::AddAndFetch(&this->Atomic, sizeof(T))); -- return ++val; -- } -- -- T* operator+=(std::ptrdiff_t val) -- { -- return reinterpret_cast<T*>(Impl::AddAndFetch(&this->Atomic, -- val * sizeof(T))); -- } -- -- T* operator-=(std::ptrdiff_t val) -- { -- return reinterpret_cast<T*>(Impl::SubAndFetch(&this->Atomic, -- val * sizeof(T))); -- } -- -- operator T*() const -- { -- return reinterpret_cast<T*>(Impl::Load(&this->Atomic)); -- } -- -- T* operator=(T* val) -- { -- Impl::Store(&this->Atomic, -- reinterpret_cast<typename Impl::value_type>(val)); -- return val; -- } -- -- vtkAtomic<T*>& operator=(const vtkAtomic<T*> &atomic) -- { -- this->store(atomic.load()); -- return *this; -- } -- -- T* load() const -- { -- return reinterpret_cast<T*>(Impl::Load(&this->Atomic)); -- } -- -- void store(T* val) -- { -- Impl::Store(&this->Atomic, -- reinterpret_cast<typename Impl::value_type>(val)); -- } -- --private: -- typename Impl::atomic_type Atomic; --}; -- -- --template <> class vtkAtomic<void*> --{ --private: -- typedef detail::AtomicOps<sizeof(void*)> Impl; -- --public: -- vtkAtomic() : Atomic(0) -- { -- } -- -- vtkAtomic(void* val) -- : Atomic(reinterpret_cast<Impl::value_type>(val)) -- { -- } -- -- vtkAtomic(const vtkAtomic<void*> &atomic) -- : Atomic(reinterpret_cast<Impl::value_type>(atomic.load())) -- { -- } -- -- operator void*() const -- { -- return reinterpret_cast<void*>(Impl::Load(&this->Atomic)); -- } -- -- void* operator=(void* val) -- { -- Impl::Store(&this->Atomic, -- reinterpret_cast<Impl::value_type>(val)); -- return val; -- } -- -- vtkAtomic<void*>& operator=(const vtkAtomic<void*> &atomic) -- { -- this->store(atomic.load()); -- return *this; -- } -- -- void* load() const -- { -- return reinterpret_cast<void*>(Impl::Load(&this->Atomic)); -- } -- -- void store(void* val) -- { -- Impl::Store(&this->Atomic, -- reinterpret_cast<Impl::value_type>(val)); -- } -- --private: -- Impl::atomic_type Atomic; --}; -- --#endif --// VTK-HeaderTest-Exclude: vtkAtomic.h ---- a/Common/Core/SMP/TBB/vtkAtomic.h.in -+++ /dev/null -@@ -1,247 +0,0 @@ -- /*========================================================================= -- -- Program: Visualization Toolkit -- Module: vtkAtomic.h -- -- Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen -- All rights reserved. -- See Copyright.txt or http://www.kitware.com/Copyright.htm for details. -- -- This software is distributed WITHOUT ANY WARRANTY; without even -- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -- PURPOSE. See the above copyright notice for more information. -- --=========================================================================*/ --// .NAME vtkAtomic - --// .SECTION Description -- --#ifndef vtkAtomic_h --#define vtkAtomic_h -- --#include "vtkAtomicTypeConcepts.h" -- --#ifdef _MSC_VER --# pragma push_macro("__TBB_NO_IMPLICIT_LINKAGE") --# define __TBB_NO_IMPLICIT_LINKAGE 1 --#endif -- --#include <tbb/atomic.h> -- --#ifdef _MSC_VER --# pragma pop_macro("__TBB_NO_IMPLICIT_LINKAGE") --#endif -- --#include <cstddef> -- -- --template <typename T> class vtkAtomic : private vtk::atomic::detail::IntegralType<T> --{ --public: -- vtkAtomic() -- { -- this->Atomic = 0; -- } -- -- vtkAtomic(T val) -- { -- this->Atomic = val; -- } -- -- vtkAtomic(const vtkAtomic<T> &atomic) -- { -- this->Atomic = atomic.Atomic; -- } -- -- T operator++() -- { -- return ++this->Atomic; -- } -- -- T operator++(int) -- { -- return this->Atomic++; -- } -- -- T operator--() -- { -- return --this->Atomic; -- } -- -- T operator--(int) -- { -- return this->Atomic--; -- } -- -- T operator+=(T val) -- { -- return this->Atomic += val; -- } -- -- T operator-=(T val) -- { -- return this->Atomic -= val; -- } -- -- operator T() const -- { -- return this->Atomic; -- } -- -- T operator=(T val) -- { -- this->Atomic = val; -- return val; -- } -- -- vtkAtomic<T>& operator=(const vtkAtomic<T> &atomic) -- { -- this->Atomic = atomic.Atomic; -- return *this; -- } -- -- T load() const -- { -- return this->Atomic; -- } -- -- void store(T val) -- { -- this->Atomic = val; -- } -- --private: -- tbb::atomic<T> Atomic; --}; -- -- --template <typename T> class vtkAtomic<T*> --{ --public: -- vtkAtomic() -- { -- this->Atomic = 0; -- } -- -- vtkAtomic(T* val) -- { -- this->Atomic = val; -- } -- -- vtkAtomic(const vtkAtomic<T*> &atomic) -- { -- this->Atomic = atomic.Atomic; -- } -- -- T* operator++() -- { -- return ++this->Atomic; -- } -- -- T* operator++(int) -- { -- return this->Atomic++; -- } -- -- T* operator--() -- { -- return --this->Atomic; -- } -- -- T* operator--(int) -- { -- return this->Atomic--; -- } -- -- T* operator+=(std::ptrdiff_t val) -- { -- return this->Atomic += val; -- } -- -- T* operator-=(std::ptrdiff_t val) -- { -- return this->Atomic -= val; -- } -- -- operator T*() const -- { -- return this->Atomic; -- } -- -- T* operator=(T* val) -- { -- this->Atomic = val; -- return val; -- } -- -- vtkAtomic<T*>& operator=(const vtkAtomic<T*> &atomic) -- { -- this->Atomic = atomic.Atomic; -- return *this; -- } -- -- T* load() const -- { -- return this->Atomic; -- } -- -- void store(T* val) -- { -- this->Atomic = val; -- } -- --private: -- tbb::atomic<T*> Atomic; --}; -- -- --template <> class vtkAtomic<void*> --{ --public: -- vtkAtomic() -- { -- this->Atomic = 0; -- } -- -- vtkAtomic(void* val) -- { -- this->Atomic = val; -- } -- -- vtkAtomic(const vtkAtomic<void*> &atomic) -- { -- this->Atomic = atomic.Atomic; -- } -- -- operator void*() const -- { -- return this->Atomic; -- } -- -- void* operator=(void* val) -- { -- this->Atomic = val; -- return val; -- } -- -- vtkAtomic<void*>& operator=(const vtkAtomic<void*> &atomic) -- { -- this->Atomic = atomic.Atomic; -- return *this; -- } -- -- void* load() const -- { -- return this->Atomic; -- } -- -- void store(void* val) -- { -- this->Atomic = val; -- } -- --private: -- tbb::atomic<void*> Atomic; --}; -- --#endif --// VTK-HeaderTest-Exclude: vtkAtomic.h ---- a/Common/Core/vtkAtomicTypeConcepts.h -+++ /dev/null -@@ -1,48 +0,0 @@ --/*========================================================================= -- -- Program: Visualization Toolkit -- Module: vtkAtomicTypeConcepts.h -- -- Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen -- All rights reserved. -- See Copyright.txt or http://www.kitware.com/Copyright.htm for details. -- -- This software is distributed WITHOUT ANY WARRANTY; without even -- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -- PURPOSE. See the above copyright notice for more information. -- --=========================================================================*/ -- --#ifndef vtkAtomicTypeConcepts_h --#define vtkAtomicTypeConcepts_h -- --#include <limits> -- --namespace vtk --{ --namespace atomic --{ --namespace detail --{ -- --template <bool> --struct CompileTimeCheck; --template <> --struct CompileTimeCheck<true> --{ --}; -- --template <typename T> --struct IntegralType --{ -- CompileTimeCheck<std::numeric_limits<T>::is_specialized && std::numeric_limits<T>::is_integer && -- (sizeof(T) == 4 || sizeof(T) == 8)> -- c; --}; -- --} // detail --} // atomic --} // vtk -- --#endif --// VTK-HeaderTest-Exclude: vtkAtomicTypeConcepts.h ---- a/Common/Core/vtkSMPSelection.cmake -+++ b/Common/Core/vtkSMPSelection.cmake -@@ -25,7 +25,6 @@ if (VTK_SMP_IMPLEMENTATION_TYPE STREQUAL "TBB") - list(APPEND vtk_smp_sources - "${vtk_smp_implementation_dir}/vtkSMPTools.cxx") - list(APPEND vtk_smp_headers_to_configure -- vtkAtomic.h - vtkSMPToolsInternal.h - vtkSMPThreadLocal.h) - -@@ -46,14 +45,6 @@ elseif (VTK_SMP_IMPLEMENTATION_TYPE STREQUAL "OpenMP") - - if (OpenMP_CXX_SPEC_DATE AND NOT "${OpenMP_CXX_SPEC_DATE}" LESS "201107") - set(vtk_smp_use_default_atomics OFF) -- list(APPEND vtk_smp_sources -- "${vtk_smp_implementation_dir}/vtkAtomic.cxx") -- list(APPEND vtk_smp_headers_to_configure -- vtkAtomic.h) -- -- set_source_files_properties(vtkAtomic.cxx -- PROPERITES -- COMPILE_FLAGS "${OpenMP_CXX_FLAGS}") - else() - message(WARNING - "Required OpenMP version (3.1) for atomics not detected. Using default " -@@ -74,29 +65,7 @@ if (vtk_smp_use_default_atomics) - - include("${CMAKE_CURRENT_SOURCE_DIR}/vtkTestBuiltins.cmake") - -- set(vtkAtomic_defines) -- -- # Check for atomic functions -- if (WIN32) -- check_symbol_exists(InterlockedAdd "windows.h" VTK_HAS_INTERLOCKEDADD) -- -- if (VTK_HAS_INTERLOCKEDADD) -- list(APPEND vtkAtomic_defines "VTK_HAS_INTERLOCKEDADD") -- endif () -- endif() -- -- set_source_files_properties(vtkAtomic.cxx -- PROPERITES -- COMPILE_DEFINITIONS "${vtkAtomic_defines}") -- - set(vtk_atomics_default_impl_dir "${CMAKE_CURRENT_SOURCE_DIR}/SMP/Sequential") -- list(APPEND vtk_smp_sources -- "${vtk_atomics_default_impl_dir}/vtkAtomic.cxx") -- configure_file( -- "${vtk_atomics_default_impl_dir}/vtkAtomic.h.in" -- "${CMAKE_CURRENT_BINARY_DIR}/vtkAtomic.h") -- list(APPEND vtk_smp_headers -- "${CMAKE_CURRENT_BINARY_DIR}/vtkAtomic.h") - endif() - - foreach (vtk_smp_header IN LISTS vtk_smp_headers_to_configure) ---- a/Common/Core/vtkTimeStamp.cxx -+++ b/Common/Core/vtkTimeStamp.cxx -@@ -47,10 +47,8 @@ void vtkTimeStamp::Modified() - // - // The last solution has been decided to have the smallest downside of these. - // -- // static const vtkAtomicUIntXX* GlobalTimeStamp = new vtkAtomicUIntXX(0); -- // - // Good luck! --#if defined(VTK_USE_64BIT_TIMESTAMPS) || VTK_SIZEOF_VOID_P == 8 -+#if defined(VTK_USE_64BIT_TIMESTAMPS) || (VTK_SIZEOF_VOID_P == 8) - static std::atomic<uint64_t> GlobalTimeStamp(0U); - #else - static std::atomic<uint32_t> GlobalTimeStamp(0U); ---- /dev/null -+++ b/Documentation/release/dev/vtkAtomicRemoved.md -@@ -0,0 +1,4 @@ -+## Removed vtkAtomic in favor of C++11 std::atomic -+ -+- Removed vtkAtomic in favor of C++11 std::atomic -+- vtkAtomic.h and vtkAtomicTypeConcepts.h are no longer installed --- -GitLab - - diff --git a/sci-libs/vtk/vtk-9.0.3-r4.ebuild b/sci-libs/vtk/vtk-9.0.3-r4.ebuild deleted file mode 100644 index 02c39405f389..000000000000 --- a/sci-libs/vtk/vtk-9.0.3-r4.ebuild +++ /dev/null @@ -1,557 +0,0 @@ -# Copyright 1999-2021 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -# TODO: -# - add USE flag for remote modules? Those modules can be downloaded -# properly before building. - -PYTHON_COMPAT=( python3_{8..10} ) -WEBAPP_OPTIONAL=yes -WEBAPP_MANUAL_SLOT=yes - -inherit check-reqs cmake cuda flag-o-matic java-pkg-opt-2 python-single-r1 toolchain-funcs virtualx webapp - -# Short package version -MY_PV="$(ver_cut 1-2)" - -DESCRIPTION="The Visualization Toolkit" -HOMEPAGE="https://www.vtk.org/" -SRC_URI=" - https://www.vtk.org/files/release/${MY_PV}/VTK-${PV}.tar.gz - https://www.vtk.org/files/release/${MY_PV}/VTKData-${PV}.tar.gz - doc? ( https://www.vtk.org/files/release/${MY_PV}/vtkDocHtml-${PV}.tar.gz ) - examples? ( https://www.vtk.org/files/release/${MY_PV}/VTKLargeData-${PV}.tar.gz ) - test? ( - https://www.vtk.org/files/release/${MY_PV}/VTKLargeData-${PV}.tar.gz - ) -" -S="${WORKDIR}/VTK-${PV}" - -LICENSE="BSD LGPL-2" -SLOT="0/${MY_PV}" -KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux" -# Note: external xdmf2 has no recognized target -IUSE="+X all-modules boost cuda doc examples ffmpeg gdal imaging java - +json kits mpi mysql odbc offscreen openmp pegtl postgres python - qt5 +rendering tbb theora tk video_cards_nvidia views web" - -RESTRICT="!test? ( test )" - -REQUIRED_USE=" - all-modules? ( boost ffmpeg gdal imaging mysql odbc postgres qt5 rendering theora views ) - cuda? ( X video_cards_nvidia ) - java? ( rendering ) - python? ( ${PYTHON_REQUIRED_USE} ) - qt5? ( X rendering ) - tk? ( X rendering python ) - web? ( python ) -" - -RDEPEND=" - app-arch/lz4 - app-arch/xz-utils - dev-db/sqlite - dev-cpp/eigen[cuda?,openmp?] - dev-libs/double-conversion:= - dev-libs/expat - dev-libs/icu:= - dev-libs/libxml2:2 - dev-libs/pugixml - media-libs/freetype - media-libs/libogg - media-libs/libpng - media-libs/libtheora - media-libs/tiff - <sci-libs/hdf5-1.12:=[mpi=] - sci-libs/kissfft[openmp?] - sci-libs/netcdf:=[mpi=] - sys-libs/zlib - virtual/jpeg - all-modules? ( sci-geosciences/liblas[gdal] ) - boost? ( dev-libs/boost:=[mpi?] ) - cuda? ( dev-util/nvidia-cuda-toolkit:= ) - ffmpeg? ( media-video/ffmpeg:= ) - gdal? ( sci-libs/gdal:= ) - java? ( >=virtual/jdk-1.8:* ) - json? ( dev-libs/jsoncpp:= ) - mpi? ( - sci-libs/h5part - sys-cluster/openmpi[cxx,romio] - ) - mysql? ( dev-db/mariadb-connector-c ) - odbc? ( dev-db/unixODBC ) - offscreen? ( media-libs/mesa[osmesa] ) - postgres? ( dev-db/postgresql:= ) - python? ( ${PYTHON_DEPS} ) - qt5? ( - dev-qt/qtcore:5 - dev-qt/qtsql:5 - dev-qt/qtwidgets:5 - ) - rendering? ( - media-libs/freeglut - media-libs/glew:= - sci-libs/proj:= - virtual/opengl - x11-libs/gl2ps - ) - tbb? ( <dev-cpp/tbb-2022 ) - tk? ( dev-lang/tk:= ) - video_cards_nvidia? ( x11-drivers/nvidia-drivers[tools,static-libs] ) - views? ( - x11-libs/libICE - x11-libs/libXext - ) - web? ( ${WEBAPP_DEPEND} ) - $(python_gen_cond_dep ' - python? ( - boost? ( dev-libs/boost:=[mpi?,python?,${PYTHON_USEDEP}] ) - gdal? ( sci-libs/gdal:=[python?,${PYTHON_USEDEP}] ) - mpi? ( dev-python/mpi4py[${PYTHON_USEDEP}] ) - ) - ') -" -DEPEND=" - ${RDEPEND} - dev-libs/jsoncpp - dev-libs/utfcpp - pegtl? ( dev-libs/pegtl ) -" -BDEPEND=" - mpi? ( app-admin/chrpath ) - openmp? ( - || ( - sys-devel/gcc[openmp(+)] - sys-devel/clang-runtime[openmp(+)] - ) - ) -" - -PATCHES=( - "${FILESDIR}"/${PN}-9.0.1-0001-fix-kepler-compute_arch-if-CUDA-toolkit-11-is-used.patch - "${FILESDIR}"/${PN}-8.2.0-freetype-2.10.3-provide-FT_CALLBACK_DEF.patch - "${FILESDIR}"/${PN}-9.0.1-limits-include-gcc11.patch - "${FILESDIR}"/${P}-TBB-2021.04-fix.patch - "${FILESDIR}"/${P}-proj-api-fix-upstream-commit-03256388.patch - "${FILESDIR}"/${P}-pegtl-3.patch - "${FILESDIR}"/${P}-cuda-11.5.0.patch - "${FILESDIR}"/${P}-fix-gcc10-return-local-addr-in-wrappers-upstream-commit-55c74ed3.patch - "${FILESDIR}"/${P}-use-std-atomic-part1.patch - "${FILESDIR}"/${P}-use-std-atomic-part2.patch - "${FILESDIR}"/${P}-tbb-fix-for-bundled-vtkm.patch -) - -DOCS=( CONTRIBUTING.md README.md ) - -CHECKREQS_DISK_BUILD="3G" - -pkg_pretend() { - if use examples; then - CHECKREQS_DISK_BUILD="4G" - fi - if use cuda; then - # NOTE: This should actually equal to (number of build jobs)*7G, - # as any of the cuda compile tasks can take up 7G! - # 10.2 GiB install directory, 6.4 GiB build directory with max. USE flags - CHECKREQS_MEMORY="7G" - CHECKREQS_DISK_BUILD="14G" - fi - check-reqs_pkg_setup -} - -pkg_setup() { - if use examples; then - CHECKREQS_DISK_BUILD="4G" - fi - if use cuda; then - CHECKREQS_MEMORY="7G" - CHECKREQS_DISK_BUILD="14G" - fi - check-reqs_pkg_setup - - use java && java-pkg-opt-2_pkg_setup - use python && python-single-r1_pkg_setup - use web && webapp_pkg_setup -} - -src_prepare() { - # If we have system libraries available use these and delete - # the respecting files in ${S}/ThirdParty to save some space. - # Note: libharu is omitted: vtk needs an updated version (2.4.0) - # Note: no valid xdmf2 targets are found for system xdmf2 - # Note: no valid target found for h5part and mpi4py - # TODO: diy2 exodusII h5part libharu verdict vpic vtkm xdmf2 xdmf3 zfp - local -a DROPS=( doubleconversion eigen expat freetype gl2ps glew - hdf5 jpeg jsoncpp libproj libxml2 lz4 lzma netcdf ogg png pugixml - sqlite theora tiff utf8 zlib ) - use pegtl && DROPS+=( pegtl ) - - local x - for x in ${DROPS[@]}; do - ebegin "Dropping bundled ${x}" - rm -r ThirdParty/${x}/vtk${x} || die - eend $? - done - unset x - - if use doc; then - einfo "Removing .md5 files from documents." - rm -f "${WORKDIR}"/html/*.md5 || die "Failed to remove superfluous hashes" - sed -e "s|\${VTK_BINARY_DIR}/Utilities/Doxygen/doc|${WORKDIR}|" \ - -i Utilities/Doxygen/CMakeLists.txt || die - fi - - cmake_src_prepare - - if use cuda; then - cuda_add_sandbox -w - cuda_src_prepare - fi - - if use test; then - ebegin "Copying data files to ${BUILD_DIR}" - mkdir -p "${BUILD_DIR}/ExternalData" || die - pushd "${BUILD_DIR}/ExternalData" >/dev/null || die - ln -sf ../../VTK-${PV}/.ExternalData/README.rst . || die - ln -sf ../../VTK-${PV}/.ExternalData/SHA512 . || die - popd >/dev/null || die - eend "$?" - fi -} - -src_configure() { - local mycmakeargs=( -# TODO: defaults for some variables to consider as USE flags -# -DVTK_ANDROID_BUILD=OFF -# -DVTK_BUILD_COMPILE_TOOLS_ONLY=OFF -# -DVTK_ENABLE_LOGGING=ON -# -DVTK_ENABLE_REMOTE_MODULES=ON -# -DVTK_INSTALL_SDK=ON -# -DVTK_IOS_BUILD=OFF -# -DVTK_LEGACY_REMOVE=OFF -# -DVTK_LEGACY_SILENT=OFF -# -DVTK_WHEEL_BUILD=OFF - - -DVTK_BUILD_ALL_MODULES=$(usex all-modules ON OFF) - # we use the pre-built documentation and install these with USE=doc - -DVTK_BUILD_DOCUMENTATION=OFF - -DVTK_BUILD_EXAMPLES=$(usex examples ON OFF) - - -DVTK_ENABLE_KITS=$(usex kits ON OFF) - # default to ON: USE flag for this? - -DVTK_ENABLE_REMOTE_MODULES=OFF - - -DVTK_DATA_STORE="${S}/.ExternalData" - - # Use upstream default, where USE flags are not given. - # Passing "DONT_WANT" will restrict building of modules from - # those groups and will severly limit the built libraries. - # Exceptions are MPI, where the default is "DONT_WANT" and - # StandAlone using "WANT". - -DVTK_GROUP_ENABLE_Imaging=$(usex imaging "WANT" "DEFAULT") - -DVTK_GROUP_ENABLE_Qt=$(usex qt5 "WANT" "DEFAULT") - -DVTK_GROUP_ENABLE_Rendering=$(usex rendering "WANT" "DEFAULT") - -DVTK_GROUP_ENABLE_StandAlone="WANT" - -DVTK_GROUP_ENABLE_Views=$(usex views "WANT" "DEFAULT") - -DVTK_GROUP_ENABLE_Web=$(usex web "WANT" "DEFAULT") - - -DVTK_MODULE_ENABLE_VTK_vtkm="WANT" - -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKm="WANT" - - -DVTK_PYTHON_VERSION="3" - -DVTK_RELOCATABLE_INSTALL=ON - - -DVTK_USE_CUDA=$(usex cuda ON OFF) - # use system libraries where possible - -DVTK_USE_EXTERNAL=ON - -DVTK_USE_MPI=$(usex mpi ON OFF) - -DVTK_USE_TK=$(usex tk ON OFF) - -DVTK_USE_X=$(usex X ON OFF) - - -DVTK_VERSIONED_INSTALL=ON - - -DVTK_WRAP_JAVA=$(usex java ON OFF) - -DVTK_WRAP_PYTHON=$(usex python ON OFF) - ) - - if use examples || use test; then - mycmakeargs+=( -DVTK_USE_LARGE_DATA=ON ) - fi - - if ! use java && ! use python; then - # defaults to ON - mycmakeargs+=( -DVTK_ENABLE_WRAPPING=OFF ) - fi - - if use boost; then - mycmakeargs+=( - -DVTK_MODULE_ENABLE_VTK_InfovisBoost="WANT" - -DVTK_MODULE_ENABLE_VTK_InfovisBoostGraphAlgorithms="WANT" - ) - fi - - if use cuda; then - local cuda_arch= - case ${VTK_CUDA_ARCH:-native} in - # we ignore fermi arch, because current nvidia-cuda-toolkit-11* - # no longer supports it - kepler|maxwell|pascal|volta|turing|ampere|all) - cuda_arch=${VTK_CUDA_ARCH} - ;; - native) - ewarn "If auto detection fails for you, please try and export the" - ewarn "VTK_CUDA_ARCH environment variable to one of the common arch" - ewarn "names: kepler, maxwell, pascal, volta, turing, ampere or all." - cuda_arch=native - ;; - *) - eerror "Please properly set the VTK_CUDA_ARCH environment variable to" - eerror "one of: kepler, maxwell, pascal, volta, turing, ampere, all" - die "Invalid CUDA architecture given: '${VTK_CUDA_ARCH}'!" - ;; - esac - ewarn "Using CUDA architecture '${cuda_arch}'" - - mycmakeargs+=( -DVTKm_CUDA_Architecture=${cuda_arch} ) - fi - - if use ffmpeg; then - mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOFFMPEG="WANT" ) - fi - - if use gdal; then - mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_GeovisGDAL="WANT" ) - fi - - if use java; then - mycmakeargs+=( - -DCMAKE_INSTALL_JARDIR="share/${PN}" - -DVTK_ENABLE_WRAPPING=ON - ) - fi - - if use json; then - mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOGeoJSON="WANT" ) - fi - - if use mpi; then - mycmakeargs+=( - -DVTK_GROUP_ENABLE_MPI="WANT" - -DVTK_MODULE_ENABLE_VTK_IOH5part="WANT" - -DVTK_MODULE_ENABLE_VTK_IOParallel="WANT" - -DVTK_MODULE_ENABLE_VTK_IOParallelNetCDF="WANT" - -DVTK_MODULE_ENABLE_VTK_IOParallelXML="WANT" - -DVTK_MODULE_ENABLE_VTK_ParallelMPI="WANT" - -DVTK_MODULE_ENABLE_VTK_RenderingParallel="WANT" - -DVTK_MODULE_ENABLE_VTK_h5part="WANT" - -DVTKm_ENABLE_MPI=ON - ) - if use python; then - mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_ParallelMPI4Py="WANT" ) - fi - fi - - if use mysql; then - mycmakeargs+=( - -DVTK_MODULE_ENABLE_VTK_IOMySQL="WANT" - -DVTK_MODULE_ENABLE_VTK_IOSQL="WANT" - ) - fi - - if use odbc; then - mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOODBC="WANT" ) - fi - - if use offscreen; then - mycmakeargs+=( - -DVTK_OPENGL_HAS_OSMESA=ON - -DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=ON - -DVTK_DEFAULT_RENDER_WINDOW_HEADLESS=ON - ) - fi - - if use openmp; then - if use tbb; then - einfo "NOTE: You have specified both openmp and tbb USE flags." - einfo "NOTE: Tbb will take precedence. Disabling OpenMP" - # Sequential is default SMP implementation, nothing special to do - else - mycmakeargs+=( - -DVTK_SMP_IMPLEMENTATION_TYPE="OpenMP" - -DVTKm_ENABLE_OPENMP=ON - ) - fi - fi - - if use pegtl; then - mycmakeargs+=( -DVTK_MODULE_USE_EXTERNAL_VTK_pegtl=ON ) - else - mycmakeargs+=( -DVTK_MODULE_USE_EXTERNAL_VTK_pegtl=OFF ) - fi - - if use postgres; then - mycmakeargs+=( - -DVTK_MODULE_ENABLE_VTK_IOPostgreSQL="WANT" - -DVTK_MODULE_ENABLE_VTK_IOSQL="WANT" - ) - fi - - if use python; then - mycmakeargs+=( - -DVTK_ENABLE_WRAPPING=ON - -DPython3_EXECUTABLE="${PYTHON}" - -DVTK_PYTHON_SITE_PACKAGES_SUFFIX="lib/${EPYTHON}/site-packages" - ) - fi - - if use qt5; then - mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_GUISupportQt="WANT" ) - if use mysql || use postgres; then - mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_GUISupportQtSQL="WANT" ) - fi - if use rendering; then - mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_RenderingQt="WANT" ) - fi - if use views; then - mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_ViewsQt="WANT" ) - fi - fi - - if use rendering || use web || use all-modules; then - # needs patched version - mycmakeargs+=( -DVTK_MODULE_USE_EXTERNAL_VTK_libharu=OFF ) - fi - - if use rendering; then - mycmakeargs+=( - -DVTK_MODULE_ENABLE_VTK_IOExportGL2PS="WANT" - -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps=ON - -DVTK_MODULE_USE_EXTERNAL_VTK_glew=ON - -DVTK_MODULE_USE_EXTERNAL_VTK_libproj=ON - ) - fi - - if use tbb; then - mycmakeargs+=( - -DVTK_SMP_IMPLEMENTATION_TYPE="TBB" - -DVTKm_ENABLE_TBB=ON - ) - fi - - if use test; then - ewarn "Testing requires VTK_FORBID_DOWNLOADS=OFF by upstream." - ewarn "Care has been taken to pre-download all required files." - ewarn "In case you find missing files, please inform me." - mycmakeargs+=( - -DVTK_BUILD_TESTING=ON - -DVTK_DATA_EXCLUDE_FROM_ALL=ON - -DVTK_FORBID_DOWNLOADS=OFF - ) - else - mycmakeargs+=( - -DVTK_BUILD_TESTING=OFF - -DVTK_FORBID_DOWNLOADS=ON - ) - fi - - if use theora; then - mycmakeargs+=( -DVTK_MODULE_ENABLE_VTK_IOOggTheora="WANT" ) - fi - - if use all-modules; then - mycmakeargs+=( - -DVTK_ENABLE_OSPRAY=OFF - -DVTK_MODULE_ENABLE_VTK_DomainsMicroscopy="DONT_WANT" - -DVTK_MODULE_ENABLE_VTK_FiltersOpenTURNS="DONT_WANT" - -DVTK_MODULE_ENABLE_VTK_IOADIOS2="DONT_WANT" - -DVTK_MODULE_ENABLE_VTK_IOPDAL="DONT_WANT" - -DVTK_MODULE_ENABLE_VTK_MomentInvariants="DONT_WANT" - -DVTK_MODULE_ENABLE_VTK_PoissonReconstruction="DONT_WANT" - -DVTK_MODULE_ENABLE_VTK_Powercrust="DONT_WANT" - -DVTK_MODULE_ENABLE_VTK_RenderingOpenVR="DONT_WANT" - -DVTK_MODULE_ENABLE_VTK_SignedTensor="DONT_WANT" - -DVTK_MODULE_ENABLE_VTK_SplineDrivenImageSlicer="DONT_WANT" - -DVTK_MODULE_ENABLE_VTK_vtkDICOM="DONT_WANT" - -DVTK_MODULE_USE_EXTERNAL_vtkkissfft=ON - ) - fi - - use java && export JAVA_HOME="${EPREFIX}/etc/java-config-2/current-system-vm" - - if use mpi; then - export CC=mpicc - export CXX=mpicxx - export FC=mpif90 - export F90=mpif90 - export F77=mpif77 - fi - - cmake_src_configure -} - -src_test() { - nonfatal virtx cmake_src_test -} - -src_install() { - use web && webapp_src_preinst - - # Stop web page images from being compressed - if use doc; then - HTML_DOCS=( "${WORKDIR}/html/." ) - fi - - cmake_src_install - - use java && java-pkg_regjar "${ED}"/usr/share/${PN}/${PN}.jar - - # install examples - if use examples; then - einfo "Installing examples" - mv -v {E,e}xamples || die - dodoc -r examples - docompress -x /usr/share/doc/${PF}/examples - - einfo "Installing datafiles" - insinto /usr/share/${PN}/data - doins -r "${S}/.ExternalData" - fi - - # with MPI runpath's are not deleted properly - if use mpi; then - chrpath -d "${ED}"/usr/$(get_libdir)/*.so.${PV} || die - fi - - use python && python_optimize - - # environment - cat >> "${T}"/40${PN} <<- EOF || die - VTK_DATA_ROOT=${EPREFIX}/usr/share/${PN}/data - VTK_DIR=${EPREFIX}/usr/$(get_libdir)/${PN} - VTKHOME=${EPREFIX}/usr - EOF - doenvd "${T}"/40${PN} - - use web && webapp_src_install - - # Temporary! - # Avoid collision with paraview. - # bug #793221 - rm -rf "${ED}"/usr/share/vtkm-1.5/VTKm{LICENSE.txt,README.md} || die -} - -# webapp.eclass exports these but we want it optional #534036 -pkg_postinst() { - use web && webapp_pkg_postinst - - if use examples; then - einfo "You can get more and updated examples at" - einfo "https://kitware.github.io/vtk-examples/site/" - fi -} - -pkg_prerm() { - use web && webapp_pkg_prerm -} |