commit:     cb021f3026afbe8c0acf42de427b209b72e69dc3
Author:     Jonathan Scruggs <j.scruggs <AT> gmail <DOT> com>
AuthorDate: Sat Oct 22 17:24:28 2016 +0000
Commit:     David Seifert <soap <AT> gentoo <DOT> org>
CommitDate: Sat Oct 22 23:25:30 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cb021f30

media-gfx/blender: version bump to 2.78

- Switch to EAPI 6
- Added OpenSubDiv support
- Added OpenVDB support
- Fix doc building with binary drivers
- Add warning about directories not tracked by portage

Gentoo-Bug: 536078

Signed off by: Jonathan Scruggs (j.scruggs <AT> gmail.com, irc: Dracwyrm)
Signed off by: Adrian Grigo (agrigo2001 <AT> yahoo.com.au)
Closes: https://github.com/gentoo/gentoo/pull/2531

Signed-off-by: David Seifert <soap <AT> gentoo.org>

 media-gfx/blender/Manifest                         |   1 +
 media-gfx/blender/blender-2.78.ebuild              | 302 +++++++++++++++++++++
 .../files/blender-2.78-C++11-build-fix.patch       |  11 +
 .../blender/files/blender-fix-install-rules.patch  |  16 ++
 media-gfx/blender/metadata.xml                     |  85 ++++--
 5 files changed, 391 insertions(+), 24 deletions(-)

diff --git a/media-gfx/blender/Manifest b/media-gfx/blender/Manifest
index 17ebd48..666ec08 100644
--- a/media-gfx/blender/Manifest
+++ b/media-gfx/blender/Manifest
@@ -1 +1,2 @@
 DIST blender-2.72b.tar.gz 52018242 SHA256 
4436c704afa28e2e5e7b28b2c06981806ddedab70565d40972e422c00644bf47 SHA512 
9767797621e443ff9b6810d1713dda110f883c33626d40d7fe5dda676f549e3591516dc24b75feebd85823dd13437c34521ca752139cd31ddacf31ea6b14e124
 WHIRLPOOL 
3687255bc9f4195b25b66a75630676ee15e67cf10a058dca11b3472617b54aae2bebb1810cc16e19c58ca1c09b1ea8b70f72e30c05632ab0bae8910925a37a54
+DIST blender-2.78.tar.gz 44489809 SHA256 
17863e1ccb3bfdcc932d37cf9e525318130064c756cfb92a9ab479780d3ed441 SHA512 
9144ce28377271dafe973b59721da41b6e3954736c705e1540be8dba3124e4c32e5cce5fb3ef7158505d45401478d257720350b38fa8e8649cc35cbd28a2f978
 WHIRLPOOL 
a1a70cb723a111d1ae5a33b274a0e23bbd9c1b0777f96c917da1b4854171a88b6abe64c0636613008de68e68200a1d387e940ee592ff87c225745c668508d896

