Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2015-11-23 21:54:25 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2015-11-23 23:05:54 +0300
commitf31e82d448a6732eeeb877088c2205ccacc4bb44 (patch)
tree823f47295361e76329a49fff3deda0b063314ad8 /build_files
parent1d7ed584dbae57cb24803ffc049d8f8029010a72 (diff)
install_deps.sh: add option to force building libs instead of using packages, and limited fallback for unsuported distro.
This commit adds '--build-foo' options to force the script to build relevant libraries instead of trying to use packages from the distribution. In addition, it also now offers (with those '--build-foo' options) the possibility to build libraries on distributions that are not fully supported. This is limited, but should still help people once they have installed themselves the basics of dependencies - boost, llvm, osl/osd etc. are not libraries that are really easy to build. DISCLAIMER: I did not take the 20 (or more) hours needed to test all combinations over all distributions, and given the size of the changes, bad sneaky typos are quite probable, so please report if you get some errors!
Diffstat (limited to 'build_files')
-rwxr-xr-xbuild_files/build_environment/install_deps.sh686
1 files changed, 562 insertions, 124 deletions
diff --git a/build_files/build_environment/install_deps.sh b/build_files/build_environment/install_deps.sh
index 02c5116113a..ade7d1e3559 100755
--- a/build_files/build_environment/install_deps.sh
+++ b/build_files/build_environment/install_deps.sh
@@ -29,9 +29,10 @@ getopt \
ver-ocio:,ver-oiio:,ver-llvm:,ver-osl:,\
force-all,force-python,force-numpy,force-boost,force-ocio,force-openexr,force-oiio,force-llvm,force-osl,force-osd,\
force-ffmpeg,force-opencollada,\
+build-all,build-python,build-numpy,build-boost,build-ocio,build-openexr,build-oiio,build-llvm,build-osl,build-osd,\
+build-ffmpeg,build-opencollada,\
skip-python,skip-numpy,skip-boost,skip-ocio,skip-openexr,skip-oiio,skip-llvm,skip-osl,skip-osd,\
-skip-ffmpeg,skip-opencollada,\
-required-numpy: \
+skip-ffmpeg,skip-opencollada\
-- "$@" \
)
@@ -118,6 +119,52 @@ ARGUMENTS_INFO="\"COMMAND LINE ARGUMENTS:
It may not always work as expected (some libs are actually checked out from a git rev...), yet it might help
to fix some build issues (like LLVM mismatch with the version used by your graphic system).
+ --build-all
+ Force the build of all possible libraries.
+
+ --build-python
+ Force the build of Python.
+
+ --build-numpy
+ Force the build of NumPy.
+
+ --build-boost
+ Force the build of Boost.
+
+ --build-ocio
+ Force the build of OpenColorIO.
+
+ --build-openexr
+ Force the build of OpenEXR.
+
+ --build-oiio
+ Force the build of OpenImageIO.
+
+ --build-llvm
+ Force the build of LLVM.
+
+ --build-osl
+ Force the build of OpenShadingLanguage.
+
+ --build-osd
+ Force the build of OpenSubdiv.
+
+ --build-opencollada
+ Force the build of OpenCOLLADA.
+
+ --build-ffmpeg
+ Force the build of FFMpeg.
+
+ Note about the --build-foo options:
+ * They force the script to prefer building dependencies rather than using available packages.
+ This may make things simpler and allow working around some distribution bugs, but on the other hand it will
+ use much more space on your hard drive.
+ * Please be careful with the Blender building options if you have both 'official' dev packages and
+ install_deps' built ones on your system, by default CMake will prefer official packages, which may lead to
+ linking issues. Please ensure your CMake configuration always uses all correct library paths.
+ * If the “force-built” library is a dependency of others, it will force the build
+ of those libraries as well (e.g. --build-boost also implies --build-oiio and --build-osl...).
+
--force-all
Force the rebuild of all built libraries.
@@ -191,11 +238,7 @@ ARGUMENTS_INFO="\"COMMAND LINE ARGUMENTS:
Unconditionally skip OpenCOLLADA installation/building.
--skip-ffmpeg
- Unconditionally skip FFMpeg installation/building.
-
- --required-numpy
- Use this in case your distro features a valid python package, but no matching Numpy one.
- It will force compilation of both python and numpy\""
+ Unconditionally skip FFMpeg installation/building.\""
##### Main Vars #####
@@ -205,22 +248,25 @@ SUDO="sudo"
PYTHON_VERSION="3.4.0"
PYTHON_VERSION_MIN="3.4"
+PYTHON_FORCE_BUILD=false
PYTHON_FORCE_REBUILD=false
PYTHON_SKIP=false
NUMPY_VERSION="1.8.1"
NUMPY_VERSION_MIN="1.8"
+NUMPY_FORCE_BUILD=false
NUMPY_FORCE_REBUILD=false
NUMPY_SKIP=false
-NUMPY_REQUIRED=false
BOOST_VERSION="1.51.0"
BOOST_VERSION_MIN="1.49"
+BOOST_FORCE_BUILD=false
BOOST_FORCE_REBUILD=false
BOOST_SKIP=false
OCIO_VERSION="1.0.9"
OCIO_VERSION_MIN="1.0"
+OCIO_FORCE_BUILD=false
OCIO_FORCE_REBUILD=false
OCIO_SKIP=false
@@ -228,6 +274,7 @@ OPENEXR_VERSION="2.2.0"
OPENEXR_VERSION_MIN="2.0.1"
ILMBASE_VERSION="2.2.0"
ILMBASE_VERSION_MIN="2.2"
+OPENEXR_FORCE_BUILD=false
OPENEXR_FORCE_REBUILD=false
OPENEXR_SKIP=false
_with_built_openexr=false
@@ -235,34 +282,40 @@ _with_built_openexr=false
OIIO_VERSION="1.4.16"
OIIO_VERSION_MIN="1.4.0"
OIIO_VERSION_MAX="1.5.0" # Not supported by current OSL...
+OIIO_FORCE_BUILD=false
OIIO_FORCE_REBUILD=false
OIIO_SKIP=false
LLVM_VERSION="3.4"
LLVM_VERSION_MIN="3.4"
LLVM_VERSION_FOUND=""
+LLVM_FORCE_BUILD=false
LLVM_FORCE_REBUILD=false
LLVM_SKIP=false
# OSL needs to be compiled for now!
OSL_VERSION="1.5.11"
OSL_VERSION_MIN=$OSL_VERSION
+OSL_FORCE_BUILD=false
OSL_FORCE_REBUILD=false
OSL_SKIP=false
# OpenSubdiv needs to be compiled for now
OSD_VERSION="3.0.2"
OSD_VERSION_MIN=$OSD_VERSION
+OSD_FORCE_BUILD=false
OSD_FORCE_REBUILD=false
OSD_SKIP=false
# Version??
OPENCOLLADA_VERSION="1.3"
+OPENCOLLADA_FORCE_BUILD=true # no package!
OPENCOLLADA_FORCE_REBUILD=false
OPENCOLLADA_SKIP=false
FFMPEG_VERSION="2.1.5"
FFMPEG_VERSION_MIN="2.1.5"
+FFMPEG_FORCE_BUILD=false
FFMPEG_FORCE_REBUILD=false
FFMPEG_SKIP=false
_ffmpeg_list_sep=";"
@@ -402,11 +455,65 @@ while true; do
OSL_VERSION_MIN=$OSL_VERSION
shift; shift; continue
;;
- --ver-osd)
+ --ver-osd)
OSD_VERSION="$2"
OSD_VERSION_MIN=$OSD_VERSION
shift; shift; continue
;;
+ --build-all)
+ PYTHON_FORCE_BUILD=true
+ NUMPY_FORCE_BUILD=true
+ BOOST_FORCE_BUILD=true
+ OCIO_FORCE_BUILD=true
+ OPENEXR_FORCE_BUILD=true
+ OIIO_FORCE_BUILD=true
+ LLVM_FORCE_BUILD=true
+ OSL_FORCE_BUILD=true
+ OSD_FORCE_BUILD=true
+ OPENCOLLADA_FORCE_BUILD=true
+ FFMPEG_FORCE_BUILD=true
+ shift; continue
+ ;;
+ --build-python)
+ PYTHON_FORCE_BUILD=true
+ NUMPY_FORCE_BUILD=true
+ shift; continue
+ ;;
+ --build-numpy)
+ PYTHON_FORCE_BUILD=true
+ NUMPY_FORCE_BUILD=true
+ shift; continue
+ ;;
+ --build-boost)
+ BOOST_FORCE_BUILD=true; shift; continue
+ ;;
+ --build-ocio)
+ OCIO_FORCE_BUILD=true; shift; continue
+ ;;
+ --build-openexr)
+ OPENEXR_FORCE_BUILD=true; shift; continue
+ ;;
+ --build-oiio)
+ OIIO_FORCE_BUILD=true
+ shift; continue
+ ;;
+ --build-llvm)
+ LLVM_FORCE_BUILD=true
+ OSL_FORCE_BUILD=true
+ shift; continue
+ ;;
+ --build-osl)
+ OSL_FORCE_BUILD=true; shift; continue
+ ;;
+ --build-osd)
+ OSD_FORCE_BUILD=true; shift; continue
+ ;;
+ --build-opencollada)
+ OPENCOLLADA_FORCE_BUILD=true; shift; continue
+ ;;
+ --build-ffmpeg)
+ FFMPEG_FORCE_BUILD=true; shift; continue
+ ;;
--force-all)
PYTHON_FORCE_REBUILD=true
NUMPY_FORCE_REBUILD=true
@@ -492,9 +599,6 @@ while true; do
--skip-ffmpeg)
FFMPEG_SKIP=true; shift; continue
;;
- --required-numpy)
- NUMPY_REQUIRED=true; shift; continue
- ;;
--)
# no more arguments to parse
break
@@ -517,7 +621,7 @@ fi
# This has to be done here, because user might force some versions...
-PYTHON_SOURCE=( "http://python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz" )
+PYTHON_SOURCE=( "https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz" )
NUMPY_SOURCE=( "http://sourceforge.net/projects/numpy/files/NumPy/$NUMPY_VERSION/numpy-$NUMPY_VERSION.tar.gz" )
_boost_version_nodots=`echo "$BOOST_VERSION" | sed -r 's/\./_/g'`
@@ -584,6 +688,7 @@ DEPS_SPECIFIC_INFO="\"BUILDABLE DEPENDENCIES:
The following libraries will probably not all be available as packages in your distribution
(install_deps will by default try to install packages, and fall back to building missing ones).
+You can force install_deps to build those with '--build-all' or relevant 'build-foo' options, see '--help' message.
You may also want to build them yourself (optional ones are [between brackets]):
* Python $PYTHON_VERSION_MIN (from $PYTHON_SOURCE).
@@ -2146,14 +2251,19 @@ install_DEB() {
fi
fi
+
PRINT ""
+ _do_compile_python=false
if $PYTHON_SKIP; then
- WARNING "Skipping Python installation, as requested..."
+ WARNING "Skipping Python/NumPy installation, as requested..."
+ elif [ "$PYTHON_FORCE_BUILD" = true ]; then
+ INFO "Forced Python/NumPy building, as requested..."
+ _do_compile_python=true
else
- _do_compile=false
check_package_DEB python$PYTHON_VERSION_MIN-dev
if [ $? -eq 0 ]; then
install_packages_DEB python$PYTHON_VERSION_MIN-dev
+ clean_Python
PRINT ""
if $NUMPY_SKIP; then
WARNING "Skipping NumPy installation, as requested..."
@@ -2161,35 +2271,33 @@ install_DEB() {
check_package_DEB python3-numpy
if [ $? -eq 0 ]; then
install_packages_DEB python3-numpy
- elif $NUMPY_REQUIRED; then
- WARNING "Valid python package but no valid numpy package!" \
- " Building both Python and Numpy from sources!"
- _do_compile=true
else
WARNING "Sorry, using python package but no valid numpy package available!" \
- " Use --required-numpy to force building of both Python and numpy."
+ " Use --build-numpy to force building of both Python and NumPy."
fi
fi
else
- _do_compile=true
+ _do_compile_python=true
fi
+ fi
- if $_do_compile; then
- compile_Python
- PRINT ""
- if $NUMPY_SKIP; then
- WARNING "Skipping NumPy installation, as requested..."
- else
- compile_Numpy
- fi
+ if $_do_compile_python; then
+ compile_Python
+ PRINT ""
+ if $NUMPY_SKIP; then
+ WARNING "Skipping NumPy installation, as requested..."
else
- clean_Python
+ compile_Numpy
fi
fi
+
PRINT ""
if $BOOST_SKIP; then
WARNING "Skipping Boost installation, as requested..."
+ elif [ "$BOOST_FORCE_BUILD" = true ]; then
+ INFO "Forced Boost building, as requested..."
+ compile_Boost
else
check_package_version_ge_DEB libboost-dev $BOOST_VERSION_MIN
if [ $? -eq 0 ]; then
@@ -2211,9 +2319,13 @@ install_DEB() {
fi
fi
+
PRINT ""
if $OCIO_SKIP; then
WARNING "Skipping OpenColorIO installation, as requested..."
+ elif [ "$OCIO_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenColorIO building, as requested..."
+ compile_OCIO
else
# XXX Always force build of own OCIO, until linux distro guys update their package to default libyaml-cpp ver (0.5)!
#check_package_version_ge_DEB libopencolorio-dev $OCIO_VERSION_MIN
@@ -2225,9 +2337,13 @@ install_DEB() {
#fi
fi
+
PRINT ""
if $OPENEXR_SKIP; then
- WARNING "Skipping OpenEXR installation, as requested..."
+ WARNING "Skipping ILMBase/OpenEXR installation, as requested..."
+ elif [ "$OPENEXR_FORCE_BUILD" = true ]; then
+ INFO "Forced ILMBase/OpenEXR building, as requested..."
+ compile_OPENEXR
else
check_package_version_ge_DEB libopenexr-dev $OPENEXR_VERSION_MIN
if [ $? -eq 0 ]; then
@@ -2240,9 +2356,13 @@ install_DEB() {
fi
fi
+
PRINT ""
if $OIIO_SKIP; then
WARNING "Skipping OpenImageIO installation, as requested..."
+ elif [ "$OIIO_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenImageIO building, as requested..."
+ compile_OIIO
else
check_package_version_ge_lt_DEB libopenimageio-dev $OIIO_VERSION_MIN $OIIO_VERSION_MAX
if [ $? -eq 0 -a $_with_built_openexr == false ]; then
@@ -2253,11 +2373,15 @@ install_DEB() {
fi
fi
- have_llvm=false
PRINT ""
+ have_llvm=false
+ _do_compile_llvm=false
if $LLVM_SKIP; then
WARNING "Skipping LLVM installation, as requested (this also implies skipping OSL!)..."
+ elif [ "$LLVM_FORCE_BUILD" = true ]; then
+ INFO "Forced LLVM building, as requested..."
+ _do_compile_llvm=true
else
check_package_DEB llvm-$LLVM_VERSION-dev
if [ $? -eq 0 ]; then
@@ -2273,24 +2397,37 @@ install_DEB() {
LLVM_VERSION_FOUND="" # Using default one, no need to specify it!
clean_LLVM
else
- install_packages_DEB libffi-dev
- # LLVM can't find the debian ffi header dir
- _FFI_INCLUDE_DIR=`dpkg -L libffi-dev | grep -e ".*/ffi.h" | sed -r 's/(.*)\/ffi.h/\1/'`
- PRINT ""
- compile_LLVM
- have_llvm=true
- LLVM_VERSION_FOUND=$LLVM_VERSION
+ _do_compile_llvm=true
fi
fi
fi
+ if [ "$_do_compile_llvm" = true ]; then
+ install_packages_DEB libffi-dev
+ # LLVM can't find the debian ffi header dir
+ _FFI_INCLUDE_DIR=`dpkg -L libffi-dev | grep -e ".*/ffi.h" | sed -r 's/(.*)\/ffi.h/\1/'`
+ PRINT ""
+ compile_LLVM
+ have_llvm=true
+ LLVM_VERSION_FOUND=$LLVM_VERSION
+ fi
+
+
PRINT ""
+ _do_compile_osl=false
if $OSL_SKIP; then
WARNING "Skipping OpenShadingLanguage installation, as requested..."
+ elif [ "$OSL_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenShadingLanguage building, as requested..."
+ _do_compile_osl=true
else
+ # No package currently!
+ _do_compile_osl=true
+ fi
+
+ if [ "$_do_compile_osl" = true ]; then
if $have_llvm; then
install_packages_DEB flex bison libtbb-dev
- # No package currently!
PRINT ""
compile_OSL
else
@@ -2298,13 +2435,22 @@ install_DEB() {
fi
fi
+
PRINT ""
+ _do_compile_osd=false
if $OSD_SKIP; then
WARNING "Skipping OpenSubdiv installation, as requested..."
+ elif [ "$OSD_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenSubdiv building, as requested..."
+ _do_compile_osd=true
else
+ # No package currently!
+ _do_compile_osd=true
+ fi
+
+ if [ "$_do_compile_osd" = true ]; then
if $have_llvm; then
install_packages_DEB flex bison libtbb-dev
- # No package currently!
PRINT ""
compile_OSD
else
@@ -2312,11 +2458,21 @@ install_DEB() {
fi
fi
+
if $WITH_OPENCOLLADA; then
+ _do_compile_collada=false
PRINT ""
if $OPENCOLLADA_SKIP; then
WARNING "Skipping OpenCOLLADA installation, as requested..."
+ elif [ "$OPENCOLLADA_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenCollada building, as requested..."
+ _do_compile_collada=true
else
+ # No package currently!
+ _do_compile_collada=true
+ fi
+
+ if [ "$_do_compile_collada" = true ]; then
install_packages_DEB libpcre3-dev
# Find path to libxml shared lib...
_XML2_LIB=`dpkg -L libxml2-dev | grep -e ".*/libxml2.so"`
@@ -2326,9 +2482,13 @@ install_DEB() {
fi
fi
+
PRINT ""
if $FFMPEG_SKIP; then
WARNING "Skipping FFMpeg installation, as requested..."
+ elif [ "$FFMPEG_FORCE_BUILD" = true ]; then
+ INFO "Forced FFMpeg building, as requested..."
+ compile_FFmpeg
else
# XXX Debian features libav packages as ffmpeg, those are not really compatible with blender code currently :/
# So for now, always build our own ffmpeg.
@@ -2617,14 +2777,19 @@ install_RPM() {
install_packages_RPM libspnav-devel
fi
+
PRINT ""
+ _do_compile_python=false
if $PYTHON_SKIP; then
WARNING "Skipping Python installation, as requested..."
+ elif [ "$PYTHON_FORCE_BUILD" = true ]; then
+ INFO "Forced Python/NumPy building, as requested..."
+ _do_compile_python=true
else
- _do_compile=false
check_package_version_match_RPM python3-devel $PYTHON_VERSION_MIN
if [ $? -eq 0 ]; then
install_packages_RPM python3-devel
+ clean_Python
PRINT ""
if $NUMPY_SKIP; then
WARNING "Skipping NumPy installation, as requested..."
@@ -2632,35 +2797,33 @@ install_RPM() {
check_package_version_ge_RPM python3-numpy $NUMPY_VERSION_MIN
if [ $? -eq 0 ]; then
install_packages_RPM python3-numpy
- elif $NUMPY_REQUIRED; then
- WARNING "Valid python package but no valid numpy package!" \
- " Building both Python and Numpy from sources!"
- _do_compile=true
else
WARNING "Sorry, using python package but no valid numpy package available!" \
- " Use --required-numpy to force building of both Python and numpy."
+ " Use --build-numpy to force building of both Python and NumPy."
fi
fi
else
- _do_compile=true
+ _do_compile_python=true
fi
+ fi
- if $_do_compile; then
- compile_Python
- PRINT ""
- if $NUMPY_SKIP; then
- WARNING "Skipping NumPy installation, as requested..."
- else
- compile_Numpy
- fi
+ if $_do_compile_python; then
+ compile_Python
+ PRINT ""
+ if $NUMPY_SKIP; then
+ WARNING "Skipping NumPy installation, as requested..."
else
- clean_Python
+ compile_Numpy
fi
fi
+
PRINT ""
if $BOOST_SKIP; then
WARNING "Skipping Boost installation, as requested..."
+ elif [ "$BOOST_FORCE_BUILD" = true ]; then
+ INFO "Forced Boost building, as requested..."
+ compile_Boost
else
check_package_version_ge_RPM boost-devel $BOOST_VERSION
if [ $? -eq 0 ]; then
@@ -2671,9 +2834,13 @@ install_RPM() {
fi
fi
+
PRINT ""
if $OCIO_SKIP; then
WARNING "Skipping OpenColorIO installation, as requested..."
+ elif [ "$OCIO_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenColorIO building, as requested..."
+ compile_OCIO
else
# XXX Always force build of own OCIO, until linux distro guys update their package to default libyaml-cpp ver (0.5)!
#check_package_version_ge_RPM OpenColorIO-devel $OCIO_VERSION_MIN
@@ -2687,7 +2854,10 @@ install_RPM() {
PRINT ""
if $OPENEXR_SKIP; then
- WARNING "Skipping OpenEXR installation, as requested..."
+ WARNING "Skipping ILMBase/OpenEXR installation, as requested..."
+ elif [ "$OPENEXR_FORCE_BUILD" = true ]; then
+ INFO "Forced ILMBase/OpenEXR building, as requested..."
+ compile_OPENEXR
else
check_package_version_ge_RPM $OPENEXR_DEV $OPENEXR_VERSION_MIN
if [ $? -eq 0 ]; then
@@ -2703,6 +2873,9 @@ install_RPM() {
PRINT ""
if $OIIO_SKIP; then
WARNING "Skipping OpenImageIO installation, as requested..."
+ elif [ "$OIIO_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenImageIO building, as requested..."
+ compile_OIIO
else
check_package_version_ge_lt_RPM OpenImageIO-devel $OIIO_VERSION_MIN $OIIO_VERSION_MAX
if [ $? -eq 0 -a $_with_built_openexr == false ]; then
@@ -2713,11 +2886,15 @@ install_RPM() {
fi
fi
- have_llvm=false
PRINT ""
+ have_llvm=false
+ _do_compile_llvm=false
if $LLVM_SKIP; then
WARNING "Skipping LLVM installation, as requested (this also implies skipping OSL!)..."
+ elif [ "$LLVM_FORCE_BUILD" = true ]; then
+ INFO "Forced LLVM building, as requested..."
+ _do_compile_llvm=true
else
# Problem compiling with LLVM 3.2 so match version 3.1 ...
check_package_version_match_RPM llvm $LLVM_VERSION
@@ -2734,22 +2911,35 @@ install_RPM() {
#
# Better to compile it than use minimum version from repo...
#
- install_packages_RPM libffi-devel
- # LLVM can't find the fedora ffi header dir...
- _FFI_INCLUDE_DIR=`rpm -ql libffi-devel | grep -e ".*/ffi.h" | sed -r 's/(.*)\/ffi.h/\1/'`
- PRINT ""
- compile_LLVM
- have_llvm=true
- LLVM_VERSION_FOUND=$LLVM_VERSION
+ _do_compile_llvm=true
fi
fi
+ if [ "$_do_compile_llvm" = true ]; then
+ install_packages_RPM libffi-devel
+ # LLVM can't find the fedora ffi header dir...
+ _FFI_INCLUDE_DIR=`rpm -ql libffi-devel | grep -e ".*/ffi.h" | sed -r 's/(.*)\/ffi.h/\1/'`
+ PRINT ""
+ compile_LLVM
+ have_llvm=true
+ LLVM_VERSION_FOUND=$LLVM_VERSION
+ fi
+
+
PRINT ""
+ _do_compile_osl=true
if $OSL_SKIP; then
WARNING "Skipping OpenShadingLanguage installation, as requested..."
+ elif [ "$OSL_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenShadingLanguage building, as requested..."
+ _do_compile_osl=true
else
+ # No package currently!
+ _do_compile_osl=true
+ fi
+
+ if [ "$_do_compile_osl" = true ]; then
if $have_llvm; then
- # No package currently!
install_packages_RPM flex bison
if [ $RPM = "FEDORA" -o $RPM = "RHEL" ]; then
install_packages_RPM tbb-devel
@@ -2761,12 +2951,21 @@ install_RPM() {
fi
fi
+
PRINT ""
+ _do_compile_osd=false
if $OSD_SKIP; then
WARNING "Skipping OpenSubdiv installation, as requested..."
+ elif [ "$OSD_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenSubdiv building, as requested..."
+ _do_compile_osd=true
else
+ # No package currently!
+ _do_compile_osd=true
+ fi
+
+ if [ "$_do_compile_osd" = true ]; then
if $have_llvm; then
- # No package currently!
install_packages_RPM flex bison
if [ $RPM = "FEDORA" -o $RPM = "RHEL" ]; then
install_packages_RPM tbb-devel
@@ -2778,23 +2977,36 @@ install_RPM() {
fi
fi
+
if $WITH_OPENCOLLADA; then
PRINT ""
+ _do_compile_collada=false
if $OPENCOLLADA_SKIP; then
WARNING "Skipping OpenCOLLADA installation, as requested..."
+ elif [ "$OPENCOLLADA_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenCollada building, as requested..."
+ _do_compile_collada=true
else
+ # No package...
+ _do_compile_collada=true
+ fi
+
+ if [ "$_do_compile_collada" = true ]; then
install_packages_RPM pcre-devel
# Find path to libxml shared lib...
_XML2_LIB=`rpm -ql libxml2-devel | grep -e ".*/libxml2.so"`
- # No package...
PRINT ""
compile_OpenCOLLADA
fi
fi
+
PRINT ""
if $FFMPEG_SKIP; then
WARNING "Skipping FFMpeg installation, as requested..."
+ elif [ "$FFMPEG_FORCE_BUILD" = true ]; then
+ INFO "Forced FFMpeg building, as requested..."
+ compile_FFmpeg
else
check_package_version_ge_RPM ffmpeg $FFMPEG_VERSION_MIN
if [ $? -eq 0 ]; then
@@ -2954,14 +3166,19 @@ install_ARCH() {
fi
fi
+
PRINT ""
+ _do_compile_python=false
if $PYTHON_SKIP; then
WARNING "Skipping Python installation, as requested..."
+ elif [ "$PYTHON_FORCE_BUILD" = true ]; then
+ INFO "Forced Python/NumPy building, as requested..."
+ _do_compile_python=true
else
- _do_compile=false
check_package_version_ge_ARCH python $PYTHON_VERSION_MIN
if [ $? -eq 0 ]; then
install_packages_ARCH python
+ clean_Python
PRINT ""
if $WITH_NUMPY; then
if $NUMPY_SKIP; then
@@ -2970,36 +3187,34 @@ install_ARCH() {
check_package_version_ge_ARCH python-numpy $NUMPY_VERSION_MIN
if [ $? -eq 0 ]; then
install_packages_ARCH python-numpy
- elif $NUMPY_REQUIRED; then
- WARNING "Valid python package but no valid numpy package!" \
- " Building both Python and Numpy from sources!"
- _do_compile=true
else
WARNING "Sorry, using python package but no valid numpy package available!" \
- " Use --required-numpy to force building of both Python and numpy."
+ " Use --build-numpy to force building of both Python and NumPy."
fi
fi
fi
else
- _do_compile=true
+ _do_compile_python=true
fi
+ fi
- if $_do_compile; then
- compile_Python
- PRINT ""
- if $NUMPY_SKIP; then
- WARNING "Skipping NumPy installation, as requested..."
- else
- compile_Numpy
- fi
+ if $_do_compile_python; then
+ compile_Python
+ PRINT ""
+ if $NUMPY_SKIP; then
+ WARNING "Skipping NumPy installation, as requested..."
else
- clean_Python
+ compile_Numpy
fi
fi
+
PRINT ""
if $BOOST_SKIP; then
WARNING "Skipping Boost installation, as requested..."
+ elif [ "$BOOST_FORCE_BUILD" = true ]; then
+ INFO "Forced Boost building, as requested..."
+ compile_Boost
else
check_package_version_ge_ARCH boost $BOOST_VERSION_MIN
if [ $? -eq 0 ]; then
@@ -3011,8 +3226,12 @@ install_ARCH() {
fi
PRINT ""
+ _do_compile_ocio=false
if $OCIO_SKIP; then
WARNING "Skipping OpenColorIO installation, as requested..."
+ elif [ "$OCIO_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenColorIO building, as requested..."
+ _do_compile_ocio=true
else
# XXX Always force build of own OCIO, until linux distro guys update their package to default libyaml-cpp ver (0.5)!
#check_package_version_ge_ARCH opencolorio $OCIO_VERSION_MIN
@@ -3020,14 +3239,22 @@ install_ARCH() {
#install_packages_ARCH opencolorio yaml-cpp tinyxml
#clean_OCIO
#else
- install_packages_ARCH yaml-cpp tinyxml
- compile_OCIO
+ _do_compile_ocio=true
#fi
fi
+ if [ "$_do_compile_ocio" = true ]; then
+ install_packages_ARCH yaml-cpp tinyxml
+ compile_OCIO
+ fi
+
+
PRINT ""
if $OPENEXR_SKIP; then
- WARNING "Skipping OpenEXR installation, as requested..."
+ WARNING "Skipping ILMBase/OpenEXR installation, as requested..."
+ elif [ "$OPENEXR_FORCE_BUILD" = true ]; then
+ INFO "Forced ILMBase/OpenEXR building, as requested..."
+ compile_OPENEXR
else
check_package_version_ge_ARCH openexr $OPENEXR_VERSION_MIN
if [ $? -eq 0 ]; then
@@ -3040,9 +3267,13 @@ install_ARCH() {
fi
fi
+
PRINT ""
if $OIIO_SKIP; then
WARNING "Skipping OpenImageIO installation, as requested..."
+ elif [ "$OIIO_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenImageIO building, as requested..."
+ compile_OIIO
else
check_package_version_ge_lt_ARCH openimageio $OIIO_VERSION_MIN $OIIO_VERSION_MAX
if [ $? -eq 0 ]; then
@@ -3053,11 +3284,15 @@ install_ARCH() {
fi
fi
- have_llvm=false
PRINT ""
+ have_llvm=false
+ _do_compile_llvm=false
if $LLVM_SKIP; then
WARNING "Skipping LLVM installation, as requested (this also implies skipping OSL!)..."
+ elif [ "$LLVM_FORCE_BUILD" = true ]; then
+ INFO "Forced LLVM building, as requested..."
+ _do_compile_llvm=true
else
check_package_version_ge_ARCH llvm $LLVM_VERSION_MIN
if [ $? -eq 0 ]; then
@@ -3067,44 +3302,66 @@ install_ARCH() {
LLVM_VERSION_FOUND=$LLVM_VERSION
clean_LLVM
else
- install_packages_ARCH libffi
- # LLVM can't find the arch ffi header dir...
- _FFI_INCLUDE_DIR=`pacman -Ql libffi | grep -e ".*/ffi.h" | awk '{print $2}' | sed -r 's/(.*)\/ffi.h/\1/'`
- # LLVM 3.1 needs python2 to build and arch defaults to python3
- _PYTHON2_BIN="/usr/bin/python2"
- PRINT ""
- compile_LLVM
- have_llvm=true
- LLVM_VERSION_FOUND=$LLVM_VERSION
+ _do_compile_llvm=true
fi
fi
+ if [ "$_do_compile_llvm" = true ]; then
+ install_packages_ARCH libffi
+ # LLVM can't find the arch ffi header dir...
+ _FFI_INCLUDE_DIR=`pacman -Ql libffi | grep -e ".*/ffi.h" | awk '{print $2}' | sed -r 's/(.*)\/ffi.h/\1/'`
+ # LLVM 3.1 needs python2 to build and arch defaults to python3
+ _PYTHON2_BIN="/usr/bin/python2"
+ PRINT ""
+ compile_LLVM
+ have_llvm=true
+ LLVM_VERSION_FOUND=$LLVM_VERSION
+ fi
+
+
PRINT ""
+ _do_compile_osl=false
if $OSL_SKIP; then
WARNING "Skipping OpenShadingLanguage installation, as requested..."
+ elif [ "$OSL_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenShadingLanguage building, as requested..."
+ _do_compile_osl=true
else
+ check_package_version_ge_ARCH openshadinglanguage $OSL_VERSION_MIN
+ if [ $? -eq 0 ]; then
+ install_packages_ARCH openshadinglanguage
+ clean_OSL
+ else
+ _do_compile_osl=true
+ fi
+ fi
+
+ if [ "$_do_compile_osl" = true ]; then
if $have_llvm; then
- check_package_version_ge_ARCH openshadinglanguage $OSL_VERSION_MIN
- if [ $? -eq 0 ]; then
- install_packages_ARCH openshadinglanguage
- clean_OSL
- else
- #XXX Note: will fail to build with LLVM 3.2!
- install_packages_ARCH intel-tbb
- PRINT ""
- compile_OSL
- fi
+ #XXX Note: will fail to build with LLVM 3.2!
+ install_packages_ARCH intel-tbb
+ PRINT ""
+ compile_OSL
else
WARNING "No LLVM available, cannot build OSL!"
fi
fi
+
PRINT ""
+ _do_compile_osd=false
if $OSD_SKIP; then
WARNING "Skipping OpenSubdiv installation, as requested..."
+ elif [ "$OSD_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenSubdiv building, as requested..."
+ _do_compile_osd=true
else
+ # No package currently? Just build for now!
+ _do_compile_osd=true
+ fi
+
+ if [ "$_do_compile_osd" = true ]; then
if $have_llvm; then
- # No package currently? Just build for now!
install_packages_ARCH intel-tbb
PRINT ""
compile_OSD
@@ -3113,28 +3370,41 @@ install_ARCH() {
fi
fi
+
if $WITH_OPENCOLLADA; then
PRINT ""
+ _do_compile_collada=false
if $OPENCOLLADA_SKIP; then
WARNING "Skipping OpenCOLLADA installation, as requested..."
+ elif [ "$OPENCOLLADA_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenCollada building, as requested..."
+ _do_compile_collada=true
else
check_package_ARCH opencollada
if [ $? -eq 0 ]; then
install_packages_ARCH opencollada
clean_OpenCOLLADA
else
- install_packages_ARCH pcre
- PRINT ""
- compile_OpenCOLLADA
+ _do_compile_collada=true
fi
- # Find path to libxml shared lib...
- _XML2_LIB=`pacman -Ql libxml2 | grep -e ".*/libxml2.so$" | gawk '{print $2}'`
+ fi
+
+ if [ "$_do_compile_collada" = true ]; then
+ install_packages_ARCH pcre
+ # Find path to libxml shared lib...
+ _XML2_LIB=`pacman -Ql libxml2 | grep -e ".*/libxml2.so$" | gawk '{print $2}'`
+ PRINT ""
+ compile_OpenCOLLADA
fi
fi
+
PRINT ""
if $FFMPEG_SKIP; then
WARNING "Skipping FFMpeg installation, as requested..."
+ elif [ "$FFMPEG_FORCE_BUILD" = true ]; then
+ INFO "Forced FFMpeg building, as requested..."
+ compile_FFmpeg
else
check_package_version_ge_ARCH ffmpeg $FFMPEG_VERSION_MIN
if [ $? -eq 0 ]; then
@@ -3147,6 +3417,179 @@ install_ARCH() {
}
+#### Install on other distro (very limited!) ####
+
+install_OTHER() {
+ PRINT ""
+ WARNING "Attempt to build main dependencies for other linux distributions."
+ PRINT ""
+ PRINT "`eval _echo "$COMMON_INFO"`"
+ PRINT ""
+
+ ERROR "Failed to detect distribution type."
+ PRINT ""
+ PRINT "Your distribution is not supported by this script, you'll have to install dependencies and"
+ PRINT "dev packages yourself. However, this script can still attempt to build main (complex) libraries for you,"
+ PRINT "if you use '--build-foo' options (you can try '--build-all' one first)."
+ PRINT ""
+ PRINT "Quite obviously, it assumes dependencies from those libraries are already available, otherwise please"
+ PRINT "install them (you can also use error messages printed out by build process to find missing libraries...)."
+ PRINT ""
+ PRINT "`eval _echo "$DEPS_COMMON_INFO"`"
+ PRINT ""
+ PRINT "`eval _echo "$DEPS_SPECIFIC_INFO"`"
+ PRINT ""
+
+ read -p "Do you want to continue (Y/n)?"
+ [ "$(echo ${REPLY:=Y} | tr [:upper:] [:lower:])" != "y" ] && exit
+
+ PRINT ""
+ _do_compile_python=false
+ if $PYTHON_SKIP; then
+ WARNING "Skipping Python/NumPy installation, as requested..."
+ elif [ "$PYTHON_FORCE_BUILD" = true ]; then
+ INFO "Forced Python/NumPy building, as requested..."
+ _do_compile_python=true
+ fi
+
+ if $_do_compile_python; then
+ compile_Python
+ PRINT ""
+ if $NUMPY_SKIP; then
+ WARNING "Skipping NumPy installation, as requested..."
+ else
+ compile_Numpy
+ fi
+ fi
+
+
+ PRINT ""
+ if $BOOST_SKIP; then
+ WARNING "Skipping Boost installation, as requested..."
+ elif [ "$BOOST_FORCE_BUILD" = true ]; then
+ INFO "Forced Boost building, as requested..."
+ compile_Boost
+ fi
+
+
+ PRINT ""
+ if $OCIO_SKIP; then
+ WARNING "Skipping OpenColorIO installation, as requested..."
+ elif [ "$OCIO_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenColorIO building, as requested..."
+ compile_OCIO
+ fi
+
+
+ PRINT ""
+ if $OPENEXR_SKIP; then
+ WARNING "Skipping ILMBase/OpenEXR installation, as requested..."
+ elif [ "$OPENEXR_FORCE_BUILD" = true ]; then
+ INFO "Forced ILMBase/OpenEXR building, as requested..."
+ compile_OPENEXR
+ fi
+
+
+ PRINT ""
+ if $OIIO_SKIP; then
+ WARNING "Skipping OpenImageIO installation, as requested..."
+ elif [ "$OIIO_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenImageIO building, as requested..."
+ compile_OIIO
+ fi
+
+
+ PRINT ""
+ have_llvm=false
+ _do_compile_llvm=false
+ if $LLVM_SKIP; then
+ WARNING "Skipping LLVM installation, as requested (this also implies skipping OSL!)..."
+ elif [ "$LLVM_FORCE_BUILD" = true ]; then
+ INFO "Forced LLVM building, as requested..."
+ _do_compile_llvm=true
+ fi
+
+ if [ "$_do_compile_llvm" = true ]; then
+ install_packages_DEB libffi-dev
+ # LLVM can't find the debian ffi header dir
+ _FFI_INCLUDE_DIR=`dpkg -L libffi-dev | grep -e ".*/ffi.h" | sed -r 's/(.*)\/ffi.h/\1/'`
+ PRINT ""
+ compile_LLVM
+ have_llvm=true
+ LLVM_VERSION_FOUND=$LLVM_VERSION
+ fi
+
+
+ PRINT ""
+ _do_compile_osl=false
+ if $OSL_SKIP; then
+ WARNING "Skipping OpenShadingLanguage installation, as requested..."
+ elif [ "$OSL_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenShadingLanguage building, as requested..."
+ _do_compile_osl=true
+ fi
+
+ if [ "$_do_compile_osl" = true ]; then
+ if $have_llvm; then
+ install_packages_DEB flex bison libtbb-dev
+ PRINT ""
+ compile_OSL
+ else
+ WARNING "No LLVM available, cannot build OSL!"
+ fi
+ fi
+
+
+ PRINT ""
+ _do_compile_osd=false
+ if $OSD_SKIP; then
+ WARNING "Skipping OpenSubdiv installation, as requested..."
+ elif [ "$OSD_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenSubdiv building, as requested..."
+ _do_compile_osd=true
+ fi
+
+ if [ "$_do_compile_osd" = true ]; then
+ if $have_llvm; then
+ install_packages_DEB flex bison libtbb-dev
+ PRINT ""
+ compile_OSD
+ else
+ WARNING "No LLVM available, cannot build OSD!"
+ fi
+ fi
+
+
+ if $WITH_OPENCOLLADA; then
+ _do_compile_collada=false
+ PRINT ""
+ if $OPENCOLLADA_SKIP; then
+ WARNING "Skipping OpenCOLLADA installation, as requested..."
+ elif [ "$OPENCOLLADA_FORCE_BUILD" = true ]; then
+ INFO "Forced OpenCollada building, as requested..."
+ _do_compile_collada=true
+ fi
+
+ if [ "$_do_compile_collada" = true ]; then
+ install_packages_DEB libpcre3-dev
+ # Find path to libxml shared lib...
+ _XML2_LIB=`dpkg -L libxml2-dev | grep -e ".*/libxml2.so"`
+ # No package
+ PRINT ""
+ compile_OpenCOLLADA
+ fi
+ fi
+
+
+ PRINT ""
+ if $FFMPEG_SKIP; then
+ WARNING "Skipping FFMpeg installation, as requested..."
+ elif [ "$FFMPEG_FORCE_BUILD" = true ]; then
+ INFO "Forced FFMpeg building, as requested..."
+ compile_FFmpeg
+ fi
+}
+
#### Printing User Info ####
print_info_ffmpeglink_DEB() {
@@ -3223,6 +3666,9 @@ print_info() {
PRINT "(provided obviously you did not add anything yourself in those dirs!), and run install_deps.sh again!"
PRINT "Often, changes in the libs built by this script, or in your distro package, cannot be handled simply, so..."
PRINT ""
+ PRINT "You may also try to use the '--build-foo' options to bypass your distribution's packages"
+ PRINT "for some troublesome/buggy libraries..."
+ PRINT ""
PRINT ""
PRINT "Ran with:"
PRINT " install_deps.sh $COMMANDLINE"
@@ -3419,16 +3865,8 @@ elif [ -f /etc/redhat-release -o /etc/SuSE-release ]; then
DISTRO="RPM"
install_RPM
else
- ERROR "Failed to detect distribution type."
- PRINT ""
- PRINT "Your distribution is not supported by this script, you'll have to install dependencies and"
- PRINT "dev packages yourself."
- PRINT ""
- PRINT "`eval _echo "$DEPS_COMMON_INFO"`"
- PRINT ""
- PRINT "`eval _echo "$DEPS_SPECIFIC_INFO"`"
- PRINT ""
- exit 1
+ DISTRO="OTHER"
+ install_OTHER
fi
print_info | tee $INFO_PATH/BUILD_NOTES.txt