From d1ea64b67235e4bb2897315c5f5248d6797e2a2a Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Feb 03 2020 22:30:10 +0000 Subject: Update to 6.2.1910 --- diff --git a/.gitignore b/.gitignore index 56c5721..891692f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /netgen-5.3.1.tar.gz /netgen-mesher-git-94fd57154f556450a04808b244eb8c83e7a95fb6.zip /netgen-mesher-6.2.1810.tar.gz +/netgen-mesher-6.2.1910.tar.gz diff --git a/0002-Rename-libraries-add-library-versions.patch b/0002-Rename-libraries-add-library-versions.patch index 14e2c0c..b8befcd 100644 --- a/0002-Rename-libraries-add-library-versions.patch +++ b/0002-Rename-libraries-add-library-versions.patch @@ -1,6 +1,6 @@ -diff -rupN netgen-6.2.1810/libsrc/csg/CMakeLists.txt netgen-6.2.1810-new/libsrc/csg/CMakeLists.txt ---- netgen-6.2.1810/libsrc/csg/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/csg/CMakeLists.txt 2019-07-01 16:19:33.792469963 +0200 +diff -rupN --no-dereference netgen-6.2.1910/libsrc/csg/CMakeLists.txt netgen-6.2.1910-new/libsrc/csg/CMakeLists.txt +--- netgen-6.2.1910/libsrc/csg/CMakeLists.txt 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/csg/CMakeLists.txt 2020-02-03 22:38:37.692668768 +0100 @@ -7,6 +7,10 @@ add_library(csg ${NG_LIB_TYPE} solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp zrefine.cpp python_csg.cpp splinesurface.cpp @@ -12,44 +12,29 @@ diff -rupN netgen-6.2.1810/libsrc/csg/CMakeLists.txt netgen-6.2.1810-new/libsrc/ if(APPLE) set_target_properties( csg PROPERTIES SUFFIX ".so") endif(APPLE) -@@ -20,6 +24,10 @@ endif(NOT WIN32) - +@@ -21,6 +25,10 @@ target_link_libraries(csg PUBLIC ngcore) if(USE_GUI) add_library(csgvis ${NG_LIB_TYPE} vscsg.cpp ) + target_link_libraries(csgvis PRIVATE netgen_python PUBLIC ngcore) + + set_target_properties(csgvis PROPERTIES OUTPUT_NAME "ngcsgvis") + set_target_properties(csgvis PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) + if(NOT WIN32) - target_link_libraries(csgvis csg visual) + target_link_libraries(csgvis PUBLIC csg visual) if(APPLE) -diff -rupN netgen-6.2.1810/libsrc/general/CMakeLists.txt netgen-6.2.1810-new/libsrc/general/CMakeLists.txt ---- netgen-6.2.1810/libsrc/general/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/general/CMakeLists.txt 2019-07-01 16:19:33.792469963 +0200 -@@ -6,6 +6,9 @@ add_library(gen OBJECT - mpi_interface.cpp gzstream.cpp - ) - -+set_target_properties(gen PROPERTIES OUTPUT_NAME "nggen") -+set_target_properties(gen PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) -+ - set_target_properties( gen PROPERTIES POSITION_INDEPENDENT_CODE ON ) - - install( FILES ngexception.hpp DESTINATION ${NG_INSTALL_DIR_INCLUDE} COMPONENT netgen_devel ) -diff -rupN netgen-6.2.1810/libsrc/geom2d/CMakeLists.txt netgen-6.2.1810-new/libsrc/geom2d/CMakeLists.txt ---- netgen-6.2.1810/libsrc/geom2d/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/geom2d/CMakeLists.txt 2019-07-01 16:19:33.793469956 +0200 -@@ -1,5 +1,9 @@ +diff -rupN --no-dereference netgen-6.2.1910/libsrc/geom2d/CMakeLists.txt netgen-6.2.1910-new/libsrc/geom2d/CMakeLists.txt +--- netgen-6.2.1910/libsrc/geom2d/CMakeLists.txt 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/geom2d/CMakeLists.txt 2020-02-03 22:38:37.692668768 +0100 +@@ -1,5 +1,7 @@ add_definitions(-DNGLIB_EXPORTS) - add_library(geom2d ${NG_LIB_TYPE} genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp python_geom2d.cpp ) -+ + add_library(geom2d ${NG_LIB_TYPE} genmesh2d.cpp geometry2d.cpp python_geom2d.cpp ) +set_target_properties(geom2d PROPERTIES OUTPUT_NAME "nggeom2d") +set_target_properties(geom2d PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) -+ if(APPLE) set_target_properties( geom2d PROPERTIES SUFFIX ".so") endif(APPLE) -@@ -11,6 +15,10 @@ endif(NOT WIN32) +@@ -11,6 +13,10 @@ endif(NOT WIN32) if(USE_GUI) add_library(geom2dvis ${NG_LIB_TYPE} vsgeom2d.cpp) @@ -60,49 +45,23 @@ diff -rupN netgen-6.2.1810/libsrc/geom2d/CMakeLists.txt netgen-6.2.1810-new/libs if(NOT WIN32) target_link_libraries(geom2dvis geom2d) install( TARGETS geom2dvis ${NG_INSTALL_DIR}) -diff -rupN netgen-6.2.1810/libsrc/gprim/CMakeLists.txt netgen-6.2.1810-new/libsrc/gprim/CMakeLists.txt ---- netgen-6.2.1810/libsrc/gprim/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/gprim/CMakeLists.txt 2019-07-01 16:19:33.793469956 +0200 -@@ -4,6 +4,9 @@ add_library(gprim OBJECT - geomtest3d.cpp transform3d.cpp spline.cpp splinegeometry.cpp - ) +diff -rupN --no-dereference netgen-6.2.1910/libsrc/interface/CMakeLists.txt netgen-6.2.1910-new/libsrc/interface/CMakeLists.txt +--- netgen-6.2.1910/libsrc/interface/CMakeLists.txt 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/interface/CMakeLists.txt 2020-02-03 22:38:37.692668768 +0100 +@@ -9,6 +9,9 @@ add_library(interface ${NG_LIB_TYPE} -+set_target_properties(gprim PROPERTIES OUTPUT_NAME "nggprim") -+set_target_properties(gprim PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) -+ - set_target_properties( gprim PROPERTIES POSITION_INDEPENDENT_CODE ON ) - - install(FILES -diff -rupN netgen-6.2.1810/libsrc/interface/CMakeLists.txt netgen-6.2.1810-new/libsrc/interface/CMakeLists.txt ---- netgen-6.2.1810/libsrc/interface/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/interface/CMakeLists.txt 2019-07-01 16:19:33.793469956 +0200 -@@ -7,6 +7,9 @@ add_library(interface ${NG_LIB_TYPE} - wuchemnitz.cpp writegmsh2.cpp writeOpenFOAM15x.cpp - ) + target_link_libraries(interface mesh csg geom2d stl visual) +set_target_properties(interface PROPERTIES OUTPUT_NAME "nginterface") +set_target_properties(interface PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) + if(NOT WIN32) - target_link_libraries(interface mesh csg geom2d) - if(USE_GUI) -diff -rupN netgen-6.2.1810/libsrc/linalg/CMakeLists.txt netgen-6.2.1810-new/libsrc/linalg/CMakeLists.txt ---- netgen-6.2.1810/libsrc/linalg/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/linalg/CMakeLists.txt 2019-07-01 16:19:33.793469956 +0200 -@@ -2,6 +2,9 @@ add_library( la OBJECT - densemat.cpp polynomial.cpp bfgs.cpp linopt.cpp linsearch.cpp - ) - -+set_target_properties(la PROPERTIES OUTPUT_NAME "ngla") -+set_target_properties(la PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) -+ - set_target_properties(la PROPERTIES POSITION_INDEPENDENT_CODE ON ) - - install(FILES -diff -rupN netgen-6.2.1810/libsrc/meshing/CMakeLists.txt netgen-6.2.1810-new/libsrc/meshing/CMakeLists.txt ---- netgen-6.2.1810/libsrc/meshing/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/meshing/CMakeLists.txt 2019-07-01 16:19:33.793469956 +0200 -@@ -25,6 +25,9 @@ add_library(mesh ${NG_LIB_TYPE} + install( TARGETS interface ${NG_INSTALL_DIR}) + endif(NOT WIN32) +diff -rupN --no-dereference netgen-6.2.1910/libsrc/meshing/CMakeLists.txt netgen-6.2.1910-new/libsrc/meshing/CMakeLists.txt +--- netgen-6.2.1910/libsrc/meshing/CMakeLists.txt 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/meshing/CMakeLists.txt 2020-02-03 22:38:37.692668768 +0100 +@@ -17,6 +17,9 @@ add_library(mesh ${NG_LIB_TYPE} ${mesh_object_libs} ) @@ -112,27 +71,25 @@ diff -rupN netgen-6.2.1810/libsrc/meshing/CMakeLists.txt netgen-6.2.1810-new/lib if(APPLE) set_target_properties( mesh PROPERTIES SUFFIX ".so") endif(APPLE) -diff -rupN netgen-6.2.1810/libsrc/occ/CMakeLists.txt netgen-6.2.1810-new/libsrc/occ/CMakeLists.txt ---- netgen-6.2.1810/libsrc/occ/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/occ/CMakeLists.txt 2019-07-01 16:19:33.793469956 +0200 -@@ -5,8 +5,14 @@ add_library(occ ${NG_LIB_TYPE} +diff -rupN --no-dereference netgen-6.2.1910/libsrc/occ/CMakeLists.txt netgen-6.2.1910-new/libsrc/occ/CMakeLists.txt +--- netgen-6.2.1910/libsrc/occ/CMakeLists.txt 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/occ/CMakeLists.txt 2020-02-03 22:38:37.692668768 +0100 +@@ -4,8 +4,12 @@ add_library(occ ${NG_LIB_TYPE} + Partition_Loop.cxx Partition_Loop2d.cxx Partition_Loop3d.cxx Partition_Spliter.cxx occconstruction.cpp occgenmesh.cpp occgeom.cpp occmeshsurf.cpp python_occ.cpp ) - +set_target_properties(occ PROPERTIES OUTPUT_NAME "ngocc") +set_target_properties(occ PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) -+ - add_library(occvis ${NG_LIB_TYPE} vsocc.cpp) + if(USE_GUI) + add_library(occvis ${NG_LIB_TYPE} vsocc.cpp) ++ set_target_properties(occvis PROPERTIES OUTPUT_NAME "ngoccvis") ++ set_target_properties(occvis PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) + endif(USE_GUI) -+set_target_properties(occvis PROPERTIES OUTPUT_NAME "ngoccvis") -+set_target_properties(occvis PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) -+ - if(NOT WIN32) - target_link_libraries( occ ${OCC_LIBRARIES} ${PYTHON_LIBRARIES}) - target_link_libraries( occvis occ ) -diff -rupN netgen-6.2.1810/libsrc/stlgeom/CMakeLists.txt netgen-6.2.1810-new/libsrc/stlgeom/CMakeLists.txt ---- netgen-6.2.1810/libsrc/stlgeom/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/stlgeom/CMakeLists.txt 2019-07-01 16:19:33.793469956 +0200 + target_link_libraries(occ PUBLIC ngcore PRIVATE netgen_python) +diff -rupN --no-dereference netgen-6.2.1910/libsrc/stlgeom/CMakeLists.txt netgen-6.2.1910-new/libsrc/stlgeom/CMakeLists.txt +--- netgen-6.2.1910/libsrc/stlgeom/CMakeLists.txt 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/stlgeom/CMakeLists.txt 2020-02-03 22:38:37.693668764 +0100 @@ -3,6 +3,10 @@ add_library(stl ${NG_LIB_TYPE} stlgeommesh.cpp stlline.cpp stltool.cpp stltopology.cpp python_stl.cpp ) @@ -142,38 +99,38 @@ diff -rupN netgen-6.2.1810/libsrc/stlgeom/CMakeLists.txt netgen-6.2.1810-new/lib +set_target_properties(stl PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) + if(NOT WIN32) - target_link_libraries( stl mesh ${PYTHON_LIBRARIES}) - target_link_libraries( stl ${PYTHON_LIBRARIES}) -@@ -13,6 +17,10 @@ if(USE_GUI) - add_library(stlvis ${NG_LIB_TYPE} - vsstl.cpp - ) + target_link_libraries( stl PUBLIC mesh ) + install( TARGETS stl ${NG_INSTALL_DIR}) +@@ -13,6 +17,10 @@ target_link_libraries( stl PUBLIC ngcore + if(USE_GUI) + add_library(stlvis ${NG_LIB_TYPE} vsstl.cpp) + target_link_libraries(stlvis PRIVATE netgen_python PUBLIC ngcore) + + set_target_properties(stlvis PROPERTIES OUTPUT_NAME "ngstlvis") + set_target_properties(stlvis PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) + if(NOT WIN32) - target_link_libraries( stlvis stl ) + target_link_libraries( stlvis PUBLIC stl ) install( TARGETS stlvis ${NG_INSTALL_DIR}) -diff -rupN netgen-6.2.1810/libsrc/visualization/CMakeLists.txt netgen-6.2.1810-new/libsrc/visualization/CMakeLists.txt ---- netgen-6.2.1810/libsrc/visualization/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/visualization/CMakeLists.txt 2019-07-01 16:19:33.795469942 +0200 -@@ -9,6 +9,9 @@ endif(USE_GUI) +diff -rupN --no-dereference netgen-6.2.1910/libsrc/visualization/CMakeLists.txt netgen-6.2.1910-new/libsrc/visualization/CMakeLists.txt +--- netgen-6.2.1910/libsrc/visualization/CMakeLists.txt 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/visualization/CMakeLists.txt 2020-02-03 22:38:37.693668764 +0100 +@@ -8,6 +8,9 @@ else(USE_GUI) + endif(USE_GUI) add_library(visual ${NG_LIB_TYPE} ${LIB_VISUAL_SOURCES}) - +set_target_properties(visual PROPERTIES OUTPUT_NAME "ngvisual") +set_target_properties(visual PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) + - if(NOT WIN32) - target_link_libraries( visual ${PYTHON_LIBRARIES} ${MPI_CXX_LIBRARIES} ${OPENGL_LIBRARIES} ) - install( TARGETS visual ${NG_INSTALL_DIR}) -diff -rupN netgen-6.2.1810/ng/CMakeLists.txt netgen-6.2.1810-new/ng/CMakeLists.txt ---- netgen-6.2.1810/ng/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/ng/CMakeLists.txt 2019-07-01 16:19:33.795469942 +0200 -@@ -47,6 +47,9 @@ if(USE_GUI) - set_target_properties( gui PROPERTIES OUTPUT_NAME libgui ) + + target_link_libraries( visual PUBLIC ngcore PRIVATE netgen_python ${MPI_CXX_LIBRARIES} ${OPENGL_LIBRARIES} ) + install( TARGETS visual ${NG_INSTALL_DIR}) +diff -rupN --no-dereference netgen-6.2.1910/ng/CMakeLists.txt netgen-6.2.1910-new/ng/CMakeLists.txt +--- netgen-6.2.1910/ng/CMakeLists.txt 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/ng/CMakeLists.txt 2020-02-03 22:38:37.693668764 +0100 +@@ -48,6 +48,9 @@ if(USE_GUI) endif(WIN32) + target_link_libraries( gui PRIVATE netgen_python ) + set_target_properties( gui PROPERTIES OUTPUT_NAME "nggui" ) + set_target_properties( gui PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR} ) @@ -181,9 +138,9 @@ diff -rupN netgen-6.2.1810/ng/CMakeLists.txt netgen-6.2.1810-new/ng/CMakeLists.t endif(USE_GUI) if(USE_PYTHON) -diff -rupN netgen-6.2.1810/ng/ng.tcl netgen-6.2.1810-new/ng/ng.tcl ---- netgen-6.2.1810/ng/ng.tcl 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/ng/ng.tcl 2019-07-01 16:33:37.718942823 +0200 +diff -rupN --no-dereference netgen-6.2.1910/ng/ng.tcl netgen-6.2.1910-new/ng/ng.tcl +--- netgen-6.2.1910/ng/ng.tcl 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/ng/ng.tcl 2020-02-03 22:38:37.693668764 +0100 @@ -2,7 +2,7 @@ catch {lappend auto_path $env(NETGENDIR) catch {lappend auto_path $env(NETGENDIR)/../lib } @@ -193,9 +150,9 @@ diff -rupN netgen-6.2.1810/ng/ng.tcl netgen-6.2.1810-new/ng/ng.tcl } set batchmode [Ng_GetCommandLineParameter batchmode] -diff -rupN netgen-6.2.1810/ng/onetcl.cpp netgen-6.2.1810-new/ng/onetcl.cpp ---- netgen-6.2.1810/ng/onetcl.cpp 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/ng/onetcl.cpp 2019-07-01 16:33:54.658899025 +0200 +diff -rupN --no-dereference netgen-6.2.1910/ng/onetcl.cpp netgen-6.2.1910-new/ng/onetcl.cpp +--- netgen-6.2.1910/ng/onetcl.cpp 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/ng/onetcl.cpp 2020-02-03 22:38:37.694668761 +0100 @@ -2,7 +2,7 @@ const char * ngscript[] = {"" ,"catch {lappend auto_path $env(NETGENDIR) }\n" ,"catch {lappend auto_path $env(NETGENDIR)/../lib }\n" @@ -205,9 +162,9 @@ diff -rupN netgen-6.2.1810/ng/onetcl.cpp netgen-6.2.1810-new/ng/onetcl.cpp ,"}\n" ,"set batchmode [Ng_GetCommandLineParameter batchmode]\n" ,"if {$batchmode==\"undefined\"} {\n" -diff -rupN netgen-6.2.1810/ng/Togl2.1/CMakeLists.txt netgen-6.2.1810-new/ng/Togl2.1/CMakeLists.txt ---- netgen-6.2.1810/ng/Togl2.1/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/ng/Togl2.1/CMakeLists.txt 2019-07-01 16:19:33.796469935 +0200 +diff -rupN --no-dereference netgen-6.2.1910/ng/Togl2.1/CMakeLists.txt netgen-6.2.1910-new/ng/Togl2.1/CMakeLists.txt +--- netgen-6.2.1910/ng/Togl2.1/CMakeLists.txt 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/ng/Togl2.1/CMakeLists.txt 2020-02-03 22:38:37.694668761 +0100 @@ -22,6 +22,9 @@ else(WIN32) add_library(togl togl.c toglProcAddr.c toglStubInit.c) @@ -218,20 +175,20 @@ diff -rupN netgen-6.2.1810/ng/Togl2.1/CMakeLists.txt netgen-6.2.1810-new/ng/Togl endif(WIN32) target_link_libraries(togl ${OPENGL_LIBRARIES}) -diff -rupN netgen-6.2.1810/nglib/CMakeLists.txt netgen-6.2.1810-new/nglib/CMakeLists.txt ---- netgen-6.2.1810/nglib/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/nglib/CMakeLists.txt 2019-07-01 16:19:33.796469935 +0200 -@@ -25,6 +25,7 @@ if(WIN32) +diff -rupN --no-dereference netgen-6.2.1910/nglib/CMakeLists.txt netgen-6.2.1910-new/nglib/CMakeLists.txt +--- netgen-6.2.1910/nglib/CMakeLists.txt 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/nglib/CMakeLists.txt 2020-02-03 22:38:37.694668761 +0100 +@@ -21,6 +21,7 @@ if(WIN32) endif(WIN32) add_library(nglib SHARED nglib.cpp ${nglib_objects}) +set_target_properties(nglib PROPERTIES VERSION ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}) if(NOT WIN32) - target_link_libraries( nglib PUBLIC mesh stl interface geom2d csg stl visual) + target_link_libraries( nglib PUBLIC mesh interface geom2d csg stl visual) if(USE_GUI) -diff -rupN netgen-6.2.1810/python/gui.py netgen-6.2.1810-new/python/gui.py ---- netgen-6.2.1810/python/gui.py 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/python/gui.py 2019-07-01 16:33:23.571979826 +0200 +diff -rupN --no-dereference netgen-6.2.1910/python/gui.py netgen-6.2.1910-new/python/gui.py +--- netgen-6.2.1910/python/gui.py 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/python/gui.py 2020-02-03 22:38:37.695668757 +0100 @@ -8,7 +8,7 @@ def StartGUI(): win.tk.eval('lappend ::auto_path ' + netgen._netgen_lib_dir) win.tk.eval('lappend ::auto_path ' + netgen._netgen_bin_dir) diff --git a/0004-Make-some-includes-relative.patch b/0004-Make-some-includes-relative.patch index 6488300..a62add7 100644 --- a/0004-Make-some-includes-relative.patch +++ b/0004-Make-some-includes-relative.patch @@ -1,18 +1,18 @@ -diff -rupN netgen-6.2.1810/libsrc/include/meshing.hpp netgen-6.2.1810-new/libsrc/include/meshing.hpp ---- netgen-6.2.1810/libsrc/include/meshing.hpp 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/include/meshing.hpp 2019-07-01 15:46:38.818869355 +0200 +diff -rupN --no-dereference netgen-6.2.1910/libsrc/include/meshing.hpp netgen-6.2.1910-new/libsrc/include/meshing.hpp +--- netgen-6.2.1910/libsrc/include/meshing.hpp 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/include/meshing.hpp 2020-02-03 22:38:37.743668573 +0100 @@ -1 +1 @@ -#include <../meshing/meshing.hpp> +#include "../meshing/meshing.hpp" -diff -rupN netgen-6.2.1810/libsrc/include/myadt.hpp netgen-6.2.1810-new/libsrc/include/myadt.hpp ---- netgen-6.2.1810/libsrc/include/myadt.hpp 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/include/myadt.hpp 2019-07-01 15:46:38.819869347 +0200 +diff -rupN --no-dereference netgen-6.2.1910/libsrc/include/myadt.hpp netgen-6.2.1910-new/libsrc/include/myadt.hpp +--- netgen-6.2.1910/libsrc/include/myadt.hpp 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/include/myadt.hpp 2020-02-03 22:38:37.743668573 +0100 @@ -1 +1 @@ -#include <../general/myadt.hpp> +#include "../general/myadt.hpp" -diff -rupN netgen-6.2.1810/libsrc/include/stlgeom.hpp netgen-6.2.1810-new/libsrc/include/stlgeom.hpp ---- netgen-6.2.1810/libsrc/include/stlgeom.hpp 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/include/stlgeom.hpp 2019-07-01 15:46:38.819869347 +0200 +diff -rupN --no-dereference netgen-6.2.1910/libsrc/include/stlgeom.hpp netgen-6.2.1910-new/libsrc/include/stlgeom.hpp +--- netgen-6.2.1910/libsrc/include/stlgeom.hpp 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/include/stlgeom.hpp 2020-02-03 22:38:37.743668573 +0100 @@ -1 +1 @@ -#include <../stlgeom/stlgeom.hpp> +#include "../stlgeom/stlgeom.hpp" diff --git a/0009-immintrin.patch b/0009-immintrin.patch index 73f1933..16cae38 100644 --- a/0009-immintrin.patch +++ b/0009-immintrin.patch @@ -1,6 +1,103 @@ -diff -rupN netgen-6.2.1810/libsrc/general/ngsimd.hpp netgen-6.2.1810-new/libsrc/general/ngsimd.hpp ---- netgen-6.2.1810/libsrc/general/ngsimd.hpp 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/libsrc/general/ngsimd.hpp 2019-07-01 15:46:38.858869037 +0200 +diff -rupN --no-dereference netgen-6.2.1910/libsrc/core/taskmanager.cpp netgen-6.2.1910-new/libsrc/core/taskmanager.cpp +--- netgen-6.2.1910/libsrc/core/taskmanager.cpp 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/core/taskmanager.cpp 2020-02-03 22:38:37.783668419 +0100 +@@ -212,14 +212,22 @@ namespace ngcore + ; + } + ++#if defined(__i386__) || defined(__x86_64__) + static size_t calibrate_init_tsc = __rdtsc(); ++#else ++ static size_t calibrate_init_tsc = clock(); ++#endif + typedef std::chrono::system_clock TClock; + static TClock::time_point calibrate_init_clock = TClock::now(); + + void TaskManager :: StopWorkers() + { + done = true; ++#if defined(__i386__) || defined(__x86_64__) + double delta_tsc = __rdtsc()-calibrate_init_tsc; ++#else ++ double delta_tsc = clock()-calibrate_init_tsc; ++#endif + double delta_sec = std::chrono::duration(TClock::now()-calibrate_init_clock).count(); + double frequ = (delta_sec != 0) ? delta_tsc/delta_sec : 2.7e9; + +@@ -411,8 +419,10 @@ namespace ngcore + for (int j = 0; j < num_nodes; j++) + if (workers_on_node[j]) + { ++#if defined(__i386__) || defined(__x86_64__) + while (complete[j] != jobnr) +- _mm_pause(); ++ _mm_pause();; ++#endif + } + + func = nullptr; +diff -rupN --no-dereference netgen-6.2.1910/libsrc/core/utils.cpp netgen-6.2.1910-new/libsrc/core/utils.cpp +--- netgen-6.2.1910/libsrc/core/utils.cpp 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/core/utils.cpp 2020-02-03 22:38:37.784668415 +0100 +@@ -35,6 +35,7 @@ namespace ngcore + + double seconds_per_tick = [] () noexcept + { ++#if defined(__i386__) || defined(__x86_64__) + auto tick_start = GetTimeCounter(); + double tstart = WallTime(); + double tend = WallTime()+0.001; +@@ -46,6 +47,9 @@ namespace ngcore + tend = WallTime(); + + return (tend-tstart)/static_cast(tick_end-tick_start); ++#else ++ return 1. / CLOCKS_PER_SEC; ++#endif + }(); + + const std::chrono::time_point wall_time_start = TClock::now(); +diff -rupN --no-dereference netgen-6.2.1910/libsrc/core/utils.hpp netgen-6.2.1910-new/libsrc/core/utils.hpp +--- netgen-6.2.1910/libsrc/core/utils.hpp 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/core/utils.hpp 2020-02-03 22:38:37.784668415 +0100 +@@ -11,7 +11,11 @@ + #ifdef WIN32 + #include // for __rdtsc() CPU time step counter + #else +-#include // for __rdtsc() CPU time step counter ++#if defined(__i386__) || defined(__x86_64__) ++# include // for __rdtsc() CPU time step counter ++#else ++# include ++#endif + #endif // WIN32 + + #include "ngcore_api.hpp" // for NGCORE_API +@@ -48,7 +52,11 @@ namespace ngcore + + inline TTimePoint GetTimeCounter() noexcept + { ++#if defined(__i386__) || defined(__x86_64__) + return TTimePoint(__rdtsc()); ++#else ++ return TTimePoint(clock()); ++#endif + } + + template +@@ -157,7 +165,9 @@ namespace ngcore + while (!m.compare_exchange_weak(should, true)) + { + should = false; ++#if defined(__i386__) || defined(__x86_64__) + _mm_pause(); ++#endif + } + } + void unlock() +diff -rupN --no-dereference netgen-6.2.1910/libsrc/general/ngsimd.hpp netgen-6.2.1910-new/libsrc/general/ngsimd.hpp +--- netgen-6.2.1910/libsrc/general/ngsimd.hpp 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/general/ngsimd.hpp 2020-02-03 22:38:37.784668415 +0100 @@ -6,7 +6,9 @@ /* Date: 25. Mar. 16 */ /**************************************************************************/ diff --git a/0010-rename-netgen-binary.patch b/0010-rename-netgen-binary.patch index b0be2ea..a6e9f8d 100644 --- a/0010-rename-netgen-binary.patch +++ b/0010-rename-netgen-binary.patch @@ -1,6 +1,6 @@ -diff -rupN netgen-6.2.1810/ng/CMakeLists.txt netgen-6.2.1810-new/ng/CMakeLists.txt ---- netgen-6.2.1810/ng/CMakeLists.txt 2019-07-01 15:46:38.816869371 +0200 -+++ netgen-6.2.1810-new/ng/CMakeLists.txt 2019-07-01 15:46:38.895868743 +0200 +diff -rupN --no-dereference netgen-6.2.1910/ng/CMakeLists.txt netgen-6.2.1910-new/ng/CMakeLists.txt +--- netgen-6.2.1910/ng/CMakeLists.txt 2020-02-03 22:38:37.739668588 +0100 ++++ netgen-6.2.1910-new/ng/CMakeLists.txt 2020-02-03 22:38:37.828668247 +0100 @@ -23,6 +23,7 @@ if(USE_GUI) ) diff --git a/0011-system-pybind11.patch b/0011-system-pybind11.patch index 91cdd51..f79c392 100644 --- a/0011-system-pybind11.patch +++ b/0011-system-pybind11.patch @@ -1,6 +1,6 @@ -diff -rupN netgen-6.2.1810/cmake/SuperBuild.cmake netgen-6.2.1810-new/cmake/SuperBuild.cmake ---- netgen-6.2.1810/cmake/SuperBuild.cmake 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/cmake/SuperBuild.cmake 2019-07-01 15:46:38.929868473 +0200 +diff -rupN --no-dereference netgen-6.2.1910/cmake/SuperBuild.cmake netgen-6.2.1910-new/cmake/SuperBuild.cmake +--- netgen-6.2.1910/cmake/SuperBuild.cmake 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/cmake/SuperBuild.cmake 2020-02-03 22:38:37.869668089 +0100 @@ -50,7 +50,7 @@ endif(NOT WIN32) ####################################################################### @@ -10,12 +10,21 @@ diff -rupN netgen-6.2.1810/cmake/SuperBuild.cmake netgen-6.2.1810-new/cmake/Supe set(NG_INSTALL_PYBIND ON) if( NOT PYBIND_INCLUDE_DIR ) # if the pybind submodule is missing, try to initialize and update all submodules -diff -rupN netgen-6.2.1810/CMakeLists.txt netgen-6.2.1810-new/CMakeLists.txt ---- netgen-6.2.1810/CMakeLists.txt 2018-11-23 10:52:27.000000000 +0100 -+++ netgen-6.2.1810-new/CMakeLists.txt 2019-07-01 15:46:38.929868473 +0200 -@@ -267,10 +267,6 @@ if (USE_PYTHON) - include_directories(${PYBIND_INCLUDE_DIR}) - include_directories(${PYTHON_INCLUDE_DIRS}) +diff -rupN --no-dereference netgen-6.2.1910/CMakeLists.txt netgen-6.2.1910-new/CMakeLists.txt +--- netgen-6.2.1910/CMakeLists.txt 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/CMakeLists.txt 2020-02-03 22:38:37.870668086 +0100 +@@ -278,7 +278,7 @@ else() + endif() + + if (USE_PYTHON) +- add_subdirectory(external_dependencies/pybind11) ++ include(cmake/pybind11Tools.cmake) + find_path(PYBIND_INCLUDE_DIR pybind11/pybind11.h HINTS ${PYTHON_INCLUDE_DIR}) + if( PYBIND_INCLUDE_DIR ) + message(STATUS "Found Pybind11: ${PYBIND_INCLUDE_DIR}") +@@ -292,10 +292,6 @@ if (USE_PYTHON) + target_link_libraries(netgen_python INTERFACE ${PYTHON_LIBRARIES}) + endif() - if(NG_INSTALL_PYBIND) - install(DIRECTORY ${PYBIND_INCLUDE_DIR}/pybind11 DESTINATION ${NG_INSTALL_DIR_INCLUDE} COMPONENT netgen_devel) diff --git a/0012-cmake_fixes.patch b/0012-cmake_fixes.patch new file mode 100644 index 0000000..7086a12 --- /dev/null +++ b/0012-cmake_fixes.patch @@ -0,0 +1,26 @@ +diff -rupN --no-dereference netgen-6.2.1910/CMakeLists.txt netgen-6.2.1910-new/CMakeLists.txt +--- netgen-6.2.1910/CMakeLists.txt 2020-02-03 22:38:37.908667940 +0100 ++++ netgen-6.2.1910-new/CMakeLists.txt 2020-02-03 22:38:37.948667786 +0100 +@@ -52,14 +52,14 @@ if(INSTALL_DIR) + set(INSTALL_DIR_DEFAULT ${INSTALL_DIR}) + endif(INSTALL_DIR) + +-if(UNIX) +- message("Checking for write permissions in install directory...") +- execute_process(COMMAND mkdir -p ${CMAKE_INSTALL_PREFIX}) +- execute_process(COMMAND test -w ${CMAKE_INSTALL_PREFIX} RESULT_VARIABLE res) +- if(res) +- message(WARNING "No write access at install directory, please set correct permissions") +- endif() +-endif(UNIX) ++#if(UNIX) ++# message("Checking for write permissions in install directory...") ++# execute_process(COMMAND mkdir -p ${CMAKE_INSTALL_PREFIX}) ++# execute_process(COMMAND test -w ${CMAKE_INSTALL_PREFIX} RESULT_VARIABLE res) ++# if(res) ++# message(WARNING "No write access at install directory, please set correct permissions") ++# endif() ++#endif(UNIX) + + if (USE_SUPERBUILD) + project (SUPERBUILD) diff --git a/FindPythonLibsNew.cmake b/FindPythonLibsNew.cmake new file mode 100644 index 0000000..e660c5f --- /dev/null +++ b/FindPythonLibsNew.cmake @@ -0,0 +1,202 @@ +# - Find python libraries +# This module finds the libraries corresponding to the Python interpreter +# FindPythonInterp provides. +# This code sets the following variables: +# +# PYTHONLIBS_FOUND - have the Python libs been found +# PYTHON_PREFIX - path to the Python installation +# PYTHON_LIBRARIES - path to the python library +# PYTHON_INCLUDE_DIRS - path to where Python.h is found +# PYTHON_MODULE_EXTENSION - lib extension, e.g. '.so' or '.pyd' +# PYTHON_MODULE_PREFIX - lib name prefix: usually an empty string +# PYTHON_SITE_PACKAGES - path to installation site-packages +# PYTHON_IS_DEBUG - whether the Python interpreter is a debug build +# +# Thanks to talljimbo for the patch adding the 'LDVERSION' config +# variable usage. + +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# Copyright 2012 Continuum Analytics, Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the names of Kitware, Inc., the Insight Software Consortium, +# nor the names of their contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#============================================================================= + +# Checking for the extension makes sure that `LibsNew` was found and not just `Libs`. +if(PYTHONLIBS_FOUND AND PYTHON_MODULE_EXTENSION) + return() +endif() + +# Use the Python interpreter to find the libs. +if(PythonLibsNew_FIND_REQUIRED) + find_package(PythonInterp ${PythonLibsNew_FIND_VERSION} REQUIRED) +else() + find_package(PythonInterp ${PythonLibsNew_FIND_VERSION}) +endif() + +if(NOT PYTHONINTERP_FOUND) + set(PYTHONLIBS_FOUND FALSE) + set(PythonLibsNew_FOUND FALSE) + return() +endif() + +# According to http://stackoverflow.com/questions/646518/python-how-to-detect-debug-interpreter +# testing whether sys has the gettotalrefcount function is a reliable, cross-platform +# way to detect a CPython debug interpreter. +# +# The library suffix is from the config var LDVERSION sometimes, otherwise +# VERSION. VERSION will typically be like "2.7" on unix, and "27" on windows. +execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" + "from distutils import sysconfig as s;import sys;import struct; +print('.'.join(str(v) for v in sys.version_info)); +print(sys.prefix); +print(s.get_python_inc(plat_specific=True)); +print(s.get_python_lib(plat_specific=True)); +print(s.get_config_var('SO')); +print(hasattr(sys, 'gettotalrefcount')+0); +print(struct.calcsize('@P')); +print(s.get_config_var('LDVERSION') or s.get_config_var('VERSION')); +print(s.get_config_var('LIBDIR') or ''); +print(s.get_config_var('MULTIARCH') or ''); +" + RESULT_VARIABLE _PYTHON_SUCCESS + OUTPUT_VARIABLE _PYTHON_VALUES + ERROR_VARIABLE _PYTHON_ERROR_VALUE) + +if(NOT _PYTHON_SUCCESS MATCHES 0) + if(PythonLibsNew_FIND_REQUIRED) + message(FATAL_ERROR + "Python config failure:\n${_PYTHON_ERROR_VALUE}") + endif() + set(PYTHONLIBS_FOUND FALSE) + set(PythonLibsNew_FOUND FALSE) + return() +endif() + +# Convert the process output into a list +if(WIN32) + string(REGEX REPLACE "\\\\" "/" _PYTHON_VALUES ${_PYTHON_VALUES}) +endif() +string(REGEX REPLACE ";" "\\\\;" _PYTHON_VALUES ${_PYTHON_VALUES}) +string(REGEX REPLACE "\n" ";" _PYTHON_VALUES ${_PYTHON_VALUES}) +list(GET _PYTHON_VALUES 0 _PYTHON_VERSION_LIST) +list(GET _PYTHON_VALUES 1 PYTHON_PREFIX) +list(GET _PYTHON_VALUES 2 PYTHON_INCLUDE_DIR) +list(GET _PYTHON_VALUES 3 PYTHON_SITE_PACKAGES) +list(GET _PYTHON_VALUES 4 PYTHON_MODULE_EXTENSION) +list(GET _PYTHON_VALUES 5 PYTHON_IS_DEBUG) +list(GET _PYTHON_VALUES 6 PYTHON_SIZEOF_VOID_P) +list(GET _PYTHON_VALUES 7 PYTHON_LIBRARY_SUFFIX) +list(GET _PYTHON_VALUES 8 PYTHON_LIBDIR) +list(GET _PYTHON_VALUES 9 PYTHON_MULTIARCH) + +# Make sure the Python has the same pointer-size as the chosen compiler +# Skip if CMAKE_SIZEOF_VOID_P is not defined +if(CMAKE_SIZEOF_VOID_P AND (NOT "${PYTHON_SIZEOF_VOID_P}" STREQUAL "${CMAKE_SIZEOF_VOID_P}")) + if(PythonLibsNew_FIND_REQUIRED) + math(EXPR _PYTHON_BITS "${PYTHON_SIZEOF_VOID_P} * 8") + math(EXPR _CMAKE_BITS "${CMAKE_SIZEOF_VOID_P} * 8") + message(FATAL_ERROR + "Python config failure: Python is ${_PYTHON_BITS}-bit, " + "chosen compiler is ${_CMAKE_BITS}-bit") + endif() + set(PYTHONLIBS_FOUND FALSE) + set(PythonLibsNew_FOUND FALSE) + return() +endif() + +# The built-in FindPython didn't always give the version numbers +string(REGEX REPLACE "\\." ";" _PYTHON_VERSION_LIST ${_PYTHON_VERSION_LIST}) +list(GET _PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR) +list(GET _PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR) +list(GET _PYTHON_VERSION_LIST 2 PYTHON_VERSION_PATCH) + +# Make sure all directory separators are '/' +string(REGEX REPLACE "\\\\" "/" PYTHON_PREFIX ${PYTHON_PREFIX}) +string(REGEX REPLACE "\\\\" "/" PYTHON_INCLUDE_DIR ${PYTHON_INCLUDE_DIR}) +string(REGEX REPLACE "\\\\" "/" PYTHON_SITE_PACKAGES ${PYTHON_SITE_PACKAGES}) + +if(CMAKE_HOST_WIN32 AND NOT (MSYS OR MINGW)) + set(PYTHON_LIBRARY + "${PYTHON_PREFIX}/libs/Python${PYTHON_LIBRARY_SUFFIX}.lib") + + # when run in a venv, PYTHON_PREFIX points to it. But the libraries remain in the + # original python installation. They may be found relative to PYTHON_INCLUDE_DIR. + if(NOT EXISTS "${PYTHON_LIBRARY}") + get_filename_component(_PYTHON_ROOT ${PYTHON_INCLUDE_DIR} DIRECTORY) + set(PYTHON_LIBRARY + "${_PYTHON_ROOT}/libs/Python${PYTHON_LIBRARY_SUFFIX}.lib") + endif() + + # raise an error if the python libs are still not found. + if(NOT EXISTS "${PYTHON_LIBRARY}") + message(FATAL_ERROR "Python libraries not found") + endif() + +else() + if(PYTHON_MULTIARCH) + set(_PYTHON_LIBS_SEARCH "${PYTHON_LIBDIR}/${PYTHON_MULTIARCH}" "${PYTHON_LIBDIR}") + else() + set(_PYTHON_LIBS_SEARCH "${PYTHON_LIBDIR}") + endif() + #message(STATUS "Searching for Python libs in ${_PYTHON_LIBS_SEARCH}") + # Probably this needs to be more involved. It would be nice if the config + # information the python interpreter itself gave us were more complete. + find_library(PYTHON_LIBRARY + NAMES "python${PYTHON_LIBRARY_SUFFIX}" + PATHS ${_PYTHON_LIBS_SEARCH} + NO_DEFAULT_PATH) + + # If all else fails, just set the name/version and let the linker figure out the path. + if(NOT PYTHON_LIBRARY) + set(PYTHON_LIBRARY python${PYTHON_LIBRARY_SUFFIX}) + endif() +endif() + +MARK_AS_ADVANCED( + PYTHON_LIBRARY + PYTHON_INCLUDE_DIR +) + +# We use PYTHON_INCLUDE_DIR, PYTHON_LIBRARY and PYTHON_DEBUG_LIBRARY for the +# cache entries because they are meant to specify the location of a single +# library. We now set the variables listed by the documentation for this +# module. +SET(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}") +SET(PYTHON_LIBRARIES "${PYTHON_LIBRARY}") +SET(PYTHON_DEBUG_LIBRARIES "${PYTHON_DEBUG_LIBRARY}") + +find_package_message(PYTHON + "Found PythonLibs: ${PYTHON_LIBRARY}" + "${PYTHON_EXECUTABLE}${PYTHON_VERSION}") + +set(PYTHONLIBS_FOUND TRUE) +set(PythonLibsNew_FOUND TRUE) diff --git a/netgen-mesher.spec b/netgen-mesher.spec index b79135e..4925e1a 100644 --- a/netgen-mesher.spec +++ b/netgen-mesher.spec @@ -14,9 +14,11 @@ %global build_mpich 1 %endif +%global build_openmpi 1 + Name: netgen-mesher -Version: 6.2.1810 -Release: 5%{?dist} +Version: 6.2.1910 +Release: 1%{?dist} Summary: Automatic mesh generation tool License: LGPLv2 @@ -24,12 +26,15 @@ URL: https://github.com/NGSolve/netgen Source0: https://github.com/NGSolve/netgen/archive/v%{version}/%{name}-%{version}.tar.gz Source1: netgen-mesher.png Source2: netgen-mesher.desktop +Source99: https://raw.githubusercontent.com/NGSolve/pybind11/7ec2ddfc95f65d1e986d359466a6c254aa514ef3/tools/pybind11Tools.cmake +Source100: https://raw.githubusercontent.com/NGSolve/pybind11/7ec2ddfc95f65d1e986d359466a6c254aa514ef3/tools/FindPythonLibsNew.cmake # Rename shared libaries (the original names are often way too generic), add library version Patch1: 0002-Rename-libraries-add-library-versions.patch # Make some includes relative (needed for when headers are in -private subpackage) Patch2: 0004-Make-some-includes-relative.patch # Only include immintrin.h on x86 arches +# Fall back to clock() instead of rdtsc on non x86 arches Patch3: 0009-immintrin.patch # Rename binary in cmake so that exported modules work correctly Patch4: 0010-rename-netgen-binary.patch @@ -37,22 +42,23 @@ Patch4: 0010-rename-netgen-binary.patch Patch5: 0011-system-pybind11.patch # Workaround "CMake Error: install(EXPORT "netgen-targets" ...) includes target "gui" which requires target "togl" that is not in the export set." Patch6: netgen_install-togl.patch +# Project checks for ability to write to the install location which breaks DESTDIR +Patch7: 0012-cmake_fixes.patch +# Fix function redefinition due to sizet being equal to unsigned int on non 64bit arches +Patch8: netgen_sizet.patch + BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: tk-devel -BuildRequires: OCE-devel +BuildRequires: opencascade-devel BuildRequires: libjpeg-turbo-devel BuildRequires: metis-devel BuildRequires: mesa-libGLU-devel BuildRequires: libXmu-devel BuildRequires: desktop-file-utils BuildRequires: dos2unix -%if %{build_mpich} -BuildRequires: mpich-devel -%endif -BuildRequires: openmpi-devel BuildRequires: python3-devel BuildRequires: pybind11-devel @@ -110,8 +116,10 @@ Python3 interface for netgen. ############################################################################### +%if %{build_openmpi} %package openmpi Summary: Netgen compiled against openmpi +BuildRequires: openmpi-devel # Require explicitly for dir ownership and to guarantee the pickup of the right runtime Requires: %{name}-common = %{version}-%{release} Requires: %{name}-openmpi-libs%{?_isa} = %{version}-%{release} @@ -142,11 +150,14 @@ Requires: %{name}-openmpi-libs%{?_isa} = %{version}-%{release} %description -n python3-%{name}-openmpi Python3 interface for netgen compiled against openmpi. +%endif + ############################################################################### %if %{build_mpich} %package mpich Summary: Netgen compiled against mpich +BuildRequires: mpich-devel # Require explicitly for dir ownership and to guarantee the pickup of the right runtime Requires: %{name}-common = %{version}-%{release} Requires: %{name}-mpich-libs%{?_isa} = %{version}-%{release} @@ -184,17 +195,22 @@ Python3 interface for netgen compiled against mpich. %prep %autosetup -p1 -n netgen-%{version} +# Pull in minimal cmake files from NGSolv pybind11 project to make this one happy. +install -pm 0744 %{SOURCE99} cmake/ +install -pm 0744 %{SOURCE100} cmake/cmake_modules/ + %build ### serial version ### mkdir serial (cd serial -%cmake -DINSTALL_DIR=%{_prefix} \ +%cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DNG_INSTALL_SUFFIX=%{name} \ -DUSE_NATIVE_ARCH=OFF \ -DNG_INSTALL_DIR_INCLUDE=%{_includedir}/%{name} \ -DNG_INSTALL_DIR_LIB=%{_libdir} \ -DNG_INSTALL_DIR_CMAKE=%{_libdir}/cmake/%{name} \ + -DNG_INSTALL_DIR_PYTHON=%{python3_sitearch}/%{name} \ -DUSE_JPEG=1 -DUSE_OCC=1 \ -DOpenGL_GL_PREFERENCE=GLVND \ .. @@ -202,23 +218,25 @@ mkdir serial ) ### openmpi version ### +%if %{build_openmpi} %{_openmpi_load} export CXX=mpicxx mkdir openmpi (cd openmpi -%cmake -DINSTALL_DIR=%{_prefix} \ +%cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DNG_INSTALL_SUFFIX=%{name} \ -DUSE_NATIVE_ARCH=OFF \ -DNG_INSTALL_DIR_INCLUDE=%{_includedir}/openmpi/%{name} \ -DNG_INSTALL_DIR_BIN=%{_libdir}/openmpi/bin/ \ -DNG_INSTALL_DIR_LIB=%{_libdir}/openmpi/lib/ \ -DNG_INSTALL_DIR_CMAKE=%{_libdir}/openmpi/lib/cmake/%{name} \ - -DNG_INSTALL_DIR_PYTHON=%{_libdir}/openmpi/python%{python3_version}/site-packages \ + -DNG_INSTALL_DIR_PYTHON=%{_libdir}/openmpi/python%{python3_version}/site-packages/%{name} \ -DUSE_JPEG=1 -DUSE_OCC=1 -DUSE_MPI=1 \ .. %make_build ) %{_openmpi_unload} +%endif ### mpich version ### %if %{build_mpich} @@ -226,14 +244,14 @@ mkdir openmpi export CXX=mpicxx mkdir mpich (cd mpich -%cmake -DINSTALL_DIR=%{_prefix} \ +%cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DNG_INSTALL_SUFFIX=%{name} \ -DUSE_NATIVE_ARCH=OFF \ -DNG_INSTALL_DIR_INCLUDE=%{_includedir}/mpich/%{name} \ -DNG_INSTALL_DIR_BIN=%{_libdir}/mpich/bin/ \ -DNG_INSTALL_DIR_LIB=%{_libdir}/mpich/lib/ \ -DNG_INSTALL_DIR_CMAKE=%{_libdir}/mpich/lib/cmake/%{name} \ - -DNG_INSTALL_DIR_PYTHON=%{_libdir}/mpich/python%{python3_version}/site-packages \ + -DNG_INSTALL_DIR_PYTHON=%{_libdir}/mpich/python%{python3_version}/site-packages/%{name} \ -DUSE_JPEG=1 -DUSE_OCC=1 -DUSE_MPI=1 \ .. %make_build @@ -261,22 +279,18 @@ EOF\ %{nil} ### openmpi version ### +%if %{build_openmpi} %{_openmpi_load} %make_install -C openmpi %writepkgconfig -# Avoid conflicts with netgen, remove data files (are correctly installed below) -# rm -f %{buildroot}/$MPI_BIN/*.tcl -# rm -f %{buildroot}/$MPI_BIN/*.ocf %{_openmpi_unload} +%endif ### mpich version ### %if %{build_mpich} %{_mpich_load} %make_install -C mpich %writepkgconfig -# Avoid conflicts with netgen, remove data files (are correctly installed below) -# rm -f %{buildroot}/$MPI_BIN/*.tcl -# rm -f %{buildroot}/$MPI_BIN/*.ocf %{_mpich_unload} %endif @@ -285,9 +299,6 @@ EOF\ export MPI_LIB=%{_libdir} export MPI_INCLUDE=%{_includedir} %writepkgconfig -# move data files to correct place -# mv %{buildroot}%{_bindir}/*.tcl %{buildroot}%{_bindir}/*.ocf %{buildroot}%{_datadir}/%{name} -# chmod -x %{buildroot}%{_datadir}/%{name}/*.tcl %{buildroot}%{_datadir}/%{name}/*.ocf # Install icon and desktop file install -Dpm 0644 %SOURCE1 %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/%{name}.png @@ -342,6 +353,7 @@ install -Dpm 0644 nglib/nglib.h %{buildroot}%{_includedir}/%{name}/nglib.h %files -n python3-%{name} %{python3_sitearch}/%{name}/ +%if %{build_openmpi} %files openmpi %{_libdir}/openmpi/bin/* @@ -356,6 +368,7 @@ install -Dpm 0644 nglib/nglib.h %{buildroot}%{_includedir}/%{name}/nglib.h %files -n python3-%{name}-openmpi %{_libdir}/openmpi/python%{python3_version}/site-packages/%{name}/ +%endif %if %{build_mpich} %files mpich @@ -376,9 +389,13 @@ install -Dpm 0644 nglib/nglib.h %{buildroot}%{_includedir}/%{name}/nglib.h %changelog +* Mon Feb 03 2020 Sandro Mani - 6.2.1910-1 +- Update to 6.2.1910 + * Wed Jan 29 2020 Fedora Release Engineering - 6.2.1810-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Thu Oct 03 2019 Miro HronĨok - 6.2.1810-4 - Rebuilt for Python 3.8.0rc1 (#1748018) diff --git a/netgen_install-togl.patch b/netgen_install-togl.patch index 39e8dc8..00513ec 100644 --- a/netgen_install-togl.patch +++ b/netgen_install-togl.patch @@ -1,6 +1,6 @@ -diff -rupN netgen-6.2.1810/ng/Togl2.1/CMakeLists.txt netgen-6.2.1810-new/ng/Togl2.1/CMakeLists.txt ---- netgen-6.2.1810/ng/Togl2.1/CMakeLists.txt 2019-07-01 15:46:38.817869363 +0200 -+++ netgen-6.2.1810-new/ng/Togl2.1/CMakeLists.txt 2019-07-01 15:47:12.293612121 +0200 +diff -rupN --no-dereference netgen-6.2.1910/ng/Togl2.1/CMakeLists.txt netgen-6.2.1910-new/ng/Togl2.1/CMakeLists.txt +--- netgen-6.2.1910/ng/Togl2.1/CMakeLists.txt 2020-02-03 22:38:37.740668584 +0100 ++++ netgen-6.2.1910-new/ng/Togl2.1/CMakeLists.txt 2020-02-03 22:38:37.910667932 +0100 @@ -25,6 +25,8 @@ else(WIN32) set_target_properties(togl PROPERTIES OUTPUT_NAME "ngtogl") diff --git a/netgen_sizet.patch b/netgen_sizet.patch new file mode 100644 index 0000000..a97562d --- /dev/null +++ b/netgen_sizet.patch @@ -0,0 +1,30 @@ +diff -rupN --no-dereference netgen-6.2.1910/libsrc/core/python_ngcore.hpp netgen-6.2.1910-new/libsrc/core/python_ngcore.hpp +--- netgen-6.2.1910/libsrc/core/python_ngcore.hpp 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/core/python_ngcore.hpp 2020-02-03 22:38:37.986667641 +0100 +@@ -54,10 +54,12 @@ namespace ngcore + static std::string GetName() { return "D"; } + }; + ++#ifdef _____LP64_____ + template<> + struct PyNameTraits { + static std::string GetName() { return "S"; } + }; ++#endif + + template + struct PyNameTraits> { +diff -rupN --no-dereference netgen-6.2.1910/libsrc/core/table.hpp netgen-6.2.1910-new/libsrc/core/table.hpp +--- netgen-6.2.1910/libsrc/core/table.hpp 2019-12-15 20:10:31.000000000 +0100 ++++ netgen-6.2.1910-new/libsrc/core/table.hpp 2020-02-03 22:38:37.986667641 +0100 +@@ -101,8 +101,10 @@ public: + { return TablePrefixSum32 (FlatArray (entrysize.Size(), (unsigned int*)(int*)(entrysize.Addr(0)))); } + NETGEN_INLINE size_t * TablePrefixSum (FlatArray> entrysize) + { return TablePrefixSum32 (FlatArray (entrysize.Size(), (unsigned int*)(std::atomic*)entrysize.Addr(0))); } ++#ifdef _____LP64_____ + NETGEN_INLINE size_t * TablePrefixSum (FlatArray entrysize) + { return TablePrefixSum64 (entrysize); } ++#endif + + + /** diff --git a/pybind11Tools.cmake b/pybind11Tools.cmake new file mode 100644 index 0000000..c7156c0 --- /dev/null +++ b/pybind11Tools.cmake @@ -0,0 +1,227 @@ +# tools/pybind11Tools.cmake -- Build system for the pybind11 modules +# +# Copyright (c) 2015 Wenzel Jakob +# +# All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +cmake_minimum_required(VERSION 2.8.12) + +# Add a CMake parameter for choosing a desired Python version +if(NOT PYBIND11_PYTHON_VERSION) + set(PYBIND11_PYTHON_VERSION "" CACHE STRING "Python version to use for compiling modules") +endif() + +set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4) +find_package(PythonLibsNew ${PYBIND11_PYTHON_VERSION} REQUIRED) + +include(CheckCXXCompilerFlag) +include(CMakeParseArguments) + +if(NOT PYBIND11_CPP_STANDARD AND NOT CMAKE_CXX_STANDARD) + if(NOT MSVC) + check_cxx_compiler_flag("-std=c++14" HAS_CPP14_FLAG) + + if (HAS_CPP14_FLAG) + set(PYBIND11_CPP_STANDARD -std=c++14) + else() + check_cxx_compiler_flag("-std=c++11" HAS_CPP11_FLAG) + if (HAS_CPP11_FLAG) + set(PYBIND11_CPP_STANDARD -std=c++11) + else() + message(FATAL_ERROR "Unsupported compiler -- pybind11 requires C++11 support!") + endif() + endif() + elseif(MSVC) + set(PYBIND11_CPP_STANDARD /std:c++14) + endif() + + set(PYBIND11_CPP_STANDARD ${PYBIND11_CPP_STANDARD} CACHE STRING + "C++ standard flag, e.g. -std=c++11, -std=c++14, /std:c++14. Defaults to C++14 mode." FORCE) +endif() + +# Checks whether the given CXX/linker flags can compile and link a cxx file. cxxflags and +# linkerflags are lists of flags to use. The result variable is a unique variable name for each set +# of flags: the compilation result will be cached base on the result variable. If the flags work, +# sets them in cxxflags_out/linkerflags_out internal cache variables (in addition to ${result}). +function(_pybind11_return_if_cxx_and_linker_flags_work result cxxflags linkerflags cxxflags_out linkerflags_out) + set(CMAKE_REQUIRED_LIBRARIES ${linkerflags}) + check_cxx_compiler_flag("${cxxflags}" ${result}) + if (${result}) + set(${cxxflags_out} "${cxxflags}" CACHE INTERNAL "" FORCE) + set(${linkerflags_out} "${linkerflags}" CACHE INTERNAL "" FORCE) + endif() +endfunction() + +# Internal: find the appropriate link time optimization flags for this compiler +function(_pybind11_add_lto_flags target_name prefer_thin_lto) + if (NOT DEFINED PYBIND11_LTO_CXX_FLAGS) + set(PYBIND11_LTO_CXX_FLAGS "" CACHE INTERNAL "") + set(PYBIND11_LTO_LINKER_FLAGS "" CACHE INTERNAL "") + + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + set(cxx_append "") + set(linker_append "") + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT APPLE) + # Clang Gold plugin does not support -Os; append -O3 to MinSizeRel builds to override it + set(linker_append ";$<$:-O3>") + elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU") + set(cxx_append ";-fno-fat-lto-objects") + endif() + + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND prefer_thin_lto) + _pybind11_return_if_cxx_and_linker_flags_work(HAS_FLTO_THIN + "-flto=thin${cxx_append}" "-flto=thin${linker_append}" + PYBIND11_LTO_CXX_FLAGS PYBIND11_LTO_LINKER_FLAGS) + endif() + + if (NOT HAS_FLTO_THIN) + _pybind11_return_if_cxx_and_linker_flags_work(HAS_FLTO + "-flto${cxx_append}" "-flto${linker_append}" + PYBIND11_LTO_CXX_FLAGS PYBIND11_LTO_LINKER_FLAGS) + endif() + elseif (CMAKE_CXX_COMPILER_ID MATCHES "Intel") + # Intel equivalent to LTO is called IPO + _pybind11_return_if_cxx_and_linker_flags_work(HAS_INTEL_IPO + "-ipo" "-ipo" PYBIND11_LTO_CXX_FLAGS PYBIND11_LTO_LINKER_FLAGS) + elseif(MSVC) + # cmake only interprets libraries as linker flags when they start with a - (otherwise it + # converts /LTCG to \LTCG as if it was a Windows path). Luckily MSVC supports passing flags + # with - instead of /, even if it is a bit non-standard: + _pybind11_return_if_cxx_and_linker_flags_work(HAS_MSVC_GL_LTCG + "/GL" "-LTCG" PYBIND11_LTO_CXX_FLAGS PYBIND11_LTO_LINKER_FLAGS) + endif() + + if (PYBIND11_LTO_CXX_FLAGS) + message(STATUS "LTO enabled") + else() + message(STATUS "LTO disabled (not supported by the compiler and/or linker)") + endif() + endif() + + # Enable LTO flags if found, except for Debug builds + if (PYBIND11_LTO_CXX_FLAGS) + target_compile_options(${target_name} PRIVATE "$<$>:${PYBIND11_LTO_CXX_FLAGS}>") + endif() + if (PYBIND11_LTO_LINKER_FLAGS) + target_link_libraries(${target_name} PRIVATE "$<$>:${PYBIND11_LTO_LINKER_FLAGS}>") + endif() +endfunction() + +# Build a Python extension module: +# pybind11_add_module( [MODULE | SHARED] [EXCLUDE_FROM_ALL] +# [NO_EXTRAS] [SYSTEM] [THIN_LTO] source1 [source2 ...]) +# +function(pybind11_add_module target_name) + set(options MODULE SHARED EXCLUDE_FROM_ALL NO_EXTRAS SYSTEM THIN_LTO) + cmake_parse_arguments(ARG "${options}" "" "" ${ARGN}) + + if(ARG_MODULE AND ARG_SHARED) + message(FATAL_ERROR "Can't be both MODULE and SHARED") + elseif(ARG_SHARED) + set(lib_type SHARED) + else() + set(lib_type MODULE) + endif() + + if(ARG_EXCLUDE_FROM_ALL) + set(exclude_from_all EXCLUDE_FROM_ALL) + endif() + + add_library(${target_name} ${lib_type} ${exclude_from_all} ${ARG_UNPARSED_ARGUMENTS}) + + if(ARG_SYSTEM) + set(inc_isystem SYSTEM) + endif() + + target_include_directories(${target_name} ${inc_isystem} + PRIVATE ${PYBIND11_INCLUDE_DIR} # from project CMakeLists.txt + PRIVATE ${pybind11_INCLUDE_DIR} # from pybind11Config + PRIVATE ${PYTHON_INCLUDE_DIRS}) + + # Python debug libraries expose slightly different objects + # https://docs.python.org/3.6/c-api/intro.html#debugging-builds + # https://stackoverflow.com/questions/39161202/how-to-work-around-missing-pymodule-create2-in-amd64-win-python35-d-lib + if(PYTHON_IS_DEBUG) + target_compile_definitions(${target_name} PRIVATE Py_DEBUG) + endif() + + # The prefix and extension are provided by FindPythonLibsNew.cmake + set_target_properties(${target_name} PROPERTIES PREFIX "${PYTHON_MODULE_PREFIX}") + set_target_properties(${target_name} PROPERTIES SUFFIX "${PYTHON_MODULE_EXTENSION}") + + # -fvisibility=hidden is required to allow multiple modules compiled against + # different pybind versions to work properly, and for some features (e.g. + # py::module_local). We force it on everything inside the `pybind11` + # namespace; also turning it on for a pybind module compilation here avoids + # potential warnings or issues from having mixed hidden/non-hidden types. + set_target_properties(${target_name} PROPERTIES CXX_VISIBILITY_PRESET "hidden") + set_target_properties(${target_name} PROPERTIES CUDA_VISIBILITY_PRESET "hidden") + + if(WIN32 OR CYGWIN) + # Link against the Python shared library on Windows + target_link_libraries(${target_name} PRIVATE ${PYTHON_LIBRARIES}) + elseif(APPLE) + # It's quite common to have multiple copies of the same Python version + # installed on one's system. E.g.: one copy from the OS and another copy + # that's statically linked into an application like Blender or Maya. + # If we link our plugin library against the OS Python here and import it + # into Blender or Maya later on, this will cause segfaults when multiple + # conflicting Python instances are active at the same time (even when they + # are of the same version). + + # Windows is not affected by this issue since it handles DLL imports + # differently. The solution for Linux and Mac OS is simple: we just don't + # link against the Python library. The resulting shared library will have + # missing symbols, but that's perfectly fine -- they will be resolved at + # import time. + + target_link_libraries(${target_name} PRIVATE "-undefined dynamic_lookup") + + if(ARG_SHARED) + # Suppress CMake >= 3.0 warning for shared libraries + set_target_properties(${target_name} PROPERTIES MACOSX_RPATH ON) + endif() + endif() + + # Make sure C++11/14 are enabled + if(CMAKE_VERSION VERSION_LESS 3.3) + target_compile_options(${target_name} PUBLIC ${PYBIND11_CPP_STANDARD}) + else() + target_compile_options(${target_name} PUBLIC $<$:${PYBIND11_CPP_STANDARD}>) + endif() + + if(ARG_NO_EXTRAS) + return() + endif() + + _pybind11_add_lto_flags(${target_name} ${ARG_THIN_LTO}) + + if (NOT MSVC AND NOT ${CMAKE_BUILD_TYPE} MATCHES Debug|RelWithDebInfo) + # Strip unnecessary sections of the binary on Linux/Mac OS + if(CMAKE_STRIP) + if(APPLE) + add_custom_command(TARGET ${target_name} POST_BUILD + COMMAND ${CMAKE_STRIP} -x $) + else() + add_custom_command(TARGET ${target_name} POST_BUILD + COMMAND ${CMAKE_STRIP} $) + endif() + endif() + endif() + + if(MSVC) + # /MP enables multithreaded builds (relevant when there are many files), /bigobj is + # needed for bigger binding projects due to the limit to 64k addressable sections + target_compile_options(${target_name} PRIVATE /bigobj) + if(CMAKE_VERSION VERSION_LESS 3.11) + target_compile_options(${target_name} PRIVATE $<$>:/MP>) + else() + # Only set these options for C++ files. This is important so that, for + # instance, projects that include other types of source files like CUDA + # .cu files don't get these options propagated to nvcc since that would + # cause the build to fail. + target_compile_options(${target_name} PRIVATE $<$>:$<$:/MP>>) + endif() + endif() +endfunction() diff --git a/sources b/sources index 5065310..a30715f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (netgen-mesher-6.2.1810.tar.gz) = b57ad0d170eb214e80f6c15f18f4175117d6f43cd94b7830edc996b29a4bdf9ea8f8714e72e5bb3be15a95b7fa3c4ca6005b2896673221d5a418fdf3d33048f5 +SHA512 (netgen-mesher-6.2.1910.tar.gz) = a9d4e51fbfd2b80c852243226331dc33b43577ddcee2b1cdcccfec76906a0bdae6a22e4cd5d19c1a76ebb498c94dad8ed5ff932a283ed44a5dae8a6f4d88f754