diff options
author | 2016-10-22 18:24:28 +0100 | |
---|---|---|
committer | 2016-10-23 01:25:30 +0200 | |
commit | cb021f3026afbe8c0acf42de427b209b72e69dc3 (patch) | |
tree | 1ea10ea2da04f623e538edcc63a33359a0a02175 /media-gfx | |
parent | media-gfx/openvdb: New package (diff) | |
download | gentoo-cb021f3026afbe8c0acf42de427b209b72e69dc3.tar.gz gentoo-cb021f3026afbe8c0acf42de427b209b72e69dc3.tar.bz2 gentoo-cb021f3026afbe8c0acf42de427b209b72e69dc3.zip |
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@gmail.com, irc: Dracwyrm)
Signed off by: Adrian Grigo (agrigo2001@yahoo.com.au)
Closes: https://github.com/gentoo/gentoo/pull/2531
Signed-off-by: David Seifert <soap@gentoo.org>
Diffstat (limited to 'media-gfx')
-rw-r--r-- | media-gfx/blender/Manifest | 1 | ||||
-rw-r--r-- | media-gfx/blender/blender-2.78.ebuild | 302 | ||||
-rw-r--r-- | media-gfx/blender/files/blender-2.78-C++11-build-fix.patch | 11 | ||||
-rw-r--r-- | media-gfx/blender/files/blender-fix-install-rules.patch | 16 | ||||
-rw-r--r-- | 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 17ebd4898350..666ec08bc1de 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 000000000000..568dadcfcf60 --- /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 000000000000..ca9b5e1fa8e5 --- /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 000000000000..e62aba814b9f --- /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 fb04137768df..003d27d14ccf 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=">=media-gfx/blender-2.72b-r4" type="person"> + <maintainer restrict=">=media-gfx/blender-2.77" type="person"> <email>j.scruggs@gmail.com</email> <name>Jonathan Scruggs</name> - <description>Proxy maintainer</description> </maintainer> - <maintainer restrict=">=media-gfx/blender-2.72b-r4" type="person"> + <maintainer restrict=">=media-gfx/blender-2.77" type="person"> <email>agrigo2001@yahoo.com.au</email> <name>Adrian Grigo</name> - <description>Proxy maintainer</description> - </maintainer> - <maintainer type="project"> - <email>graphics@gentoo.org</email> - <name>Gentoo Graphics Project</name> </maintainer> <maintainer type="project"> <email>proxy-maint@gentoo.org</email> <name>Proxy Maintainers</name> </maintainer> + <maintainer type="project"> + <email>graphics@gentoo.org</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=">=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=">=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=">=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=">=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=">=media-gfx/blender-2.77"> + Enable features depending on llvm. </flag> - <flag name="colorio"> - Enable OpenColorIO color management. + <flag name="man" restrict=">=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="<=media-gfx/blender-2.73"> + Enable use of Open Numerical Library + </flag> + <flag name="opensubdiv" restrict=">=media-gfx/blender-2.77"> + Add rendering support form OpenSubdiv from Dreamworks Animation + through <pkg>media-libs/opensubdiv</pkg>. + </flag> + <flag name="openvdb" restrict=">=media-gfx/blender-2.77"> + Add GPU preview rendering. Only works with nVidia cards. + </flag> + <flag name="openvdb-compression" restrict=">=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="<=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=">=media-gfx/blender-2.77"> + Build the provided unit tests. + </flag> + <flag name="valgrind" restrict=">=media-gfx/blender-2.77"> + Add support for memory debugging using + <pkg>dev-util/valgrind</pkg> + </flag> </use> </pkgmetadata> |