diff --git a/ports/netgen/occ-78.patch b/ports/netgen/occ-78.patch deleted file mode 100644 index 63597cc83c..0000000000 --- a/ports/netgen/occ-78.patch +++ /dev/null @@ -1,158 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 47cbae1..d277630 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -375,25 +375,20 @@ if (USE_OCC) - TKGeomAlgo - TKGeomBase - TKHLR -- TKIGES - TKLCAF - TKMath - TKMesh - TKOffset - TKPrim -- TKSTEP -- TKSTEP209 -- TKSTEPAttr -- TKSTEPBase -- TKSTL -+ TKDESTL - TKService - TKShHealing - TKTopAlgo - TKV3d - TKVCAF - TKXCAF -- TKXDEIGES -- TKXDESTEP -+ TKDEIGES -+ TKDESTEP - TKXSBase - TKernel - ) -diff --git a/libsrc/occ/Partition_Loop3d.hxx b/libsrc/occ/Partition_Loop3d.hxx -index e171669..fe77b90 100644 ---- a/libsrc/occ/Partition_Loop3d.hxx -+++ b/libsrc/occ/Partition_Loop3d.hxx -@@ -10,27 +10,17 @@ - #ifndef _Partition_Loop3d_HeaderFile - #define _Partition_Loop3d_HeaderFile - --#ifndef _TopTools_ListOfShape_HeaderFile --#include --#endif --#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile --#include --#endif --#ifndef _Standard_Boolean_HeaderFile -+#include - #include --#endif --#ifndef _Standard_Real_HeaderFile - #include --#endif --#ifndef _Standard_Version_HeaderFile - #include --#endif -+#include -+#include - --#if OCC_VERSION_HEX < 0x070000 -+#if OCC_VERSION_HEX < 0x070000 || OCC_VERSION_HEX > 0x070799 - #else - #include - #include -- #include - #endif - - class TopoDS_Shape; -@@ -38,6 +28,8 @@ class TopoDS_Shape; - #if OCC_VERSION_HEX < 0x070000 - class TopTools_ListOfShape; - class TopTools_MapOfOrientedShape; -+#else -+#include - #endif - - class TopoDS_Edge; -diff --git a/libsrc/occ/occ_edge.cpp b/libsrc/occ/occ_edge.cpp -index 4805bb1..bb2b98e 100644 ---- a/libsrc/occ/occ_edge.cpp -+++ b/libsrc/occ/occ_edge.cpp -@@ -55,7 +55,11 @@ namespace netgen - - size_t OCCEdge::GetHash() const - { -+#if OCC_VERSION_HEX < 0x070800 - return edge.HashCode(std::numeric_limits::max()); -+#else -+ return std::hash{}(edge); -+#endif - } - - void OCCEdge::ProjectPoint(Point<3>& p, EdgePointGeomInfo* gi) const -diff --git a/libsrc/occ/occ_face.cpp b/libsrc/occ/occ_face.cpp -index 239982a..ea4dd15 100644 ---- a/libsrc/occ/occ_face.cpp -+++ b/libsrc/occ/occ_face.cpp -@@ -32,7 +32,11 @@ namespace netgen - - size_t OCCFace::GetHash() const - { -+#if OCC_VERSION_HEX < 0x070800 - return face.HashCode(std::numeric_limits::max()); -+#else -+ return std::hash{}(face); -+#endif - } - - Point<3> OCCFace::GetCenter() const -diff --git a/libsrc/occ/occ_solid.hpp b/libsrc/occ/occ_solid.hpp -index d598de4..416c1eb 100644 ---- a/libsrc/occ/occ_solid.hpp -+++ b/libsrc/occ/occ_solid.hpp -@@ -17,7 +17,11 @@ namespace netgen - : solid(TopoDS::Solid(dshape)) - { } - -+#if OCC_VERSION_HEX < 0x070800 - size_t GetHash() const override { return solid.HashCode(std::numeric_limits::max()); } -+#else -+ size_t GetHash() const override { return std::hash{}(solid); } -+#endif - }; - } - -diff --git a/libsrc/occ/occ_vertex.cpp b/libsrc/occ/occ_vertex.cpp -index 6e83c89..be8e387 100644 ---- a/libsrc/occ/occ_vertex.cpp -+++ b/libsrc/occ/occ_vertex.cpp -@@ -19,6 +19,10 @@ namespace netgen - - size_t OCCVertex::GetHash() const - { -+#if OCC_VERSION_HEX < 0x070800 - return vertex.HashCode(std::numeric_limits::max()); -+#else -+ return std::hash{}(vertex); -+#endif - } - } -diff --git a/libsrc/occ/occgeom.cpp b/libsrc/occ/occgeom.cpp -index 00ed0d0..ad58ae6 100644 ---- a/libsrc/occ/occgeom.cpp -+++ b/libsrc/occ/occgeom.cpp -@@ -1717,8 +1717,12 @@ namespace netgen - /* - // enumerate shapes and archive only integers - auto my_hash = [](const TopoDS_Shape & key) { -+#if OCC_VERSION_HEX < 0x070800 - auto occ_hash = key.HashCode(1<<31UL); - return std::hash()(occ_hash); -+#else -+ return std::hash{}(key); -+#endif - }; - */ - TopTools_IndexedMapOfShape shape_map; diff --git a/ports/netgen/occt-compat.patch b/ports/netgen/occt-compat.patch new file mode 100644 index 0000000000..0153900f56 --- /dev/null +++ b/ports/netgen/occt-compat.patch @@ -0,0 +1,412 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e6b3d07..f90e126 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -379,25 +379,20 @@ if (USE_OCC) + TKGeomAlgo + TKGeomBase + TKHLR +- TKIGES + TKLCAF + TKMath + TKMesh + TKOffset + TKPrim +- TKSTEP +- TKSTEP209 +- TKSTEPAttr +- TKSTEPBase +- TKSTL ++ TKDESTL + TKService + TKShHealing + TKTopAlgo + TKV3d + TKVCAF + TKXCAF +- TKXDEIGES +- TKXDESTEP ++ TKDEIGES ++ TKDESTEP + TKXSBase + TKernel + ) +diff --git a/libsrc/occ/Partition_Inter2d.cxx b/libsrc/occ/Partition_Inter2d.cxx +index 88b6f7d..9dc4e13 100644 +--- a/libsrc/occ/Partition_Inter2d.cxx ++++ b/libsrc/occ/Partition_Inter2d.cxx +@@ -46,10 +46,9 @@ + #include + #include + #include +-#include + #include +-#include + #include ++#include + #include + #include + #include +diff --git a/libsrc/occ/Partition_Inter2d.hxx b/libsrc/occ/Partition_Inter2d.hxx +index c018bac..afbdfd2 100644 +--- a/libsrc/occ/Partition_Inter2d.hxx ++++ b/libsrc/occ/Partition_Inter2d.hxx +@@ -38,6 +38,7 @@ + #else + #include + #include ++ #include + #endif + + #ifndef _Standard_Real_HeaderFile +diff --git a/libsrc/occ/Partition_Inter3d.cxx b/libsrc/occ/Partition_Inter3d.cxx +index 3fc97b4..4b7db82 100644 +--- a/libsrc/occ/Partition_Inter3d.cxx ++++ b/libsrc/occ/Partition_Inter3d.cxx +@@ -46,9 +46,9 @@ + #include + + #include +-#include +-#include ++#include + #include ++#include + #include + #include + #include +@@ -74,6 +74,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -85,7 +86,7 @@ + #include + #include + #include +-#include ++#include + #include + + //======================================================================= +diff --git a/libsrc/occ/Partition_Loop.cxx b/libsrc/occ/Partition_Loop.cxx +index efaf77f..483a5ae 100644 +--- a/libsrc/occ/Partition_Loop.cxx ++++ b/libsrc/occ/Partition_Loop.cxx +@@ -44,12 +44,11 @@ + #include + + #include +-#include ++#include + #include +-#include + #include + #include +-#include ++#include + + #include + #include +diff --git a/libsrc/occ/Partition_Loop2d.cxx b/libsrc/occ/Partition_Loop2d.cxx +index 1c3d795..81f106a 100644 +--- a/libsrc/occ/Partition_Loop2d.cxx ++++ b/libsrc/occ/Partition_Loop2d.cxx +@@ -34,14 +34,12 @@ + #include + #include + #include +-#include +-#include ++#include + #include + #include // V6.5 + #include + #include +-#include +-#include ++#include + #include + #include + #include +diff --git a/libsrc/occ/Partition_Loop3d.cxx b/libsrc/occ/Partition_Loop3d.cxx +index 3e9acc3..d975ee4 100644 +--- a/libsrc/occ/Partition_Loop3d.cxx ++++ b/libsrc/occ/Partition_Loop3d.cxx +@@ -17,11 +17,10 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include +-#include + #include + #include + #include +diff --git a/libsrc/occ/Partition_Loop3d.hxx b/libsrc/occ/Partition_Loop3d.hxx +index e171669..fe77b90 100644 +--- a/libsrc/occ/Partition_Loop3d.hxx ++++ b/libsrc/occ/Partition_Loop3d.hxx +@@ -10,27 +10,17 @@ + #ifndef _Partition_Loop3d_HeaderFile + #define _Partition_Loop3d_HeaderFile + +-#ifndef _TopTools_ListOfShape_HeaderFile +-#include +-#endif +-#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile +-#include +-#endif +-#ifndef _Standard_Boolean_HeaderFile ++#include + #include +-#endif +-#ifndef _Standard_Real_HeaderFile + #include +-#endif +-#ifndef _Standard_Version_HeaderFile + #include +-#endif ++#include ++#include + +-#if OCC_VERSION_HEX < 0x070000 ++#if OCC_VERSION_HEX < 0x070000 || OCC_VERSION_HEX > 0x070799 + #else + #include + #include +- #include + #endif + + class TopoDS_Shape; +@@ -38,6 +28,8 @@ class TopoDS_Shape; + #if OCC_VERSION_HEX < 0x070000 + class TopTools_ListOfShape; + class TopTools_MapOfOrientedShape; ++#else ++#include + #endif + + class TopoDS_Edge; +diff --git a/libsrc/occ/Partition_Spliter.cxx b/libsrc/occ/Partition_Spliter.cxx +index 7a1d913..7a0a87c 100644 +--- a/libsrc/occ/Partition_Spliter.cxx ++++ b/libsrc/occ/Partition_Spliter.cxx +@@ -43,13 +43,11 @@ + #include + #include + +-#include + #include + #include + #include +-#include + #include +-#include ++#include + #include + + #include +diff --git a/libsrc/occ/occ_edge.cpp b/libsrc/occ/occ_edge.cpp +index 4805bb1..e8b272f 100644 +--- a/libsrc/occ/occ_edge.cpp ++++ b/libsrc/occ/occ_edge.cpp +@@ -55,7 +55,11 @@ namespace netgen + + size_t OCCEdge::GetHash() const + { ++#if OCC_VERSION_HEX < 0x070800 + return edge.HashCode(std::numeric_limits::max()); ++#else ++ return std::hash{}(edge); ++#endif + } + + void OCCEdge::ProjectPoint(Point<3>& p, EdgePointGeomInfo* gi) const +diff --git a/libsrc/occ/occ_face.cpp b/libsrc/occ/occ_face.cpp +index 239982a..ec6dee3 100644 +--- a/libsrc/occ/occ_face.cpp ++++ b/libsrc/occ/occ_face.cpp +@@ -32,7 +32,11 @@ namespace netgen + + size_t OCCFace::GetHash() const + { ++#if OCC_VERSION_HEX < 0x070800 + return face.HashCode(std::numeric_limits::max()); ++#else ++ return std::hash{}(face); ++#endif + } + + Point<3> OCCFace::GetCenter() const +diff --git a/libsrc/occ/occ_solid.hpp b/libsrc/occ/occ_solid.hpp +index d598de4..416c1eb 100644 +--- a/libsrc/occ/occ_solid.hpp ++++ b/libsrc/occ/occ_solid.hpp +@@ -17,7 +17,11 @@ namespace netgen + : solid(TopoDS::Solid(dshape)) + { } + ++#if OCC_VERSION_HEX < 0x070800 + size_t GetHash() const override { return solid.HashCode(std::numeric_limits::max()); } ++#else ++ size_t GetHash() const override { return std::hash{}(solid); } ++#endif + }; + } + +diff --git a/libsrc/occ/occ_vertex.cpp b/libsrc/occ/occ_vertex.cpp +index 6e83c89..982992a 100644 +--- a/libsrc/occ/occ_vertex.cpp ++++ b/libsrc/occ/occ_vertex.cpp +@@ -19,6 +19,10 @@ namespace netgen + + size_t OCCVertex::GetHash() const + { ++#if OCC_VERSION_HEX < 0x070800 + return vertex.HashCode(std::numeric_limits::max()); ++#else ++ return std::hash{}(vertex); ++#endif + } + } +diff --git a/libsrc/occ/occgeom.cpp b/libsrc/occ/occgeom.cpp +index 00ed0d0..dbbe921 100644 +--- a/libsrc/occ/occgeom.cpp ++++ b/libsrc/occ/occgeom.cpp +@@ -46,6 +46,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -54,6 +55,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -1717,8 +1719,12 @@ namespace netgen + /* + // enumerate shapes and archive only integers + auto my_hash = [](const TopoDS_Shape & key) { ++#if OCC_VERSION_HEX < 0x070800 + auto occ_hash = key.HashCode(1<<31UL); + return std::hash()(occ_hash); ++#else ++ return std::hash{}(key); ++#endif + }; + */ + TopTools_IndexedMapOfShape shape_map; +diff --git a/libsrc/occ/occgeom.hpp b/libsrc/occ/occgeom.hpp +index c7118ce..e098f14 100644 +--- a/libsrc/occ/occgeom.hpp ++++ b/libsrc/occ/occgeom.hpp +@@ -24,11 +24,13 @@ + #include + #include + #include ++#include + #include + #include + #include + #include + #include ++#include + #include + + #if OCC_VERSION_MAJOR>=7 && OCC_VERSION_MINOR>=4 +diff --git a/libsrc/occ/python_occ.cpp b/libsrc/occ/python_occ.cpp +index 4808957..3f93834 100644 +--- a/libsrc/occ/python_occ.cpp ++++ b/libsrc/occ/python_occ.cpp +@@ -70,10 +70,9 @@ DLL_HEADER void ExportNgOCC(py::module &m) + + // suppress info messages from occ (like statistics on Transfer) + Message_Gravity aGravity = Message_Alarm; +- for (Message_SequenceOfPrinters::Iterator aPrinterIter (Message::DefaultMessenger()->Printers()); +- aPrinterIter.More(); aPrinterIter.Next()) ++ for (const auto& aPrinter : Message::DefaultMessenger()->Printers()) + { +- aPrinterIter.Value()->SetTraceLevel (aGravity); ++ aPrinter->SetTraceLevel (aGravity); + } + + ExportNgOCCBasic(m); +@@ -85,7 +84,11 @@ DLL_HEADER void ExportNgOCC(py::module &m) + try { + if(p) std::rethrow_exception(p); + } catch (const Standard_Failure& e) { ++#if OCC_VERSION_HEX < 0x080000 + exc((string(e.DynamicType()->Name()) + ": " + e.GetMessageString()).c_str()); ++#else ++ exc((string(e.ExceptionType()) + ": " + e.what()).c_str()); ++#endif + } + }); + +diff --git a/libsrc/occ/python_occ_shapes.cpp b/libsrc/occ/python_occ_shapes.cpp +index bd265ca..4c64735 100644 +--- a/libsrc/occ/python_occ_shapes.cpp ++++ b/libsrc/occ/python_occ_shapes.cpp +@@ -13,6 +13,16 @@ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdeprecated-declarations" + ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include + #include + #include + #include +@@ -76,6 +86,8 @@ + #include + #include + #include ++#include ++#include + + #pragma clang diagnostic pop + +@@ -2221,9 +2233,10 @@ tangents : Dict[int, gp_Vec2d] + + m.def("BSplineCurve", [](std::vector vpoles, int degree) { + // not yet working ???? +- TColgp_Array1OfPnt poles(0, vpoles.size()-1); +- TColStd_Array1OfReal knots(0, vpoles.size()+degree); +- TColStd_Array1OfInteger mult(0, vpoles.size()+degree); ++ // Avoid C2666 overload ambiguity in OCCT collection constructors. ++ TColgp_Array1OfPnt poles(0, static_cast(vpoles.size())-1); ++ TColStd_Array1OfReal knots(0, static_cast(vpoles.size())+degree); ++ TColStd_Array1OfInteger mult(0, static_cast(vpoles.size())+degree); + // int cnt = 0; + + for (int i = 0; i < vpoles.size(); i++) +@@ -2243,7 +2256,8 @@ tangents : Dict[int, gp_Vec2d] + }); + + m.def("BezierCurve", [](std::vector vpoles) { +- TColgp_Array1OfPnt poles(0, vpoles.size()-1); ++ // Avoid C2666 overload ambiguity in OCCT collection constructors. ++ TColgp_Array1OfPnt poles(0, static_cast(vpoles.size())-1); + + for (int i = 0; i < vpoles.size(); i++) + poles.SetValue(i, vpoles[i]); diff --git a/ports/netgen/portfile.cmake b/ports/netgen/portfile.cmake index da7b16fd9c..211c5f2aaf 100644 --- a/ports/netgen/portfile.cmake +++ b/ports/netgen/portfile.cmake @@ -12,7 +12,7 @@ vcpkg_from_github( cgns-scoped-enum.patch downstream-fixes.patch add_filesystem.patch - occ-78.patch + occt-compat.patch 142.diff cross-build.patch ) diff --git a/ports/netgen/vcpkg.json b/ports/netgen/vcpkg.json index 95760a98bb..8dd8f84aba 100644 --- a/ports/netgen/vcpkg.json +++ b/ports/netgen/vcpkg.json @@ -1,7 +1,7 @@ { "name": "netgen", "version": "6.2.2401", - "port-version": 3, + "port-version": 4, "description": "NETGEN is an automatic 3d tetrahedral mesh generator. It accepts input from constructive solid geometry (CSG) or boundary representation (BRep) from STL file format. The connection to a geometry kernel allows the handling of IGES and STEP files. NETGEN contains modules for mesh optimization and hierarchical mesh refinement.", "homepage": "https://ngsolve.org/", "license": "LGPL-2.1-or-later", diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index 4f8685ea03..86247fb4f3 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -947,18 +947,6 @@ nana:x64-linux=fail nanodbc:x64-linux=skip netcdf-cxx4:arm64-windows-static-md=fail netcdf-cxx4:x64-windows-static-md=fail -netgen:arm64-android=fail -netgen:arm64-osx=fail -netgen:arm64-windows-static-md=fail -netgen:arm64-windows=fail -netgen:x64-android=fail -netgen:x64-linux=fail -netgen:x64-windows-release=fail -netgen:x64-windows-release=fail -netgen:x64-windows-static-md=fail -netgen:x64-windows-static=fail -netgen:x64-windows-static=fail -netgen:x64-windows=fail nethost:arm64-linux=fail ngspice:x64-android=fail ngspice:x64-windows-static=fail diff --git a/versions/baseline.json b/versions/baseline.json index f5f9dcaadc..bd4794577a 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -7006,7 +7006,7 @@ }, "netgen": { "baseline": "6.2.2401", - "port-version": 3 + "port-version": 4 }, "nethost": { "baseline": "8.0.3", diff --git a/versions/n-/netgen.json b/versions/n-/netgen.json index e3a00fc6db..c10844b6c8 100644 --- a/versions/n-/netgen.json +++ b/versions/n-/netgen.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "075e59fc127c1f9b84b5c2fb85c7a9200a5ebc9c", + "version": "6.2.2401", + "port-version": 4 + }, { "git-tree": "9c444be4d2a61cb67f2052719d87e4c9f1550d14", "version": "6.2.2401",