diff --git a/media-gfx/blender/blender-2.78.ebuild 
b/media-gfx/blender/blender-2.78.ebuild
new file mode 100644
index 00000000..568dadc
--- /dev/null
+++ b/media-gfx/blender/blender-2.78.ebuild
@@ -0,0 +1,302 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python3_5 )
+
+inherit check-reqs cmake-utils fdo-mime flag-o-matic gnome2-utils \
+       pax-utils python-single-r1 toolchain-funcs versionator
+
+DESCRIPTION="3D Creation/Animation/Publishing System"
+HOMEPAGE="http://www.blender.org";
+
+SRC_URI="http://download.blender.org/source/${P}.tar.gz";
+
+# Blender can have letters in the version string,
+# so strip of the letter if it exists.
+MY_PV="$(get_version_component_range 1-2)"
+
+SLOT="0"
+LICENSE="|| ( GPL-2 BL )"
+KEYWORDS="~amd64 ~x86"
+IUSE="+boost +bullet +dds +elbeem +game-engine +openexr collada colorio \
+       cuda cycles debug doc ffmpeg fftw headless jack jemalloc jpeg2k libav \
+       llvm man ndof nls openal opencl openimageio openmp opensubdiv openvdb \
+       openvdb-compression player sdl sndfile test tiff valgrind"
+
+# OpenCL and nVidia performance is rubbish with Blender
+# If you have nVidia, use CUDA.
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+       player? ( game-engine !headless )
+       cuda? ( cycles !opencl )
+       cycles? ( boost openexr tiff openimageio )
+       colorio? ( boost )
+       openvdb? ( boost )
+       opensubdiv? ( cuda )
+       nls? ( boost )
+       openal? ( boost )
+       opencl? ( cycles )
+       game-engine? ( boost )
+       ?? ( ffmpeg libav )"
+
+# Since not using OpenCL with nVidia, depend on ATI binary
+# blobs as Cycles with OpenCL does not work with any open
+# source drivers.
+COMMON_DEPEND="
+       boost? ( >=dev-libs/boost-1.62:=[nls?,threads(+)] )
+       collada? ( >=media-libs/opencollada-1.6.18:= )
+       colorio? ( >=media-libs/opencolorio-1.0.9-r2 )
+       cuda? ( dev-util/nvidia-cuda-toolkit:= )
+       ffmpeg? ( media-video/ffmpeg:=[x264,mp3,encode,theora,jpeg2k?] )
+       libav? ( >=media-video/libav-11.3:=[x264,mp3,encode,theora,jpeg2k?] )
+       fftw? ( sci-libs/fftw:3.0= )
+       !headless? (
+               x11-libs/libX11
+               x11-libs/libXi
+               x11-libs/libXxf86vm
+       )
+       jack? ( media-sound/jack-audio-connection-kit )
+       jemalloc? ( dev-libs/jemalloc:= )
+       jpeg2k? ( media-libs/openjpeg:0 )
+       llvm? ( sys-devel/llvm )
+       ndof? (
+               app-misc/spacenavd
+               dev-libs/libspnav
+       )
+       nls? ( virtual/libiconv )
+       openal? ( media-libs/openal )
+       openimageio? ( >=media-libs/openimageio-1.6.9 )
+       opencl? ( x11-drivers/ati-drivers:* )
+       openexr? (
+               >=media-libs/ilmbase-2.2.0:=
+               >=media-libs/openexr-2.2.0:=
+       )
+       opensubdiv? ( media-libs/opensubdiv[cuda=,opencl=] )
+       openvdb? (
+               media-gfx/openvdb[${PYTHON_USEDEP},openvdb-compression=]
+               dev-cpp/tbb
+       )
+       openvdb-compression? ( >=dev-libs/c-blosc-1.5.2 )
+       sdl? ( media-libs/libsdl2[sound,joystick] )
+       sndfile? ( media-libs/libsndfile )
+       tiff? ( media-libs/tiff:0 )
+       valgrind? ( dev-util/valgrind )"
+
+RDEPEND="${PYTHON_DEPS}
+       dev-libs/lzo:2
+       >=dev-python/numpy-1.10.1[${PYTHON_USEDEP}]
+       dev-python/requests[${PYTHON_USEDEP}]
+       media-libs/freetype
+       media-libs/glew:*
+       media-libs/libpng:0=
+       media-libs/libsamplerate
+       sys-libs/zlib
+       virtual/glu
+       virtual/jpeg:0=
+       virtual/libintl
+       virtual/opengl
+       ${COMMON_DEPEND}"
+
+DEPEND="${RDEPEND}
+       >=dev-cpp/eigen-3.2.8:3
+       doc? (
+               app-doc/doxygen[-nodot(-),dot(+),latex]
+               dev-python/sphinx[latex]
+       )
+       nls? ( sys-devel/gettext )
+       ${COMMON_DEPEND}"
+
+PATCHES=( "${FILESDIR}"/${P}-C++11-build-fix.patch
+         "${FILESDIR}"/${PN}-fix-install-rules.patch )
+
+blender_check_requirements() {
+       [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+
+       if use doc; then
+               CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend
+       fi
+}
+
+pkg_pretend() {
+       blender_check_requirements
+}
+
+pkg_setup() {
+       blender_check_requirements
+       python-single-r1_pkg_setup
+}
+
+src_prepare() {
+       default
+
+       # we don't want static glew, but it's scattered across
+       # multiple files that differ from version to version
+       # !!!CHECK THIS SED ON EVERY VERSION BUMP!!!
+       local file
+       while IFS="" read -d $'\0' -r file ; do
+               sed -i -e '/-DGLEW_STATIC/d' "${file}" || die
+       done < <(find . -type f -name "CMakeLists.txt")
+
+       # Disable MS Windows help generation. The variable doesn't do what it
+       # it sounds like.
+       sed -e "s|GENERATE_HTMLHELP      = YES|GENERATE_HTMLHELP      = NO|" \
+           -i doc/doxygen/Doxyfile || die
+}
+
+src_configure() {
+       # FIX: forcing '-funsigned-char' fixes an anti-aliasing issue with menu
+       # shadows, see bug #276338 for reference
+       append-flags -funsigned-char
+       append-lfs-flags
+
+       local mycmakeargs=(
+               -DPYTHON_VERSION="${EPYTHON/python/}"
+               -DPYTHON_LIBRARY="$(python_get_library_path)"
+               -DPYTHON_INCLUDE_DIR="$(python_get_includedir)"
+               -DWITH_INSTALL_PORTABLE=OFF
+               -DWITH_PYTHON_INSTALL=OFF
+               -DWITH_PYTHON_INSTALL_NUMPY=OFF
+               -DWITH_STATIC_LIBS=OFF
+               -DWITH_SYSTEM_GLEW=ON
+               -DWITH_SYSTEM_OPENJPEG=ON
+               -DWITH_SYSTEM_EIGEN3=ON
+               -DWITH_SYSTEM_LZO=ON
+               -DWITH_C11=ON
+               -DWITH_CXX11=ON
+               -DWITH_BOOST=$(usex boost)
+               -DWITH_BULLET=$(usex bullet)
+               -DWITH_CODEC_FFMPEG=$(usex ffmpeg)
+               -DWITH_CODEC_SNDFILE=$(usex sndfile)
+               -DWITH_CUDA=$(usex cuda)
+               -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda TRUE FALSE)
+               -DWITH_CYCLES=$(usex cycles)
+               -DWITH_CYCLES_OSL=OFF
+               -DWITH_LLVM=$(usex llvm)
+               -DWITH_FFTW3=$(usex fftw)
+               -DWITH_GAMEENGINE=$(usex game-engine)
+               -DWITH_HEADLESS=$(usex headless)
+               -DWITH_X11=$(usex !headless)
+               -DWITH_IMAGE_DDS=$(usex dds)
+               -DWITH_IMAGE_OPENEXR=$(usex openexr)
+               -DWITH_IMAGE_OPENJPEG=$(usex jpeg2k)
+               -DWITH_IMAGE_TIFF=$(usex tiff)
+               -DWITH_INPUT_NDOF=$(usex ndof)
+               -DWITH_INTERNATIONAL=$(usex nls)
+               -DWITH_JACK=$(usex jack)
+               -DWITH_MOD_FLUID=$(usex elbeem)
+               -DWITH_MOD_OCEANSIM=$(usex fftw)
+               -DWITH_OPENAL=$(usex openal)
+               -DWITH_OPENCL=$(usex opencl)
+               -DWITH_CYCLES_DEVICE_OPENCL=$(usex opencl TRUE FALSE)
+               -DWITH_OPENCOLORIO=$(usex colorio)
+               -DWITH_OPENCOLLADA=$(usex collada)
+               -DWITH_OPENIMAGEIO=$(usex openimageio)
+               -DWITH_OPENMP=$(usex openmp)
+               -DWITH_OPENSUBDIV=$(usex opensubdiv)
+               -DWITH_OPENVDB=$(usex openvdb)
+               -DWITH_OPENVDB_BLOSC=$(usex openvdb-compression)
+               -DWITH_PLAYER=$(usex player)
+               -DWITH_SDL=$(usex sdl)
+               -DWITH_CXX_GUARDEDALLOC=$(usex debug)
+               -DWITH_ASSERT_ABORT=$(usex debug)
+               -DWITH_GTESTS=$(usex test)
+               -DWITH_DOC_MANPAGE=$(usex man)
+               -DWITH_MEM_JEMALLOC=$(usex jemalloc)
+               -DWITH_MEM_VALGRIND=$(usex valgrind)
+       )
+       cmake-utils_src_configure
+}
+
+src_compile() {
+       cmake-utils_src_compile
+
+       if use doc; then
+               # Workaround for binary drivers.
+               local card
+               local cards=( /dev/ati/card* /dev/nvidia* )
+               for card in "${cards[@]}"; do addpredict "${card}"; done
+
+               einfo "Generating Blender C/C++ API docs ..."
+               cd "${CMAKE_USE_DIR}"/doc/doxygen || die
+               doxygen -u Doxyfile || die
+               doxygen || die "doxygen failed to build API docs."
+
+               cd "${CMAKE_USE_DIR}" || die
+               einfo "Generating (BPY) Blender Python API docs ..."
+               "${BUILD_DIR}"/bin/blender --background --python 
doc/python_api/sphinx_doc_gen.py -noaudio || die "sphinx failed."
+
+               cd "${CMAKE_USE_DIR}"/doc/python_api || die
+               sphinx-build sphinx-in BPY_API || die "sphinx failed."
+       fi
+}
+
+src_test() {
+       if use test; then
+               einfo "Running Blender Unit Tests ..."
+               cd "${BUILD_DIR}"/bin/tests || die
+               local f
+               for f in *_test; do
+                       ./"${f}" || die
+               done
+       fi
+}
+
+src_install() {
+       # Pax mark blender for hardened support.
+       pax-mark m "${CMAKE_BUILD_DIR}"/bin/blender
+
+       if use doc; then
+               docinto "html/API/python"
+               dodoc -r "${CMAKE_USE_DIR}"/doc/python_api/BPY_API/.
+
+               docinto "html/API/blender"
+               dodoc -r "${CMAKE_USE_DIR}"/doc/doxygen/html/.
+       fi
+
+       emake -C "${CMAKE_BUILD_DIR}" DESTDIR="${D}" install/fast
+
+       # fix doc installdir
+       docinto "html"
+       dodoc "${CMAKE_USE_DIR}"/release/text/readme.html
+       rm -r "${ED%/}"/usr/share/doc/blender || die
+
+       python_fix_shebang "${ED%/}/usr/bin/blender-thumbnailer.py"
+       python_optimize "${ED%/}/usr/share/blender/${MY_PV}/scripts"
+}
+
+pkg_preinst() {
+       gnome2_icon_savelist
+}
+
+pkg_postinst() {
+       elog
+       elog "Blender uses python integration. As such, may have some"
+       elog "inherit risks with running unknown python scripts."
+       elog
+       elog "It is recommended to change your blender temp directory"
+       elog "from /tmp to /home/user/tmp or another tmp file under your"
+       elog "home directory. This can be done by starting blender, then"
+       elog "dragging the main menu down do display all paths."
+       elog
+       ewarn
+       ewarn "This ebuild does not unbundle the massive amount of 3rd party"
+       ewarn "libraries which are shipped with blender. Note that"
+       ewarn "these have caused security issues in the past."
+       ewarn "If you are concerned about security, file a bug upstream:"
+       ewarn "  https://developer.blender.org/";
+       ewarn
+       gnome2_icon_cache_update
+       fdo-mime_desktop_database_update
+}
+
+pkg_postrm() {
+       gnome2_icon_cache_update
+       fdo-mime_desktop_database_update
+
+       ewarn ""
+       ewarn "You may want to remove the following directory."
+       ewarn "~/.config/${PN}/${MY_PV}/cache/"
+       ewarn "It may contain extra render kernels not tracked by portage"
+       ewarn ""
+}

