4 SRC="$HOME/src/blender-deps"
7 THREADS=`cat /proc/cpuinfo | grep cores | uniq | sed -e "s/.*: *\(.*\)/\\1/"`
10 BOOST_VERSION="1_51_0"
31 if [ -f /etc/debian_version ]; then
33 elif [ -f /etc/redhat-release ]; then
35 elif [ -f /etc/SuSE-release ]; then
41 INFO "Ensuring /opt/lib exists and writable by us"
42 sudo mkdir -p /opt/lib
43 sudo chown $USER /opt/lib
44 sudo chmod 775 /opt/lib
48 if [ ! -d /opt/lib/python-$PYTHON_VERSION ]; then
49 INFO "Building Python-$PYTHON_VERSION"
53 if [ ! -d $SRC/Python-$PYTHON_VERSION ]; then
55 wget -c http://python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.bz2 -P $SRC
57 INFO "Unpacking Python-$PYTHON_VERSION"
58 tar -C $SRC -xf $SRC/Python-$PYTHON_VERSION.tar.bz2
61 cd $SRC/Python-$PYTHON_VERSION
63 ./configure --prefix=/opt/lib/python-$PYTHON_VERSION --enable-ipv6 \
64 --enable-loadable-sqlite-extensions --with-dbmliborder=bdb \
65 --with-computed-gotos --with-pymalloc
71 rm -f /opt/lib/python-3.3
72 ln -s python-$PYTHON_VERSION /opt/lib/python-3.3
81 version_dots=`echo "$BOOST_VERSION" | sed -r 's/_/./g'`
83 if [ ! -d /opt/lib/boost-$version_dots ]; then
84 INFO "Building Boost-$version_dots"
88 if [ ! -d $SRC/boost_$BOOST_VERSION ]; then
89 INFO "Downloading Boost-$version_dots"
91 wget -c http://sourceforge.net/projects/boost/files/boost/$version_dots/boost_$BOOST_VERSION.tar.bz2/download \
92 -O $SRC/boost_$BOOST_VERSION.tar.bz2
93 tar -C $SRC -xf $SRC/boost_$BOOST_VERSION.tar.bz2
96 cd $SRC/boost_$BOOST_VERSION
97 ./bootstrap.sh --with-libraries=system,filesystem,thread,regex,locale --prefix=/opt/lib/boost-$version_dots
102 ln -s boost-$version_dots /opt/lib/boost
109 if [ ! -d /opt/lib/ocio-$OCIO_VERSION ]; then
110 INFO "Building OpenColorIO-$OCIO_VERSION"
114 if [ ! -d $SRC/OpenColorIO-$OCIO_VERSION ]; then
115 INFO "Downloading OpenColorIO-$OCIO_VERSION"
117 wget -c http://github.com/imageworks/OpenColorIO/tarball/v$OCIO_VERSION \
118 -O $SRC/OpenColorIO-$OCIO_VERSION.tar.gz
120 INFO "Unpacking OpenColorIO-$OCIO_VERSION"
121 tar -C "$SRC" -xf $SRC/OpenColorIO-$OCIO_VERSION.tar.gz
122 mv $SRC/imageworks-OpenColorIO* $SRC/OpenColorIO-$OCIO_VERSION
125 cd $SRC/OpenColorIO-$OCIO_VERSION
129 if file /bin/cp | grep -q '32-bit'; then
130 cflags="-fPIC -m32 -march=i686"
135 cmake -D CMAKE_BUILD_TYPE=Release \
136 -D CMAKE_PREFIX_PATH=/opt/lib/ocio-$OCIO_VERSION \
137 -D CMAKE_INSTALL_PREFIX=/opt/lib/ocio-$OCIO_VERSION \
138 -D CMAKE_CXX_FLAGS="$cflags" \
139 -D CMAKE_EXE_LINKER_FLAGS="-lgcc_s -lgcc" \
145 # Force linking against sttaic libs
146 rm -f /opt/lib/ocio-$OCIO_VERSION/lib/*.so*
148 # Additional depencencies
149 cp ext/dist/lib/libtinyxml.a /opt/lib/ocio-$OCIO_VERSION/lib
150 cp ext/dist/lib/libyaml-cpp.a /opt/lib/ocio-$OCIO_VERSION/lib
155 ln -s ocio-$OCIO_VERSION /opt/lib/ocio
162 if [ ! -d /opt/lib/oiio-$OIIO_VERSION ]; then
163 INFO "Building OpenImageIO-$OIIO_VERSION"
167 if [ ! -d $SRC/OpenImageIO-$OIIO_VERSION ]; then
168 wget -c https://github.com/OpenImageIO/oiio/tarball/Release-$OIIO_VERSION \
169 -O "$SRC/OpenImageIO-$OIIO_VERSION.tar.gz"
171 INFO "Unpacking OpenImageIO-$OIIO_VERSION"
172 tar -C $SRC -xf $SRC/OpenImageIO-$OIIO_VERSION.tar.gz
173 mv $SRC/OpenImageIO-oiio* $SRC/OpenImageIO-$OIIO_VERSION
176 cd $SRC/OpenImageIO-$OIIO_VERSION
180 if [ -d /opt/lib/boost ]; then
181 boost_root="/opt/lib/boost"
186 if file /bin/cp | grep -q '32-bit'; then
187 cflags="-fPIC -m32 -march=i686"
192 cmake -D CMAKE_BUILD_TYPE=Release \
193 -D CMAKE_PREFIX_PATH=/opt/lib/oiio-$OIIO_VERSION \
194 -D CMAKE_INSTALL_PREFIX=/opt/lib/oiio-$OIIO_VERSION \
196 -D CMAKE_CXX_FLAGS="$cflags" \
197 -D CMAKE_EXE_LINKER_FLAGS="-lgcc_s -lgcc" \
198 -D BOOST_ROOT="$boost_root" \
206 ln -s oiio-$OIIO_VERSION /opt/lib/oiio
213 if [ ! -d /opt/lib/ffmpeg-$FFMPEG_VERSION ]; then
214 INFO "Building FFmpeg-$FFMPEG_VERSION"
218 if [ ! -d $SRC/ffmpeg-$FFMPEG_VERSION ]; then
219 INFO "Downloading FFmpeg-$FFMPEG_VERSION"
220 wget -c http://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.bz2 -P $SRC
222 INFO "Unpacking FFmpeg-$FFMPEG_VERSION"
223 tar -C $SRC -xf $SRC/ffmpeg-$FFMPEG_VERSION.tar.bz2
226 cd $SRC/ffmpeg-$FFMPEG_VERSION
231 extra="$extra --enable-libxvid"
235 extra="$extra --enable-libvpx"
239 extra="$extra --enable-libmp3lame"
243 extra="$extra --enable-libx264"
246 if $HASOPENJPEG; then
247 extra="$extra --enable-libopenjpeg"
251 extra="$extra --enable-libschroedinger"
254 ./configure --cc="gcc -Wl,--as-needed" --extra-ldflags="-pthread -static-libgcc" \
255 --prefix=/opt/lib/ffmpeg-$FFMPEG_VERSION --enable-static --enable-avfilter --disable-vdpau \
256 --disable-bzlib --disable-libgsm --disable-libspeex --enable-libtheora \
257 --enable-libvorbis --enable-pthreads --enable-zlib --enable-stripping --enable-runtime-cpudetect \
258 --disable-vaapi --disable-libfaac --disable-nonfree --enable-gpl \
259 --disable-postproc --disable-x11grab --disable-librtmp --disable-libopencore-amrnb \
260 --disable-libopencore-amrwb --disable-libdc1394 --disable-version3 --disable-outdev=sdl \
261 --disable-outdev=alsa --disable-indev=sdl --disable-indev=alsa --disable-indev=jack \
262 --disable-indev=lavfi $extra
268 rm -f /opt/lib/ffmpeg
269 ln -s ffmpeg-$FFMPEG_VERSION /opt/lib/ffmpeg
276 dpkg-query -W -f '${Version}' $1 | sed -r 's/^([0-9]\.[0-9]+).*/\1/'
279 check_package_DEB() {
280 r=`apt-cache policy $1 | grep -c 'Candidate:'`
282 if [ $r -ge 1 ]; then
290 INFO "Installing dependencies for DEB-based distributive"
293 sudo apt-get -y upgrade
295 sudo apt-get install -y cmake scons gcc g++ libjpeg-dev libpng-dev libtiff-dev \
296 libfreetype6-dev libx11-dev libxi-dev wget libsqlite3-dev libbz2-dev libncurses5-dev \
297 libssl-dev liblzma-dev libreadline-dev libopenjpeg-dev libopenexr-dev libopenal-dev \
298 libglew-dev yasm libschroedinger-dev libtheora-dev libvorbis-dev libsdl1.2-dev \
299 libfftw3-dev libjack-dev python-dev patch
304 check_package_DEB libxvidcore4-dev
305 if [ $? -eq 0 ]; then
306 sudo apt-get install -y libxvidcore4-dev
310 check_package_DEB libmp3lame-dev
311 if [ $? -eq 0 ]; then
312 sudo apt-get install -y libmp3lame-dev
316 check_package_DEB libx264-dev
317 if [ $? -eq 0 ]; then
318 sudo apt-get install -y libx264-dev
322 check_package_DEB libvpx-dev
323 if [ $? -eq 0 ]; then
324 sudo apt-get install -y libvpx-dev
325 vpx_version=`deb_version libvpx-dev`
326 if [ ! -z "$vpx_version" ]; then
327 if dpkg --compare-versions $vpx_version gt 0.9.7; then
333 check_package_DEB libspnav-dev
334 if [ $? -eq 0 ]; then
335 sudo apt-get install -y libspnav-dev
338 check_package_DEB python3.3-dev
339 if [ $? -eq 0 ]; then
340 sudo apt-get install -y python3.3-dev
345 check_package_DEB libboost-dev
346 if [ $? -eq 0 ]; then
347 sudo apt-get install -y libboost-dev
349 boost_version=`deb_version libboost-dev`
351 check_package_DEB libboost-locale$boost_version-dev
352 if [ $? -eq 0 ]; then
353 sudo apt-get install -y libboost-locale$boost_version-dev libboost-filesystem$boost_version-dev \
354 libboost-regex$boost_version-dev libboost-system$boost_version-dev libboost-thread$boost_version-dev
362 check_package_DEB libopencolorio-dev
363 if [ $? -eq 0 ]; then
364 sudo apt-get install -y libopencolorio-dev
369 check_package_DEB libopenimageio-dev
370 if [ $? -eq 0 ]; then
371 sudo apt-get install -y libopenimageio-dev
376 check_package_DEB ffmpeg
377 if [ $? -eq 0 ]; then
378 sudo apt-get install -y ffmpeg
379 ffmpeg_version=`deb_version ffmpeg`
380 if [ ! -z "$ffmpeg_version" ]; then
381 if dpkg --compare-versions $ffmpeg_version gt 0.7.2; then
382 sudo apt-get install -y libavfilter-dev libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev libswscale-dev
390 check_package_RPM() {
391 r=`yum info $1 | grep -c 'Summary'`
393 if [ $r -ge 1 ]; then
400 check_package_version_RPM() {
401 v=`yum info $1 | grep Version | tail -n 1 | sed -r 's/.*:\s+(([0-9]+\.?)+).*/\1/'`
403 # for now major and minor versions only (as if x.y, not x.y.z)
404 r=`echo $v | grep -c $2`
406 if [ $r -ge 1 ]; then
414 INFO "Installing dependencies for RPM-based distributive"
418 sudo yum -y install gcc gcc-c++ cmake scons libpng-devel libtiff-devel \
419 freetype-devel libX11-devel libXi-devel wget libsqlite3x-devel ncurses-devel \
420 readline-devel openjpeg-devel openexr-devel openal-soft-devel \
421 glew-devel yasm schroedinger-devel libtheora-devel libvorbis-devel SDL-devel \
422 fftw-devel lame-libs jack-audio-connection-kit-devel x264-devel libspnav-devel \
423 libjpeg-devel patch python-devel
428 check_package_version_RPM python-devel 3.3.
429 if [ $? -eq 0 ]; then
430 sudo yum install -y python-devel
435 check_package_RPM boost-devel
436 if [ $? -eq 0 ]; then
437 sudo yum install -y boost-devel
442 check_package_RPM OpenColorIO-devel
443 if [ $? -eq 0 ]; then
444 sudo yum install -y OpenColorIO-devel
449 check_package_RPM OpenImageIO-devel
450 if [ $? -eq 0 ]; then
451 sudo yum install -y OpenImageIO-devel
456 # Always for now, not sure which packages should be installed
460 check_package_SUSE() {
461 r=`zypper info $1 | grep -c 'Summary'`
463 if [ $r -ge 1 ]; then
470 check_package_version_SUSE() {
471 v=`zypper info $1 | grep Version | tail -n 1 | sed -r 's/.*:\s+(([0-9]+\.?)+).*/\1/'`
473 # for now major and minor versions only (as if x.y, not x.y.z)
474 r=`echo $v | grep -c $2`
476 if [ $r -ge 1 ]; then
484 INFO "Installing dependencies for SuSE-based distributive"
486 sudo zypper --non-interactive update --auto-agree-with-licenses
488 sudo zypper --non-interactive install --auto-agree-with-licenses \
489 gcc gcc-c++ libSDL-devel openal-soft-devel libpng12-devel libjpeg62-devel \
490 libtiff-devel OpenEXR-devel yasm libtheora-devel libvorbis-devel cmake \
493 check_package_version_SUSE python3-devel 3.3.
494 if [ $? -eq 0 ]; then
495 sudo zypper --non-interactive install --auto-agree-with-licenses python3-devel
500 # can not see boost_locale in repo, so let's build own boost
503 # this libraries are also missing in the repo
511 INFO "If you're using CMake add this to your configuration flags:"
513 if [ -d /opt/lib/boost ]; then
514 INFO " -D BOOST_ROOT=/opt/lib/boost"
515 INFO " -D Boost_NO_SYSTEM_PATHS=ON"
518 if [ -d /opt/lib/ffmpeg ]; then
519 INFO " -D FFMPEG=/opt/lib/ffmpeg"
523 INFO "If you're using SCons add this to your user-config:"
525 if [ -d /opt/lib/python3.3 ]; then
526 INFO "BF_PYTHON='/opt/lib/puthon-3.3'"
527 INFO "BF_PYTHON_ABI_FLAGS='m'"
530 if [ -d /opt/lib/ocio ]; then
531 INFO "BF_OCIO='/opt/lib/ocio'"
534 if [ -d /opt/lib/oiio ]; then
535 INFO "BF_OCIO='/opt/lib/oiio'"
538 if [ -d /opt/lib/boost ]; then
539 INFO "BF_BOOST='/opt/lib/boost'"
542 if [ -d /opt/lib/ffmpeg ]; then
543 INFO "BF_FFMPEG='/opt/lib/ffmpeg'"
547 # Detect distributive type used on this machine
550 if [ -z "$DISTRO" ]; then
551 ERROR "Failed to detect distribytive type"
553 elif [ "$DISTRO" = "DEB" ]; then
555 elif [ "$DISTRO" = "RPM" ]; then
557 elif [ "$DISTRO" = "SUSE" ]; then