Salome HOME
bos #37641 : add openturns 1.21 and PERSALYS 14.1 description sections and compilatio...
[tools/sat_salome.git] / products / compil_scripts / openturns-1.21.sh
1 #!/bin/bash                                                                                                                                                                              
2
3 echo "##########################################################################"
4 echo "openturns" $VERSION
5 echo "##########################################################################"
6
7 # we don't install in python directory -> modify environment as described in INSTALL file
8
9 #mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION}/site-packages
10 export PATH=$(pwd)/bin:$PATH
11 export PYTHONPATH=$(pwd):$PYTHONPATH
12 export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH
13
14 CMAKE_OPTIONS=""
15 if [ -n "$SAT_HPC" ] && [ -n "$MPI_ROOT_DIR" ]; then
16     echo "WARNING: setting CC and CXX environment variables and target MPI wrapper"
17     CMAKE_OPTIONS+=" -DCMAKE_CXX_COMPILER:STRING=${MPI_CXX_COMPILER}"
18     CMAKE_OPTIONS+=" -DCMAKE_C_COMPILER:STRING=${MPI_C_COMPILER}"
19 fi
20
21 CMAKE_OPTIONS+=" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
22 CMAKE_OPTIONS+=" -DCMAKE_INSTALL_LIBDIR:STRING=lib"
23 CMAKE_OPTIONS+=" -DCMAKE_BUILD_TYPE:STRING=Release"
24 CMAKE_OPTIONS+=" -DPYTHON_EXECUTABLE=${PYTHONBIN}"
25
26 if [ -n "$SWIG_ROOT_DIR" ] && [ "$SAT_swig_IS_NATIVE" != "1" ]; then
27     CMAKE_OPTIONS+=" -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig"
28 fi
29
30 if [ -n "$TBB_ROOT_DIR" ] && [ "$SAT_tbb_IS_NATIVE" != "1" ]; then
31     CMAKE_OPTIONS+=" -DTBB_ROOT_DIR=${TBB_ROOT_DIR}"
32     CMAKE_OPTIONS+=" -Dtbb_DIR=${TBB_ROOT_DIR}/lib/cmake"
33 fi
34
35 # https://github.com/persalys/persalys/issues/745
36 LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION"
37 case $LINUX_DISTRIBUTION in
38     UB22*|CO8*|CO9*|FD36|FD37|FD38)
39         echo "WARNING: switching OFF TBB support"
40         CMAKE_OPTIONS+=" -DUSE_TBB=OFF"
41         ;;
42     *)
43         ;;
44 esac
45
46 # Blas/Lapack
47 if [ -n "$LAPACK_ROOT_DIR" ] && [ "$SAT_lapack_IS_NATIVE" != "1" ]; then
48     CMAKE_OPTIONS+=" -DLAPACK_DIR=${LAPACK_ROOT_DIR}/lib/cmake/lapack-3.8.0"
49     CMAKE_OPTIONS+=" -DCBLAS_DIR=${LAPACK_ROOT_DIR}/lib/cmake/cblas-3.8.0"
50     CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libcblas.so"
51     CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libblas.so"
52 fi
53
54 ### libxml2 settings
55 if [ -n "$LIBXML2_ROOT_DIR" ] && [ "$SAT_libxml2_IS_NATIVE" != "1" ]; then
56     CMAKE_OPTIONS+=" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
57     CMAKE_OPTIONS+=" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
58     CMAKE_OPTIONS+=" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
59 fi
60
61 # HDF5
62 if [ -n "$HDF5_ROOT_DIR" ] && [ "$SAT_hdf5_IS_NATIVE" != "1" ]; then
63     CMAKE_OPTIONS+=" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
64     CMAKE_OPTIONS+=" -DHDF5_USE_STATIC_LIBRARIES:BOOL=OFF"
65     CMAKE_OPTIONS+=" -DHDF5_ROOT:PATH=${HDF5_ROOT_DIR}"
66     CMAKE_OPTIONS+=" -DHDF5_hdf5_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib"
67     CMAKE_OPTIONS+=" -DHDF5_hdf5_hl_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
68     CMAKE_OPTIONS+=" -DHDF5_HL_LIBRARY=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
69     CMAKE_OPTIONS+=" -DHDF5_C_INCLUDE_DIR=${HDF5_ROOT_DIR}/include"
70 fi
71
72 # CMINPACK
73 if [ -n "$CMINPACK_ROOT_DIR" ] && [ "$SAT_cminpack_IS_NATIVE" != "1" ]; then
74     CMAKE_OPTIONS+=" -DCMINPACK_ROOT_DIR=${CMINPACK_ROOT_DIR}"
75     CMAKE_OPTIONS+=" -DCMINPACK_INCLUDE_DIR=${CMINPACK_ROOT_DIR}/include/cminpack-1"
76     CMAKE_OPTIONS+=" -DCMINPACK_LIBRARY=$CMINPACK_ROOT_DIR/lib/libcminpack_s.a"
77 else
78     CMAKE_OPTIONS+=" -DCMINPACK_ROOT_DIR=${CMINPACK_ROOT_DIR}"
79     CMAKE_OPTIONS+=" -DCMINPACK_INCLUDE_DIR=${CMINPACK_ROOT_DIR}/include/cminpack-1"
80 fi
81
82 # Blas/Lapack
83 if [ -n "$LAPACK_ROOT_DIR" ] && [ "$SAT_lapack_IS_NATIVE" != "1" ]; then
84     CMAKE_OPTIONS+=" -DLAPACK_DIR=${LAPACK_ROOT_DIR}/lib/cmake/lapack-3.8.0"
85     CMAKE_OPTIONS+=" -DCBLAS_DIR=${LAPACK_ROOT_DIR}/lib/cmake/cblas-3.8.0"
86     CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libcblas.so"
87     CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libblas.so"
88 fi
89
90 if [[ $DIST_NAME == "CO" && $DIST_VERSION == "8" &&  -f /usr/lib64/libcblas.so && -f /usr/lib64/libblas.so ]]; then
91     CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=/usr/lib64/libcblas.so"
92     CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=/usr/lib64/libblas.so"
93 fi
94
95 ### libxml2 settings
96 if [ -n "$LIBXML2_ROOT_DIR" ] && [ "$SAT_libxml2_IS_NATIVE" != "1" ]; then
97     CMAKE_OPTIONS+=" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
98     CMAKE_OPTIONS+=" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
99     CMAKE_OPTIONS+=" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
100 fi
101
102 ## nlopt
103 if [ -n "$NLOPT_ROOT_DIR" ] && [ "$SAT_nlopt_IS_NATIVE" != "1" ]; then
104     CMAKE_OPTIONS+=" -DNLOPT_INCLUDE_DIRS:STRING=${NLOPT_ROOT_DIR}/include"
105     CMAKE_OPTIONS+=" -DNLOPT_LIBRARIES:STRING=${NLOPT_ROOT_DIR}/lib"
106     CMAKE_OPTIONS+=" -DNLOPT_DIR:STRING=${NLOPT_ROOT_DIR}"
107 fi
108
109 echo
110 echo "*** cmake" $CMAKE_OPTIONS
111
112 rm -rf $BUILD_DIR
113 mkdir -p $BUILD_DIR/openturns
114 mkdir -p  $BUILD_DIR/cache/pip
115
116 # since we are using several nodes and share the same $HOME
117 # compilation can get screwed up.
118 # following this discussion: https://tex.stackexchange.com/questions/467824/is-it-possible-to-relocate-my-texmf-directory
119 # we define the following environment variables
120 export TEXMFHOME=$BUILD_DIR/texmf
121 export TEXMFVAR=$BUILD_DIR/texlive
122 export TEXMFCONFIG=$BUILD_DIR/texlive
123 mkdir -p $TEXMFHOME
124 mkdir -p $TEXMFVAR
125 mkdir -p $TEXMFCONFIG
126
127 cd  $BUILD_DIR/openturns
128 cmake $CMAKE_OPTIONS $SOURCE_DIR/openturns-1.21
129 if [ $? -ne 0 ]
130 then
131     echo "ERROR on cmake"
132     exit 1
133 fi
134
135 echo
136 echo "*** make" $MAKE_OPTIONS
137 make $MAKE_OPTIONS
138 if [ $? -ne 0 ]
139 then
140     echo "ERROR on make"
141     exit 2
142 fi
143
144 echo
145 echo "*** make install"
146 make install
147 if [ $? -ne 0 ]
148 then
149     echo "ERROR on make install"
150     exit 3
151 fi
152
153 echo
154 echo "*** check installation"
155 if [ ! -d "${PRODUCT_INSTALL}/lib" ]; then
156     mkdir -p ${PRODUCT_INSTALL}/lib
157 fi
158
159 if [ -d "${PRODUCT_INSTALL}/lib64" ]; then
160     echo "WARNING: moving lib64 to lib"
161     mv ${PRODUCT_INSTALL}/lib64/* ${PRODUCT_INSTALL}/lib/
162     rm -rf ${PRODUCT_INSTALL}/lib64
163 elif [ -d "${PRODUCT_INSTALL}/local/lib64" ]; then
164     echo "WARNING: moving local/lib64 to lib"
165     mv ${PRODUCT_INSTALL}/local/lib64/* ${PRODUCT_INSTALL}/lib/
166     rm -rf ${PRODUCT_INSTALL}/local/lib64
167 fi
168
169 if [[ -d "${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages" ]]; then
170     echo "WARNING: renaming ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages as ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages"
171     cd  ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}
172     ln -sf dist-packages site-packages
173     cd  $BUILD_DIR/openturns
174 fi
175
176 export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH}
177 export LD_LIBRARY_PATH=${PRODUCT_INSTALL}/lib:${LD_LIBRARY_PATH}
178 chmod +x ${SOURCE_DIR}/openturns-1.21/python/test/t_features.py
179 ${PYTHONBIN} ${SOURCE_DIR}/openturns-1.21/python/test/t_features.py
180 if [ $? -ne 0 ]
181 then
182     echo "ERROR  testing Openturns features...."
183     exit 4
184 fi
185
186 LD_LIBRARY_PATH_REF=${LD_LIBRARY_PATH}
187 if [[ -d "$SOURCE_DIR/otfftw-0.13" ]]; then
188     declare -A OTC
189     OTC["otagrum"]="0.8"
190     OTC["otfftw"]="0.13"
191     OTC["otmixmod"]="0.14"
192     OTC["otmorris"]="0.13"
193     OTC["otrobopt"]="0.12"
194     OTC["otsubsetinverse"]="1.10"
195     OTC["otsvm"]="0.11"
196
197     for k in ${!OTC[@]};
198     do         
199         echo
200         echo "*** C O M P O N E N T : $k-${OTC[$k]} "
201         if [[ $k == "otagrum" ]]; then
202             echo "WARNING: skipping $k.."
203             continue
204         fi
205         cd  $BUILD_DIR
206         mkdir ${BUILD_DIR}/$k
207         cd ${BUILD_DIR}/$k 
208         CMAKE_EXTRA_OPTIONS=
209         if [[ $DIST_NAME == "CO" ]]; then
210             CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"  # needs extra latex modules on CentOS 7, 8
211             CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF"
212         fi
213         if [[ $k == "otmixmod" ]]; then
214             CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
215             CMAKE_EXTRA_OPTIONS+=" -DSOURCEFILES=$SOURCE_DIR/$k-${OTC[$k]}"
216         elif [[ $k == "otsubsetinverse" ]]; then
217             CMAKE_EXTRA_OPTIONS+=" -DOPENTURNS_HOME=$PRODUCT_INSTALL"
218             CMAKE_EXTRA_OPTIONS+=" -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON"
219             CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF"
220         elif  [[ $k == "otfftw" ]]; then
221             CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
222         elif [[ $k == "otmorris" ]]; then
223             case $LINUX_DISTRIBUTION in
224                 DB*|FD*|UB*)
225                     echo "WARNING: switching OFF documentation build"
226                     CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
227                     CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF" # missing package to be installed.
228                     ;;
229             esac
230         elif [[ $k == "otrobopt" ]]; then
231             case $LINUX_DISTRIBUTION in
232                 DB*|FD*|UB*)
233                     echo "WARNING: switching OFF documentation build"
234                     CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
235                     CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF" # missing package to be installed.
236                     ;;
237             esac
238         elif [[ $k == "otsvm" ]]; then
239             case $LINUX_DISTRIBUTION in
240                 DB*|FD*|UB*)
241                     echo "WARNING: switching OFF documentation build"
242                     CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
243                     CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF" # missing package to be installed.
244                     ;;
245             esac
246         elif  [[ $k == "otpmml" ]]; then
247             CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
248         fi
249
250         echo
251         echo "*** cmake " $CMAKE_OPTIONS ${CMAKE_EXTRA_OPTIONS}  $SOURCE_DIR/$k-${OTC[$k]}
252         cmake $CMAKE_OPTIONS ${CMAKE_EXTRA_OPTIONS} $SOURCE_DIR/$k-${OTC[$k]}
253         if [ $? -ne 0 ]
254         then
255             echo "ERROR on cmake"
256             exit 1
257         fi
258         
259         echo
260         echo "*** make" $MAKE_OPTIONS
261         make $MAKE_OPTIONS
262         if [ $? -ne 0 ]
263         then
264             echo "ERROR on make"
265             exit 2
266         fi
267         
268         echo
269         echo "*** make install"
270         make install
271         if [ $? -ne 0 ]
272         then
273             echo "ERROR on make install"
274             exit 3
275         fi
276     done
277
278     declare -A OTP
279     OTP["otfmi"]="0.15"
280     OTP["otpod"]="0.6.10"
281     OTP["otwrapy"]="0.11"
282     for k in ${!OTP[@]};
283     do 
284         echo
285         echo "*** C O M P O N E N T : $k-${OTP[$k]} "
286
287         if [ "$SAT_Python_IS_NATIVE" == "1" ]; then
288             if [ $k == "otfmi" ]; then
289                 echo "INFO: install dill-0.3.4"
290                 ${PYTHONBIN} -m pip install  --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/dill-0.3.4/dill-0.3.4-py2.py3-none-any.whl --no-deps  --prefix=$PRODUCT_INSTALL
291                 if [ $? -ne 0 ]
292                 then
293                     echo "FATAL: could not install dill-0.3.4"
294                     exit 6
295                 fi
296             elif [ $k == "otpod" ]; then
297                 if [[ $DIST_NAME == "CO" && $DIST_VERSION == "8" ]]; then
298                     echo "*** skipping: since system Cython too old"
299                     continue
300                 fi
301                 echo "INFO: install scikit-learn-0.24.2"
302                 # use --no-build-isolation and --no-use-pep517 flags
303                 ${PYTHONBIN} -m pip install  --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/scikit-learn-0.24.2/scikit-learn-0.24.2.tar.gz --no-deps  --prefix=$PRODUCT_INSTALL --no-build-isolation --no-use-pep517
304                 if [ $? -ne 0 ]
305                 then
306                     echo "FATAL: could not install scikit-0.24.2"
307                     exit 6
308                 fi
309                 echo "INFO: install threadpoolctl-3.0.0"
310                 ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip  $SOURCE_DIR/threadpoolctl-3.0.0/threadpoolctl-3.0.0-py3-none-any.whl --no-deps --prefix=$PRODUCT_INSTALL
311                 if [ $? -ne 0 ]
312                 then
313                     echo "FATAL: could not install threadpoolctl 3.0.0"
314                     exit 6
315                 fi
316             fi
317         else # non native Python
318             if [[ $k == "otfmi" ]]; then
319                 echo "INFO: install dill-0.3.4"
320                 ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/dill-0.3.4/dill-0.3.4-py2.py3-none-any.whl --no-deps
321                 if [ $? -ne 0 ]
322                 then
323                     echo "FATAL: could not install dikk-0.3.4"
324                     exit 5
325                 fi
326             elif [[ $k == "otpod" ]]; then
327                 echo "INFO: install threadpoolctl-3.0.0"
328                 ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/threadpoolctl-3.0.0/threadpoolctl-3.0.0-py3-none-any.whl --no-deps
329                 if [ $? -ne 0 ]
330                 then
331                     echo "FATAL: could not install readpoolctl 3.0.0"
332                     exit 6
333                 fi
334                 echo "INFO: install joblib-1.1.0"
335                 ${PYTHONBIN} -m pip install  --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/joblib-1.1.0/joblib-1.1.0-py2.py3-none-any.whl --no-deps
336                 if [ $? -ne 0 ]
337                 then
338                     echo "FATAL: could not install joblib-1.1.0"
339                     exit 6
340                 fi
341                 echo "INFO: install decorator-5.1.0"
342                 ${PYTHONBIN} -m pip install  --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/decorator-5.1.0/decorator-5.1.0-py3-none-any.whl --no-deps
343                 if [ $? -ne 0 ]
344                 then
345                     echo "FATAL: could not install decorator-5.1.0"
346                     exit 6
347                 fi
348                 echo "INFO: install scikit-learn-0.24.2"
349                 ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/scikit-learn-0.24.2/scikit-learn-0.24.2.tar.gz --no-deps
350                 if [ $? -ne 0 ]
351                 then
352                     echo "FATAL: could not install scikit-0.24.2"
353                     exit 6
354                 fi
355             fi
356         fi
357
358         cd  $BUILD_DIR
359         mkdir ${BUILD_DIR}/$k
360         cd ${BUILD_DIR}/$k
361         cp -R $SOURCE_DIR/$k-${OTP[$k]}/* .
362         #
363         $PYTHONBIN setup.py build
364         if [ $? -ne 0 ]
365         then
366             echo "ERROR on ${PYTHONBIN} setup.py  build"
367             exit 4
368         fi
369         #
370         $PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
371         if [ $? -ne 0 ]
372         then
373             echo "ERROR on ${PYTHONBIN} setup.py  install --prefix=$PRODUCT_INSTALL"
374             exit 5
375         fi
376     done
377
378     #
379     # O P E N T U R N S
380     #
381     if [ -f ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py ]; then
382         echo "INFO: site.py already installed"
383     elif [ "$SAT_Python_IS_NATIVE" == "1" ]; then
384         # check first whether the init.py file is installed
385         echo "WARNING: missing init.py file. Installing it from system Python installation"
386         SITE_PATCH=
387         LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION"
388         case $LINUX_DISTRIBUTION in
389             DB11)
390                 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
391                 ;;
392             DB10)
393                 SITE_PATCH=/usr/lib/python3/dist-packages/setuptools/site-patch.py
394                 ;;
395             UB22*)
396                 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
397                 ;;
398             UB20*)
399                 SITE_PATCH=/usr/lib/python3/dist-packages/setuptools/site-patch.py
400                 ;;
401             FD32)
402                 SITE_PATCH=/usr/lib/python3.8/site-packages/setuptools/site-patch.py
403                 ;;
404             FD34)
405                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
406                 ;;
407             FD36)
408                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
409                 ;;
410             FD37)
411                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
412                 ;;
413             FD38)
414                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
415                 ;;
416             CO8*)
417                 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
418                 ;;
419             *)
420                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
421                 ;;
422         esac
423         # check whether this file exists
424         if [ "${SITE_PATCH}" == "" ]; then
425             cp $SOURCE_DIR/addons/site-patch.py ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
426         else
427             cp $SITE_PATCH ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
428         fi
429     elif [ -f ${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION}/site-packages/setuptools/site-patch.py ]; then
430         cp ${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION}/site-packages/setuptools/site-patch.py ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
431     else
432         echo "ERROR: could not find site-patch.py"
433         exit 7
434     fi
435 fi
436
437 cd ${PRODUCT_INSTALL}/lib
438
439 echo
440 echo "########## END"