diff --git a/media-gfx/blender/files/blender-2.78-C++11-build-fix.patch 
b/media-gfx/blender/files/blender-2.78-C++11-build-fix.patch
new file mode 100644
index 00000000..ca9b5e1
--- /dev/null
+++ b/media-gfx/blender/files/blender-2.78-C++11-build-fix.patch
@@ -0,0 +1,11 @@
+diff -purN a/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp 
b/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp
+--- a/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp      
2016-09-28 10:26:55.000000000 +0100
++++ b/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp      
2016-10-04 11:13:46.489404123 +0100
+@@ -34,6 +34,7 @@
+ #include <math.h>
+ #include <stdlib.h>
+ #include <algorithm>
++#include <cmath>
+ 
+ #include "rayobject_rtbuild.h"
+ 

diff --git a/media-gfx/blender/files/blender-fix-install-rules.patch 
b/media-gfx/blender/files/blender-fix-install-rules.patch
new file mode 100644
index 00000000..e62aba8
--- /dev/null
+++ b/media-gfx/blender/files/blender-fix-install-rules.patch
@@ -0,0 +1,16 @@
+diff -purN a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
+--- a/source/creator/CMakeLists.txt    2016-09-28 10:26:55.000000000 +0100
++++ b/source/creator/CMakeLists.txt    2016-10-03 12:17:08.938928486 +0100
+@@ -328,12 +328,6 @@ endif()
+ # Install Targets (Generic, All Platforms)
+ 
+ 
+-# important to make a clean  install each time, else old scripts get loaded.
+-install(
+-      CODE
+-      "file(REMOVE_RECURSE ${TARGETDIR_VER})"
+-)
+-
+ if(WITH_PYTHON)
+       # install(CODE "message(\"copying blender scripts...\")")
+       

