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