]> SALOME platform Git repositories - tools/install.git/blob - config_files/tcltk.sh
Salome HOME
Patch was updated with implementation of 0022170: [CEA 704] Redirect NETGEN outup...
[tools/install.git] / config_files / tcltk.sh
1 #!/bin/bash -noprofile
2
3 ####################################################################################
4 #  File      : tcltk.sh
5 #  Created   : Thu Dec 18 12:01:00 2002
6 #  Author    : Vadim SANDLER, Open CASCADE SAS (vadim.sandler@opencascade.com)
7 #  Project   : SALOME
8 #  Module    : Installation Wizard
9 #  Copyright : 2002-2013 CEA
10 #
11 #  This script is the part of the SALOME installation procedure.
12 #
13 ####################################################################################
14
15 #
16 # tcl, tk and tclX versions
17 #
18 TCL_VERSION=8.6.0
19 TK_VERSION=8.6.0
20 TCLX_VERSION=8.4.1
21 #
22 TCL_LIBVERSION=`echo $TCL_VERSION | awk -F. '{printf("%d.%d", $1, $2)}'`
23 TK_LIBVERSION=`echo $TK_VERSION | awk -F. '{printf("%d.%d", $1, $2)}'`
24 TCLX_LIBVERSION=`echo $TCLX_VERSION | awk -F. '{printf("%d.%d", $1, $2)}'`
25
26 check_version()
27 {
28 if [ -z "$TCLHOME" ]; then
29    echo "TCLHOME doesn't set"
30    return 1
31 fi
32
33 # check tcl version
34 tcl_cfg=${TCLHOME}/lib/tclConfig.sh
35 if [ ! -f ${tcl_cfg} ]; then tcl_cfg=${TCLHOME}/tcl${TCL_LIBVERSION}/lib/tclConfig.sh; fi
36 if [ ! -f ${tcl_cfg} ]; then tcl_cfg=${TCLHOME}/lib/tcl${TCL_LIBVERSION}/tclConfig.sh; fi
37 if [ ! -f ${tcl_cfg} ]; then tcl_cfg=${TCLHOME}/lib/tcl${TCL_LIBVERSION}/lib/tclConfig.sh; fi
38 if [ -f ${tcl_cfg} ]; then
39     tcl_ver=`awk '/^TCL_VERSION=.*/ {gsub("TCL_VERSION=","",$1);print $1}' ${tcl_cfg} | cut -d "'" -f 2`
40     if [ "$tcl_ver" != ${TCL_LIBVERSION} ] ; then
41         return 1
42     fi
43 else
44     return 1
45 fi
46
47 # check tk version
48 tk_cfg=${TCLHOME}/lib/tkConfig.sh
49 if [ ! -f ${tk_cfg} ]; then tk_cfg=${TCLHOME}/tk${TK_LIBVERSION}/tkConfig.sh; fi
50 if [ ! -f ${tk_cfg} ]; then tk_cfg=${TCLHOME}/lib/tk${TK_LIBVERSION}/tkConfig.sh; fi
51 if [ ! -f ${tk_cfg} ]; then tk_cfg=${TCLHOME}/lib/tk${TK_LIBVERSION}/lib/tkConfig.sh; fi
52 if [ -f ${tk_cfg} ]; then
53     tk_ver=`awk '/^TK_VERSION=.*/ {gsub("TK_VERSION=","",$1);print $1}' ${tk_cfg} | cut -d "'" -f 2`
54     if [ "$tk_ver" != ${TK_LIBVERSION} ] ; then
55         return 1
56     fi
57 else
58     return 1
59 fi
60
61 return 0
62 }
63
64 print_env_bin()
65 {
66 cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh <<EOF 
67 #$DELIM ${PRODUCT_TYPE} $DELIM
68 export TCLHOME=\${INST_ROOT}/${SINGLE_DIR:-${PRODUCT}}
69 export TCLLIBPATH="\${TCLHOME}/lib \${TCLHOME}/lib/tcl${TCL_LIBVERSION} \${TCLHOME}/lib/tk${TK_LIBVERSION}"
70 export PATH=\${TCLHOME}/bin:\${PATH}
71 export LD_LIBRARY_PATH=\${TCLHOME}/lib:\${LD_LIBRARY_PATH}
72 ##
73 EOF
74 (test -w ${PRODUCT_DIR} && cp ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh ${PRODUCT_DIR})
75 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}"
76 }
77
78 print_env_src()
79 {
80 cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}_src.sh <<EOF 
81 #$DELIM ${PRODUCT_TYPE}_src $DELIM
82 # nothing to do
83 ##
84 EOF
85 (test -w ${PRODUCT_SRC_DIR} && cp ${INSTALL_WORK}/env_${PRODUCT_TYPE}_src.sh ${PRODUCT_SRC_DIR})
86 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}"
87 }
88
89 try_preinstalled(){
90 try_existing ${PRODUCT_DIR} ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}
91 try_existing ${PRODUCT_SRC_DIR} ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}_src
92 return $?
93 }
94
95 install_source()
96 {
97 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}_src
98 source ${INSTALL_WORK}/$SHRC
99
100 mkdir -p ${PRODUCT_SRC_DIR}
101
102 check_jb tar xfz ${SOURCE_DIR}/tcl-${TCL_VERSION}.tar.gz -C ${PRODUCT_SRC_DIR}
103 check_jb tar xfz ${SOURCE_DIR}/tk-${TK_VERSION}.tar.gz -C ${PRODUCT_SRC_DIR}
104 check_jb tar xfz ${SOURCE_DIR}/tclx-${TCLX_VERSION}.tar.gz -C ${PRODUCT_SRC_DIR}
105
106 # to generate environment scripts
107 try_preinstalled
108 }
109
110 install_source_and_build()
111 {
112 # install sources
113 install_source
114
115 # build sources
116 test -z ${SINGLE_DIR} && makedir ${PRODUCT_DIR} || mkdir -p ${PRODUCT_DIR}
117
118 cd ${PRODUCT_SRC_DIR}/tcl-${TCL_VERSION}_SRC/unix
119 cat >> ${PRODUCT_DIR}/CONFIGURE.LOG <<EOF
120 -------------------
121 Configuring tcl...
122 -------------------
123 EOF
124 local TCL_CONFIGURE_FLAGS="--enable-gcc --enable-shared --enable-threads"
125 if test `uname -m` = "x86_64" ; then
126     TCL_CONFIGURE_FLAGS="${TCL_CONFIGURE_FLAGS} --enable-64bit"
127 fi
128 check_job ${PRODUCT_DIR}/CONFIGURE.LOG ./configure \
129     --prefix=${PRODUCT_DIR} ${TCL_CONFIGURE_FLAGS}
130 GCC=`which gcc`
131 cat >> ${PRODUCT_DIR}/MAKE.LOG <<EOF
132 used gcc=$GCC
133 -------------------
134 Making tcl...
135 -------------------
136 EOF
137 check_job ${PRODUCT_DIR}/MAKE.LOG make
138 cat >> ${PRODUCT_DIR}/MAKEINSTALL.LOG <<EOF
139 -------------------
140 Installing tcl...
141 -------------------
142 EOF
143 check_job ${PRODUCT_DIR}/MAKEINSTALL.LOG make install
144
145 (cd ${PRODUCT_DIR}/bin; ln -fs tclsh${TCL_LIBVERSION} tclsh)
146 (cd ${PRODUCT_DIR}/lib; ln -fs libtcl${TCL_LIBVERSION}.so libtcl.so)
147 (cd ${PRODUCT_DIR}/lib; ln -fs libtclstub${TCL_LIBVERSION}.a libtclstub.a)
148
149 cd ${PRODUCT_SRC_DIR}/tk-${TK_VERSION}_SRC/unix
150 cat >> ${PRODUCT_DIR}/CONFIGURE.LOG <<EOF
151 -------------------
152 Configuring tk...
153 -------------------
154 EOF
155 local TK_CONFIGURE_FLAGS="--enable-gcc --enable-shared --enable-threads --with-tcl=${PRODUCT_DIR}/lib"
156 if test `uname -m` = "x86_64" ; then
157     TK_CONFIGURE_FLAGS="${TK_CONFIGURE_FLAGS} --enable-64bit"
158 fi
159 check_job ${PRODUCT_DIR}/CONFIGURE.LOG ./configure ${TK_CONFIGURE_FLAGS} --prefix=${PRODUCT_DIR}
160 cat >> ${PRODUCT_DIR}/MAKE.LOG <<EOF
161 -------------------
162 Making tk...
163 -------------------
164 EOF
165 check_job ${PRODUCT_DIR}/MAKE.LOG make
166 cat >> ${PRODUCT_DIR}/MAKEINSTALL.LOG <<EOF
167 -------------------
168 Installing tk...
169 -------------------
170 EOF
171 check_job ${PRODUCT_DIR}/MAKEINSTALL.LOG make install
172
173 (cd ${PRODUCT_DIR}/bin; ln -fs wish${TK_LIBVERSION} wish)
174 (cd ${PRODUCT_DIR}/lib; ln -fs libtk${TK_LIBVERSION}.so libtk.so)
175 (cd ${PRODUCT_DIR}/lib; ln -fs libtkstub${TK_LIBVERSION}.a libtkstub.a)
176
177 #cd ${PRODUCT_SRC_DIR}/tclx-${TCLX_VERSION}_SRC
178 ##INV - bug in a tclx configure 
179 #chmod +w configure && sed -i "s/relid'/relid/" configure
180
181 cat >> ${PRODUCT_DIR}/CONFIGURE.LOG <<EOF
182 -------------------
183 Configuring tclx...
184 -------------------
185 EOF
186 local TCLX_CONFIGURE_FLAGS="--enable-gcc --enable-shared --enable-threads --with-tcl=${PRODUCT_DIR}/lib --with-tk=${PRODUCT_DIR}/lib"
187 if test `uname -m` = "x86_64" ; then
188     TCLX_CONFIGURE_FLAGS="${TCLX_CONFIGURE_FLAGS} --enable-64bit"
189 fi
190 check_job ${PRODUCT_DIR}/CONFIGURE.LOG ./configure \
191     --prefix=${PRODUCT_DIR} ${TCLX_CONFIGURE_FLAGS}
192 cat >> ${PRODUCT_DIR}/MAKE.LOG <<EOF
193 -------------------
194 Making tclx...
195 -------------------
196 EOF
197 check_job ${PRODUCT_DIR}/MAKE.LOG make
198 cat >> ${PRODUCT_DIR}/MAKEINSTALL.LOG <<EOF
199 -------------------
200 Installing tclx...
201 -------------------
202 EOF
203 check_job ${PRODUCT_DIR}/MAKEINSTALL.LOG make install
204
205 (cd ${PRODUCT_DIR}/lib; ln -fs tclx${TCLX_LIBVERSION}/libtclx${TCLX_LIBVERSION}.so libtclx.so)
206
207 #cd ${PRODUCT_DIR}
208 #test `uname -m` = "x86_64" && test ! -e lib64 && ln -s lib lib64
209
210 # remove sources and temporary files after building
211 if [ ${REMOVE_SRC_TMP} == "TRUE" ] ; then
212     test -d ${PRODUCT_SRC_DIR} && rm -fr ${PRODUCT_SRC_DIR}
213 fi
214
215 # to generate environment scripts
216 try_preinstalled
217 }
218
219 install_binary()
220 {
221 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}
222 source ${INSTALL_WORK}/$SHRC
223
224 # create a product directory
225 test -z ${SINGLE_DIR} && makedir ${PRODUCT_DIR} || mkdir -p ${PRODUCT_DIR}
226
227 check_jb tar xfz ${SOURCE_DIR}/${PRODUCT}.tar.gz -C ${PRODUCT_DIR}
228
229 # overriding installation path
230 cd ${PRODUCT_DIR}/lib
231 old_prefix=`grep -e "^TCL_PREFIX='.*'" tclConfig.sh | sed -e "s%^TCL_PREFIX='\(.*\)'%\1%g"`
232 sed -i "s%${old_prefix}%${PRODUCT_DIR}%g" tclConfig.sh
233 sed -i "s%${old_prefix}%${PRODUCT_DIR}%g" tkConfig.sh
234
235 cd ${PRODUCT_DIR}
236 test `uname -m` = "x86_64" && test ! -e lib64 && ln -s lib lib64
237
238 # modify pkgconfig
239 if [ -d ${PRODUCT_DIR}/lib/pkgconfig ] ; then
240   cd ${PRODUCT_DIR}/lib/pkgconfig
241   for l in X `find . -name "*.pc"`; do
242     if [ "${l}" != "X" ] ; then
243       sed -i "s%^prefix=.*%prefix=${PRODUCT_DIR}%g;s%exec_prefix=.*%exec_prefix=${PRODUCT_DIR}%g;s%libdir=.*%libdir=${PRODUCT_DIR}/lib%g" ${l}
244     fi
245   done
246 fi
247
248 # to generate environment scripts
249 try_preinstalled
250 }
251
252 export PROCEDURE=$1;
253 export INSTALL_WORK=$2;
254 export SOURCE_DIR=$3;
255 export INST_ROOT=$4;
256 export PRODUCT_SEQUENCE=$5;
257 export PRODUCT_TYPE=$6;
258 export INSTALL_PRODUCTS=$7;
259 shift
260 REMOVE_SRC_TMP=$8;
261 test $# == 10 && shift && SINGLE_DIR=$9
262 export PRODUCT="tcltk-${TCL_VERSION}"
263 export PRODUCT_DIR=${INST_ROOT}/${SINGLE_DIR:-${PRODUCT}}
264 export PRODUCT_WORK=${INSTALL_WORK}/${PRODUCT}
265 export PRODUCT_SRC_DIR=${INST_ROOT}/${PRODUCT}_SRC
266 source ./common.sh
267 $PROCEDURE