diff --git a/media-gfx/blender/metadata.xml b/media-gfx/blender/metadata.xml
index fb04137..003d27d 100644
--- a/media-gfx/blender/metadata.xml
+++ b/media-gfx/blender/metadata.xml
@@ -1,24 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
 <pkgmetadata>
-       <maintainer restrict="&gt;=media-gfx/blender-2.72b-r4" type="person">
+       <maintainer restrict="&gt;=media-gfx/blender-2.77" type="person">
                <email>[email protected]</email>
                <name>Jonathan Scruggs</name>
-               <description>Proxy maintainer</description>
        </maintainer>
-       <maintainer restrict="&gt;=media-gfx/blender-2.72b-r4" type="person">
+       <maintainer restrict="&gt;=media-gfx/blender-2.77" type="person">
                <email>[email protected]</email>
                <name>Adrian Grigo</name>
-               <description>Proxy maintainer</description>
-       </maintainer>
-       <maintainer type="project">
-               <email>[email protected]</email>
-               <name>Gentoo Graphics Project</name>
        </maintainer>
        <maintainer type="project">
                <email>[email protected]</email>
                <name>Proxy Maintainers</name>
        </maintainer>
+       <maintainer type="project">
+               <email>[email protected]</email>
+               <name>Gentoo Graphics Project</name>
+       </maintainer>
 
        <longdescription>
                Blender, the open source software for 3D modeling, animation,
