[PATCH]: Fix Blender missing Voxel Remesher

  • Done
  • quality assurance status badge
Details
3 participants
  • Ekaitz Zarraga
  • Leo Famulari
  • Ricardo Wurmus
Owner
unassigned
Submitted by
Ekaitz Zarraga
Severity
normal
E
E
Ekaitz Zarraga wrote on 29 Mar 2021 16:17
(name . guix-patches@gnu.org)(address . guix-patches@gnu.org)
BNJM6sgD3qkQEnMpN5ovpwdbPTX2yKVDoJDsFe1MjZRD3tzcxc_1IY5ynTIwFBiFmOpa_9_dRv0h56lq4AXiB94eKAK4nwu9HC801em-EsM=@elenq.tech
Hi,

According to bug#47463[^1], Blender is missing a dependency that
doesn't allow to run the Voxel Remesher.

This series of patches solve that.

I have a comment on the first one. I'm not sure if I did it right.

I don't see a better way to set the `rpath` correcty. It should
find the lib by itself but the package has an executable as
ouput that doesn't find the library the package itself generates.
Removing the extra phase I added shows the RPATH is set to `lib`
instead to the absolute path of the library so the runpath check
fails to execute.

This is the best way I found to solve that but I'm sure whoever
that gets this patch knows a better way to handle that.

I tested Blender with this and it runs the Voxel Remesher as
expected.

Please, don't hesitate to send me any comment.

Thanks!


From 9a3bec5d8c19351d106d471a722e7b3d3d0350c0 Mon Sep 17 00:00:00 2001
From: Ekaitz Zarraga <ekaitz@elenq.tech>
Date: Mon, 29 Mar 2021 16:04:23 +0200
Subject: [PATCH 1/2] gnu: Add openvdb.

* gnu/packages/graphics.scm (openvdb): New variable.
---
gnu/packages/graphics.scm | 44 +++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)

