Skip to content

Commit

Permalink
media-gfx/blender: bump to version 1.79b
Browse files Browse the repository at this point in the history
Add patch from Mark Wright <[email protected]> for GCC 8
compatibility.

Closes: https://bugs.gentoo.org/650592
Closes: https://bugs.gentoo.org/661066
  • Loading branch information
dracwyrm committed Aug 15, 2018
1 parent ca3a809 commit b0b0f8f
Show file tree
Hide file tree
Showing 3 changed files with 313 additions and 0 deletions.
1 change: 1 addition & 0 deletions media-gfx/blender/Manifest
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
DIST blender-2.72b.tar.gz 52018242 BLAKE2B fa0b8ab3feaeb35e76d833415984eb21d7b6dca47b9e5fb337cdfbdc9924165d3345caa5608ee2849bf71855c917a6fa56d79d4f375b57ff367047ef92e8e0b9 SHA512 9767797621e443ff9b6810d1713dda110f883c33626d40d7fe5dda676f549e3591516dc24b75feebd85823dd13437c34521ca752139cd31ddacf31ea6b14e124
DIST blender-2.79.tar.gz 50145270 BLAKE2B 5c11b36840d4bf4a414f01d1f8efcbfb2879ce56c9e2ebe32d8bb0be3ce29fd194dec8b3aa5bca9bf664804c1be57d01394494fdfebc7a4d8257bd2c47866338 SHA512 9b81c41882f4e150476ebda5b301b78c2d35ea918394c8a01671fc031f7cb7a34b5a3d68b6a345f6d23fd9ecedd25bc0bd24f9f9b3ec771237ac4496bbde7d2f
DIST blender-2.79b.tar.gz 50204270 BLAKE2B 78bda294df783ee9bcbcf32f9a112737b2947da5146fd4351b8b36d81c6630ed0ea302b2fb539642cfbdcc4b64df35af5c8545a3bbf50b1cf87dcf3a60eb4ac0 SHA512 2db21ace446168dd683cdb5aad9dec001f8888ae4e9603a04ddb44fb78489ded827deb07e83712b0f1118a0e7bf66f2a5d935dc4ebb3a6703d72672ff414367f
290 changes: 290 additions & 0 deletions media-gfx/blender/blender-2.79b.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,290 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

PYTHON_COMPAT=( python{3_5,3_6} )

inherit check-reqs cmake-utils xdg-utils flag-o-matic gnome2-utils \
pax-utils python-single-r1 toolchain-funcs eapi7-ver

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="$(ver_cut 1-2)"

SLOT="0"
LICENSE="|| ( GPL-2 BL )"
KEYWORDS="~amd64 ~x86"
IUSE="+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 \
osl player sdl sndfile test tiff valgrind"

REQUIRED_USE="${PYTHON_REQUIRED_USE}
cuda? ( cycles )
cycles? ( openexr tiff openimageio )
opencl? ( cycles )
osl? ( cycles llvm )
player? ( game-engine !headless )"

RDEPEND="${PYTHON_DEPS}
>=dev-libs/boost-1.62:=[nls?,threads(+)]
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
collada? ( >=media-libs/opencollada-1.6.18:= )
colorio? ( media-libs/opencolorio )
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? ( virtual/jack )
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 )
opencl? ( virtual/opencl )
openimageio? ( >=media-libs/openimageio-1.7.0 )
openexr? (
>=media-libs/ilmbase-2.2.0:=
>=media-libs/openexr-2.2.0:=
)
opensubdiv? ( >=media-libs/opensubdiv-3.3.0:=[cuda=,opencl=] )
openvdb? (
media-gfx/openvdb[${PYTHON_USEDEP},-abi3-compat(-)]
dev-cpp/tbb
>=dev-libs/c-blosc-1.5.2
)
osl? ( media-libs/osl:= )
sdl? ( media-libs/libsdl2[sound,joystick] )
sndfile? ( media-libs/libsndfile )
tiff? ( media-libs/tiff:0 )
valgrind? ( dev-util/valgrind )"

DEPEND="${RDEPEND}
>=dev-cpp/eigen-3.2.8:3
virtual/pkgconfig
doc? (
app-doc/doxygen[-nodot(-),dot(+),latex]
dev-python/sphinx[latex]
)
nls? ( sys-devel/gettext )"

PATCHES=(
"${FILESDIR}/${PN}-fix-install-rules.patch"
"${FILESDIR}/${P}-gcc-8.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() {
cmake-utils_src_prepare

# 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=ON
-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=$(usex osl)
-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_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)
-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.
addpredict /dev/ati
addpredict /dev/dri
addpredict /dev/nvidiactl

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

cmake-utils_src_install

# 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
xdg_mimeinfo_database_update
}

pkg_postrm() {
gnome2_icon_cache_update
xdg_mimeinfo_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 ""
}
22 changes: 22 additions & 0 deletions media-gfx/blender/files/blender-2.79b-gcc-8.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
--- blender-2.79b-orig/intern/cycles/util/util_sseb.h 2018-03-24 02:22:25.000000000 +1100
+++ blender-2.79b/intern/cycles/util/util_sseb.h 2018-05-30 20:43:33.888717930 +1000
@@ -116,7 +116,7 @@
__forceinline const sseb unpackhi( const sseb& a, const sseb& b ) { return _mm_unpackhi_ps(a, b); }

template<size_t i0, size_t i1, size_t i2, size_t i3> __forceinline const sseb shuffle( const sseb& a ) {
- return _mm_shuffle_epi32(a, _MM_SHUFFLE(i3, i2, i1, i0));
+ return _mm_castsi128_ps(_mm_shuffle_epi32(a, _MM_SHUFFLE(i3, i2, i1, i0)));
}

template<> __forceinline const sseb shuffle<0, 1, 0, 1>( const sseb& a ) {
--- blender-2.79b-orig/intern/itasc/kdl/tree.hpp 2018-03-24 02:22:25.000000000 +1100
+++ blender-2.79b/intern/itasc/kdl/tree.hpp 2018-05-30 20:33:52.045179988 +1000
@@ -34,7 +34,7 @@
//Forward declaration
class TreeElement;
// Eigen allocator is needed for alignment of Eigen data types
- typedef std::map<std::string,TreeElement, std::less<std::string>, Eigen::aligned_allocator<std::pair<std::string, TreeElement> > > SegmentMap;
+ typedef std::map<std::string,TreeElement, std::less<std::string>, Eigen::aligned_allocator<std::pair<const std::string, TreeElement> > > SegmentMap;

class TreeElement
{

0 comments on commit b0b0f8f

Please sign in to comment.