Subject: [bug#37169] [PATCH] gnu: Add lib3mf.

From: Steve Sprang <[email-masked]>
Date: Wed, 28 Aug 2019 14:27:09 -0700

On Wed, Aug 28, 2019 at 9:38 AM Ludovic Courtès <[email-masked]> wrote:

> > +      (add-after 'unpack 'unpack-googletest
> > +        (lambda* (#:key inputs #:allow-other-keys)
> > +          (copy-recursively (assoc-ref inputs "googletest-source")
> > +                            "UnitTests/googletest")
>
> Would it work to simply pass ‘googletest’ as an input?
> If not, this approach is fine IMO.

Unfortunately, no, the build process expects to see the googletest
source in a sub-module directory.

Attached a new patch with the fixes you suggested.
From a691020809334c94a33a9632c8a7fd75102fd8f2 Mon Sep 17 00:00:00 2001
From: Steve Sprang <[email-masked]>
Date: Fri, 23 Aug 2019 15:23:00 -0700
Subject: [PATCH] gnu: Add lib3mf.

* gnu/packages/engineering.scm (lib3mf): New variable.
---
 gnu/packages/engineering.scm | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index a1f222bed4..54bf5a7b69 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2018, 2019 Arun Isaac <[email-masked]>
 ;;; Copyright © 2019 Tim Stahel <[email-masked]>
 ;;; Copyright © 2019 Jovany Leandro G.C <[email-masked]>
+;;; Copyright © 2019 Steve Sprang <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2109,3 +2110,38 @@ while keeping the user experience at mind.  Cutter is created by reverse
 engineers for reverse engineers.")
     (license (list license:cc-by-sa3.0  ;the "Iconic" icon set
                    license:gpl3+))))    ;everything else
+
+(define-public lib3mf
+  (package
+    (name "lib3mf")
+    (version "1.8.1")
+    (source
+     (origin
+      (method git-fetch)
+      (uri (git-reference (url "https://github.com/3MFConsortium/lib3mf.git")
+                          (commit (string-append "v" version))))
+      (file-name (git-file-name name version))
+      (sha256
+       (base32
+        "11wpk6n9ga2p57h1dcrp37w77mii0r7r6mlrgmykf7rvii1rzgqd"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("googletest-source" ,(package-source googletest))))
+    (inputs
+     `(("libuuid" ,util-linux)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-googletest
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-recursively (assoc-ref inputs "googletest-source")
+                               "UnitTests/googletest")
+             #t)))))
+    (synopsis "Implementation of the 3D Manufacturing Format (3MF) file standard")
+    (description
+     "Lib3MF is a C++ implementation of the 3D Manufacturing Format (3MF) file
+standard.  It offers a way to integrate 3MF reading and writing capabilities, as
+well as conversion and validation tools for input and output data.  The
+specification can be downloaded at @url{http://3mf.io/specification/}.")
+    (home-page "https://3mf.io/")
+    (license license:bsd-2)))
-- 
2.23.0