From 7f1c7b752442abc3161a5e7f448080056f961035 Mon Sep 17 00:00:00 2001 From: Karl Nilsson Date: Fri, 25 Mar 2022 20:24:49 -0400 Subject: [PATCH 1/6] python3-occ: remove package * upstream is well behind occt --- srcpkgs/python3-occ/patches/python3.10.patch | 15 --------------- srcpkgs/python3-occ/template | 17 ----------------- srcpkgs/removed-packages/template | 1 + 3 files changed, 1 insertion(+), 32 deletions(-) delete mode 100644 srcpkgs/python3-occ/patches/python3.10.patch delete mode 100644 srcpkgs/python3-occ/template diff --git a/srcpkgs/python3-occ/patches/python3.10.patch b/srcpkgs/python3-occ/patches/python3.10.patch deleted file mode 100644 index e192608fd3b3..000000000000 --- a/srcpkgs/python3-occ/patches/python3.10.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/src/Display/SimpleGui.py b/src/Display/SimpleGui.py -index 42705a82..6a274c16 100644 ---- a/src/Display/SimpleGui.py -+++ b/src/Display/SimpleGui.py -@@ -161,8 +161,8 @@ def init_display(backend_str: Optional[str]=None, - def centerOnScreen(self) -> None: - '''Centers the window on the screen.''' - resolution = QtWidgets.QApplication.desktop().screenGeometry() -- x = (resolution.width() - self.frameSize().width()) / 2 -- y = (resolution.height() - self.frameSize().height()) / 2 -+ x = (resolution.width() - self.frameSize().width()) // 2 -+ y = (resolution.height() - self.frameSize().height()) // 2 - self.move(x, y) - - def add_menu(self, menu_name: str) -> None: diff --git a/srcpkgs/python3-occ/template b/srcpkgs/python3-occ/template deleted file mode 100644 index bee03373a3d1..000000000000 --- a/srcpkgs/python3-occ/template +++ /dev/null @@ -1,17 +0,0 @@ -# Template file for 'python3-occ' -pkgname=python3-occ -version=7.4.1 -revision=3 -archs="i686* x86_64* armv7l* aarch64* ppc*" -wrksrc="pythonocc-core-${version}" -build_style=cmake -configure_args="-DPYTHONOCC_BUILD_TYPE=None -DCMAKE_BUILD_TYPE=None" -hostmakedepends="python3 swig" -makedepends="python3-devel occt-devel freetype-devel swig" -depends="python3 occt freetype" -short_desc="Industrial strength 3D CAD Python3 package" -maintainer="Karl Nilsson " -license="LGPL-3.0-or-later" -homepage="http://pythonocc.org" -distfiles="https://github.com/tpaviot/pythonocc-core/archive/${version}.tar.gz" -checksum=6d62002244a0e7f4e5c1ad590d332a60601c44b2501ad017361443b54371e667 diff --git a/srcpkgs/removed-packages/template b/srcpkgs/removed-packages/template index 8456cb959d35..488e62ec105a 100644 --- a/srcpkgs/removed-packages/template +++ b/srcpkgs/removed-packages/template @@ -343,6 +343,7 @@ replaces=" python3-keepalive<=0.5_6 python3-pgpdump<=1.5_10 python3-lockfile<=0.12.2_7 + python3-occ<=7.4.1_3 python3-pyPEG2<=2.15.2_7 python3-pyenet<=5.15.0_2 python3-pyside-phonon<=5.15.0_2 From 9dab74dc6b5acec06545396e3cbdd3c5e2f9e9fb Mon Sep 17 00:00:00 2001 From: Karl Nilsson Date: Fri, 25 Mar 2022 19:29:00 -0400 Subject: [PATCH 2/6] occt: update to 7.6.2. --- .../occt/patches/cmake-build-type-none.patch | 6 +-- srcpkgs/occt/patches/musl-fenv.patch | 18 ++++---- srcpkgs/occt/patches/musl-mallinfo.patch | 45 ++++++++++++++----- srcpkgs/occt/template | 27 +++++------ srcpkgs/occt/update | 2 - 5 files changed, 60 insertions(+), 38 deletions(-) delete mode 100644 srcpkgs/occt/update diff --git a/srcpkgs/occt/patches/cmake-build-type-none.patch b/srcpkgs/occt/patches/cmake-build-type-none.patch index ecb0e3da3929..d2caec8c4e87 100644 --- a/srcpkgs/occt/patches/cmake-build-type-none.patch +++ b/srcpkgs/occt/patches/cmake-build-type-none.patch @@ -1,8 +1,8 @@ -Index: CMakeLists.txt -=================================================================== +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f4ec871f5..9b0644e94 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -4,7 +4,7 @@ set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_D +@@ -4,7 +4,7 @@ set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/adm/cmake") set (CMAKE_SUPPRESS_REGENERATION TRUE) diff --git a/srcpkgs/occt/patches/musl-fenv.patch b/srcpkgs/occt/patches/musl-fenv.patch index 09da8d0afeae..06a8e3a89cfd 100644 --- a/srcpkgs/occt/patches/musl-fenv.patch +++ b/srcpkgs/occt/patches/musl-fenv.patch @@ -5,18 +5,20 @@ is probably wrong, but I don't have a replacement for the non-posix functions fegetexcept(3) and feenableexcept(3). """ +diff --git a/src/OSD/OSD_signal.cxx b/src/OSD/OSD_signal.cxx +index 007f5ccaa..fe39e07ac 100644 --- a/src/OSD/OSD_signal.cxx +++ b/src/OSD/OSD_signal.cxx -@@ -703,7 +703,7 @@ - +@@ -761,7 +761,7 @@ typedef void (* SIG_PFV) (int); + #include - --#if !defined(__ANDROID__) && !defined(__QNX__) -+#if !defined(__ANDROID__) && !defined(__QNX__) && defined(__GLIBC__) + +-#if !defined(__ANDROID__) && !defined(__QNX__) && !defined(__EMSCRIPTEN__) ++#if !defined(__ANDROID__) && !defined(__QNX__) && !defined(__EMSCRIPTEN__) && defined(__GLIBC__) #include #endif - -@@ -914,7 +914,7 @@ + +@@ -977,7 +977,7 @@ static void SegvHandler(const int theSignal, //======================================================================= void OSD::SetFloatingSignal (Standard_Boolean theFloatingSignal) { @@ -25,7 +27,7 @@ non-posix functions fegetexcept(3) and feenableexcept(3). feclearexcept (FE_ALL_EXCEPT); if (theFloatingSignal) { -@@ -947,7 +947,7 @@ +@@ -1010,7 +1010,7 @@ void OSD::SetFloatingSignal (Standard_Boolean theFloatingSignal) //======================================================================= Standard_Boolean OSD::ToCatchFloatingSignals() { diff --git a/srcpkgs/occt/patches/musl-mallinfo.patch b/srcpkgs/occt/patches/musl-mallinfo.patch index 4e5825bf1cb0..6ae94992eaf8 100644 --- a/srcpkgs/occt/patches/musl-mallinfo.patch +++ b/srcpkgs/occt/patches/musl-mallinfo.patch @@ -1,17 +1,38 @@ -In musl libc there is no struct mallinfo and no function mallinf() +Adapted from alpine's patch +diff --git a/src/OSD/OSD_MemInfo.cxx b/src/OSD/OSD_MemInfo.cxx +index d9bb91398..d608e04fc 100644 --- a/src/OSD/OSD_MemInfo.cxx +++ b/src/OSD/OSD_MemInfo.cxx -@@ -147,8 +147,12 @@ - } - aFile.close(); +@@ -35,6 +35,9 @@ + #include + #include + ++#include ++#include ++ + #include -+ #if defined(__GLIBC__) - struct mallinfo aMI = mallinfo(); - myCounters[MemHeapUsage] = aMI.uordblks; -+ #else /* XXX not yet coded */ -+ myCounters[MemHeapUsage] = 0; -+ #endif + #if defined(__EMSCRIPTEN__) +@@ -182,18 +185,9 @@ void OSD_MemInfo::Update() + #elif (defined(__linux__) || defined(__linux)) + if (IsActive (MemHeapUsage)) + { +- #if defined(__GLIBC__) && defined(__GLIBC_PREREQ) +- #if __GLIBC_PREREQ(2,33) +- #define HAS_MALLINFO2 +- #endif +- #endif +- +- #ifdef HAS_MALLINFO2 +- const struct mallinfo2 aMI = mallinfo2(); +- #else +- const struct mallinfo aMI = mallinfo(); +- #endif +- myCounters[MemHeapUsage] = aMI.uordblks; ++ struct rusage ru = { .ru_maxrss = 0 }; ++ getrusage(RUSAGE_SELF, &ru); ++ myCounters[MemHeapUsage] = ru.ru_maxrss; + } - #elif (defined(__APPLE__)) - struct task_basic_info aTaskInfo; + if (!IsActive (MemVirtual) diff --git a/srcpkgs/occt/template b/srcpkgs/occt/template index 6624fea8b53f..b17c91b0058b 100644 --- a/srcpkgs/occt/template +++ b/srcpkgs/occt/template @@ -1,26 +1,27 @@ # Template file for 'occt' pkgname=occt -reverts=7.5.0_1 -version=7.4.0p1 -revision=5 -_gittag="V${version//./_}" -wrksrc=occt-${_gittag} +version=7.6.2 +revision=1 +_ver="${version//./_}" +wrksrc=OCCT-${_ver} build_style=cmake -# XXX: re-enable -DUSE_TBB=ON if possible when updating -configure_args="-DUSE_FREEIMAGE=ON -DUSE_GL2PS=ON -DUSE_VTK=OFF +configure_args="-DUSE_FREEIMAGE=ON -DUSE_TBB=ON -DUSE_GL2PS=ON -DUSE_VTK=OFF -DINSTALL_SAMPLES=ON" -makedepends="freetype-devel glu-devel freeimage-devel gl2ps-devel tcl-devel - tk-devel" +makedepends="freetype-devel glu-devel freeimage-devel gl2ps-devel tbb-devel + tcl-devel tk-devel" short_desc="OpenCASCADE Technology - library for CAD/CAM/CAE applications" maintainer="Piraty " license="custom:LGPL-2.1-only-with-exceptions" homepage="https://www.opencascade.com" -# distfile: use git instead of official tarball, which requires registration -# see https://www.opencascade.com/content/packaging-again-debian -distfiles="https://git.dev.opencascade.org/gitweb/?p=occt.git;a=snapshot;h=refs/tags/${_gittag};sf=tgz>occt-${_gittag}.tar.gz" -checksum=e00fedc221560fda31653c23a8f3d0eda78095c87519f338d4f4088e2ee9a9c0 +distfiles="https://github.com/Open-Cascade-SAS/OCCT/archive/V${_ver}.tar.gz" +checksum=dea04077d71507c666aaa7ccaeacc73ab580d6572d7f75e90a1984c4c0302a7a conflicts="oce>=0" +if [ "$XBPS_TARGET_LIBC" = musl ]; then + makedepends+=" libexecinfo-devel" + LDFLAGS="-lexecinfo" +fi + post_install() { rm ${PKGDESTDIR}/usr/share/doc/opencascade/*_LGPL_*.txt vlicense OCCT_LGPL_EXCEPTION.txt diff --git a/srcpkgs/occt/update b/srcpkgs/occt/update deleted file mode 100644 index c128eec6d9c9..000000000000 --- a/srcpkgs/occt/update +++ /dev/null @@ -1,2 +0,0 @@ -site="https://git.dev.opencascade.org/gitweb/?p=occt.git;a=tags" -pattern=">V\K[\d_p]+(?=)" From 573af487f3f08503011f0ff708d049825038063f Mon Sep 17 00:00:00 2001 From: Karl Nilsson Date: Sat, 26 Mar 2022 11:25:11 -0400 Subject: [PATCH 3/6] freecad: update to 0.20.0. --- srcpkgs/freecad/patches/050-occt76.patch | 140 +++++++++++++++++++++++ srcpkgs/freecad/template | 4 +- 2 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/freecad/patches/050-occt76.patch diff --git a/srcpkgs/freecad/patches/050-occt76.patch b/srcpkgs/freecad/patches/050-occt76.patch new file mode 100644 index 000000000000..7865a59bceef --- /dev/null +++ b/srcpkgs/freecad/patches/050-occt76.patch @@ -0,0 +1,140 @@ +From 6f3b00d67ec0bd0072b7b493e2a38d2a2e3af27d Mon Sep 17 00:00:00 2001 +From: wmayer +Date: Mon, 11 Oct 2021 00:30:22 +0200 +Subject: [PATCH] SMESH: port to OCCT 7.6 + +--- + .../src/NETGENPlugin/NETGENPlugin_Mesher.cpp | 7 +++++++ + .../salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp | 7 +++++-- + .../src/StdMeshers/StdMeshers_Adaptive1D.cpp | 14 ++++++++++++++ + .../src/StdMeshers/StdMeshers_Quadrangle_2D.cpp | 2 +- + .../src/StdMeshers/StdMeshers_ViscousLayers.cpp | 8 ++++++++ + 5 files changed, 35 insertions(+), 3 deletions(-) + +diff --git a/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp b/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp +index cd6f0b2b0758..ea83984b9768 100644 +--- a/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp ++++ b/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp +@@ -56,6 +56,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -700,7 +701,13 @@ double NETGENPlugin_Mesher::GetDefaultMinSize(const TopoDS_Shape& geom, + BRep_Tool::Triangulation ( TopoDS::Face( fExp.Current() ), loc); + if ( triangulation.IsNull() ) continue; + const double fTol = BRep_Tool::Tolerance( TopoDS::Face( fExp.Current() )); ++#if OCC_VERSION_HEX < 0x070600 + const TColgp_Array1OfPnt& points = triangulation->Nodes(); ++#else ++ auto points = [&triangulation](Standard_Integer index) { ++ return triangulation->Node(index); ++ }; ++#endif + const Poly_Array1OfTriangle& trias = triangulation->Triangles(); + for ( int iT = trias.Lower(); iT <= trias.Upper(); ++iT ) + { +diff --git a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp +index 5a07308310ea..fbb1b250087f 100644 +--- a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp ++++ b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp +@@ -38,10 +38,13 @@ + #include + #include + #include +-#include +-#include ++#include ++#include + #include + #include ++#include ++#include ++#include + + #include + #include +diff --git a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Adaptive1D.cpp b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Adaptive1D.cpp +index 88970f36b557..7c51601c7bbe 100644 +--- a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Adaptive1D.cpp ++++ b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Adaptive1D.cpp +@@ -46,6 +46,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -318,13 +319,26 @@ namespace // internal utils + { + myFaceTol = SMESH_MesherHelper::MaxTolerance( face ); + myTree = triaTree; ++#if OCC_VERSION_HEX < 0x070600 + myNodes = & tr->Nodes(); ++#else ++ TColgp_Array1OfPnt* trNodes = new TColgp_Array1OfPnt( 1, tr->NbNodes() ); ++ for (Standard_Integer i = myNodes->Lower(); i <= myNodes->Upper(); i++) ++ { ++ trNodes->SetValue(i, tr->Node(i)); ++ } ++ myNodes = trNodes; ++ myOwnNodes = true; ++#endif + myPolyTrias = & tr->Triangles(); + myTriasDeflection = tr->Deflection(); + if ( !loc.IsIdentity() ) // transform nodes if necessary + { + TColgp_Array1OfPnt* trsfNodes = new TColgp_Array1OfPnt( myNodes->Lower(), myNodes->Upper() ); + trsfNodes->Assign( *myNodes ); ++#if OCC_VERSION_HEX >= 0x070600 ++ delete myNodes; // it's already a copy ++#endif + myNodes = trsfNodes; + myOwnNodes = true; + const gp_Trsf& trsf = loc; +diff --git a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp +index f7ac411d9a55..5d5c15c36612 100644 +--- a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp ++++ b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp +@@ -50,7 +50,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include +diff --git a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_ViscousLayers.cpp b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_ViscousLayers.cpp +index 8ee0e2683259..e9f46183059e 100644 +--- a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_ViscousLayers.cpp ++++ b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_ViscousLayers.cpp +@@ -44,7 +44,10 @@ + #include "SMESH_subMeshEventListener.hxx" + #include "StdMeshers_FaceSide.hxx" + ++#include ++#if OCC_VERSION_HEX < 0x070600 + #include ++#endif + #include + #include + #include +@@ -1340,8 +1343,13 @@ namespace VISCOUS_3D + //case GeomAbs_SurfaceOfExtrusion: + case GeomAbs_OffsetSurface: + { ++#if OCC_VERSION_HEX < 0x070600 + Handle(Adaptor3d_HSurface) base = surface.BasisSurface(); + return getRovolutionAxis( base->Surface(), axis ); ++#else ++ Handle(Adaptor3d_Surface) base = surface.BasisSurface(); ++ return getRovolutionAxis( *base, axis ); ++#endif + } + default: return false; + } diff --git a/srcpkgs/freecad/template b/srcpkgs/freecad/template index 1e2aec024fd7..c6587ae809ac 100644 --- a/srcpkgs/freecad/template +++ b/srcpkgs/freecad/template @@ -1,6 +1,6 @@ # Template file for 'freecad' pkgname=freecad -version=0.19.4 +version=0.20 revision=1 wrksrc="FreeCAD-${version}" build_style=cmake @@ -36,7 +36,7 @@ maintainer="yopito " license="LGPL-2.0-or-later" homepage="https://freecadweb.org/" distfiles="https://github.com/FreeCAD/FreeCAD/archive/${version}.tar.gz" -checksum=e40a1c343956e13c56cc8578d025ae83d68d9d20acda1732953bc8a3883e9722 +checksum=c4d9ce782d3da0edfa16d6218db4ce8613e346124ee47b3fe6a6dae40c0a61d9 if [ "$XBPS_TARGET_LIBC" = musl ]; then makedepends+=" libexecinfo-devel" From 558b803af61bba2eb0f9c15b90b461598f1351fd Mon Sep 17 00:00:00 2001 From: Karl Nilsson Date: Sat, 23 Jul 2022 23:01:39 -0400 Subject: [PATCH 4/6] freecad: fix patches --- srcpkgs/freecad/patches/002-execinfo.patch | 30 ------------------- .../patches/010-salomesmesh-execinfo.patch | 15 ++++++---- 2 files changed, 9 insertions(+), 36 deletions(-) delete mode 100644 srcpkgs/freecad/patches/002-execinfo.patch diff --git a/srcpkgs/freecad/patches/002-execinfo.patch b/srcpkgs/freecad/patches/002-execinfo.patch deleted file mode 100644 index bcdca77a72a4..000000000000 --- a/srcpkgs/freecad/patches/002-execinfo.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- a/src/App/Application.cpp 2020-01-22 23:27:42.709273087 +0100 -+++ b/src/App/Application.cpp 2020-01-22 23:50:53.915075955 +0100 -@@ -1485,7 +1485,9 @@ - #endif - - #if defined(FC_OS_LINUX) -+#ifdef __GLIBC__ - #include -+#endif - #include - #include - -@@ -1497,6 +1499,7 @@ - // This function produces a stack backtrace with demangled function & method names. - void printBacktrace(size_t skip=0) - { -+#ifdef __GLIBC__ - void *callstack[128]; - size_t nMaxFrames = sizeof(callstack) / sizeof(callstack[0]); - size_t nFrames = backtrace(callstack, nMaxFrames); -@@ -1527,6 +1530,9 @@ - } - - free(symbols); -+#else -+ std::cerr << "sorry, no backtrace on musl libc"; -+#endif - } - #endif - diff --git a/srcpkgs/freecad/patches/010-salomesmesh-execinfo.patch b/srcpkgs/freecad/patches/010-salomesmesh-execinfo.patch index cc6bdc9ff485..f0aa51852c36 100644 --- a/srcpkgs/freecad/patches/010-salomesmesh-execinfo.patch +++ b/srcpkgs/freecad/patches/010-salomesmesh-execinfo.patch @@ -1,16 +1,19 @@ +diff --git a/src/3rdParty/salomesmesh/src/DriverSTL/Basics_Utils.cpp b/src/3rdParty/salomesmesh/src/DriverSTL/Basics_Utils.cpp +index 23c5083fdf..4547d714d4 100644 --- a/src/3rdParty/salomesmesh/src/DriverSTL/Basics_Utils.cpp +++ b/src/3rdParty/salomesmesh/src/DriverSTL/Basics_Utils.cpp -@@ -29,7 +29,9 @@ +@@ -29,8 +29,10 @@ #ifndef WIN32 #include #include +#ifdef __GLIBC__ #include -+#endif #endif ++#endif -@@ -109,6 +111,7 @@ + namespace Kernel_Utils +@@ -109,6 +111,7 @@ namespace Kernel_Utils #ifndef WIN32 void print_traceback() { @@ -18,12 +21,12 @@ void *array[50]; size_t size; char **strings; -@@ -123,6 +126,9 @@ +@@ -123,6 +126,9 @@ namespace Kernel_Utils } free (strings); -+#else -+ std::cerr << "sorry, no backtrace on musl libc"; ++#else ++ std::cerr << "sorry, no backtrace on musl libc"; +#endif } #else From a4ae2f4d8d5d8401958fd4feab6ee4c8c9e6105d Mon Sep 17 00:00:00 2001 From: Karl Nilsson Date: Sun, 24 Jul 2022 21:09:45 -0400 Subject: [PATCH 5/6] freecad: fix patches --- .../patches/010-salomesmesh-execinfo.patch | 52 +++---- srcpkgs/freecad/patches/050-occt76.patch | 140 ------------------ 2 files changed, 26 insertions(+), 166 deletions(-) delete mode 100644 srcpkgs/freecad/patches/050-occt76.patch diff --git a/srcpkgs/freecad/patches/010-salomesmesh-execinfo.patch b/srcpkgs/freecad/patches/010-salomesmesh-execinfo.patch index f0aa51852c36..fc8a7ef11daf 100644 --- a/srcpkgs/freecad/patches/010-salomesmesh-execinfo.patch +++ b/srcpkgs/freecad/patches/010-salomesmesh-execinfo.patch @@ -3,31 +3,31 @@ index 23c5083fdf..4547d714d4 100644 --- a/src/3rdParty/salomesmesh/src/DriverSTL/Basics_Utils.cpp +++ b/src/3rdParty/salomesmesh/src/DriverSTL/Basics_Utils.cpp @@ -29,8 +29,10 @@ - #ifndef WIN32 - #include - #include -+#ifdef __GLIBC__ - #include - #endif -+#endif - - - namespace Kernel_Utils + #ifndef WIN32 + #include + #include ++#ifdef __GLIBC__ + #include + #endif ++#endif + + + namespace Kernel_Utils @@ -109,6 +111,7 @@ namespace Kernel_Utils - #ifndef WIN32 - void print_traceback() - { -+#ifdef __GLIBC__ - void *array[50]; - size_t size; - char **strings; + #ifndef WIN32 + void print_traceback() + { ++#ifdef __GLIBC__ + void *array[50]; + size_t size; + char **strings; @@ -123,6 +126,9 @@ namespace Kernel_Utils - } - - free (strings); -+#else -+ std::cerr << "sorry, no backtrace on musl libc"; -+#endif - } - #else - #if (_MSC_VER >= 1400) // Visual Studio 2005 + } + + free (strings); ++#else ++ std::cerr << "sorry, no backtrace on musl libc"; ++#endif + } + #else + #if (_MSC_VER >= 1400) // Visual Studio 2005 diff --git a/srcpkgs/freecad/patches/050-occt76.patch b/srcpkgs/freecad/patches/050-occt76.patch deleted file mode 100644 index 7865a59bceef..000000000000 --- a/srcpkgs/freecad/patches/050-occt76.patch +++ /dev/null @@ -1,140 +0,0 @@ -From 6f3b00d67ec0bd0072b7b493e2a38d2a2e3af27d Mon Sep 17 00:00:00 2001 -From: wmayer -Date: Mon, 11 Oct 2021 00:30:22 +0200 -Subject: [PATCH] SMESH: port to OCCT 7.6 - ---- - .../src/NETGENPlugin/NETGENPlugin_Mesher.cpp | 7 +++++++ - .../salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp | 7 +++++-- - .../src/StdMeshers/StdMeshers_Adaptive1D.cpp | 14 ++++++++++++++ - .../src/StdMeshers/StdMeshers_Quadrangle_2D.cpp | 2 +- - .../src/StdMeshers/StdMeshers_ViscousLayers.cpp | 8 ++++++++ - 5 files changed, 35 insertions(+), 3 deletions(-) - -diff --git a/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp b/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp -index cd6f0b2b0758..ea83984b9768 100644 ---- a/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp -+++ b/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp -@@ -56,6 +56,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -700,7 +701,13 @@ double NETGENPlugin_Mesher::GetDefaultMinSize(const TopoDS_Shape& geom, - BRep_Tool::Triangulation ( TopoDS::Face( fExp.Current() ), loc); - if ( triangulation.IsNull() ) continue; - const double fTol = BRep_Tool::Tolerance( TopoDS::Face( fExp.Current() )); -+#if OCC_VERSION_HEX < 0x070600 - const TColgp_Array1OfPnt& points = triangulation->Nodes(); -+#else -+ auto points = [&triangulation](Standard_Integer index) { -+ return triangulation->Node(index); -+ }; -+#endif - const Poly_Array1OfTriangle& trias = triangulation->Triangles(); - for ( int iT = trias.Lower(); iT <= trias.Upper(); ++iT ) - { -diff --git a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp -index 5a07308310ea..fbb1b250087f 100644 ---- a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp -+++ b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshAlgos.cpp -@@ -38,10 +38,13 @@ - #include - #include - #include --#include --#include -+#include -+#include - #include - #include -+#include -+#include -+#include - - #include - #include -diff --git a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Adaptive1D.cpp b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Adaptive1D.cpp -index 88970f36b557..7c51601c7bbe 100644 ---- a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Adaptive1D.cpp -+++ b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Adaptive1D.cpp -@@ -46,6 +46,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -318,13 +319,26 @@ namespace // internal utils - { - myFaceTol = SMESH_MesherHelper::MaxTolerance( face ); - myTree = triaTree; -+#if OCC_VERSION_HEX < 0x070600 - myNodes = & tr->Nodes(); -+#else -+ TColgp_Array1OfPnt* trNodes = new TColgp_Array1OfPnt( 1, tr->NbNodes() ); -+ for (Standard_Integer i = myNodes->Lower(); i <= myNodes->Upper(); i++) -+ { -+ trNodes->SetValue(i, tr->Node(i)); -+ } -+ myNodes = trNodes; -+ myOwnNodes = true; -+#endif - myPolyTrias = & tr->Triangles(); - myTriasDeflection = tr->Deflection(); - if ( !loc.IsIdentity() ) // transform nodes if necessary - { - TColgp_Array1OfPnt* trsfNodes = new TColgp_Array1OfPnt( myNodes->Lower(), myNodes->Upper() ); - trsfNodes->Assign( *myNodes ); -+#if OCC_VERSION_HEX >= 0x070600 -+ delete myNodes; // it's already a copy -+#endif - myNodes = trsfNodes; - myOwnNodes = true; - const gp_Trsf& trsf = loc; -diff --git a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp -index f7ac411d9a55..5d5c15c36612 100644 ---- a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp -+++ b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_Quadrangle_2D.cpp -@@ -50,7 +50,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include -diff --git a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_ViscousLayers.cpp b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_ViscousLayers.cpp -index 8ee0e2683259..e9f46183059e 100644 ---- a/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_ViscousLayers.cpp -+++ b/src/3rdParty/salomesmesh/src/StdMeshers/StdMeshers_ViscousLayers.cpp -@@ -44,7 +44,10 @@ - #include "SMESH_subMeshEventListener.hxx" - #include "StdMeshers_FaceSide.hxx" - -+#include -+#if OCC_VERSION_HEX < 0x070600 - #include -+#endif - #include - #include - #include -@@ -1340,8 +1343,13 @@ namespace VISCOUS_3D - //case GeomAbs_SurfaceOfExtrusion: - case GeomAbs_OffsetSurface: - { -+#if OCC_VERSION_HEX < 0x070600 - Handle(Adaptor3d_HSurface) base = surface.BasisSurface(); - return getRovolutionAxis( base->Surface(), axis ); -+#else -+ Handle(Adaptor3d_Surface) base = surface.BasisSurface(); -+ return getRovolutionAxis( *base, axis ); -+#endif - } - default: return false; - } From 6f94e8310b8d527a04c70af860e3616cc5f17044 Mon Sep 17 00:00:00 2001 From: Karl Nilsson Date: Sun, 24 Jul 2022 21:31:10 -0400 Subject: [PATCH 6/6] cleanup freecad patches --- srcpkgs/freecad/patches/150-vtk9.patch | 796 ------------------- srcpkgs/freecad/patches/152-cmake-vtk9.patch | 53 -- 2 files changed, 849 deletions(-) delete mode 100644 srcpkgs/freecad/patches/150-vtk9.patch delete mode 100644 srcpkgs/freecad/patches/152-cmake-vtk9.patch diff --git a/srcpkgs/freecad/patches/150-vtk9.patch b/srcpkgs/freecad/patches/150-vtk9.patch deleted file mode 100644 index 92673e7c9b9f..000000000000 --- a/srcpkgs/freecad/patches/150-vtk9.patch +++ /dev/null @@ -1,796 +0,0 @@ -Taken from https://github.com/wwmayer/FreeCAD/commit/bb9bcbd51df7c3cb76c5823038e4ea0f7e25a9ff -but removed patch on file src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp : already applied (2021-01-20) - -diff --git src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx b/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx -index 14a6d9a763f..0e9b9e6c905 100644 ---- a/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx -+++ b/src/3rdParty/salomesmesh/inc/SMDS_MeshElement.hxx -@@ -40,11 +40,16 @@ - - #include - #include -+#include - - //typedef unsigned short UShortType; - typedef short ShortType; - typedef int LongType; -- -+#ifdef VTK_CELL_ARRAY_V2 -+typedef const vtkIdType* vtkIdTypePtr; -+#else -+typedef vtkIdType* vtkIdTypePtr; -+#endif - class SMDS_MeshNode; - class SMDS_MeshEdge; - class SMDS_MeshFace; -@@ -192,7 +197,7 @@ protected: - //! Element index in vector SMDS_Mesh::myNodes or SMDS_Mesh::myCells - int myID; - //! index in vtkUnstructuredGrid -- int myVtkID; -+ vtkIdType myVtkID; - //! SMDS_Mesh identification in SMESH - ShortType myMeshId; - //! SubShape and SubMesh identification in SMESHDS -diff --git src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx b/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx -index 9e4a23eddfb..77465814541 100644 ---- a/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx -+++ b/src/3rdParty/salomesmesh/inc/SMDS_UnstructuredGrid.hxx -@@ -95,7 +95,11 @@ public: - std::map >& nodeQuadDomains); - vtkCellLinks* GetLinks() - { -+#ifdef VTK_CELL_ARRAY_V2 -+ return static_cast(GetCellLinks()); -+#else - return Links; -+#endif - } - SMDS_Downward* getDownArray(unsigned char vtkType) - { -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp -index 299093c94f6..2680c217305 100644 ---- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp -+++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_BallElement.cpp -@@ -67,10 +67,16 @@ void SMDS_BallElement::SetDiameter(double diameter) - bool SMDS_BallElement::ChangeNode (const SMDS_MeshNode * node) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew cellPoints; -+ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); -+ cellPoints->SetId(0, node->getVtkId()); -+#else - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); - pts[0] = node->getVtkId(); -+#endif - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - return true; - } -@@ -83,7 +89,8 @@ void SMDS_BallElement::Print (std::ostream & OS) const - const SMDS_MeshNode* SMDS_BallElement::GetNode (const int ind) const - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( myVtkID, npts, pts ); - return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ 0 ]); - } -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp -index d6049c0bd19..a41f5c18e78 100644 ---- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp -+++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_Downward.cpp -@@ -303,7 +303,7 @@ int SMDS_Down1D::getNodeSet(int cellId, int* nodeSet) - void SMDS_Down1D::setNodes(int cellId, int vtkId) - { - vtkIdType npts = 0; -- vtkIdType *pts; // will refer to the point id's of the face -+ vtkIdTypePtr pts; // will refer to the point id's of the face - _grid->GetCellPoints(vtkId, npts, pts); - // MESSAGE(vtkId << " " << npts << " " << _nbDownCells); - //ASSERT(npts == _nbDownCells); -@@ -357,7 +357,7 @@ int SMDS_Down1D::computeVtkCells(int *pts, std::vector& vtkIds) - { - vtkIdType point = pts[i]; - int numCells = _grid->GetLinks()->GetNcells(point); -- vtkIdType *cells = _grid->GetLinks()->GetCells(point); -+ vtkIdTypePtr cells = _grid->GetLinks()->GetCells(point); - for (int j = 0; j < numCells; j++) - { - int vtkCellId = cells[j]; -@@ -532,7 +532,7 @@ int SMDS_Down2D::computeVolumeIds(int cellId, int* ids) - // --- find point id's of the face - - vtkIdType npts = 0; -- vtkIdType *pts; // will refer to the point id's of the face -+ vtkIdTypePtr pts; // will refer to the point id's of the face - _grid->GetCellPoints(cellId, npts, pts); - vector nodes; - for (int i = 0; i < npts; i++) -@@ -577,7 +577,7 @@ int SMDS_Down2D::computeVolumeIdsFromNodesFace(int* pts, int npts, int* ids) - vtkIdType point = pts[i]; - int numCells = _grid->GetLinks()->GetNcells(point); - //MESSAGE("cells pour " << i << " " << numCells); -- vtkIdType *cells = _grid->GetLinks()->GetCells(point); -+ vtkIdTypePtr cells = _grid->GetLinks()->GetCells(point); - for (int j = 0; j < numCells; j++) - { - int vtkCellId = cells[j]; -@@ -627,7 +627,7 @@ int SMDS_Down2D::computeVolumeIdsFromNodesFace(int* pts, int npts, int* ids) - void SMDS_Down2D::setTempNodes(int cellId, int vtkId) - { - vtkIdType npts = 0; -- vtkIdType *pts; // will refer to the point id's of the face -+ vtkIdTypePtr pts; // will refer to the point id's of the face - _grid->GetCellPoints(vtkId, npts, pts); - // MESSAGE(vtkId << " " << npts << " " << _nbNodes); - //ASSERT(npts == _nbNodes); -@@ -795,7 +795,7 @@ void SMDS_Down3D::getNodeIds(int cellId, std::set& nodeSet) - { - int vtkId = this->_vtkCellIds[cellId]; - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(vtkId, npts, nodes); - for (int i = 0; i < npts; i++) - nodeSet.insert(nodes[i]); -@@ -1126,7 +1126,7 @@ void SMDS_DownTetra::getOrderedNodesOfFace(int cellId, std::vector& o - //MESSAGE("cellId = " << cellId); - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(this->_vtkCellIds[cellId], npts, nodes); - - set tofind; -@@ -1178,7 +1178,7 @@ void SMDS_DownTetra::computeFacesWithNodes(int cellId, ListElemByNodesType& face - // --- find point id's of the volume - - vtkIdType npts = 0; -- vtkIdType *nodes; // will refer to the point id's of the volume -+ vtkIdTypePtr nodes; // will refer to the point id's of the volume - _grid->GetCellPoints(cellId, npts, nodes); - - // --- create all the ordered list of node id's for each face -@@ -1234,7 +1234,7 @@ void SMDS_DownQuadTetra::getOrderedNodesOfFace(int cellId, std::vectorGetCellLinks(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkCellLinks *links = static_cast(myGrid->GetCellLinks()); -+#else -+ vtkCellLinks *links = myGrid->GetCellLinks(); -+#endif - for (int i=0; iGetNcells(i); -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp -index 95438eab064..0df32e3b97c 100644 ---- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp -+++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_Mesh0DElement.cpp -@@ -146,6 +146,17 @@ bool SMDS_Mesh0DElement::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbN - if ( nbNodes == 1 ) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew cellPoints; -+ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); -+ if (nbNodes != cellPoints->GetNumberOfIds()) -+ { -+ MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes); -+ return false; -+ } -+ myNode = nodes[0]; -+ cellPoints->SetId(0, myNode->getVtkId()); -+#else - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); -@@ -156,6 +167,7 @@ bool SMDS_Mesh0DElement::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbN - } - myNode = nodes[0]; - pts[0] = myNode->getVtkId(); -+#endif - - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - return true; -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp -index f647a5f1b8f..5b903c8fb55 100644 ---- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp -+++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_MeshNode.cpp -@@ -191,7 +191,7 @@ class SMDS_MeshNode_MyInvIterator: public SMDS_ElemIterator - SMDS_ElemIteratorPtr SMDS_MeshNode:: - GetInverseElementIterator(SMDSAbs_ElementType type) const - { -- vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID); -+ vtkCellLinks::Link l = static_cast(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); - //MESSAGE("myID " << myID << " ncells " << l.ncells); - return SMDS_ElemIteratorPtr(new SMDS_MeshNode_MyInvIterator(SMDS_Mesh::_meshList[myMeshId], l.cells, l.ncells, type)); - } -@@ -251,7 +251,7 @@ elementsIterator(SMDSAbs_ElementType type) const - return SMDS_MeshElement::elementsIterator(SMDSAbs_Node); - else - { -- vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID); -+ vtkCellLinks::Link l = static_cast(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); - return SMDS_ElemIteratorPtr(new SMDS_MeshNode_MyIterator(SMDS_Mesh::_meshList[myMeshId], l.cells, l.ncells, type)); - } - } -@@ -350,7 +350,7 @@ void SMDS_MeshNode::AddInverseElement(const SMDS_MeshElement* ME) - const SMDS_MeshCell *cell = dynamic_cast (ME); - assert(cell); - SMDS_UnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -- vtkCellLinks *Links = grid->GetCellLinks(); -+ vtkCellLinks *Links = static_cast(grid->GetCellLinks()); - Links->ResizeCellList(myVtkID, 1); - Links->AddCellReference(cell->getVtkId(), myVtkID); - } -@@ -366,7 +366,7 @@ void SMDS_MeshNode::ClearInverseElements() - - bool SMDS_MeshNode::emptyInverseElements() - { -- vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID); -+ vtkCellLinks::Link l = static_cast(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); - return (l.ncells == 0); - } - -@@ -378,7 +378,7 @@ bool SMDS_MeshNode::emptyInverseElements() - - int SMDS_MeshNode::NbInverseElements(SMDSAbs_ElementType type) const - { -- vtkCellLinks::Link l = SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks()->GetLink(myVtkID); -+ vtkCellLinks::Link l = static_cast(SMDS_Mesh::_meshList[myMeshId]->getGrid()->GetCellLinks())->GetLink(myVtkID); - - if ( type == SMDSAbs_All ) - return l.ncells; -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp -index fbd903b1e74..ff2b81e9694 100644 ---- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp -+++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp -@@ -139,8 +139,8 @@ int SMDS_UnstructuredGrid::InsertNextLinkedCell(int type, int npts, vtkIdType *p - for (; it != setOfNodes.end(); ++it) - { - //MESSAGE("reverse link for node " << *it << " cell " << cellid); -- this->Links->ResizeCellList(*it, 1); -- this->Links->AddCellReference(cellid, *it); -+ this->GetLinks()->ResizeCellList(*it, 1); -+ this->GetLinks()->AddCellReference(cellid, *it); - } - - return cellid; -@@ -332,9 +332,13 @@ void SMDS_UnstructuredGrid::copyBloc(vtkUnsignedCharArray *newTypes, - { - newTypes->SetValue(alreadyCopied, this->Types->GetValue(j)); - idCellsOldToNew[j] = alreadyCopied; // old vtkId --> new vtkId -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkIdType oldLoc = this->GetCellLocationsArray()->GetValue(j); -+#else - vtkIdType oldLoc = this->Locations->GetValue(j); -+#endif - vtkIdType nbpts; -- vtkIdType *oldPtsCell = 0; -+ vtkIdTypePtr oldPtsCell = 0; - this->Connectivity->GetCell(oldLoc, nbpts, oldPtsCell); - assert(nbpts < NBMAXNODESINCELL); - //MESSAGE(j << " " << alreadyCopied << " " << (int)this->Types->GetValue(j) << " " << oldLoc << " " << nbpts ); -@@ -952,6 +956,21 @@ void SMDS_UnstructuredGrid::GetNodeIds(std::set& nodeSet, int downId, unsig - */ - void SMDS_UnstructuredGrid::ModifyCellNodes(int vtkVolId, std::map localClonedNodeIds) - { -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew cellPoints; -+ this->GetCellPoints(vtkVolId, cellPoints.GetPointer()); -+ for (vtkIdType i = 0; i < cellPoints->GetNumberOfIds(); i++) -+ { -+ if (localClonedNodeIds.count(cellPoints->GetId(i))) -+ { -+ vtkIdType oldpt = cellPoints->GetId(i); -+ cellPoints->SetId(i, localClonedNodeIds[oldpt]); -+ //MESSAGE(oldpt << " --> " << pts[i]); -+ //this->RemoveReferenceToCell(oldpt, vtkVolId); -+ //this->AddReferenceToCell(pts[i], vtkVolId); -+ } -+ } -+#else - vtkIdType npts = 0; - vtkIdType *pts; // will refer to the point id's of the face - this->GetCellPoints(vtkVolId, npts, pts); -@@ -966,6 +985,7 @@ void SMDS_UnstructuredGrid::ModifyCellNodes(int vtkVolId, std::map loc - //this->AddReferenceToCell(pts[i], vtkVolId); - } - } -+#endif - } - - /*! reorder the nodes of a face -@@ -995,11 +1015,20 @@ void SMDS_UnstructuredGrid::BuildLinks() - this->Links->UnRegister(this); - } - -+#ifdef VTK_CELL_ARRAY_V2 -+ this->Links = SMDS_CellLinks::New(); -+ GetLinks()->Allocate(this->GetNumberOfPoints()); -+ GetLinks()->Register(this); -+//FIXME: vtk9 -+ GetLinks()->BuildLinks(this); -+ GetLinks()->Delete(); -+#else - this->Links = SMDS_CellLinks::New(); - this->Links->Allocate(this->GetNumberOfPoints()); - this->Links->Register(this); - this->Links->BuildLinks(this, this->Connectivity); - this->Links->Delete(); -+#endif - } - - /*! Create a volume (prism or hexahedron) by duplication of a face. -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp -index deb05985f00..63b6eabb704 100644 ---- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp -+++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkCellIterator.cpp -@@ -33,7 +33,8 @@ SMDS_VtkCellIterator::SMDS_VtkCellIterator(SMDS_Mesh* mesh, int vtkCellId, SMDSA - } - else - { -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( _cellId, npts, pts ); - _vtkIdList->SetNumberOfIds( _nbNodes = npts ); - for (int i = 0; i < _nbNodes; i++) -@@ -67,7 +68,7 @@ SMDS_VtkCellIteratorToUNV::SMDS_VtkCellIteratorToUNV(SMDS_Mesh* mesh, int vtkCel - //MESSAGE("SMDS_VtkCellInterlacedIterator (UNV)" << _type); - - _vtkIdList = vtkIdList::New(); -- vtkIdType* pts; -+ vtkIdTypePtr pts; - vtkIdType npts; - vtkUnstructuredGrid* grid = _mesh->getGrid(); - grid->GetCellPoints((vtkIdType)_cellId, npts, pts); -@@ -182,7 +183,7 @@ SMDS_VtkCellIteratorPolyH::SMDS_VtkCellIteratorPolyH(SMDS_Mesh* mesh, int vtkCel - { - //MESSAGE("SMDS_VtkCellIterator Polyhedra"); - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(_cellId, nFaces, ptIds); - int id = 0; - _nbNodesInFaces = 0; -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp -index 9786abf9aae..6d772a3cd4a 100644 ---- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp -+++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkEdge.cpp -@@ -67,6 +67,19 @@ bool SMDS_VtkEdge::ChangeNodes(const SMDS_MeshNode * node1, const SMDS_MeshNode - bool SMDS_VtkEdge::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew cellPoints; -+ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); -+ if (nbNodes != cellPoints->GetNumberOfIds()) -+ { -+ MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes); -+ return false; -+ } -+ for (int i = 0; i < nbNodes; i++) -+ { -+ cellPoints->SetId(i, nodes[i]->getVtkId()); -+ } -+#else - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); -@@ -79,6 +92,7 @@ bool SMDS_VtkEdge::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) - { - pts[i] = nodes[i]->getVtkId(); - } -+#endif - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - return true; - } -@@ -87,7 +101,7 @@ bool SMDS_VtkEdge::IsMediumNode(const SMDS_MeshNode* node) const - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); - vtkIdType npts = 0; -- vtkIdType* pts = 0; -+ vtkIdTypePtr pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); - //MESSAGE("IsMediumNode " << npts << " " << (node->getVtkId() == pts[npts-1])); - return ((npts == 3) && (node->getVtkId() == pts[2])); -@@ -137,7 +151,8 @@ const SMDS_MeshNode* - SMDS_VtkEdge::GetNode(const int ind) const - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( this->myVtkID, npts, pts ); - return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ ind ]); - } -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp -index 1389e0d3585..cb981bfb18e 100644 ---- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp -+++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkFace.cpp -@@ -101,6 +101,19 @@ void SMDS_VtkFace::initQuadPoly(const std::vector& nodeIds, SMDS_Mesh - bool SMDS_VtkFace::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew cellPoints; -+ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); -+ if (nbNodes != cellPoints->GetNumberOfIds()) -+ { -+ MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes); -+ return false; -+ } -+ for (int i = 0; i < nbNodes; i++) -+ { -+ cellPoints->SetId(i, nodes[i]->getVtkId()); -+ } -+#else - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); -@@ -113,6 +126,7 @@ bool SMDS_VtkFace::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) - { - pts[i] = nodes[i]->getVtkId(); - } -+#endif - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - return true; - } -@@ -173,7 +187,8 @@ const SMDS_MeshNode* - SMDS_VtkFace::GetNode(const int ind) const - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( this->myVtkID, npts, pts ); - return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ ind ]); - } -@@ -186,7 +201,8 @@ SMDS_VtkFace::GetNode(const int ind) const - int SMDS_VtkFace::GetNodeIndex( const SMDS_MeshNode* node ) const - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( this->myVtkID, npts, pts ); - for ( vtkIdType i = 0; i < npts; ++i ) - if ( pts[i] == node->getVtkId() ) -@@ -251,7 +267,7 @@ bool SMDS_VtkFace::IsMediumNode(const SMDS_MeshNode* node) const - return false; - } - vtkIdType npts = 0; -- vtkIdType* pts = 0; -+ vtkIdTypePtr pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); - vtkIdType nodeId = node->getVtkId(); - for (int rank = 0; rank < npts; rank++) -@@ -356,11 +372,18 @@ SMDS_NodeIteratorPtr SMDS_VtkFace::interlacedNodesIterator() const - void SMDS_VtkFace::ChangeApex(SMDS_MeshNode* node) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew cellPoints; -+ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); -+ grid->RemoveReferenceToCell(cellPoints->GetId(0), myVtkID); -+ cellPoints->SetId(0, node->getVtkId()); -+#else - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); - grid->RemoveReferenceToCell(pts[0], myVtkID); - pts[0] = node->getVtkId(); -+#endif - node->AddInverseElement(this), - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - } -diff --git src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp -index 015edf75fd2..19ebd0746c8 100644 ---- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp -+++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_VtkVolume.cpp -@@ -133,6 +133,19 @@ void SMDS_VtkVolume::initPoly(const std::vector& nodeIds, - bool SMDS_VtkVolume::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) - { - vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); -+#ifdef VTK_CELL_ARRAY_V2 -+ vtkNew cellPoints; -+ grid->GetCellPoints(myVtkID, cellPoints.GetPointer()); -+ if (nbNodes != cellPoints->GetNumberOfIds()) -+ { -+ MESSAGE("ChangeNodes problem: not the same number of nodes " << cellPoints->GetNumberOfIds() << " -> " << nbNodes); -+ return false; -+ } -+ for (int i = 0; i < nbNodes; i++) -+ { -+ cellPoints->SetId(i, nodes[i]->getVtkId()); -+ } -+#else - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); -@@ -145,6 +158,7 @@ bool SMDS_VtkVolume::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes - { - pts[i] = nodes[i]->getVtkId(); - } -+#endif - SMDS_Mesh::_meshList[myMeshId]->setMyModified(); - return true; - } -@@ -207,7 +221,7 @@ int SMDS_VtkVolume::NbFaces() const - case VTK_POLYHEDRON: - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - nbFaces = nFaces; - break; -@@ -236,7 +250,7 @@ int SMDS_VtkVolume::NbNodes() const - else - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - int id = 0; - for (int i = 0; i < nFaces; i++) -@@ -276,7 +290,7 @@ int SMDS_VtkVolume::NbEdges() const - case VTK_POLYHEDRON: - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - nbEdges = 0; - int id = 0; -@@ -312,7 +326,7 @@ int SMDS_VtkVolume::NbFaceNodes(const int face_ind) const - if (aVtkType == VTK_POLYHEDRON) - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - int id = 0; - for (int i = 0; i < nFaces; i++) -@@ -342,7 +356,7 @@ const SMDS_MeshNode* SMDS_VtkVolume::GetFaceNode(const int face_ind, const int n - if (aVtkType == VTK_POLYHEDRON) - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - int id = 0; - for (int i = 0; i < nFaces; i++) -@@ -372,7 +386,7 @@ std::vector SMDS_VtkVolume::GetQuantities() const - if (aVtkType == VTK_POLYHEDRON) - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - int id = 0; - for (int i = 0; i < nFaces; i++) -@@ -430,7 +444,7 @@ const SMDS_MeshNode* SMDS_VtkVolume::GetNode(const int ind) const - if ( aVtkType == VTK_POLYHEDRON) - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - int id = 0, nbPoints = 0; - for (int i = 0; i < nFaces; i++) -@@ -443,7 +457,8 @@ const SMDS_MeshNode* SMDS_VtkVolume::GetNode(const int ind) const - } - return 0; - } -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( this->myVtkID, npts, pts ); - const std::vector& interlace = SMDS_MeshCell::fromVtkOrder( VTKCellType( aVtkType )); - return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ interlace.empty() ? ind : interlace[ind]] ); -@@ -460,7 +475,7 @@ int SMDS_VtkVolume::GetNodeIndex( const SMDS_MeshNode* node ) const - if ( aVtkType == VTK_POLYHEDRON) - { - vtkIdType nFaces = 0; -- vtkIdType* ptIds = 0; -+ vtkIdTypePtr ptIds = 0; - grid->GetFaceStream(this->myVtkID, nFaces, ptIds); - int id = 0; - for (int iF = 0; iF < nFaces; iF++) -@@ -473,7 +488,8 @@ int SMDS_VtkVolume::GetNodeIndex( const SMDS_MeshNode* node ) const - } - return -1; - } -- vtkIdType npts, *pts; -+ vtkIdType npts; -+ vtkIdTypePtr pts; - grid->GetCellPoints( this->myVtkID, npts, pts ); - for ( vtkIdType i = 0; i < npts; ++i ) - if ( pts[i] == node->getVtkId() ) -@@ -534,7 +550,7 @@ bool SMDS_VtkVolume::IsMediumNode(const SMDS_MeshNode* node) const - return false; - } - vtkIdType npts = 0; -- vtkIdType* pts = 0; -+ vtkIdTypePtr pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); - vtkIdType nodeId = node->getVtkId(); - for (int rank = 0; rank < npts; rank++) -diff --git src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp -index fcd044b00f2..f54c24f8618 100644 ---- a/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp -+++ b/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp -@@ -11348,7 +11348,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vectorGetCellLinks()->GetLink(oldId); -+ vtkCellLinks::Link l = static_cast(grid->GetCellLinks())->GetLink(oldId); - for (int i=0; iGetID()); - double values[3]; - vtkIdType npts = 0; -- vtkIdType* pts = 0; -+ vtkIdTypePtr pts = 0; - grid->GetCellPoints(vtkVolIds[ivol], npts, pts); - SMDS_VtkVolume::gravityCenter(grid, pts, npts, values); - if (id ==0) -@@ -11708,7 +11708,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vectorfirst; - //MESSAGE(" node " << oldId); -- vtkCellLinks::Link l = grid->GetCellLinks()->GetLink(oldId); -+ vtkCellLinks::Link l = static_cast(grid->GetCellLinks())->GetLink(oldId); - for (int i = 0; i < l.ncells; i++) - { - int vtkId = l.cells[i]; -@@ -12165,7 +12165,7 @@ void SMESH_MeshEditor::CreateHoleSkin(double radius, - MESSAGE("volume to check, vtkId " << vtkId << " smdsId " << meshDS->fromVtkToSmds(vtkId)); - bool volInside = false; - vtkIdType npts = 0; -- vtkIdType* pts = 0; -+ vtkIdTypePtr pts = 0; - grid->GetCellPoints(vtkId, npts, pts); - for (int i=0; i