# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ EAPI="2" NEED_PYTHON=3.1 inherit subversion eutils python cmake-utils IUSE="blender-game nls elbeem openexr +ffmpeg jpeg openal web openmp verse \ physic +dds debug doc +fftw jack +guardedalloc apidoc" LANGS="ar bg ca cs de el es fi fr hr hr_HR it ja ko nl pl pt_BR ro ru sr \ sv uk zh_CN" for X in ${LANGS} ; do IUSE="${IUSE} linguas_${X}" done DESCRIPTION="3D Creation/Animation/Publishing System" HOMEPAGE="http://www.blender.org/" ESVN_REPO_URI="https://svn.blender.org/svnroot/bf-blender/branches/blender2.5/blender/" SLOT="0" LICENSE="|| ( GPL-2 BL )" KEYWORDS="" # NOTES: # - cmake 2.6.4-r2 is required to correctly detect python 3.1; RDEPEND="media-libs/jpeg media-libs/libpng >=media-libs/libsdl-1.2 x11-libs/libXi x11-libs/libX11 sys-libs/zlib media-libs/tiff media-libs/libsamplerate virtual/opengl blender-game? ( >=media-libs/libsdl-1.2[joystick] ) nls? ( >=media-libs/freetype-2.0 virtual/libintl >=media-libs/ftgl-2.1 ) openexr? ( media-libs/openexr ) ffmpeg? ( >=media-video/ffmpeg-0.5[x264,xvid,mp3] ) jpeg? ( media-libs/openjpeg ) openal? ( >=media-libs/openal-1.6.372 ) web? ( >=net-libs/xulrunner-1.9.0.10:1.9 ) fftw? ( sci-libs/fftw:3.0 ) jack? ( media-sound/jack-audio-connection-kit )" DEPEND=">=sys-devel/gcc-4.3.2[openmp?] >=dev-util/cmake-2.6.4-r2[python3] apidoc? ( >=app-doc/doxygen-1.5.7[-nodot] ) ${RDEPEND}" S="${WORKDIR}/${PN}" src_unpack() { subversion_src_unpack } src_prepare() { #epatch "${FILESDIR}"/${PN}-2.5-CVE-2008-1103.patch epatch "${FILESDIR}"/${PN}-2.5-CVE-2008-4863.patch epatch "${FILESDIR}"/${PN}-2.49a-sys-openjpeg.patch epatch "${FILESDIR}"/${PN}-desktop.patch epatch "${FILESDIR}"/${PN}-headers.patch einfo "Removing bundled FFmpeg ..." rm -r extern/ffmpeg #einfo "Removing bundled Bullet2 ..." #rm -r extern/bullet2 #einfo "Removing bundled Glew ..." #rm -r extern/glew einfo "Removing bundled LAME ..." rm -r extern/libmp3lame #einfo "Removing bundled OpenJPEG ..." #rm -r extern/libopenjpeg einfo "Removing bundled x264 ..." rm -r extern/x264 einfo "Removing bundled Xvid ..." rm -r extern/xvidcore } src_configure() { # FIX: Game Engine module needs to links to Physic Engine if use blender-game && ! use physic; then elog "Forcing Physic Engine [+physic] as required by Game Engine [+blender-game]" mycmakeargs="${mycmakeargs} -DWITH_BULLET:BOOL=ON" else mycmakeargs="${mycmakeargs} \ $(cmake-utils_use_with physic BULLET)" fi mycmakeargs="${mycmakeargs} \ $(cmake-utils_use debug CMAKE_VERBOSE_MAKEFILE) \ $(cmake-utils_use_with nls INTERNATIONAL) \ $(cmake-utils_use_with elbeem ELBEEM) \ -DWITH_QUICKTIME:BOOL=OFF \ $(cmake-utils_use_with openexr OPENEXR) \ $(cmake-utils_use_with dds DDS) \ $(cmake-utils_use_with ffmpeg FFMPEG) \ -DWITH_PYTHON:BOOL=ON \ -DWITH_SDL:BOOL=ON \ $(cmake-utils_use_with jpeg OPENJPEG) \ $(cmake-utils_use_with openal OPENAL) \ $(cmake-utils_use_with openmp OPENMP) \ $(cmake-utils_use_with web WEBPLUGIN) \ $(cmake-utils_use_with fftw FFTW3) \ $(cmake-utils_use_with jack JACK) \ $(cmake-utils_use_with guardedalloc CXX_GUARDEDALLOC) \ $(cmake-utils_use_with blender-game GAMEENGINE) \ $(cmake-utils_use_with blender-game PLAYER) \ -DWITH_INSTALL:BOOL=ON" cmake-utils_src_configure } # NOTE: blender lacks a CMake install target src_install() { exeinto /usr/bin/ # FIX: make blender detects all the plugin paths mv "${CMAKE_BUILD_DIR}"/bin/blender "${CMAKE_BUILD_DIR}"/bin/blender-bin doexe "${CMAKE_BUILD_DIR}"/bin/blender-bin doexe "${FILESDIR}"/blender use blender-game && doexe "${CMAKE_BUILD_DIR}"/bin/blenderplayer use verse && doexe "${CMAKE_BUILD_DIR}"/bin/verse # NOTE: textures and plugins are missing from the SVN # exeinto /usr/$(get_libdir)/${PN}/textures # doexe "${WORKDIR}"/install/linux2/plugins/texture/*.so # exeinto /usr/$(get_libdir)/${PN}/sequences # doexe "${WORKDIR}"/install/linux2/plugins/sequence/*.so # insinto /usr/include/${PN} # doins "${WORKDIR}"/install/linux2/plugins/include/*.h # installing localizations insinto /usr/share/locale if use nls ; then doins "${CMAKE_BUILD_DIR}"/bin/.blender/.Blanguages for LANG in ${LINGUAS}; do insinto "${CMAKE_BUILD_DIR}"/bin/.blender/locale/"${LANG}" done fi # installing fonts and python scripts insinto /usr/share/blender doins "${CMAKE_BUILD_DIR}"/bin/.blender/.bfont.ttf doins "${CMAKE_BUILD_DIR}"/bin/.blender/io/* doins "${CMAKE_BUILD_DIR}"/bin/.blender/ui/* doins release/VERSION # FIX: chown root:users -R "${D}/usr/share/${PN}" # installing desktop file insinto /usr/share/pixmaps doins release/freedesktop/icons/scalable/blender.svg insinto /usr/share/applications doins release/freedesktop/blender.desktop dodoc INSTALL README use doc && dodoc "${WORKDIR}"/install/linux2/BlenderQuickStart.pdf if use apidoc; then pushd "${S}"/doc > /dev/null doxygen -u Doxyfile doxygen || die "doxygen failed to build API docs." dohtml -r html/* popd > /dev/null fi } pkg_preinst() { if [ -h "${ROOT}/usr/$(get_libdir)/blender/plugins/include" ]; then rm "${ROOT}"/usr/$(get_libdir)/blender/plugins/include fi } pkg_postinst() { echo if ! use blender-game; then ewarn "If you need the Blender Player just enable the USE" ewarn "'blender-game' as the player is included in the" ewarn "Game Engine and can not be compiled alone." echo fi elog "Blender uses python integration. As such, may have some" elog "inherit risks with running unknown python scripting." elog " " elog "CVE-2008-1103-1.patch has been removed as it interferes" elog "with autosave undo features. Up stream blender coders" elog "have not addressed the CVE issue as the status is still" elog "a CANDIDATE and not CONFIRMED." elog " " elog "It is recommended to change your blender temp directory" elog "from /tmp to ~tmp or another tmp file under your home" elog "directory. This can be done by starting blender, then" elog "dragging the main menu down do display all paths." elog elog "Blender has its own internal rendering engine but you" elog "can export to external renderers for image computation" elog "like: YafRay[1], sunflow[2], PovRay[3] and luxrender[4]" elog elog "If you need one of them just emerge it:" elog " [1] emerge -av media-gfx/yafray" elog " [2] emerge -av media-gfx/sunflow" elog " [3] emerge -av media-gfx/povray" elog " [4] emerge -av media-gfx/luxrender" }