@@ -26,13 +24,23 @@
        </longdescription>
 
        <use>
-               <flag name="game-engine" restrict="&gt;=media-gfx/blender-2.50">
-                       Adds Game Engine support to Blender.
+               <flag name="boost">
+                       Enable features depending on boost.
+               </flag>
+               <flag name="bullet">
+                       Enable Bullet (Physics Engine).
                </flag>
                <flag name="collada">
                        Add support for Collada interchange format through
                        <pkg>media-libs/opencollada</pkg>.
                </flag>
+               <flag name="colorio">
+                       Enable OpenColorIO color management through
+                       <pkg>media-libs/opencolorio</pkg>.
+               </flag>
+               <flag name="cuda">
+                       Build cycles renderer with nVidia CUDA support.
+               </flag>
                <flag name="cycles">
                        Build cycles renderer (requires 
<pkg>media-libs/openimageio</pkg> and
                        <pkg>dev-libs/boost</pkg>).
@@ -40,32 +48,61 @@
                <flag name="dds">
                        Adds DDS textures support to Blender.
                </flag>
-               <flag name="player">
-                       Build the Blender Player. THis requires the Game engine.
+               <flag name="doc">
+                       Build C and Python API documentation directly from the 
source code.
                </flag>
                <flag name="elbeem">
                        Adds surface fluid simulation to Blender using El'Beem 
