Gentoo Archives: gentoo-commits

From: Jonathan Scruggs <dracwyrm@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-gfx/blender/, media-gfx/blender/files/
Date: Wed, 15 Aug 2018 20:08:54
Message-Id: 1534363698.b0b0f8fb104fdd0867db97591866bc1b5af425d6.dracwyrm@gentoo
1 commit: b0b0f8fb104fdd0867db97591866bc1b5af425d6
2 Author: Jonathan Scruggs <j.scruggs <AT> gmail <DOT> com>
3 AuthorDate: Wed Aug 15 17:44:26 2018 +0000
4 Commit: Jonathan Scruggs <dracwyrm <AT> gentoo <DOT> org>
5 CommitDate: Wed Aug 15 20:08:18 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b0b0f8fb
7
8 media-gfx/blender: bump to version 1.79b
9
10 Add patch from Mark Wright <gienah <AT> gentoo.org> for GCC 8
11 compatibility.
12
13 Closes: https://bugs.gentoo.org/650592
14 Closes: https://bugs.gentoo.org/661066
15
16 media-gfx/blender/Manifest | 1 +
17 media-gfx/blender/blender-2.79b.ebuild | 290 ++++++++++++++++++++++
18 media-gfx/blender/files/blender-2.79b-gcc-8.patch | 22 ++
19 3 files changed, 313 insertions(+)
20
21 diff --git a/media-gfx/blender/Manifest b/media-gfx/blender/Manifest
22 index aa35aa9dcac..42826ca0c67 100644
23 --- a/media-gfx/blender/Manifest
24 +++ b/media-gfx/blender/Manifest
25 @@ -1,2 +1,3 @@
26 DIST blender-2.72b.tar.gz 52018242 BLAKE2B fa0b8ab3feaeb35e76d833415984eb21d7b6dca47b9e5fb337cdfbdc9924165d3345caa5608ee2849bf71855c917a6fa56d79d4f375b57ff367047ef92e8e0b9 SHA512 9767797621e443ff9b6810d1713dda110f883c33626d40d7fe5dda676f549e3591516dc24b75feebd85823dd13437c34521ca752139cd31ddacf31ea6b14e124
27 DIST blender-2.79.tar.gz 50145270 BLAKE2B 5c11b36840d4bf4a414f01d1f8efcbfb2879ce56c9e2ebe32d8bb0be3ce29fd194dec8b3aa5bca9bf664804c1be57d01394494fdfebc7a4d8257bd2c47866338 SHA512 9b81c41882f4e150476ebda5b301b78c2d35ea918394c8a01671fc031f7cb7a34b5a3d68b6a345f6d23fd9ecedd25bc0bd24f9f9b3ec771237ac4496bbde7d2f
28 +DIST blender-2.79b.tar.gz 50204270 BLAKE2B 78bda294df783ee9bcbcf32f9a112737b2947da5146fd4351b8b36d81c6630ed0ea302b2fb539642cfbdcc4b64df35af5c8545a3bbf50b1cf87dcf3a60eb4ac0 SHA512 2db21ace446168dd683cdb5aad9dec001f8888ae4e9603a04ddb44fb78489ded827deb07e83712b0f1118a0e7bf66f2a5d935dc4ebb3a6703d72672ff414367f
29
30 diff --git a/media-gfx/blender/blender-2.79b.ebuild b/media-gfx/blender/blender-2.79b.ebuild
31 new file mode 100644
32 index 00000000000..4dc6dd61ee6
33 --- /dev/null
34 +++ b/media-gfx/blender/blender-2.79b.ebuild
35 @@ -0,0 +1,290 @@
36 +# Copyright 1999-2018 Gentoo Foundation
37 +# Distributed under the terms of the GNU General Public License v2
38 +
39 +EAPI=6
40 +
41 +PYTHON_COMPAT=( python{3_5,3_6} )
42 +
43 +inherit check-reqs cmake-utils xdg-utils flag-o-matic gnome2-utils \
44 + pax-utils python-single-r1 toolchain-funcs eapi7-ver
45 +
46 +DESCRIPTION="3D Creation/Animation/Publishing System"
47 +HOMEPAGE="http://www.blender.org"
48 +
49 +SRC_URI="http://download.blender.org/source/${P}.tar.gz"
50 +
51 +# Blender can have letters in the version string,
52 +# so strip of the letter if it exists.
53 +MY_PV="$(ver_cut 1-2)"
54 +
55 +SLOT="0"
56 +LICENSE="|| ( GPL-2 BL )"
57 +KEYWORDS="~amd64 ~x86"
58 +IUSE="+bullet +dds +elbeem +game-engine +openexr collada colorio \
59 + cuda cycles debug doc ffmpeg fftw headless jack jemalloc jpeg2k libav \
60 + llvm man ndof nls openal opencl openimageio openmp opensubdiv openvdb \
61 + osl player sdl sndfile test tiff valgrind"
62 +
63 +REQUIRED_USE="${PYTHON_REQUIRED_USE}
64 + cuda? ( cycles )
65 + cycles? ( openexr tiff openimageio )
66 + opencl? ( cycles )
67 + osl? ( cycles llvm )
68 + player? ( game-engine !headless )"
69 +
70 +RDEPEND="${PYTHON_DEPS}
71 + >=dev-libs/boost-1.62:=[nls?,threads(+)]
72 + dev-libs/lzo:2
73 + >=dev-python/numpy-1.10.1[${PYTHON_USEDEP}]
74 + dev-python/requests[${PYTHON_USEDEP}]
75 + media-libs/freetype
76 + media-libs/glew:*
77 + media-libs/libpng:0=
78 + media-libs/libsamplerate
79 + sys-libs/zlib
80 + virtual/glu
81 + virtual/jpeg:0=
82 + virtual/libintl
83 + virtual/opengl
84 + collada? ( >=media-libs/opencollada-1.6.18:= )
85 + colorio? ( media-libs/opencolorio )
86 + cuda? ( dev-util/nvidia-cuda-toolkit:= )
87 + ffmpeg? ( media-video/ffmpeg:=[x264,mp3,encode,theora,jpeg2k?] )
88 + libav? ( >=media-video/libav-11.3:=[x264,mp3,encode,theora,jpeg2k?] )
89 + fftw? ( sci-libs/fftw:3.0= )
90 + !headless? (
91 + x11-libs/libX11
92 + x11-libs/libXi
93 + x11-libs/libXxf86vm
94 + )
95 + jack? ( virtual/jack )
96 + jemalloc? ( dev-libs/jemalloc:= )
97 + jpeg2k? ( media-libs/openjpeg:0 )
98 + llvm? ( sys-devel/llvm:= )
99 + ndof? (
100 + app-misc/spacenavd
101 + dev-libs/libspnav
102 + )
103 + nls? ( virtual/libiconv )
104 + openal? ( media-libs/openal )
105 + opencl? ( virtual/opencl )
106 + openimageio? ( >=media-libs/openimageio-1.7.0 )
107 + openexr? (
108 + >=media-libs/ilmbase-2.2.0:=
109 + >=media-libs/openexr-2.2.0:=
110 + )
111 + opensubdiv? ( >=media-libs/opensubdiv-3.3.0:=[cuda=,opencl=] )
112 + openvdb? (
113 + media-gfx/openvdb[${PYTHON_USEDEP},-abi3-compat(-)]
114 + dev-cpp/tbb
115 + >=dev-libs/c-blosc-1.5.2
116 + )
117 + osl? ( media-libs/osl:= )
118 + sdl? ( media-libs/libsdl2[sound,joystick] )
119 + sndfile? ( media-libs/libsndfile )
120 + tiff? ( media-libs/tiff:0 )
121 + valgrind? ( dev-util/valgrind )"
122 +
123 +DEPEND="${RDEPEND}
124 + >=dev-cpp/eigen-3.2.8:3
125 + virtual/pkgconfig
126 + doc? (
127 + app-doc/doxygen[-nodot(-),dot(+),latex]
128 + dev-python/sphinx[latex]
129 + )
130 + nls? ( sys-devel/gettext )"
131 +
132 +PATCHES=(
133 + "${FILESDIR}/${PN}-fix-install-rules.patch"
134 + "${FILESDIR}/${P}-gcc-8.patch"
135 +)
136 +
137 +blender_check_requirements() {
138 + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
139 +
140 + if use doc; then
141 + CHECKREQS_DISK_BUILD="4G" check-reqs_pkg_pretend
142 + fi
143 +}
144 +
145 +pkg_pretend() {
146 + blender_check_requirements
147 +}
148 +
149 +pkg_setup() {
150 + blender_check_requirements
151 + python-single-r1_pkg_setup
152 +}
153 +
154 +src_prepare() {
155 + cmake-utils_src_prepare
156 +
157 + # we don't want static glew, but it's scattered across
158 + # multiple files that differ from version to version
159 + # !!!CHECK THIS SED ON EVERY VERSION BUMP!!!
160 + local file
161 + while IFS="" read -d $'\0' -r file ; do
162 + sed -i -e '/-DGLEW_STATIC/d' "${file}" || die
163 + done < <(find . -type f -name "CMakeLists.txt")
164 +
165 + # Disable MS Windows help generation. The variable doesn't do what it
166 + # it sounds like.
167 + sed -e "s|GENERATE_HTMLHELP = YES|GENERATE_HTMLHELP = NO|" \
168 + -i doc/doxygen/Doxyfile || die
169 +}
170 +
171 +src_configure() {
172 + # FIX: forcing '-funsigned-char' fixes an anti-aliasing issue with menu
173 + # shadows, see bug #276338 for reference
174 + append-flags -funsigned-char
175 + append-lfs-flags
176 +
177 + local mycmakeargs=(
178 + -DPYTHON_VERSION="${EPYTHON/python/}"
179 + -DPYTHON_LIBRARY="$(python_get_library_path)"
180 + -DPYTHON_INCLUDE_DIR="$(python_get_includedir)"
181 + -DWITH_INSTALL_PORTABLE=OFF
182 + -DWITH_PYTHON_INSTALL=OFF
183 + -DWITH_PYTHON_INSTALL_NUMPY=OFF
184 + -DWITH_STATIC_LIBS=OFF
185 + -DWITH_SYSTEM_GLEW=ON
186 + -DWITH_SYSTEM_OPENJPEG=ON
187 + -DWITH_SYSTEM_EIGEN3=ON
188 + -DWITH_SYSTEM_LZO=ON
189 + -DWITH_C11=ON
190 + -DWITH_CXX11=ON
191 + -DWITH_BOOST=ON
192 + -DWITH_BULLET=$(usex bullet)
193 + -DWITH_CODEC_FFMPEG=$(usex ffmpeg)
194 + -DWITH_CODEC_SNDFILE=$(usex sndfile)
195 + -DWITH_CUDA=$(usex cuda)
196 + -DWITH_CYCLES_DEVICE_CUDA=$(usex cuda TRUE FALSE)
197 + -DWITH_CYCLES=$(usex cycles)
198 + -DWITH_CYCLES_OSL=$(usex osl)
199 + -DWITH_LLVM=$(usex llvm)
200 + -DWITH_FFTW3=$(usex fftw)
201 + -DWITH_GAMEENGINE=$(usex game-engine)
202 + -DWITH_HEADLESS=$(usex headless)
203 + -DWITH_X11=$(usex !headless)
204 + -DWITH_IMAGE_DDS=$(usex dds)
205 + -DWITH_IMAGE_OPENEXR=$(usex openexr)
206 + -DWITH_IMAGE_OPENJPEG=$(usex jpeg2k)
207 + -DWITH_IMAGE_TIFF=$(usex tiff)
208 + -DWITH_INPUT_NDOF=$(usex ndof)
209 + -DWITH_INTERNATIONAL=$(usex nls)
210 + -DWITH_JACK=$(usex jack)
211 + -DWITH_MOD_FLUID=$(usex elbeem)
212 + -DWITH_MOD_OCEANSIM=$(usex fftw)
213 + -DWITH_OPENAL=$(usex openal)
214 + -DWITH_OPENCL=$(usex opencl)
215 + -DWITH_OPENCOLORIO=$(usex colorio)
216 + -DWITH_OPENCOLLADA=$(usex collada)
217 + -DWITH_OPENIMAGEIO=$(usex openimageio)
218 + -DWITH_OPENMP=$(usex openmp)
219 + -DWITH_OPENSUBDIV=$(usex opensubdiv)
220 + -DWITH_OPENVDB=$(usex openvdb)
221 + -DWITH_OPENVDB_BLOSC=$(usex openvdb)
222 + -DWITH_PLAYER=$(usex player)
223 + -DWITH_SDL=$(usex sdl)
224 + -DWITH_CXX_GUARDEDALLOC=$(usex debug)
225 + -DWITH_ASSERT_ABORT=$(usex debug)
226 + -DWITH_GTESTS=$(usex test)
227 + -DWITH_DOC_MANPAGE=$(usex man)
228 + -DWITH_MEM_JEMALLOC=$(usex jemalloc)
229 + -DWITH_MEM_VALGRIND=$(usex valgrind)
230 + )
231 + cmake-utils_src_configure
232 +}
233 +
234 +src_compile() {
235 + cmake-utils_src_compile
236 +
237 + if use doc; then
238 + # Workaround for binary drivers.
239 + addpredict /dev/ati
240 + addpredict /dev/dri
241 + addpredict /dev/nvidiactl
242 +
243 + einfo "Generating Blender C/C++ API docs ..."
244 + cd "${CMAKE_USE_DIR}"/doc/doxygen || die
245 + doxygen -u Doxyfile || die
246 + doxygen || die "doxygen failed to build API docs."
247 +
248 + cd "${CMAKE_USE_DIR}" || die
249 + einfo "Generating (BPY) Blender Python API docs ..."
250 + "${BUILD_DIR}"/bin/blender --background --python doc/python_api/sphinx_doc_gen.py -noaudio || die "sphinx failed."
251 +
252 + cd "${CMAKE_USE_DIR}"/doc/python_api || die
253 + sphinx-build sphinx-in BPY_API || die "sphinx failed."
254 + fi
255 +}
256 +
257 +src_test() {
258 + if use test; then
259 + einfo "Running Blender Unit Tests ..."
260 + cd "${BUILD_DIR}"/bin/tests || die
261 + local f
262 + for f in *_test; do
263 + ./"${f}" || die
264 + done
265 + fi
266 +}
267 +
268 +src_install() {
269 + # Pax mark blender for hardened support.
270 + pax-mark m "${CMAKE_BUILD_DIR}"/bin/blender
271 +
272 + if use doc; then
273 + docinto "html/API/python"
274 + dodoc -r "${CMAKE_USE_DIR}"/doc/python_api/BPY_API/.
275 +
276 + docinto "html/API/blender"
277 + dodoc -r "${CMAKE_USE_DIR}"/doc/doxygen/html/.
278 + fi
279 +
280 + cmake-utils_src_install
281 +
282 + # fix doc installdir
283 + docinto "html"
284 + dodoc "${CMAKE_USE_DIR}"/release/text/readme.html
285 + rm -r "${ED%/}"/usr/share/doc/blender || die
286 +
287 + python_fix_shebang "${ED%/}/usr/bin/blender-thumbnailer.py"
288 + python_optimize "${ED%/}/usr/share/blender/${MY_PV}/scripts"
289 +}
290 +
291 +pkg_preinst() {
292 + gnome2_icon_savelist
293 +}
294 +
295 +pkg_postinst() {
296 + elog
297 + elog "Blender uses python integration. As such, may have some"
298 + elog "inherit risks with running unknown python scripts."
299 + elog
300 + elog "It is recommended to change your blender temp directory"
301 + elog "from /tmp to /home/user/tmp or another tmp file under your"
302 + elog "home directory. This can be done by starting blender, then"
303 + elog "dragging the main menu down do display all paths."
304 + elog
305 + ewarn
306 + ewarn "This ebuild does not unbundle the massive amount of 3rd party"
307 + ewarn "libraries which are shipped with blender. Note that"
308 + ewarn "these have caused security issues in the past."
309 + ewarn "If you are concerned about security, file a bug upstream:"
310 + ewarn " https://developer.blender.org/"
311 + ewarn
312 + gnome2_icon_cache_update
313 + xdg_mimeinfo_database_update
314 +}
315 +
316 +pkg_postrm() {
317 + gnome2_icon_cache_update
318 + xdg_mimeinfo_database_update
319 +
320 + ewarn ""
321 + ewarn "You may want to remove the following directory."
322 + ewarn "~/.config/${PN}/${MY_PV}/cache/"
323 + ewarn "It may contain extra render kernels not tracked by portage"
324 + ewarn ""
325 +}
326
327 diff --git a/media-gfx/blender/files/blender-2.79b-gcc-8.patch b/media-gfx/blender/files/blender-2.79b-gcc-8.patch
328 new file mode 100644
329 index 00000000000..3a64ad2f796
330 --- /dev/null
331 +++ b/media-gfx/blender/files/blender-2.79b-gcc-8.patch
332 @@ -0,0 +1,22 @@
333 +--- blender-2.79b-orig/intern/cycles/util/util_sseb.h 2018-03-24 02:22:25.000000000 +1100
334 ++++ blender-2.79b/intern/cycles/util/util_sseb.h 2018-05-30 20:43:33.888717930 +1000
335 +@@ -116,7 +116,7 @@
336 + __forceinline const sseb unpackhi( const sseb& a, const sseb& b ) { return _mm_unpackhi_ps(a, b); }
337 +
338 + template<size_t i0, size_t i1, size_t i2, size_t i3> __forceinline const sseb shuffle( const sseb& a ) {
339 +- return _mm_shuffle_epi32(a, _MM_SHUFFLE(i3, i2, i1, i0));
340 ++ return _mm_castsi128_ps(_mm_shuffle_epi32(a, _MM_SHUFFLE(i3, i2, i1, i0)));
341 + }
342 +
343 + template<> __forceinline const sseb shuffle<0, 1, 0, 1>( const sseb& a ) {
344 +--- blender-2.79b-orig/intern/itasc/kdl/tree.hpp 2018-03-24 02:22:25.000000000 +1100
345 ++++ blender-2.79b/intern/itasc/kdl/tree.hpp 2018-05-30 20:33:52.045179988 +1000
346 +@@ -34,7 +34,7 @@
347 + //Forward declaration
348 + class TreeElement;
349 + // Eigen allocator is needed for alignment of Eigen data types
350 +- typedef std::map<std::string,TreeElement, std::less<std::string>, Eigen::aligned_allocator<std::pair<std::string, TreeElement> > > SegmentMap;
351 ++ typedef std::map<std::string,TreeElement, std::less<std::string>, Eigen::aligned_allocator<std::pair<const std::string, TreeElement> > > SegmentMap;
352 +
353 + class TreeElement
354 + {