unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: Add opencascade-oce
@ 2017-01-18 11:23 Paul Garlick
  2017-01-18 18:35 ` Marius Bakke
  0 siblings, 1 reply; 8+ messages in thread
From: Paul Garlick @ 2017-01-18 11:23 UTC (permalink / raw)
  To: guix-devel; +Cc: Paul Garlick

* gnu/packages/opencascade.scm: New file
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it
---

The OpenCASCADE library is used for defining 3D geometry.  It can be
incorporated as a build option in other packages.  Examples of such packages
(and the subject domains in which they are used) are Gmsh (mathematics),
IfcOpenShell (architecture) and FreeCAD (engineering).

There are two versions of OpenCASCADE; the upstream version and the community-
maintained version.  OCE is the community-maintained version.

 gnu/local.mk                 |  1 +
 gnu/packages/opencascade.scm | 75 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 76 insertions(+)
 create mode 100644 gnu/packages/opencascade.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index c6cb55b..c879f32 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -281,6 +281,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/ocr.scm				\
   %D%/packages/onc-rpc.scm			\
   %D%/packages/openbox.scm			\
+  %D%/packages/opencascade.scm			\
   %D%/packages/openldap.scm			\
   %D%/packages/openstack.scm			\
   %D%/packages/orpheus.scm			\
diff --git a/gnu/packages/opencascade.scm b/gnu/packages/opencascade.scm
new file mode 100644
index 0000000..3c4b9b5
--- /dev/null
+++ b/gnu/packages/opencascade.scm
@@ -0,0 +1,75 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Paul Garlick <pgarlick@tourbillion-technology.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages opencascade)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages file)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages tcl)
+  #:use-module (gnu packages xorg))
+
+(define-public opencascade-oce
+  (package
+    (name "opencascade-oce")
+    (version "0.17.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "https://github.com/tpaviot/oce/archive/OCE-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32
+            "0vpmnb0k5y2f7lpmwx9pg9yfq24zjvnsak5alzacncfm1hv9b6cd"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+        (list
+          (string-append
+            "-DOCE_INSTALL_PREFIX:PATH=" (assoc-ref %outputs "out"))
+          "-DOCE_TESTING:BOOL=ON")
+       #:tests? #t))
+    (inputs
+      `(("freetype" ,freetype)
+        ("ftgl" ,ftgl)
+        ("glu" ,glu)
+        ("qt" ,qt)
+        ("libtool" ,libtool)
+        ("libxmu" ,libxmu)
+        ("file" ,file)
+        ("tk" ,tk)
+        ("tcl" ,tcl)
+        ("mesa" ,mesa)))
+    (native-inputs
+      `(("python" ,python-wrapper)))
+    (home-page "http://www.opencascade.org/")
+    (synopsis
+      "Open CASCADE OCE; libraries for 3D modeling and numerical simulation")
+    (description "OCE stands for Open CASCADE Community Edition.  The project
+gathers patches/improvements/experiments contributed by users over the official
+Open CASCADE library.")
+    (license license:lgpl2.1))) ; plus header files exception
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] gnu: Add opencascade-oce
  2017-01-18 11:23 [PATCH] gnu: Add opencascade-oce Paul Garlick
@ 2017-01-18 18:35 ` Marius Bakke
  2017-01-19 12:01   ` Paul Garlick
  2017-01-20 22:21   ` Paul Garlick
  0 siblings, 2 replies; 8+ messages in thread
From: Marius Bakke @ 2017-01-18 18:35 UTC (permalink / raw)
  To: guix-devel; +Cc: Paul Garlick

[-- Attachment #1: Type: text/plain, Size: 5096 bytes --]


Hello Paul!

Paul Garlick <pgarlick@tourbillion-technology.com> writes:

> * gnu/packages/opencascade.scm: New file
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it

I wonder if this could fit in "engineering.scm". Or maybe "geometry.scm"
or "3d.scm". We try to avoid "single program" modules. What do you think?

> ---
>
> The OpenCASCADE library is used for defining 3D geometry.  It can be
> incorporated as a build option in other packages.  Examples of such packages
> (and the subject domains in which they are used) are Gmsh (mathematics),
> IfcOpenShell (architecture) and FreeCAD (engineering).
>
> There are two versions of OpenCASCADE; the upstream version and the community-
> maintained version.  OCE is the community-maintained version.
>
>  gnu/local.mk                 |  1 +
>  gnu/packages/opencascade.scm | 75 ++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 76 insertions(+)
>  create mode 100644 gnu/packages/opencascade.scm
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index c6cb55b..c879f32 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -281,6 +281,7 @@ GNU_SYSTEM_MODULES =				\
>    %D%/packages/ocr.scm				\
>    %D%/packages/onc-rpc.scm			\
>    %D%/packages/openbox.scm			\
> +  %D%/packages/opencascade.scm			\
>    %D%/packages/openldap.scm			\
>    %D%/packages/openstack.scm			\
>    %D%/packages/orpheus.scm			\
> diff --git a/gnu/packages/opencascade.scm b/gnu/packages/opencascade.scm
> new file mode 100644
> index 0000000..3c4b9b5
> --- /dev/null
> +++ b/gnu/packages/opencascade.scm
> @@ -0,0 +1,75 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2017 Paul Garlick <pgarlick@tourbillion-technology.com>
> +;;;
> +;;; This file is part of GNU Guix.
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify it
> +;;; under the terms of the GNU General Public License as published by
> +;;; the Free Software Foundation; either version 3 of the License, or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public License
> +;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
> +
> +(define-module (gnu packages opencascade)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (guix packages)
> +  #:use-module (guix download)
> +  #:use-module (guix build-system cmake)
> +  #:use-module (gnu packages)
> +  #:use-module (gnu packages autotools)
> +  #:use-module (gnu packages file)
> +  #:use-module (gnu packages fontutils)
> +  #:use-module (gnu packages gl)
> +  #:use-module (gnu packages python)
> +  #:use-module (gnu packages qt)
> +  #:use-module (gnu packages tcl)
> +  #:use-module (gnu packages xorg))
> +
> +(define-public opencascade-oce
> +  (package
> +    (name "opencascade-oce")
> +    (version "0.17.2")

Version 0.18 was released a few days ago!

> +    (source
> +      (origin
> +        (method url-fetch)
> +        (uri (string-append
> +               "https://github.com/tpaviot/oce/archive/OCE-"
> +               version
> +               ".tar.gz"))
> +        (sha256
> +          (base32
> +            "0vpmnb0k5y2f7lpmwx9pg9yfq24zjvnsak5alzacncfm1hv9b6cd"))))
> +    (build-system cmake-build-system)
> +    (arguments
> +     '(#:configure-flags
> +        (list
> +          (string-append
> +            "-DOCE_INSTALL_PREFIX:PATH=" (assoc-ref %outputs "out"))
> +          "-DOCE_TESTING:BOOL=ON")
> +       #:tests? #t))

#:tests? is #t by default, so that can be omitted. Please also check the
indentation in this section.

> +    (inputs
> +      `(("freetype" ,freetype)
> +        ("ftgl" ,ftgl)
> +        ("glu" ,glu)
> +        ("qt" ,qt)
> +        ("libtool" ,libtool)
> +        ("libxmu" ,libxmu)
> +        ("file" ,file)
> +        ("tk" ,tk)
> +        ("tcl" ,tcl)
> +        ("mesa" ,mesa)))
> +    (native-inputs
> +      `(("python" ,python-wrapper)))
> +    (home-page "http://www.opencascade.org/")

Use HTTPS here.

> +    (synopsis
> +      "Open CASCADE OCE; libraries for 3D modeling and numerical simulation")

No need to put the name in the synopsis :-)

> +    (description "OCE stands for Open CASCADE Community Edition.  The project
> +gathers patches/improvements/experiments contributed by users over the official
> +Open CASCADE library.")
> +    (license license:lgpl2.1))) ; plus header files exception

Please expand on the exception comment and mention
OCCT_LGPL_EXCEPTION.txt. There are also some public domain files, and
the bundled "gtest" is bsd-3. src/OpenGl/OpenGl_glext.h is distributed
under the expat license. Some files generated by "bison" has GPL3+.

Can you send an updated patch? TIA! :-)

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] gnu: Add opencascade-oce
  2017-01-18 18:35 ` Marius Bakke
@ 2017-01-19 12:01   ` Paul Garlick
  2017-01-21 12:28     ` Marius Bakke
  2017-01-20 22:21   ` Paul Garlick
  1 sibling, 1 reply; 8+ messages in thread
From: Paul Garlick @ 2017-01-19 12:01 UTC (permalink / raw)
  To: Marius Bakke, guix-devel

[-- Attachment #1: Type: text/plain, Size: 1382 bytes --]

Hello Marius,
Thank you for your review.
> I wonder if this could fit in "engineering.scm". Or maybe
> "geometry.scm"
> or "3d.scm". We try to avoid "single program" modules. What do you
> think?
Perhaps maths.scm is the best place, in order to avoid creating a new
module.  The Gmsh package is already there.  To check; am I right in
saying that a library in one module can be used as an input for a
package in another module?  For example, if FreeCAD were to be
packaged, and placed in engineering.scm, could it use opencascade-oce
as an input from maths.scm?
> > 
> > +(define-public opencascade-oce
> > +  (package
> > +    (name "opencascade-oce")
> > +    (version "0.17.2")
> > 

> 
> 
> Version 0.18 was released a few days ago!
> 

It would be useful to package both versions.  There is a difference in
the OpenGL graphics card requirements in going from version 0.17.2 to
0.18.
> > 
> > +    (license license:lgpl2.1))) ; plus header files exception
> > 

> 
> 
> Please expand on the exception comment and mention
> OCCT_LGPL_EXCEPTION.txt. There are also some public domain files, and
> the bundled "gtest" is bsd-3. src/OpenGl/OpenGl_glext.h is distributed
> under the expat license. Some files generated by "bison" has GPL3+.
> 

I have added the information about the expat and BSD-3 licenses.  Can
you elaborate on the public domain files and Bison?
Best,
Paul.

[-- Attachment #2: Type: text/html, Size: 1792 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] gnu: Add opencascade-oce
  2017-01-18 18:35 ` Marius Bakke
  2017-01-19 12:01   ` Paul Garlick
@ 2017-01-20 22:21   ` Paul Garlick
  1 sibling, 0 replies; 8+ messages in thread
From: Paul Garlick @ 2017-01-20 22:21 UTC (permalink / raw)
  To: guix-devel; +Cc: Paul Garlick

* gnu/packages/maths.scm: Add it
---
 gnu/packages/maths.scm | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 313f6ac..62415e7 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
+;;; Copyright © 2017 Paul Garlick <pgarlick@tourbillion-technology.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,6 +44,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system r)
   #:use-module (gnu packages algebra)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
@@ -52,6 +54,7 @@
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages elf)
+  #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fltk)
   #:use-module (gnu packages fontutils)
@@ -78,6 +81,7 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages tbb)
   #:use-module (gnu packages shells)
@@ -2843,3 +2847,48 @@ instruction sets.  Thus, an application written with Vc can be compiled for:
 @end enumerate\n")
     (home-page "https://github.com/VcDevel/Vc")
     (license license:bsd-3)))
+
+(define-public opencascade-oce
+  (package
+    (name "opencascade-oce")
+    (version "0.17.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "https://github.com/tpaviot/oce/archive/OCE-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32
+            "0vpmnb0k5y2f7lpmwx9pg9yfq24zjvnsak5alzacncfm1hv9b6cd"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+        (list "-DOCE_TESTING:BOOL=ON"
+              (string-append "-DOCE_INSTALL_PREFIX:PATH="
+                        (assoc-ref %outputs "out")))))
+    (inputs
+      `(("freetype" ,freetype)
+        ("ftgl" ,ftgl)
+        ("glu" ,glu)
+        ("qt" ,qt)
+        ("libtool" ,libtool)
+        ("libxmu" ,libxmu)
+        ("file" ,file)
+        ("tk" ,tk)
+        ("tcl" ,tcl)
+        ("mesa" ,mesa)))
+    (native-inputs
+      `(("python" ,python-wrapper)))
+    (home-page "https://github.com/tpaviot/oce")
+    (synopsis
+      "Libraries for 3D modeling and numerical simulation")
+    (description "OCE stands for Open CASCADE Community Edition.  The project
+gathers patches/improvements/experiments contributed by users over the official
+Open CASCADE library.")
+    (license (list license:lgpl2.1; OCE libraries, with an exception for the
+                                  ; use of header files; see
+                                  ; OCCT_LGPL_EXCEPTION.txt
+                   license:expat; file src/OpenGl/OpenGl_glext.h
+                   license:bsd-3)))); test framework gtest
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] gnu: Add opencascade-oce
  2017-01-19 12:01   ` Paul Garlick
@ 2017-01-21 12:28     ` Marius Bakke
  2017-01-21 15:13       ` Ludovic Courtès
  0 siblings, 1 reply; 8+ messages in thread
From: Marius Bakke @ 2017-01-21 12:28 UTC (permalink / raw)
  To: Paul Garlick, guix-devel

[-- Attachment #1: Type: text/plain, Size: 2677 bytes --]

Paul Garlick <pgarlick@tourbillion-technology.com> writes:

> Hello Marius,
> Thank you for your review.
>> I wonder if this could fit in "engineering.scm". Or maybe
>> "geometry.scm"
>> or "3d.scm". We try to avoid "single program" modules. What do you
>> think?
> Perhaps maths.scm is the best place, in order to avoid creating a new
> module.  The Gmsh package is already there.

OK, sounds good!

>  To check; am I right in
> saying that a library in one module can be used as an input for a
> package in another module?  For example, if FreeCAD were to be
> packaged, and placed in engineering.scm, could it use opencascade-oce
> as an input from maths.scm?

That's the intended usage; cross-references are OK too (to an extent).

>> > +(define-public opencascade-oce
>> > +  (package
>> > +    (name "opencascade-oce")
>> > +    (version "0.17.2")
>> 
>> Version 0.18 was released a few days ago!
>
> It would be useful to package both versions.  There is a difference in
> the OpenGL graphics card requirements in going from version 0.17.2 to
> 0.18.

That sounds sensible. Could you try packaging both versions and add a
comment with 0.17 mentioning the graphics card requirement? See e.g.
'python-requests-2.7' for an example of inheriting another package.

>> > 
>> > +    (license license:lgpl2.1))) ; plus header files exception
>> > 
>
>> 
>> 
>> Please expand on the exception comment and mention
>> OCCT_LGPL_EXCEPTION.txt. There are also some public domain files, and
>> the bundled "gtest" is bsd-3. src/OpenGl/OpenGl_glext.h is distributed
>> under the expat license. Some files generated by "bison" has GPL3+.
>> 
>
> I have added the information about the expat and BSD-3 licenses.  Can
> you elaborate on the public domain files and Bison?

At least these two files are public domain:

src/Standard/Standard_StdAllocator.hxx
src/NCollection/NCollection_StdAllocator.hxx

Reading the bison generated files more closely, they contain an
exception saying they can be relicensed as part of a larger work, so I
think they fall under the "main" license in this case. Sorry for the
confusion!

Otherwise the patch looks good. I did notice that some of the inputs are
not referenced as verified with `guix gc -R /gnu/store/...`. Perhaps
they need some configure switches to be enabled? These inputs appear to
be unused, or only needed for building:

ftgl
qt
libtool
file
tk
tcl

Libtool and file should likely be native-inputs, not sure about the
others. Could you check whether they are required and send an updated
patch?

Thanks in advance! This is the final round, promise ;-)

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] gnu: Add opencascade-oce
  2017-01-21 12:28     ` Marius Bakke
@ 2017-01-21 15:13       ` Ludovic Courtès
  2017-01-26 16:01         ` Paul Garlick
  0 siblings, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2017-01-21 15:13 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel, Paul Garlick

Marius Bakke <mbakke@fastmail.com> skribis:

> Paul Garlick <pgarlick@tourbillion-technology.com> writes:

[...]

> Libtool and file should likely be native-inputs, not sure about the
> others. Could you check whether they are required and send an updated
> patch?

‘file’ is already an implicit input, so I’m not why it needs to be added
(perhaps OpenCascade depends on libmagic?).

As for Libtool, I wonder why it is needed at all, especially given that
OpenCascade is built with CMake.

Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] gnu: Add opencascade-oce
  2017-01-21 15:13       ` Ludovic Courtès
@ 2017-01-26 16:01         ` Paul Garlick
  2017-01-30  9:26           ` Ludovic Courtès
  0 siblings, 1 reply; 8+ messages in thread
From: Paul Garlick @ 2017-01-26 16:01 UTC (permalink / raw)
  To: Ludovic Courtès, Marius Bakke; +Cc: guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 2617 bytes --]

On Sat, 2017-01-21 at 16:13 +0100, Ludovic Courtès wrote:
> Marius Bakke <mbakke@fastmail.com> skribis:
> 
> > 
> > Paul Garlick <pgarlick@tourbillion-technology.com> writes:
> [...]
> 
> > 
> > Libtool and file should likely be native-inputs, not sure about the
> > others. Could you check whether they are required and send an
> > updated
> > patch?
> ‘file’ is already an implicit input, so I’m not why it needs to be
> added
> (perhaps OpenCascade depends on libmagic?).
> 
> As for Libtool, I wonder why it is needed at all, especially given
> that
> OpenCascade is built with CMake.
> 
> Ludo’.
Hi Marius and Ludo,
Thank you for your comments.  I have checked the dependencies and here
are the results:
ftgl: not needed
qt: not needed
libtool: not needed
file: not needed
tcl: required by the DRAW test harness
tk: required by the DRAW test harness
I have amended the patch to remove the extra dependencies.  The public
domain licence information is now included.  
Also, there is an extra configuration flag required to successfully
build the DRAW libraries and executable.  The '-UCMAKE_INSTALL_RPATH'
flag is required for the validate-runpath stage to succeed.  This is to
do with the way the global variable is initialized.  There is a
distinction in CMake between lists and strings, which was new to me so
I will document it here.  
Essentially, if a variable is initialized as a single string it cannot
subsequently be overriden by a list of strings.  The cmake instructions
in OpenCascade (in adm/cmake/BuildToolKit.cmake) attempt to do this at
the install stage.  The DRAW harness needs a RUNPATH including both
.../lib and .../lib/oce-0.17.  With the standard definition of
CMAKE_INSTALL_RPATH (from cmake-build-system.scm) the substitution of
the INSTALL_RPATH property only includes the first string.
 Consequently, the validate-runpath phase fails (error: library ... not
in RUNPATH ...).  The configuration flag -UCMAKE_INSTALL_RPATH unsets
the global variable and allows the opencascade cmake rules to do the
work instead, setting the RUNPATH correctly for each target.
On the subject of the 0.18 version, perhaps this could be the subject
of a separate patch.  There could be an argument to just update in the
normal way (instead of having two packages at once).  The issue is
related to the hardware requirements of recent versions of OpenGL.  It
is useful to start with 0.17 as this imposes the least restriction on
older graphics card.  I can do some testing on the new version, later
on, to determine how important this is.
The amended patch is attached.
Best,
Paul.

[-- Attachment #1.2: Type: text/html, Size: 3233 bytes --]

[-- Attachment #2: 0001-gnu-Add-opencascade-oce.patch --]
[-- Type: text/x-patch, Size: 2885 bytes --]

From a5f64ac9b488249027fc92c46d737d4572e57d02 Mon Sep 17 00:00:00 2001
From: Paul Garlick <pgarlick@tourbillion-technology.com>
Date: Wed, 18 Jan 2017 10:01:36 +0000
Subject: [PATCH] gnu: Add opencascade-oce

* gnu/packages/maths.scm: Add opencascade-oce
---
 gnu/packages/maths.scm | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 313f6ac..c8e280f 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
+;;; Copyright © 2017 Paul Garlick <pgarlick@tourbillion-technology.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -956,6 +957,53 @@ Work may be performed both at the interactive command-line as well as via
 script files.")
     (license license:gpl3+)))
 
+(define-public opencascade-oce
+  (package
+    (name "opencascade-oce")
+    (version "0.17.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "https://github.com/tpaviot/oce/archive/OCE-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32
+            "0vpmnb0k5y2f7lpmwx9pg9yfq24zjvnsak5alzacncfm1hv9b6cd"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+        (list "-DOCE_TESTING:BOOL=ON"
+              "-DOCE_USE_TCL_TEST_FRAMEWORK:BOOL=ON"
+              "-DOCE_DRAW:BOOL=ON"
+              (string-append "-DOCE_INSTALL_PREFIX:PATH="
+                        (assoc-ref %outputs "out"))
+              "-UCMAKE_INSTALL_RPATH")))
+    (inputs
+      `(("freetype" ,freetype)
+        ("glu" ,glu)
+        ("libxmu" ,libxmu)
+        ("mesa" ,mesa)
+        ("tcl" ,tcl)
+        ("tk" ,tk)))
+    (native-inputs
+      `(("python" ,python-wrapper)))
+    (home-page "https://github.com/tpaviot/oce")
+    (synopsis
+      "Libraries for 3D modeling and numerical simulation")
+    (description "OCE stands for Open CASCADE Community Edition.  The project
+gathers patches/improvements/experiments contributed by users over the official
+Open CASCADE library.")
+    (license (list license:lgpl2.1; OCE libraries, with an exception for the
+                                  ; use of header files; see
+                                  ; OCCT_LGPL_EXCEPTION.txt
+                   license:public-domain; files
+                                  ; src/Standard/Standard_StdAllocator.hxx and
+                                  ; src/NCollection/NCollection_StdAllocator.hxx
+                   license:expat; file src/OpenGl/OpenGl_glext.h
+                   license:bsd-3)))); test framework gtest
+
 (define-public gmsh
   (package
     (name "gmsh")
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] gnu: Add opencascade-oce
  2017-01-26 16:01         ` Paul Garlick
@ 2017-01-30  9:26           ` Ludovic Courtès
  0 siblings, 0 replies; 8+ messages in thread
From: Ludovic Courtès @ 2017-01-30  9:26 UTC (permalink / raw)
  To: Paul Garlick; +Cc: guix-devel

Hi Paul,

Paul Garlick <pgarlick@tourbillion-technology.com> skribis:

> Also, there is an extra configuration flag required to successfully
> build the DRAW libraries and executable.  The '-UCMAKE_INSTALL_RPATH'
> flag is required for the validate-runpath stage to succeed.  This is to
> do with the way the global variable is initialized.  There is a
> distinction in CMake between lists and strings, which was new to me so
> I will document it here.  
> Essentially, if a variable is initialized as a single string it cannot
> subsequently be overriden by a list of strings.  The cmake instructions
> in OpenCascade (in adm/cmake/BuildToolKit.cmake) attempt to do this at
> the install stage.  The DRAW harness needs a RUNPATH including both
> .../lib and .../lib/oce-0.17.  With the standard definition of
> CMAKE_INSTALL_RPATH (from cmake-build-system.scm) the substitution of
> the INSTALL_RPATH property only includes the first string.
>  Consequently, the validate-runpath phase fails (error: library ... not
> in RUNPATH ...).  The configuration flag -UCMAKE_INSTALL_RPATH unsets
> the global variable and allows the opencascade cmake rules to do the
> work instead, setting the RUNPATH correctly for each target.
> On the subject of the 0.18 version, perhaps this could be the subject
> of a separate patch.  There could be an argument to just update in the
> normal way (instead of having two packages at once).  The issue is
> related to the hardware requirements of recent versions of OpenGL.  It
> is useful to start with 0.17 as this imposes the least restriction on
> older graphics card.  I can do some testing on the new version, later
> on, to determine how important this is.

I’ll let you decide.  :-)

> From a5f64ac9b488249027fc92c46d737d4572e57d02 Mon Sep 17 00:00:00 2001
> From: Paul Garlick <pgarlick@tourbillion-technology.com>
> Date: Wed, 18 Jan 2017 10:01:36 +0000
> Subject: [PATCH] gnu: Add opencascade-oce
>
> * gnu/packages/maths.scm: Add opencascade-oce

[...]

> +    (synopsis
> +      "Libraries for 3D modeling and numerical simulation")
> +    (description "OCE stands for Open CASCADE Community Edition.  The project
> +gathers patches/improvements/experiments contributed by users over the official
> +Open CASCADE library.")

I’ve changed the description to explain what Open CASCADE is, adjusted
the commit log, and committed.

Thank you!

Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-01-30  9:26 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-18 11:23 [PATCH] gnu: Add opencascade-oce Paul Garlick
2017-01-18 18:35 ` Marius Bakke
2017-01-19 12:01   ` Paul Garlick
2017-01-21 12:28     ` Marius Bakke
2017-01-21 15:13       ` Ludovic Courtès
2017-01-26 16:01         ` Paul Garlick
2017-01-30  9:26           ` Ludovic Courtès
2017-01-20 22:21   ` Paul Garlick

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).