11#! /bin/bash
22
33# Make sure toolset is enabled
4- gcc --version
54version=" $( gcc -dumpversion) "
6- if [[ $version =~ 6.* . * ]]; then
5+ if [[ $version =~ 6.[0-9](.[0-9] | ) ]]; then
76 printf " \n\nDevtoolset-6 is running\n\n"
87else
98 printf " \n\nReloading with devtoolset-6\n\n"
10- scl enable devtoolset-6 " sh ./build .sh"
9+ scl enable devtoolset-6 " sh /usr/bin/appleseed .sh"
1110 exit 0
1211fi
1312
14- # Install appleseed / blenderseed deps
13+ # Basics
1514yum -y update
15+ yum -y upgrade
16+
17+ # Install appleseed / blenderseed deps
1618yum -y install python2
1719yum -y install python2-pip
18- yum -y install qt5-qtbase-devel
20+
21+ # Blender must exist
22+ if [ ! -d " $HOME /blender-git" ]; then
23+ printf " \n\nBlender repository does not exist, exiting..\n\n"
24+ exit 0
25+ fi
26+
27+ # Make sure appleseed deps can be built
28+ gitver=$( cd $HOME /blender-git/blender && git status 2>&1 )
29+ # Switch tag/branch if necessary (stashing changes)
30+ if [[ ! ($gitver =~ .* 2.82a.* ) ]]; then
31+ printf " \n\nBlender repository not at v2.82a, switching..\n\n"
32+ cd $HOME /blender-git/blender \
33+ && git stash \
34+ && git checkout v2.82a \
35+ && git submodule foreach git stash \
36+ && git submodule foreach git checkout v2.82a
37+ fi
1938
2039# Download appleseed 2.1.0 (latest)
2140if [ ! -d " $HOME /appleseed-git" ]; then
2241 mkdir $HOME /appleseed-git \
23- && mkdir $HOME /blenderseed-git \
42+ && mkdir $HOME /appleseed-git/deps-done \
43+ && mkdir $HOME /appleseed-git/deps-build \
2444 && cd $HOME /appleseed-git \
2545 && git clone https://github.com/appleseedhq/appleseed.git
2646fi
2747
28- # Download prebuilt binaries
29- if [ ! -d " $HOME /appleseed-git/prebuilt-linux-deps" ]; then
30- cd $HOME /appleseed-git \
31- && curl -OL https://github.com/appleseedhq/linux-deps/releases/download/v2.1.1/appleseed-deps-static-2.1.1.tgz \
32- && tar xf appleseed-* .tgz \
33- && cd && rm -rf $HOME /appleseed-git/appleseed-* .tgz
48+ # Download Blenderseed & fix packaging bug
49+ if [ ! -d " $HOME /appleseed-git/blenderseed" ]; then
50+ mkdir $HOME /appleseed-git/appleseed-install \
51+ && cd $HOME /appleseed-git/ \
52+ && git clone https://github.com/appleseedhq/blenderseed.git
3453fi
3554
36- # Blender deps must have been built first
37- if [ ! -d " $HOME /blender-git/lib/linux_x86_64" ]; then
38- printf " \nBlender deps have not been built yet, exiting..\n"
39- exit 0
40- fi
55+ # Patch bugs & other problems
56+ patch -f -s -p0 -d $HOME /blender-git/blender/build_files/build_environment < $HOME /patches/build-as.diff \
57+ && patch -f -s -p0 -d $HOME /appleseed-git/blenderseed/scripts < $HOME /patches/scripts-as.diff
58+
59+ # Use blender's deps build system to build most appleseed deps
60+ for (( i= 1 ;i<= 10 ;i++ )) ; do
61+ cd $HOME /blender-git/blender \
62+ && make deps BUILD_DIR=$HOME /appleseed-git/deps-build DEPS_INSTALL_DIR=$HOME /appleseed-git/deps-done --quiet
63+ # Error code 0 means success
64+ if [ " $? " -eq 0 ]; then
65+ break
66+ else
67+ printf " \n\nMake deps (appleseed) failed, start attempt $i \n\n"
68+ fi
69+ done
4170
42- # Setup boost 1.61
43- if [ ! -d " $HOME /boost-py" ]; then
44- mkdir $HOME /boost-py \
45- && mkdir $HOME /boost-py/build \
46- && cd $HOME /boost-py \
47- && wget -O boost.tar.gz https://sourceforge.net/projects/boost/files/boost/1.61.0/boost_1_61_0.tar.gz/download? use_mirror=pilotfiber \
48- && tar xf boost.tar.gz \
49- && cd boost_1_61_0 \
50- && ./bootstrap.sh --with-python-version=3.7 --prefix=$HOME /boost-py/build \
51- && cd && rm -rf $HOME /boost-py/boost.tar.gz
52- # Patch compiler bug
53- sed -i " s/return PyUnicode_Check(obj) ? _PyUnicode_AsString(obj) : 0;/return (void *)(PyUnicode_Check(obj) ? _PyUnicode_AsString(obj) : 0);/g" \
54- $HOME /boost-py/boost_1_61_0/libs/python/src/converter/builtin_converters.cpp
71+ # Make lz4 1.8.3 (not provided by Blender)
72+ if [ ! -d " $HOME /appleseed-git/deps-done/lz4" ]; then
73+ cd $HOME /appleseed-git/deps-build \
74+ && curl -L https://github.com/lz4/lz4/archive/v1.8.3.tar.gz -o lz4-v1.8.3.tar.gz \
75+ && tar xf lz4-* .tar.gz \
76+ && rm -rf lz4-* .tar.gz \
77+ && cd lz4-* / \
78+ && make default PREFIX=$HOME /appleseed-git/deps-done/lz4 \
79+ BUILD_SHARED=no \
80+ BUILD_STATIC=yes \
81+ CFLAGS=" -std=gnu11 -fPIC -static-libgcc" \
82+ CXXFLAGS=" -std=c++11 -fPIC -static-libgcc -static-libstdc++" \
83+ LDFLAGS=" -static-libgcc -static-libstdc++" \
84+ install
5585fi
5686
57- # Build static boost with blender's python 3
58- cd $HOME /boost-py/boost_1_61_0
59- ./b2 cxxflags=" -std=c++11 -fPIC -static" \
60- --user-config=$HOME /patches/user-config.jam \
61- architecture=x86 address-model=64 link=static threading=multi \
62- --with-python \
63- --prefix=$HOME /boost-py/build \
64- install
87+ # Make xerces-c 3.2.2 (not provided by Blender)
88+ if [ ! -d " $HOME /appleseed-git/deps-done/xerces" ]; then
89+ cd $HOME /appleseed-git/deps-build \
90+ && curl -L https://github.com/apache/xerces-c/archive/v3.2.2.tar.gz -o xerces-c-v3.2.2.tar.gz \
91+ && tar xf xerces-* .tar.gz \
92+ && rm -rf xerces-* .tar.gz \
93+ && cd xerces-* / \
94+ && ./reconf \
95+ && ./configure --prefix=$HOME /appleseed-git/deps-done/xerces \
96+ --disable-shared \
97+ --enable-static \
98+ --without-icu \
99+ --disable-netaccessor-curl \
100+ --disable-netaccessor-cfurl \
101+ --disable-netaccessor-socket \
102+ --disable-netaccessor-winsock \
103+ --with-pic \
104+ CFLAGS=" -fPIC -static-libgcc" \
105+ CPPFLAGS=" -std=c++11 -fPIC -static-libgcc -static-libstdc++" \
106+ LDFLAGS=" -static-libgcc -static-libstdc++" \
107+ && make install
108+ fi
65109
66110# Declare paths
67- export BLENDER_DIR=$HOME /blender-git/lib/linux_x86_64
68- export BOOST_PY_DIR=$HOME /boost-py/build
69- export APPLESEED_DEPENDENCIES=$HOME /appleseed-git/prebuilt-linux-deps
70- export CMAKE_INCLUDE_PATH=$APPLESEED_DEPENDENCIES /include
71- export CMAKE_LIBRARY_PATH=$APPLESEED_DEPENDENCIES /lib
72-
73- # Generate appleseed with python3 bindings cmake project
111+ export APPLESEED_DEPENDENCIES=$HOME /appleseed-git/deps-done
112+ export BOOST_LIBS=$APPLESEED_DEPENDENCIES /boost/lib
113+ # Generate appleseed cmake project with python3 bindings etc.
74114cd $HOME /appleseed-git/appleseed
75115cmake -B ../build -Wno-dev \
76- -DCMAKE_PREFIX_PATH=/usr/include/qt5 \
116+ -DCMAKE_C_FLAGS=" -fuse-ld=gold -std=gnu11 -fPIC -static-libgcc" \
117+ -DCMAKE_CXX_FLAGS=" -fuse-ld=gold -std=c++11 -fPIC -static-libgcc \
118+ -static-libstdc++ -l:libstdc++.a -D_GLIBCXX_USE_CXX11_ABI=0" \
77119 -DWITH_STUDIO=OFF \
120+ -DWITH_BENCH=OFF \
121+ -DWITH_TOOLS=OFF \
122+ -DWITH_EMBREE=ON \
78123 -DWITH_PYTHON2_BINDINGS=OFF \
79124 -DWITH_PYTHON3_BINDINGS=ON \
80- -DPYTHON3_INCLUDE_DIR=$BLENDER_DIR /python/include/python3.7m \
81- -DWITH_EMBREE=ON \
82125 -DUSE_SSE42=ON \
83126 -DUSE_STATIC_BOOST=ON \
84- -DBOOST_INCLUDEDIR=$APPLESEED_DEPENDENCIES /include/boost_1_61_0 \
85- -DBOOST_LIBRARYDIR=$APPLESEED_DEPENDENCIES /lib/ \
127+ -DBOOST_INCLUDEDIR=$APPLESEED_DEPENDENCIES /boost/include \
128+ -DBOOST_LIBRARYDIR=$APPLESEED_DEPENDENCIES /boost/ lib/ \
86129 -DBoost_NO_SYSTEM_PATHS=ON \
87- -DBoost_ATOMIC_LIBRARY_RELEASE=$APPLESEED_DEPENDENCIES /lib/libboost_atomic-gcc63-mt-1_61.a \
88- -DBoost_CHRONO_LIBRARY_RELEASE=$APPLESEED_DEPENDENCIES /lib/libboost_chrono-gcc63-mt-1_61.a \
89- -DBoost_DATE_TIME_LIBRARY_RELEASE=$APPLESEED_DEPENDENCIES /lib/libboost_date_time-gcc63-mt-1_61.a \
90- -DBoost_FILESYSTEM_LIBRARY_RELEASE=$APPLESEED_DEPENDENCIES /lib/libboost_filesystem-gcc63-mt-1_61.a \
91- -DBoost_PYTHON3_LIBRARY=$BOOST_PY_DIR /lib/libboost_python3.a \
92- -DBoost_PYTHON3_LIBRARY_RELEASE=$BOOST_PY_DIR /lib/libboost_python3.a \
93- -DBoost_REGEX_LIBRARY_RELEASE=$APPLESEED_DEPENDENCIES /lib/libboost_regex-gcc63-mt-1_61.a \
94- -DBoost_SYSTEM_LIBRARY_RELEASE=$APPLESEED_DEPENDENCIES /lib/libboost_system-gcc63-mt-1_61.a \
95- -DBoost_THREAD_LIBRARY_RELEASE=$APPLESEED_DEPENDENCIES /lib/libboost_thread-gcc63-mt-1_61.a \
96- -DBoost_WAVE_LIBRARY_RELEASE=$APPLESEED_DEPENDENCIES /lib/libboost_wave-gcc63-mt-1_61.a \
97- -DBoost_SERIALIZATION_LIBRARY_RELEASE=$APPLESEED_DEPENDENCIES /lib/libboost_serialization-gcc63-mt-1_61.a \
98- -DEMBREE_INCLUDE_DIR=$APPLESEED_DEPENDENCIES /include \
99- -DEMBREE_LIBRARY=$APPLESEED_DEPENDENCIES /lib/libembree3.a \
100- -DIMATH_HALF_LIBRARY=$APPLESEED_DEPENDENCIES /lib/libHalf-2_3_s.a \
101- -DIMATH_IEX_LIBRARY=$APPLESEED_DEPENDENCIES /lib/libIex-2_3_s.a \
102- -DIMATH_MATH_LIBRARY=$APPLESEED_DEPENDENCIES /lib/libImath-2_3_s.a \
103- -DOPENEXR_IMF_LIBRARY=$APPLESEED_DEPENDENCIES /lib/libIlmImf-2_3_s.a \
104- -DOPENEXR_THREADS_LIBRARY=$APPLESEED_DEPENDENCIES /lib/libIlmThread-2_3_s.a \
105- -DXERCES_LIBRARY=$APPLESEED_DEPENDENCIES /lib/libxerces-c-3.2.a \
106- -DLZ4_INCLUDE_DIR=$APPLESEED_DEPENDENCIES /include \
107- -DLZ4_LIBRARY=$APPLESEED_DEPENDENCIES /lib/liblz4.a \
108- -DOPENIMAGEIO_OIIOTOOL=$APPLESEED_DEPENDENCIES /bin/oiiotool \
109- -DOPENIMAGEIO_IDIFF=$APPLESEED_DEPENDENCIES /bin/idiff \
110- -DOSL_COMPILER=$APPLESEED_DEPENDENCIES /bin/oslc \
111- -DOSL_MAKETX=$APPLESEED_DEPENDENCIES /bin/maketx \
112- -DOSL_QUERY_INFO=$APPLESEED_DEPENDENCIES /bin/oslinfo \
113- -DAPPLESEED_DENOISER_LINK_EXTRA_LIBRARIES:STRING=" -Wl,--exclude-libs,ALL \
114- -L${APPLESEED_DEPENDENCIES} /lib \
115- -l:libIlmImf-2_3_s.a \
116- -l:libIlmThread-2_3_s.a \
117- -l:libImath-2_3_s.a \
118- -l:libIexMath-2_3_s.a \
119- -l:libIex-2_3_s.a \
120- -l:libHalf-2_3_s.a \
121- -l:libz.a" \
122- -DAPPLESEED_LINK_EXTRA_LIBRARIES:STRING=" -Wl,--exclude-libs,ALL \
123- -L${APPLESEED_DEPENDENCIES} /lib \
124- -L${BOOST_PY_DIR} /lib \
130+ -DBoost_ATOMIC_LIBRARY_RELEASE=$BOOST_LIBS /libboost_atomic.a \
131+ -DBoost_CHRONO_LIBRARY_RELEASE=$BOOST_LIBS /libboost_chrono.a \
132+ -DBoost_DATE_TIME_LIBRARY_RELEASE=$BOOST_LIBS /libboost_date_time.a \
133+ -DBoost_FILESYSTEM_LIBRARY_RELEASE=$BOOST_LIBS /libboost_filesystem.a \
134+ -DBoost_PYTHON3_LIBRARY=$BOOST_LIBS /libboost_python37.a \
135+ -DBoost_PYTHON3_LIBRARY_RELEASE=$BOOST_LIBS /libboost_python37.a \
136+ -DBoost_REGEX_LIBRARY_RELEASE=$BOOST_LIBS /libboost_regex.a \
137+ -DBoost_SERIALIZATION_LIBRARY_RELEASE=$BOOST_LIBS /libboost_serialization.a \
138+ -DBoost_SYSTEM_LIBRARY_RELEASE=$BOOST_LIBS /libboost_system.a \
139+ -DBoost_THREAD_LIBRARY_RELEASE=$BOOST_LIBS /libboost_thread.a \
140+ -DBoost_WAVE_LIBRARY_RELEASE=$BOOST_LIBS /libboost_wave.a \
141+ -DPYTHON3_INCLUDE_DIR=$APPLESEED_DEPENDENCIES /python/include/python3.7m \
142+ -DEMBREE_INCLUDE_DIR=$APPLESEED_DEPENDENCIES /embree/include \
143+ -DEMBREE_LIBRARY=$APPLESEED_DEPENDENCIES /embree/lib/libembree3.a \
144+ -DOPENIMAGEIO_INCLUDE_DIR=$APPLESEED_DEPENDENCIES /openimageio/include \
145+ -DOPENIMAGEIO_LIBRARY=$APPLESEED_DEPENDENCIES /openimageio/lib/libOpenImageIO.a \
146+ -DOPENEXR_INCLUDE_DIR=$APPLESEED_DEPENDENCIES /openexr/include \
147+ -DIMATH_INCLUDE_DIR=$APPLESEED_DEPENDENCIES /openexr/include \
148+ -DIMATH_HALF_LIBRARY=$APPLESEED_DEPENDENCIES /openexr/lib/libHalf.a \
149+ -DIMATH_IEX_LIBRARY=$APPLESEED_DEPENDENCIES /openexr/lib/libIex.a \
150+ -DIMATH_MATH_LIBRARY=$APPLESEED_DEPENDENCIES /openexr/lib/libImath.a \
151+ -DOPENEXR_IMF_LIBRARY=$APPLESEED_DEPENDENCIES /openexr/lib/libIlmImf.a \
152+ -DOPENEXR_THREADS_LIBRARY=$APPLESEED_DEPENDENCIES /openexr/lib/libIlmThread.a \
153+ -DXERCES_INCLUDE_DIR=$APPLESEED_DEPENDENCIES /xerces/include \
154+ -DXERCES_LIBRARY=$APPLESEED_DEPENDENCIES /xerces/lib/libxerces-c.a \
155+ -DLZ4_INCLUDE_DIR=$APPLESEED_DEPENDENCIES /lz4/include \
156+ -DLZ4_LIBRARY=$APPLESEED_DEPENDENCIES /lz4/lib/liblz4.a \
157+ -DOPENIMAGEIO_OIIOTOOL=$APPLESEED_DEPENDENCIES /openimageio/bin/oiiotool \
158+ -DOPENIMAGEIO_IDIFF=$APPLESEED_DEPENDENCIES /openimageio/bin/idiff \
159+ -DOSL_MAKETX=$APPLESEED_DEPENDENCIES /openimageio/bin/maketx \
160+ -DOSL_COMPILER=$APPLESEED_DEPENDENCIES /osl/bin/oslc \
161+ -DOSL_QUERY_INFO=$APPLESEED_DEPENDENCIES /osl/bin/oslinfo \
162+ -DOSL_INCLUDE_DIR=$APPLESEED_DEPENDENCIES /osl/include \
163+ -DOSL_EXEC_LIBRARY=$APPLESEED_DEPENDENCIES /osl/lib/liboslexec.a \
164+ -DOSL_COMP_LIBRARY=$APPLESEED_DEPENDENCIES /osl/lib/liboslcomp.a \
165+ -DOSL_QUERY_LIBRARY=$APPLESEED_DEPENDENCIES /osl/lib/liboslquery.a \
166+ -DZLIB_INCLUDE_DIR=$APPLESEED_DEPENDENCIES /zlib/include \
167+ -DZLIB_LIBRARY=$APPLESEED_DEPENDENCIES /zlib/lib/libz_pic.a \
168+ -DPNG_PNG_INCLUDE_DIR=$APPLESEED_DEPENDENCIES /png/include \
169+ -DPNG_LIBRARY=$APPLESEED_DEPENDENCIES /png/lib/libpng16.a \
170+ -DAPPLESEED_DENOISER_LINK_EXTRA_LIBRARIES:STRING=" -Wl,--exclude-libs,ALL -Wl,--as-needed \
171+ -L${APPLESEED_DEPENDENCIES} /openexr/lib \
172+ -L${APPLESEED_DEPENDENCIES} /zlib/lib \
173+ -l:libIlmImf.a \
174+ -l:libIlmThread.a \
175+ -l:libImath.a \
176+ -l:libIexMath.a \
177+ -l:libIex.a \
178+ -l:libHalf.a \
179+ -l:libz_pic.a" \
180+ -DAPPLESEED_LINK_EXTRA_LIBRARIES:STRING=" -Wl,--exclude-libs,ALL -Wl,--as-needed \
181+ -L${APPLESEED_DEPENDENCIES} /embree/lib \
182+ -L${APPLESEED_DEPENDENCIES} /jpeg/lib \
183+ -L${APPLESEED_DEPENDENCIES} /llvm/lib \
184+ -L${APPLESEED_DEPENDENCIES} /opencolorio/lib \
185+ -L${APPLESEED_DEPENDENCIES} /opencolorio/lib/static \
186+ -L${APPLESEED_DEPENDENCIES} /openexr/lib \
187+ -L${APPLESEED_DEPENDENCIES} /openimageio/lib \
188+ -L${APPLESEED_DEPENDENCIES} /osl/lib \
189+ -L${APPLESEED_DEPENDENCIES} /png/lib \
190+ -L${APPLESEED_DEPENDENCIES} /tbb/lib \
191+ -L${APPLESEED_DEPENDENCIES} /tiff/lib \
192+ -L${APPLESEED_DEPENDENCIES} /zlib/lib \
125193 -l:libembree3.a \
126194 -l:libembree_avx2.a \
127195 -l:libembree_avx.a \
@@ -131,20 +199,21 @@ cmake -B ../build -Wno-dev \
131199 -l:libtasking.a \
132200 -l:liblexers.a \
133201 -l:libsys.a \
202+ -l:libtbb.a \
134203 -l:liboslexec.a \
135204 -l:libOpenImageIO.a \
136205 -l:libOpenColorIO.a \
137206 -l:libyaml-cpp.a \
138207 -l:libtinyxml.a \
139208 -l:libtiff.a \
140209 -l:libjpeg.a \
141- -l:libIlmImf-2_3_s .a \
142- -l:libIlmThread-2_3_s .a \
143- -l:libImath-2_3_s .a \
144- -l:libIexMath-2_3_s .a \
145- -l:libIex-2_3_s .a \
146- -l:libHalf-2_3_s .a \
147- -l:libIex-2_3_s .a \
210+ -l:libIlmImf.a \
211+ -l:libIlmThread.a \
212+ -l:libImath.a \
213+ -l:libIexMath.a \
214+ -l:libIex.a \
215+ -l:libHalf.a \
216+ -l:libIex.a \
148217 -l:libpng16.a \
149218 -l:libLLVMLTO.a \
150219 -l:libLLVMPasses.a \
@@ -205,27 +274,22 @@ cmake -B ../build -Wno-dev \
205274 -l:libLLVMBinaryFormat.a \
206275 -l:libLLVMSupport.a \
207276 -l:libLLVMDemangle.a \
208- -l:libz.a \
209- -lpthread \
210- -lutil \
211- -ltbb \
212- -ldl \
213- -lm"
214-
215- # Build appleseed for blender then install it
216- cd $HOME /appleseed-git/build && make all \
217- && cmake --install . --prefix $HOME /blenderseed-git/appleseed
277+ -l:libz_pic.a"
218278
219- # Make sure blenderseed is downloaded & fix packaging bug
220- if [ ! -d " $HOME /blenderseed-git/blenderseed" ]; then
221- cd $HOME /blenderseed-git \
222- && git clone https://github.com/appleseedhq/blenderseed.git \
223- && sed -i " s/\" libappleseed.so\" , \" libappleseed.shared.so\" /\" libappleseed.so\" /g" \
224- $HOME /blenderseed-git/blenderseed/scripts/blenderseed.package.py
225- fi
279+ # Build appleseed for blender & install locally
280+ cd $HOME /appleseed-git/build \
281+ && make -j16 --quiet \
282+ && cmake --install . --prefix $HOME /appleseed-git/appleseed-install
226283
227- # Finally bundle blenderseed
228- cp $HOME /patches/blenderseed.package.configuration.xml $HOME /blenderseed-git/blenderseed/scripts \
229- && cd $HOME /blenderseed-git/blenderseed/scripts \
284+ # Bundle blenderseed and save in output dir
285+ cd $HOME /appleseed-git/blenderseed/scripts \
230286 && pip2 install colorama \
231287 && python2 blenderseed.package.py
288+
289+ # Reset patches
290+ cd $HOME /appleseed-git/blenderseed \
291+ && git reset --hard \
292+ && git clean -f
293+ cd $HOME /blender-git/blender \
294+ && git reset --hard \
295+ && git clean -f
0 commit comments