Subject: [PATCH] gnu: Add solvespace.

From: Myles English <[email-masked]>
Date: Mon, 24 Jun 2019 13:27:10 +0100

* gnu/packages/game-development.scm (solvespace): New variable and
dependencies on gnu package modules.
---
 gnu/packages/engineering.scm | 70 ++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 7d48414889..7fc06a6730 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2018, 2019 Jonathan Brielmaier <[email-masked]>
 ;;; Copyright © 2018, 2019 Arun Isaac <[email-masked]>
 ;;; Copyright © 2019 Tim Stahel <[email-masked]>
+;;; Copyright © 2019 Myles English <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -80,6 +81,7 @@
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages serialization)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages texinfo)
@@ -87,6 +89,8 @@
   #:use-module (gnu packages tex)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages wxwidgets)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg))
 
 (define-public librecad
@@ -2062,3 +2066,69 @@ purpose circuit simulator and can perform DC and transient analyses, fourier
 analysis and AC analysis.  The engine is designed to do true mixed-mode
 simulation.")
     (license license:gpl3+)))
+
+(define-public solvespace-3
+  (let ((commit "5df53fc59e7f31e265fabd4c15e6601bd3032833")
+	(revision "1"))
+    (package
+      (name "solvespace")
+      (version (git-version "3.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/solvespace/solvespace.git")
+               (commit commit)
+               (recursive? #t)))
+         (sha256
+          (base32
+           "0kps2rgakdrbm9f6gwkb7za5ikkc4m6y2x162y3c53ixg5snmlr1"))
+         (file-name (git-file-name name version))
+         (modules '((guix build utils)))
+         (snippet
+          '(begin
+             ;; delete some recursive submodules in order to use guix packages
+             (delete-file-recursively "extlib/zlib")
+             (delete-file-recursively "extlib/libpng")
+             (delete-file-recursively "extlib/freetype")
+             ;; pixman only needed for tests?
+             (delete-file-recursively "extlib/pixman")
+             (delete-file-recursively "extlib/cairo")
+             (delete-file-recursively "extlib/flatbuffers")
+             #t))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:configure-flags
+         (list "-DCMAKE_BUILD_TYPE=Release"
+               (string-append
+                "-DFLATC="
+                (assoc-ref %build-inputs "flatbuffers") "/bin/flatc"))
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'set-git-commit-hash
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "CMakeLists.txt"
+                 (("include\\(GetGitCommitHash\\)")
+                  "#include(GetGitCommitHash)")
+                 (("\\# set\\(GIT_COMMIT_HASH
+                                    0000000000000000000000000000000000000000\\)")
+                  (string-append "set(GIT_COMMIT_HASH " ,commit ")"))
+                 (("message\\(STATUS \\\"Using in-tree flatbuffers\\\"\\)")
+                  "message(STATUS \"Using guix flatbuffers\")")
+                 (("add_subdirectory\\(extlib/flatbuffers EXCLUDE_FROM_ALL\\)")
+                  "#add_subdirectory(extlib/flatbuffers EXCLUDE_FROM_ALL)"))
+               #t)))))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)))
+      (inputs
+       `(("git" ,git)
+         ("json-c" ,json-c)
+         ("glu" ,glu)
+         ("gtkmm" ,gtkmm)
+         ("flatbuffers" ,flatbuffers)))
+      (home-page "http://solvespace.com")
+      (synopsis "Parametric 2D/3D CAD tool")
+      (description "Parametric 2D/3D computer aided design (CAD) tool and
+constraint-based parametric modeler with simple mechanical simulation
+capabilities.")
+      (license license:gpl3+))))
-- 
2.22.0