Subject: [bug#74538] [PATCH 2/2] gnu: freecad: Update to 1.0.0.

From: Vincent Legoll <[email-masked]>
Date: Mon, 25 Nov 2024 23:00:14 +0100

* gnu/packages/patches/freecad-vtk-9.3.patch: Has been upstreamed, remove.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/engineering (freecad)[source]: Update to 1.0.0,
  remove patches, add snippet to unbundle some 3rdparty code.
  [native-inputs]: Add c++-gsl.
  [inputs]: Add onsdel-solver, yaml-cpp.
  [configure-flags]: Add some flags.

Change-Id: I3005a3b5cccc8aae4129a49e123fd5ab8293b3f2
Signed-off-by: Vincent Legoll <[email-masked]>
---
 gnu/local.mk                               |  1 -
 gnu/packages/engineering.scm               | 25 ++++++++++---
 gnu/packages/patches/freecad-vtk-9.3.patch | 43 ----------------------
 3 files changed, 19 insertions(+), 50 deletions(-)
 delete mode 100644 gnu/packages/patches/freecad-vtk-9.3.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 04e9b1c0fd..c89fd88282 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1284,7 +1284,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/fpc-reproducibility.patch		\
   %D%/packages/patches/fpc-glibc-2.34-compat.patch		\
   %D%/packages/patches/fpm-newer-clamp-fix.patch		\
-  %D%/packages/patches/freecad-vtk-9.3.patch		\
   %D%/packages/patches/freedink-engine-fix-sdl-hints.patch	\
   %D%/packages/patches/freeimage-libtiff-compat.patch		\
   %D%/packages/patches/freeimage-libraw-0.21-compat.patch	\
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 5178043a52..125f8fdfea 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -2956,7 +2956,7 @@ (define-public ondsel-solver
 (define-public freecad
   (package
     (name "freecad")
-    (version "0.21.2")
+    (version "1.0.0")
     (source
      (origin
        (method git-fetch)
@@ -2965,12 +2965,19 @@ (define-public freecad
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0s720q6vxlh78jzahqp69nl8wagb42l05dym5aqhfnr31dx666hc"))
-       ;; https://github.com/FreeCAD/FreeCAD/pull/11496
-       (patches (search-patches "freecad-vtk-9.3.patch"))))
+        (base32 "0wwymcfgi0cybj7m6awflk8c7n6iy97lpgpfhfncx3zwvjrxv588"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; not required, because 3D mouse support if OFF
+           (delete-file-recursively "src/3rdParty/3Dconnexion")
+           (delete-file-recursively "src/3rdParty/GSL")           ;; c++-gsl
+           (delete-file-recursively "src/3rdParty/OndselSolver")  ;; ondsel-solver
+           (delete-file-recursively "src/3rdParty/OpenGL")))))    ;; glext.h from mesa
     (build-system qt-build-system)
     (native-inputs
-     (list doxygen
+     (list c++-gsl
+           doxygen
            graphviz
            qttools-5
            pkg-config
@@ -3000,6 +3007,7 @@ (define-public freecad
            libxmu
            lz4
            netcdf
+           ondsel-solver
            opencascade-occt
            openmpi
            proj
@@ -3022,14 +3030,19 @@ (define-public freecad
            tbb-2020                     ; Same version as opencascade-occt
            vtk
            xerces-c
+           yaml-cpp
            zlib))
     (arguments
-     `(#:tests? #f                      ; Project has no tests
+     `(#:tests? #f  ;; Project has tests, but they are a pain to build
        #:configure-flags
        ,#~(list
            "-DBUILD_QT5=ON"
            "-DBUILD_FLAT_MESH:BOOL=ON"
            "-DBUILD_ENABLE_CXX_STD:STRING=C++17"
+           "-DENABLE_DEVELOPER_TESTS=OFF"  ;; see the above: #:tests? comment
+           "-DFREECAD_USE_EXTERNAL_ONDSELSOLVER=ON"  ;; unbundle ondsel-solver
+           ;; Do not try to install modules into system python
+           "-DINSTALL_TO_SITEPACKAGES=OFF"
            (string-append "-DCMAKE_INSTALL_LIBDIR=" #$output "/lib"))
        #:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/patches/freecad-vtk-9.3.patch b/gnu/packages/patches/freecad-vtk-9.3.patch
deleted file mode 100644
index af9d654046..0000000000
--- a/gnu/packages/patches/freecad-vtk-9.3.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From d0fb2b8b29fe0428d9dd8aa790b0d6e45c8a9516 Mon Sep 17 00:00:00 2001
-From: Adrian Insaurralde Avalos <[email-masked]>
-Date: Wed, 22 Nov 2023 16:42:06 -0300
-Subject: [PATCH] 3rdPart/salomesmesh - fix for vtk 9.3 compatibility
-
-minimum required version is 7.1
----
- src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx                 | 4 ----
- src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp | 5 +++++
- 2 files changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx b/src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx
-index 7f89573efd0d..47a52fe585fe 100644
---- a/src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx
-+++ b/src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx
-@@ -39,10 +39,6 @@
-  #define SMDS_EXPORT
- #endif
- 
--#ifdef VTK_HAS_MTIME_TYPE
- #define VTK_MTIME_TYPE vtkMTimeType
--#else
--#define VTK_MTIME_TYPE unsigned long
--#endif
- 
- #endif
-diff --git a/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
-index 7e3de0070a02..e9895d615717 100644
---- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
-+++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
-@@ -1026,7 +1026,12 @@ void SMDS_UnstructuredGrid::BuildLinks()
-   GetLinks()->Allocate(this->GetNumberOfPoints());
-   GetLinks()->Register(this);
- //FIXME: vtk9
-+  #if VTK_VERSION_NUMBER < VTK_VERSION_CHECK(9,3,0)
-   GetLinks()->BuildLinks(this);
-+  #else
-+  GetLinks()->SetDataSet(this);
-+  GetLinks()->BuildLinks();
-+  #endif
-   GetLinks()->Delete();
- #else
-   this->Links = SMDS_CellLinks::New();
\ No newline at end of file
-- 
2.46.0