library.
                </flag>
-               <flag name="doc">
-                       Build C and Python API documentation directly from the 
source code.
+               <flag name="game-engine" restrict="&gt;=media-gfx/blender-2.50">
+                       Adds Game Engine support to Blender.
                </flag>
-               <flag name="redcode">
-                       This flag add support for RED CODE camera digital 
format (5K HD
-                       images *.r3d) - EXPERIMENTAL.
+               <flag name="headless" restrict="&gt;=media-gfx/blender-2.77">
+                       Build without graphical support (renderfarm, server 
mode only).
                </flag>
-               <flag name="boost">
-                       Enable features depending on boost.
+               <flag name="jemalloc" restrict="&gt;=media-gfx/blender-2.77">
+                       Use <pkg>dev-libs/jemalloc</pkg> for memory allocation.
                </flag>
-               <flag name="bullet">
-                       Enable Bullet (Physics Engine).
+               <flag name="llvm" restrict="&gt;=media-gfx/blender-2.77">
+                       Enable features depending on llvm.
                </flag>
-               <flag name="colorio">
-                       Enable OpenColorIO color management.
+               <flag name="man" restrict="&gt;=media-gfx/blender-2.77">
+                       Build and install man pages.
                </flag>
                <flag name="ndof">
                        Enable NDOF input devices (SpaceNavigator and friends).
                </flag>
+               <flag name="opencl">
+                       Build cycles renderer with OpenCL GPU enhancements.
+               </flag>
                <flag name="openimageio">Enable OpenImageIO Support</flag>
-               <flag name="opennl">Enable use of Open Numerical Library</flag>
+               <flag name="opennl" restrict="&lt;=media-gfx/blender-2.73">
+                       Enable use of Open Numerical Library
+               </flag>
+               <flag name="opensubdiv" restrict="&gt;=media-gfx/blender-2.77">
+                       Add rendering support form OpenSubdiv from Dreamworks 
Animation
+                       through <pkg>media-libs/opensubdiv</pkg>.
+               </flag>
+               <flag name="openvdb" restrict="&gt;=media-gfx/blender-2.77">
+                       Add GPU preview rendering. Only works with nVidia cards.
+               </flag>
+               <flag name="openvdb-compression" 
restrict="&gt;=media-gfx/blender-2.77">
+                       Support optional compression used by OpenVDB (requires
+                       <pkg>media-gfx/openvdb</pkg>).
+               </flag>
+               <flag name="player">
+                       Build the Blender Player. THis requires the Game engine.
+               </flag>
+               <flag name="redcode" restrict="&lt;=media-gfx/blender-2.73">
+                       This flag add support for RED CODE camera digital 
format (5K HD
+                       images *.r3d) - EXPERIMENTAL.
+               </flag>
+               <flag name="test" restrict="&gt;=media-gfx/blender-2.77">
+                       Build the provided unit tests.
+               </flag>
+               <flag name="valgrind" restrict="&gt;=media-gfx/blender-2.77">
+                       Add support for memory debugging using
+                       <pkg>dev-util/valgrind</pkg>
+               </flag>
        </use>
 </pkgmetadata>

Reply via email to