Salome HOME
7b8397864448498c48809d9eecac87d21eb32840
[tools/install.git] / config_files / tcltk-8.4.5.sh
1 #!/bin/bash -noprofile
2
3 ####################################################################################
4 #  File      : tcltk-8.4.5.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-2007 CEA
10 #
11 #  This script is the part of the SALOME installation procedure.
12 #
13 ####################################################################################
14
15 VERSION="8.4"
16
17 check_version()
18 {
19 if [ -z "$TCLHOME" ]; then
20    echo "TCLHOME doesn't set"
21    return 1
22 fi
23
24 # check tcl version
25 tcl_cfg=${TCLHOME}/lib/tclConfig.sh
26 if [ ! -f ${tcl_cfg} ]; then tcl_cfg=${TCLHOME}/tcl${VERSION}/lib/tclConfig.sh; fi
27 if [ ! -f ${tcl_cfg} ]; then tcl_cfg=${TCLHOME}/lib/tcl${VERSION}/tclConfig.sh; fi
28 if [ ! -f ${tcl_cfg} ]; then tcl_cfg=${TCLHOME}/lib/tcl${VERSION}/lib/tclConfig.sh; fi
29 if [ -f ${tcl_cfg} ]; then
30     tcl_ver=`awk '/^TCL_VERSION=.*/ {gsub("TCL_VERSION=","",$1);print $1}' ${tcl_cfg} | cut -d "'" -f 2`
31     if [ "$tcl_ver" != ${VERSION} ] ; then
32         return 1
33     fi
34 else
35     return 1
36 fi
37
38 # check tk version
39 tk_cfg=${TCLHOME}/lib/tkConfig.sh
40 if [ ! -f ${tk_cfg} ]; then tk_cfg=${TCLHOME}/tk${VERSION}/tkConfig.sh; fi
41 if [ ! -f ${tk_cfg} ]; then tk_cfg=${TCLHOME}/lib/tk${VERSION}/tkConfig.sh; fi
42 if [ ! -f ${tk_cfg} ]; then tk_cfg=${TCLHOME}/lib/tk${VERSION}/lib/tkConfig.sh; fi
43 if [ -f ${tk_cfg} ]; then
44     tk_ver=`awk '/^TK_VERSION=.*/ {gsub("TK_VERSION=","",$1);print $1}' ${tk_cfg} | cut -d "'" -f 2`
45     if [ "$tk_ver" != ${VERSION} ] ; then
46         return 1
47     fi
48 else
49     return 1
50 fi
51
52 return 0
53 }
54
55 print_env()
56 {
57 cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh <<EOF 
58 #$DELIM ${PRODUCT_TYPE} $DELIM
59 export TCLHOME=\${INSTALL_ROOT}/${PRODUCT}
60 export PATH=\${TCLHOME}/bin:\${PATH}
61 export LD_LIBRARY_PATH=\${TCLHOME}/lib:\${LD_LIBRARY_PATH}
62 export TCLLIBPATH="\${TCLHOME}/lib \${TCLHOME}/lib/tcl${VERSION} \${TCLHOME}/lib/tk${VERSION} \${TCLLIBPATH}"
63 ##
64 EOF
65 (test -w ${PRODUCT_DIR} && cp ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh ${PRODUCT_DIR})
66 make_env ${INSTALL_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}"
67 }
68
69 # looks for the native product and collects it's environment (used by make_env())
70 try_native(){
71 tclhome="`find_in_path tclsh ${PATH}`"
72 if [ -z "${tclhome}" ] ; then
73     tclhome="`find_in_path tclsh /usr/bin`"
74 fi
75 if [ -n "${tclhome}" ] ; then
76     tclhome=`cd ${tclhome}/..; pwd`
77     tmp="\${TCLHOME}/bin ${tclhome}/bin \${PATH} ${PATH}";  
78     path=`sort_path ${tmp}`
79     tmp="\${TCLHOME}/lib ${tclhome}/lib \${LD_LIBRARY_PATH} ${LD_LIBRARY_PATH}";  
80     ld_library_path=`sort_path ${tmp}`
81     cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh <<EOF 
82 #$DELIM ${PRODUCT_TYPE} $DELIM
83 export TCLHOME=${tclhome}
84 export PATH=${path}
85 export LD_LIBRARY_PATH=${ld_library_path}
86 export TCLLIBPATH="\${TCLHOME}/lib \${TCLHOME}/lib/tcl${VERSION} \${TCLHOME}/lib/tk${VERSION} \${TCLLIBPATH}"
87 ##
88 EOF
89     (test -w ${PRODUCT_DIR} && cp ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh ${PRODUCT_DIR})
90     make_env ${INSTALL_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}"
91     return 0
92 fi
93 return 1;
94 }
95
96 try_preinstalled(){
97 try_existing ${PRODUCT_DIR} ${INSTALL_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" ${PRODUCT_TYPE}
98 return $?
99 }
100
101 install_source()
102 {
103 make_env ${INSTALL_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" ${PRODUCT_TYPE}
104 source ${INSTALL_WORK}/$SHRC
105
106 if test `uname -m` = "x86_64" ; then
107 export CFLAGS=-m64
108 fi
109
110 makedir ${PRODUCT_DIR}
111 check_jb tar xfz ${SOURCE_DIR}/tcl8.4.5.tar.gz -C ${INSTALL_WORK}
112 cd ${INSTALL_WORK}/tcl8.4.5/unix
113 cat >> ${PRODUCT_DIR}/CONFIGURE.LOG <<EOF
114 -------------------
115 Configuring tcl...
116 -------------------
117 EOF
118 check_job ${PRODUCT_DIR}/CONFIGURE.LOG ./configure --enable-gcc --enable-shared --enable-threads \
119     --prefix=${PRODUCT_DIR}
120 GCC=`which gcc`
121 cat >> ${PRODUCT_DIR}/MAKE.LOG <<EOF
122 used gcc=$GCC
123 -------------------
124 Making tcl...
125 -------------------
126 EOF
127 check_job ${PRODUCT_DIR}/MAKE.LOG make
128 cat >> ${PRODUCT_DIR}/MAKEINSTALL.LOG <<EOF
129 -------------------
130 Installing tcl...
131 -------------------
132 EOF
133 check_job ${PRODUCT_DIR}/MAKEINSTALL.LOG make install
134
135 (cd ${PRODUCT_DIR}/bin; ln -fs tclsh8.4 tclsh)
136 (cd ${PRODUCT_DIR}/lib; ln -fs libtcl8.4.so libtcl.so)
137 (cd ${PRODUCT_DIR}/lib; ln -fs libtclstub8.4.a libtclstub.a)
138
139 check_jb tar xfz ${SOURCE_DIR}/tk8.4.5.tar.gz -C ${INSTALL_WORK}
140 cd ${INSTALL_WORK}/tk8.4.5/unix
141 cat >> ${PRODUCT_DIR}/CONFIGURE.LOG <<EOF
142 -------------------
143 Configuring tk...
144 -------------------
145 EOF
146 check_job ${PRODUCT_DIR}/CONFIGURE.LOG ./configure --enable-gcc --enable-shared --enable-threads \
147     --prefix=${PRODUCT_DIR} --with-tcl=${PRODUCT_DIR}/lib
148 cat >> ${PRODUCT_DIR}/MAKE.LOG <<EOF
149 -------------------
150 Making tk...
151 -------------------
152 EOF
153 check_job ${PRODUCT_DIR}/MAKE.LOG make
154 cat >> ${PRODUCT_DIR}/MAKEINSTALL.LOG <<EOF
155 -------------------
156 Installing tk...
157 -------------------
158 EOF
159 check_job ${PRODUCT_DIR}/MAKEINSTALL.LOG make install
160
161 (cd ${PRODUCT_DIR}/bin; ln -fs wish8.4 wish)
162 (cd ${PRODUCT_DIR}/lib; ln -fs libtk8.4.so libtk.so)
163 (cd ${PRODUCT_DIR}/lib; ln -fs libtkstub8.4.a libtkstub.a)
164
165 check_jb tar xfz ${SOURCE_DIR}/tclx8.3.5.tar.gz -C ${INSTALL_WORK}
166
167 #vsr: patch tclx 8.3.5 to make it compiliable on Mandriva 2006.0
168 cd ${INSTALL_WORK}/tclx8.3.5/unix
169 mv Common.mk.in Common.mk.in.orig
170 sed -e 's/@DEFS@/-DSTDC_HEADERS=1 -DNDEBUG=1 -DRETSIGTYPE=void/g' Common.mk.in.orig > Common.mk.in
171 cd ${INSTALL_WORK}/tclx8.3.5/tcl/unix
172 mv tclxConfig.sh.in tclxConfig.sh.in.orig
173 sed -e 's/@DEFS@/ -DSTDC_HEADERS=1 -DNDEBUG=1 -DRETSIGTYPE=void /g' tclxConfig.sh.in.orig > tclxConfig.sh.in
174 cd ${INSTALL_WORK}/tclx8.3.5/tk/unix
175 mv tkxConfig.sh.in tkxConfig.sh.in.orig
176 sed -e 's/@DEFS@/ -DSTDC_HEADERS=1 -DNDEBUG=1 -DRETSIGTYPE=void /g' tkxConfig.sh.in.orig > tkxConfig.sh.in
177
178 cd ${INSTALL_WORK}/tclx8.3.5/unix
179 #VRV - bug in a tclx configure 
180 chmod +w ./configure
181 echo -e '/test "$no_create" = yes || ${CONFIG_SHELL-\/bin\/sh} $CONFIG_STATUS || exit 1\ns/test "$no_create" = yes || ${CONFIG_SHELL-\/bin\/sh} $CONFIG_STATUS || exit 1/test "$no_create" = yes || ${CONFIG_SHELL-\/bin\/sh} $CONFIG_STATUS || exit 0\nwq' | ed - configure 
182 chmod -w ./configure
183 #VRV - bug in a tclx configure 
184 cat >> ${PRODUCT_DIR}/CONFIGURE.LOG <<EOF
185 -------------------
186 Configuring tclx...
187 -------------------
188 EOF
189 check_job ${PRODUCT_DIR}/CONFIGURE.LOG \
190     ./configure --enable-gcc --enable-shared --enable-threads \
191     --prefix=${PRODUCT_DIR}  --with-tcl=${PRODUCT_DIR}/lib  --with-tk=${PRODUCT_DIR}/lib
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}/MAKEINSTALLEXEC.LOG <<EOF
199 -------------------
200 Installing tclx...
201 -------------------
202 EOF
203 check_job ${PRODUCT_DIR}/MAKEINSTALLEXEC.LOG make install-exec
204
205 (cd ${PRODUCT_DIR}/lib; ln -fs libtclx8.3.so libtclx.so)
206 (cd ${PRODUCT_DIR}/lib; ln -fs libtclx8.3.a  libtclx.a)
207 (cd ${PRODUCT_DIR}/lib; ln -fs libtkx8.3.so  libtkx.so)
208 (cd ${PRODUCT_DIR}/lib; ln -fs libtkx8.3.a   libtkx.a)
209
210 #du -sk ${INSTALL_WORK}/tcl8.4.5 > ${PRODUCT_DIR}/size.log
211 #du -sk ${INSTALL_WORK}/tk8.4.5 >> ${PRODUCT_DIR}/size.log
212 #du -sk ${INSTALL_WORK}/tclx8.3.5 >> ${PRODUCT_DIR}/size.log
213 cd ${PRODUCT_DIR}
214 rm -fr ${INSTALL_WORK}/tcl8.4.5 ${INSTALL_WORK}/tk8.4.5 ${INSTALL_WORK}/tclx8.3.5
215 print_env
216 }
217
218 install_binary()
219 {
220 make_env ${INSTALL_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" ${PRODUCT_TYPE}
221 source ${INSTALL_WORK}/$SHRC
222
223 check_jb tar xfz ${SOURCE_DIR}/tcltk-8.4.5.tar.gz -C ${INSTALL_ROOT}
224
225 # overriding installation path
226 cd ${PRODUCT_DIR}/lib
227 old_prefix=`grep -e "^TCL_PREFIX='.*'" tclConfig.sh | sed -e "s%^TCL_PREFIX='\(.*\)'%\1%g"`
228 sed -e "s%${old_prefix}%${PRODUCT_DIR}%g" tclConfig.sh > _tclConfig.sh
229 mv -f _tclConfig.sh tclConfig.sh
230 sed -e "s%${old_prefix}%${PRODUCT_DIR}%g" tkConfig.sh > _tkConfig.sh
231 mv -f _tkConfig.sh tkConfig.sh
232
233 print_env
234 }
235
236 export PROCEDURE=$1;
237 export INSTALL_WORK=$2;
238 export SOURCE_DIR=$3;
239 export INSTALL_ROOT=$4;
240 export PRODUCT_SEQUENCE=$5;
241 if [ $# == 6 ] ; then export PRODUCT_TYPE=$6 ; else export PRODUCT_TYPE="tcl" ; fi
242 export PRODUCT="tcltk-8.4.5"
243 export PRODUCT_DIR=${INSTALL_ROOT}/${PRODUCT}
244 export PRODUCT_WORK=${INSTALL_WORK}/${PRODUCT}
245 source ./common.sh
246 $PROCEDURE