Salome HOME
Add missing dependency on Sphinx
[tools/install.git] / config_files / omniORB.sh
1 #!/bin/bash -noprofile
2
3 ####################################################################################
4 #  File      : omniORB.sh
5 #  Created   : Mon Feb 09 16:21:00 2009
6 #  Author    : Vadim SANDLER, Open CASCADE SAS (vadim.sandler@opencascade.com)
7 #  Project   : SALOME
8 #  Module    : Installation Wizard
9 #  Copyright : 2002-2012 CEA
10 #
11 #  This script is the part of the SALOME installation procedure.
12 #
13 ####################################################################################
14
15 #
16 # omniORB, omniORBpy, omniNotify versions
17 #
18 OMNIORB_VERSION=4.1.6
19 OMNIORBPY_VERSION=3.6
20 OMNINOTIFY_VERSION=2.1
21
22 # major, and minor+release omniORB version info
23 OMNIORB_MAJOR=`echo $OMNIORB_VERSION | awk -F. '{print $1}'`
24 OMNIORB_MINOR_RELEASE=`echo $OMNIORB_VERSION | awk -F. '{printf("%d.%d", $2,$3)}'`
25
26 check_version()
27 {
28 if [ -z "${OMNIORBDIR}" ]; then
29    #echo "OMNIORBDIR doesn't set"
30    return 1
31 fi
32 # check omniORB version
33 python_version="`python -c 'import sys; print sys.version[:3]'`"
34 check_lib_version libomniORB${OMNIORB_MAJOR}.so.${OMNIORB_MINOR_RELEASE} ${OMNIORBDIR}/lib
35 if [ "$?" -ne "0" ]; then
36    return 1
37 fi
38 # check omniORBpy version
39 check_lib_version _omnipymodule.so.${OMNIORBPY_VERSION} ${OMNIORBDIR}/lib/python${python_version}/site-packages
40 if [ "$?" -ne "0" ]; then
41    return 1
42 fi
43 # check omniNotify version
44 # .... how to check version for arbitrary version of omniNotify ???
45 check_lib_version libCOSNotify4.so.0.1 ${OMNIORBDIR}/lib
46 if [ "$?" -ne "0" ]; then
47    return 1
48 fi
49 check_lib_version notifd ${OMNIORBDIR}/bin
50 if [ "$?" -ne "0" ]; then
51    return 1
52 fi
53 return 0
54 }
55
56 print_env_bin()
57 {
58
59 if [ `uname -m` = "x86_64" ] && [ -d ${PRODUCT_DIR}/lib64 ] ; then 
60     OMNI_LIB_PREFIX=64
61 elif [ -d ${PRODUCT_DIR}/lib ] ; then 
62     OMNI_LIB_PREFIX=""
63 else 
64     OMNI_LIB_PREFIX=64
65 fi
66
67 cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh <<EOF 
68 #$DELIM ${PRODUCT_TYPE} $DELIM
69 export OMNIORBDIR=\${INST_ROOT}/${SINGLE_DIR:-${PRODUCT}}
70 export OMNIORB_CONFIG=\${OMNIORBDIR}/.omniORB.cfg
71 export PYTHONPATH=\${OMNIORBDIR}/lib:\${OMNIORBDIR}/lib/python\${PYTHON_VERSION}/site-packages:\${PYTHONPATH}
72 export PATH=\$OMNIORBDIR/bin:\$PATH
73 export LD_LIBRARY_PATH=\$OMNIORBDIR/lib:\$LD_LIBRARY_PATH 
74 ##
75 EOF
76 if [ $PROCEDURE != "try_preinstalled" ] && [ -w ${PRODUCT_DIR} ] ; then
77     cat > ${PRODUCT_DIR}/.omniORB.cfg <<EOF
78 InitRef = NameService=corbaname::`hostname`:2810
79 EOF
80 fi
81 (test -w ${PRODUCT_DIR} && cp ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh ${PRODUCT_DIR})
82 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}"
83 }
84
85 print_env_src()
86 {
87 cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}_src.sh <<EOF
88 #$DELIM ${PRODUCT_TYPE}_src $DELIM
89 # nothing to do
90 ##
91 EOF
92 (test -w ${PRODUCT_SRC_DIR} && cp ${INSTALL_WORK}/env_${PRODUCT_TYPE}_src.sh ${PRODUCT_SRC_DIR})
93 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}"
94 }
95
96 try_preinstalled(){
97 try_existing ${PRODUCT_DIR} ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}
98 try_existing ${PRODUCT_SRC_DIR} ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}_src
99 return $?
100 }
101
102 install_source()
103 {
104 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}_src
105 source ${INSTALL_WORK}/$SHRC
106
107 makedir ${PRODUCT_SRC_DIR}
108 # unpack
109 check_jb tar xfz ${SOURCE_DIR}/omniORB-${OMNIORB_VERSION}.tar.gz -C ${PRODUCT_SRC_DIR}
110 check_jb tar xfz ${SOURCE_DIR}/omniORBpy-${OMNIORBPY_VERSION}.tar.gz -C ${PRODUCT_SRC_DIR}
111 check_jb tar xfz ${SOURCE_DIR}/omniNotify-${OMNINOTIFY_VERSION}.tar.gz -C ${PRODUCT_SRC_DIR}
112
113 if [ -f patches/omniNotify-${OMNINOTIFY_VERSION}.patch ] ; then
114     cp patches/omniNotify-${OMNINOTIFY_VERSION}.patch ${PRODUCT_SRC_DIR}/omniNotify-${OMNINOTIFY_VERSION}_SRC
115     ( cd ${PRODUCT_SRC_DIR}/omniNotify-${OMNINOTIFY_VERSION}_SRC ; patch -p1 < omniNotify-${OMNINOTIFY_VERSION}.patch )
116 fi
117 if test `uname -m` = "x86_64" ; then
118     if [ -f patches/omniNotify-${OMNINOTIFY_VERSION}-lib64.patch ] ; then
119         cp patches/omniNotify-${OMNINOTIFY_VERSION}-lib64.patch ${PRODUCT_SRC_DIR}/omniNotify-${OMNINOTIFY_VERSION}_SRC
120         ( cd ${PRODUCT_SRC_DIR}/omniNotify-${OMNINOTIFY_VERSION}_SRC ; patch -p1 < omniNotify-${OMNINOTIFY_VERSION}-lib64.patch )
121     fi
122 fi
123 # to generate environment scripts
124 try_preinstalled
125 }
126
127 install_source_and_build()
128 {
129 # install sources
130 install_source
131
132 # build sources
133 test -z ${SINGLE_DIR} && makedir ${PRODUCT_DIR} || mkdir -p ${PRODUCT_DIR}
134 # install omniORB
135 cd ${PRODUCT_SRC_DIR}/omniORB-${OMNIORB_VERSION}_SRC
136 mkdir build
137 cd build
138
139 check_job ${PRODUCT_DIR}/CONFIGURE_OMNIORB.LOG ../configure --prefix=${PRODUCT_DIR}
140
141 GCC=`which gcc`
142 cat >> ${PRODUCT_DIR}/MAKE_OMNIORB.LOG <<EOF
143 used gcc=$GCC
144 EOF
145 check_job ${PRODUCT_DIR}/MAKE_OMNIORB.LOG make
146 check_job ${PRODUCT_DIR}/INSTALL_OMNIORB.LOG make install
147
148 # install omniORBpy
149 cd ${PRODUCT_SRC_DIR}/omniORBpy-${OMNIORBPY_VERSION}_SRC
150 mkdir build
151 cd build
152
153 check_job ${PRODUCT_DIR}/CONFIGURE_OMNIORBPY.LOG ../configure --prefix=${PRODUCT_DIR}
154
155 GCC=`which gcc`
156 cat >> ${PRODUCT_DIR}/MAKE_OMNIORBPY.LOG <<EOF
157 used gcc=$GCC
158 EOF
159 check_job ${PRODUCT_DIR}/MAKE_OMNIORBPY.LOG make
160 check_job ${PRODUCT_DIR}/INSTALL_OMNIORBPY.LOG make install
161
162 # install omniNotify
163 cd ${PRODUCT_SRC_DIR}/omniNotify-${OMNINOTIFY_VERSION}_SRC
164
165 mkdir build
166 cd build
167
168 check_job ${PRODUCT_DIR}/CONFIGURE_OMNINOTIFY.LOG ../configure --prefix=${PRODUCT_DIR}
169
170 GCC=`which gcc`
171 cat >> ${PRODUCT_DIR}/MAKE_OMNINOTIFY.LOG <<EOF
172 used gcc=$GCC
173 EOF
174 check_job ${PRODUCT_DIR}/MAKE_OMNINOTIFY.LOG make
175 check_job ${PRODUCT_DIR}/INSTALL_OMNINOTIFY.LOG make install
176
177 cd ${PRODUCT_DIR}/bin
178 for l in omniidl omniidlrun.py ; do
179     sed -i "s%#\!.*python%#\!/usr/bin/env python%;s%\"[^[:space:]]*${PRODUCT}\([^[:space:]]*\)\"%\"${PRODUCT_DIR}\1\"%" ${l}
180 done
181
182 # remove sources and temporary files after building
183 if [ ${REMOVE_SRC_TMP} == "TRUE" ] ; then
184     test -d ${PRODUCT_SRC_DIR} && rm -fr ${PRODUCT_SRC_DIR}
185 fi
186
187 # to generate environment scripts
188 try_preinstalled
189 }
190
191 install_binary()
192 {
193 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}
194 source ${INSTALL_WORK}/$SHRC
195
196 # create a product directory
197 test -z ${SINGLE_DIR} && makedir ${PRODUCT_DIR} || mkdir -p ${PRODUCT_DIR}
198
199 check_jb tar xfz ${SOURCE_DIR}/${PRODUCT}.tar.gz -C ${PRODUCT_DIR}
200
201 ln -sf ${PRODUCT_DIR} ${INST_ROOT}/omni
202
203 cd ${PRODUCT_DIR}/bin
204 for l in omniidl omniidlrun.py ; do
205     sed -i "s%#\!.*python%#\!/usr/bin/env python%;s%\"[^[:space:]]*${PRODUCT}\([^[:space:]]*\)\"%\"${PRODUCT_DIR}\1\"%" ${l}
206 done
207
208 cd ${PRODUCT_DIR}/lib
209 for l in X `find . -name "*_idl.py"`; do
210     if [ "${l}" != "X" ] ; then
211         lname=`basename ${l} | sed -e "s%_idl.py$%%g"`".idl"
212         sed -i "s%\(omniORB.openModule(.*,[[:space:]]*r\"\)[^[:space:]]*${PRODUCT}\([^[:space:]]*/${lname}\"\)%\1${PRODUCT_DIR}\2%g" ${l}
213     fi
214 done
215
216 cd ${PRODUCT_DIR}/lib/pkgconfig
217 for l in X `find . -name "*.pc"`; do
218     if [ "${l}" != "X" ] ; then
219         sed -i "s%prefix=.*%prefix=${PRODUCT_DIR}%g" ${l}
220     fi
221 done
222
223 # to generate environment script for sources
224 try_preinstalled
225 }
226
227 export PROCEDURE=$1;
228 export INSTALL_WORK=$2;
229 export SOURCE_DIR=$3;
230 export INST_ROOT=$4;
231 export PRODUCT_SEQUENCE=$5;
232 export PRODUCT_TYPE=$6;
233 export INSTALL_PRODUCTS=$7;
234 shift
235 REMOVE_SRC_TMP=$8;
236 test $# == 10 && shift && SINGLE_DIR=$9
237 export PRODUCT="omniORB-${OMNIORB_VERSION}"
238 export PRODUCT_DIR=${INST_ROOT}/${SINGLE_DIR:-${PRODUCT}}
239 export PRODUCT_WORK=${INSTALL_WORK}/${PRODUCT}
240 export PRODUCT_SRC_DIR=${INST_ROOT}/${PRODUCT}_SRC
241 source ./common.sh
242 $PROCEDURE