Toggle diff (57 lines)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 4a301d387a..b4df9f5c04 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -463,6 +463,50 @@ Embree is meant to increase performance of photo-realistic rendering
applications.")
(license license:asl2.0)))
+
+(define-public openvdb
+ (package
+ (name "openvdb")
+ (version "8.0.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/AcademySoftwareFoundation/openvdb/")
+ (commit (string-append "v" version))
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0qzx6l5c183k6j9zki31gg9aixf5s1j46wdi7wr1h3bz7k53syg9"))))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-runpath
+ (lambda* (#:key outputs #:allow-other-keys)
+ (setenv
+ "LDFLAGS"
+ (string-append "-Wl,-rpath=" (assoc-ref outputs "out") "/lib/"))
+ #t)))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("unzip" ,unzip)
+ ("pkg-config",pkg-config)))
+ (inputs
+ `(("openexr" ,openexr)
+ ("boost" ,boost)
+ ("jemalloc" ,jemalloc)
+ ("c-blosc" ,c-blosc)
+ ("ilmbase" ,ilmbase)
+ ("tbb" ,tbb)))
+ (home-page "https://www.openvdb.org/")
+ (synopsis "Sparse volume data structure and tools")
+ (description "OpenVDB is an open source C++ library comprising a novel
+hierarchical data structure and a large suite of tools for the efficient
+storage and manipulation of sparse volumetric data discretized on
+three-dimensional grids. It was developed by DreamWorks Animation for use in
+volumetric applications typically encountered in feature film production.")
+ (license license:mpl2.0)))
+
+
(define-public blender
(package
(name "blender")
--
2.31.0
From 630ebdeec1b8524d09c811ac93dbbe46d31daa45 Mon Sep 17 00:00:00 2001
From: Ekaitz Zarraga <ekaitz@elenq.tech>
Date: Mon, 29 Mar 2021 16:05:04 +0200
Subject: [PATCH 2/2] gnu: blender: Update dependencies

* gnu/packages/graphics.scm (blender): Add dependencies and flags
---
gnu/packages/graphics.scm | 4 ++++
1 file changed, 4 insertions(+)

Toggle diff (24 lines)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index b4df9f5c04..ddf6a6c2ba 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -534,6 +534,8 @@ volumetric applications typically encountered in feature film production.")
"-DWITH_INSTALL_PORTABLE=OFF"
"-DWITH_JACK=ON"
"-DWITH_MOD_OCEANSIM=ON"
+ "-DWITH_OPENVDB=ON"
+ "-DWITH_TBB=ON"
"-DWITH_OPENSUBDIV=ON"
"-DWITH_PYTHON_INSTALL=OFF"
(string-append "-DPYTHON_LIBRARY=python" ,python-version)
@@ -589,6 +591,8 @@ volumetric applications typically encountered in feature film production.")
("pugixml" ,pugixml)
("python" ,python)
("python-numpy" ,python-numpy)
+ ("openvdb" ,openvdb)
+ ("libxxf86vm" ,libxxf86vm)
("tbb" ,tbb)
("zlib" ,zlib)
("embree" ,embree)))
--
2.31.0
E
E
Ekaitz Zarraga wrote on 29 Mar 2021 20:17
[PATCH]: Fix Blender missing Voxel Remesher (Follows)
(name . 47467@debbugs.gnu.org)(address . 47467@debbugs.gnu.org)
uG-eQstvIag6z9SU0DuyUFdM0mHaikmIx073yXhDpdAsJt6Al9-6GXqD4x0qg96QrATE-5YZWEqV9uP-NYWK5cdKGzHavOtYNZKfevMx15c=@elenq.tech
Looks like Nix package I used as a reference has unneeded inputs.

This is the updated OpenVDB package.

:)
From e868ccaee0db0b1cc267cf66cf8279f92263f1fe Mon Sep 17 00:00:00 2001
From: Ekaitz Zarraga <ekaitz@elenq.tech>
Date: Mon, 29 Mar 2021 16:04:23 +0200
Subject: [PATCH 1/2] gnu: Add openvdb.

* gnu/packages/graphics.scm (openvdb): New variable.
---
gnu/packages/graphics.scm | 42 +++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)

Toggle diff (55 lines)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 4a301d387a..344d44fcbf 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -463,6 +463,48 @@ Embree is meant to increase performance of photo-realistic rendering
applications.")
(license license:asl2.0)))
+
+(define-public openvdb
+ (package
+ (name "openvdb")
+ (version "8.0.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/AcademySoftwareFoundation/openvdb/")
+ (commit (string-append "v" version))
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0qzx6l5c183k6j9zki31gg9aixf5s1j46wdi7wr1h3bz7k53syg9"))))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-runpath
+ (lambda* (#:key outputs #:allow-other-keys)
+ (setenv
+ "LDFLAGS"
+ (string-append "-Wl,-rpath=" (assoc-ref outputs "out") "/lib/"))
+ #t)))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("pkg-config",pkg-config)))
+ (inputs
+ `(("boost" ,boost)
+ ("zlib" ,zlib)
+ ("c-blosc" ,c-blosc)
+ ("ilmbase" ,ilmbase)
+ ("tbb" ,tbb)))
+ (home-page "https://www.openvdb.org/")
+ (synopsis "Sparse volume data structure and tools")
+ (description "OpenVDB is an open source C++ library comprising a novel
+hierarchical data structure and a large suite of tools for the efficient
+storage and manipulation of sparse volumetric data discretized on
+three-dimensional grids. It was developed by DreamWorks Animation for use in
+volumetric applications typically encountered in feature film production.")
+ (license license:mpl2.0)))
+
+
(define-public blender
(package
(name "blender")
--
2.31.0
R
R
Ricardo Wurmus wrote on 12 Apr 2021 16:14
[PATCH]: Fix Blender missing Voxel Remesher
(address . 47467@debbugs.gnu.org)
87wnt7vbd4.fsf@elephly.net
I pushed a slightly modified version of your openvdb addition to the
“master” branch.

As for the second patch, I think it would be good to leave off the
addition of libxxf86vm, because it seems that it’s unrelated to enabling
the voxel remesher feature.

If you could confirm that, I’d be happy to apply a modified second
patch. The commit message for that second patch should list the actual
changes like this:

Toggle snippet (6 lines)
gnu: blender: Add and enable support for OpenVDB and TBB.

* gnu/packages/graphics.scm (blender)[arguments]: Enable OpenVDB and TBB.
[inputs]: Add openvdb.

Thanks for working on this!

--
Ricardo
E
E
Ekaitz Zarraga wrote on 21 Apr 2021 17:36
DGx0dZZZixmFZt4yZTY3LCkZy_bbEv_Ew0qrctGuwNxhOuCGOqpt1HskOm_pWO8EABy-xUs5wQFTV3oGMCDey8xKuc-a8mW4zFS2uBFnIj4=@elenq.tech
Hi,

Sorry for the delay.

As I told Ricardo on IRC, I'm going to review all the inputs of
the package Blender because the official installation guide
proposes some inputs that we are not including specifically.

Until I do that, I'm compiling blender with the minimum changes
to make the voxel remesher work and I'll append the minimum patch
to this issue when it compiles (1h or so) and I test it.

Thanks for your time,
Ekaitz
E
E
Ekaitz Zarraga wrote on 21 Apr 2021 18:03
W97Uc0VcONvby3EkKJ7oW2PBIrK9qUudZ-ZO7V5q0W1V7CZFz9A0kv_1JbwEsmn_Zda1GwGr4STGEehVvV7kyz-DUZdIvMeVW2RqD_oNyVk=@elenq.tech
This is the new patch with the minimum changes.
I tested it and the voxel remesher works without issues.

Cheers!
From 4c3705efbd24a63614ecfa964c661a503c8001a9 Mon Sep 17 00:00:00 2001
From: Ekaitz Zarraga <ekaitz@elenq.tech>
Date: Wed, 21 Apr 2021 17:59:32 +0200
Subject: [PATCH] gnu: blender: Update dependencies

* gnu/packages/graphics.scm (blender):
[inputs]: Add openvdb
[arguments]: Add configure flags for openvdb
---
gnu/packages/graphics.scm | 2 ++
1 file changed, 2 insertions(+)

Toggle diff (22 lines)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index f9f19cc28d..ef3be67b25 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -527,6 +527,7 @@ typically encountered in feature film production.")
"-DWITH_INSTALL_PORTABLE=OFF"
"-DWITH_JACK=ON"
"-DWITH_MOD_OCEANSIM=ON"
+ "-DWITH_OPENVDB=ON"
"-DWITH_OPENSUBDIV=ON"
"-DWITH_PYTHON_INSTALL=OFF"
(string-append "-DPYTHON_LIBRARY=python" ,python-version)
@@ -582,6 +583,7 @@ typically encountered in feature film production.")
("pugixml" ,pugixml)
("python" ,python)
("python-numpy" ,python-numpy)
+ ("openvdb" ,openvdb)
("tbb" ,tbb)
("zlib" ,zlib)
("embree" ,embree)))
--
2.31.0
L
L
Leo Famulari wrote on 21 Apr 2021 18:19
Re: [bug#47467] [PATCH]: Fix Blender missing Voxel Remesher
(name . Ekaitz Zarraga)(address . ekaitz@elenq.tech)
YIBQkP2YcNu42FMU@jasmine.lan
On Wed, Apr 21, 2021 at 04:03:20PM +0000, Ekaitz Zarraga wrote:
Toggle quote (3 lines)
> This is the new patch with the minimum changes.
> I tested it and the voxel remesher works without issues.

Thanks!

Toggle quote (9 lines)
> From 4c3705efbd24a63614ecfa964c661a503c8001a9 Mon Sep 17 00:00:00 2001
> From: Ekaitz Zarraga <ekaitz@elenq.tech>
> Date: Wed, 21 Apr 2021 17:59:32 +0200
> Subject: [PATCH] gnu: blender: Update dependencies
>
> * gnu/packages/graphics.scm (blender):
> [inputs]: Add openvdb
> [arguments]: Add configure flags for openvdb

I pushed as 823752646f4992efdd4162724b46e04dda8b660a after rewriting the
commit message to 1) have a descriptive title, 2) use complete sentences
and 3) Describe the changes in terms of code. As well as re-indenting.
Closed
?