Salome HOME
Remove build directory
[tools/install.git] / config_files / tcltk-8.5.8.sh
1 #!/bin/bash -noprofile
2
3 ####################################################################################
4 #  File      : tcltk-8.5.8.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-2008 CEA
10 #
11 #  This script is the part of the SALOME installation procedure.
12 #
13 ####################################################################################
14
15 VERSION="8.5"
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_bin()
56 {
57 cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh <<EOF 
58 #$DELIM ${PRODUCT_TYPE} $DELIM
59 export TCLHOME=\${INST_ROOT}/${SINGLE_DIR:-${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}"
63 ##
64 EOF
65 (test -w ${PRODUCT_DIR} && cp ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh ${PRODUCT_DIR})
66 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}"
67 }
68
69 print_env_src()
70 {
71 cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}_src.sh <<EOF 
72 #$DELIM ${PRODUCT_TYPE}_src $DELIM
73 # nothing to do
74 ##
75 EOF
76 (test -w ${PRODUCT_SRC_DIR} && cp ${INSTALL_WORK}/env_${PRODUCT_TYPE}_src.sh ${PRODUCT_SRC_DIR})
77 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}"
78 }
79
80 try_preinstalled(){
81 try_existing ${PRODUCT_DIR} ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}
82 try_existing ${PRODUCT_SRC_DIR} ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}_src
83 return $?
84 }
85
86 install_source()
87 {
88 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}_src
89 source ${INSTALL_WORK}/$SHRC
90
91 mkdir -p ${PRODUCT_SRC_DIR}
92
93 check_jb tar xfz ${SOURCE_DIR}/tcl8.5.8.tar.gz -C ${PRODUCT_SRC_DIR}
94 check_jb tar xfz ${SOURCE_DIR}/tk8.5.8.tar.gz -C ${PRODUCT_SRC_DIR}
95 check_jb tar xfz ${SOURCE_DIR}/tclx8.4.0.tar.gz -C ${PRODUCT_SRC_DIR}
96
97 # to generate environment scripts
98 try_preinstalled
99 }
100
101 install_source_and_build()
102 {
103 # install sources
104 install_source
105
106 # build sources
107 test -z ${SINGLE_DIR} && makedir ${PRODUCT_DIR} || mkdir -p ${PRODUCT_DIR}
108
109 cd ${PRODUCT_SRC_DIR}/tcl8.5.8_SRC/unix
110 cat >> ${PRODUCT_DIR}/CONFIGURE.LOG <<EOF
111 -------------------
112 Configuring tcl...
113 -------------------
114 EOF
115 check_job ${PRODUCT_DIR}/CONFIGURE.LOG ./configure --enable-gcc --enable-shared --enable-threads \
116     --prefix=${PRODUCT_DIR}
117 GCC=`which gcc`
118 cat >> ${PRODUCT_DIR}/MAKE.LOG <<EOF
119 used gcc=$GCC
120 -------------------
121 Making tcl...
122 -------------------
123 EOF
124 check_job ${PRODUCT_DIR}/MAKE.LOG make
125 cat >> ${PRODUCT_DIR}/MAKEINSTALL.LOG <<EOF
126 -------------------
127 Installing tcl...
128 -------------------
129 EOF
130 check_job ${PRODUCT_DIR}/MAKEINSTALL.LOG make install
131
132 (cd ${PRODUCT_DIR}/bin; ln -fs tclsh8.5 tclsh)
133 (cd ${PRODUCT_DIR}/lib; ln -fs libtcl8.5.so libtcl.so)
134 (cd ${PRODUCT_DIR}/lib; ln -fs libtclstub8.5.a libtclstub.a)
135
136 cd ${PRODUCT_SRC_DIR}/tk8.5.8_SRC/unix
137 cat >> ${PRODUCT_DIR}/CONFIGURE.LOG <<EOF
138 -------------------
139 Configuring tk...
140 -------------------
141 EOF
142 check_job ${PRODUCT_DIR}/CONFIGURE.LOG ./configure --enable-gcc --enable-shared --enable-threads \
143     --prefix=${PRODUCT_DIR} --with-tcl=${PRODUCT_DIR}/lib
144 cat >> ${PRODUCT_DIR}/MAKE.LOG <<EOF
145 -------------------
146 Making tk...
147 -------------------
148 EOF
149 check_job ${PRODUCT_DIR}/MAKE.LOG make
150 cat >> ${PRODUCT_DIR}/MAKEINSTALL.LOG <<EOF
151 -------------------
152 Installing tk...
153 -------------------
154 EOF
155 check_job ${PRODUCT_DIR}/MAKEINSTALL.LOG make install
156
157 (cd ${PRODUCT_DIR}/bin; ln -fs wish8.5 wish)
158 (cd ${PRODUCT_DIR}/lib; ln -fs libtk8.5.so libtk.so)
159 (cd ${PRODUCT_DIR}/lib; ln -fs libtkstub8.5.a libtkstub.a)
160
161 #vsr: patch tclx 8.4.0 to make it compiliable on Mandriva 2006.0
162 #mv Common.mk.in Common.mk.in.orig
163 #sed -e 's/@DEFS@/-DSTDC_HEADERS=1 -DNDEBUG=1 -DRETSIGTYPE=void/g' Common.mk.in.orig > Common.mk.in
164 #cd ${PRODUCT_SRC_DIR}/tclx8.4.0_SRC/tcl/unix
165 #mv tclxConfig.sh.in tclxConfig.sh.in.orig
166 #sed -e 's/@DEFS@/ -DSTDC_HEADERS=1 -DNDEBUG=1 -DRETSIGTYPE=void /g' tclxConfig.sh.in.orig > tclxConfig.sh.in
167 #cd ${PRODUCT_SRC_DIR}/tclx8.4.0_SRC/tk/unix
168 #mv tkxConfig.sh.in tkxConfig.sh.in.orig
169 #sed -e 's/@DEFS@/ -DSTDC_HEADERS=1 -DNDEBUG=1 -DRETSIGTYPE=void /g' tkxConfig.sh.in.orig > tkxConfig.sh.in
170
171 #cd ${PRODUCT_SRC_DIR}/tclx8.4.0_SRC/unix
172 #VRV - bug in a tclx configure 
173 #chmod +w ./configure
174 #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 
175 #INV - bug in a tclx configure 
176
177 cd ${PRODUCT_SRC_DIR}/tclx8.4.0_SRC
178 #INV - bug in a tclx configure 
179 cp configure configure.orig && sed "s/relid'/relid/" configure.orig > configure
180 chmod 755 ./configure
181
182 cat >> ${PRODUCT_DIR}/CONFIGURE.LOG <<EOF
183 -------------------
184 Configuring tclx...
185 -------------------
186 EOF
187 check_job ${PRODUCT_DIR}/CONFIGURE.LOG \
188     ./configure --enable-gcc --enable-shared --enable-threads \
189     --prefix=${PRODUCT_DIR}  --with-tcl=${PRODUCT_DIR}/lib  --with-tk=${PRODUCT_DIR}/lib
190 cat >> ${PRODUCT_DIR}/MAKE.LOG <<EOF
191 -------------------
192 Making tclx...
193 -------------------
194 EOF
195 check_job ${PRODUCT_DIR}/MAKE.LOG make
196 cat >> ${PRODUCT_DIR}/MAKEINSTALLEXEC.LOG <<EOF
197 -------------------
198 Installing tclx...
199 -------------------
200 EOF
201 check_job ${PRODUCT_DIR}/MAKEINSTALLEXEC.LOG make install
202
203 (cd ${PRODUCT_DIR}/lib; ln -fs tclx8.4/libtclx8.4.so libtclx.so)
204 #(cd ${PRODUCT_DIR}/lib; ln -fs tclx8.4/libtclx8.4.a  libtclx.a)
205 #(cd ${PRODUCT_DIR}/lib; ln -fs tclx8.4/libtkx8.4.so  libtkx.so)
206 #(cd ${PRODUCT_DIR}/lib; ln -fs tclx8.4/libtkx8.4.a   libtkx.a)
207
208 cd ${PRODUCT_DIR}
209
210   if test `uname -m` = "x86_64" ; then
211   if [ ! -h lib64 ]; then ln -s lib lib64; fi
212       fi
213
214 # remove sources and temporary files after building
215 if [ ${REMOVE_SRC_TMP} == "TRUE" ] ; then
216     test -d ${PRODUCT_SRC_DIR} && rm -fr ${PRODUCT_SRC_DIR}
217 fi
218
219 # to generate environment scripts
220 try_preinstalled
221 }
222
223 install_binary()
224 {
225 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}
226 source ${INSTALL_WORK}/$SHRC
227
228 # create a product directory
229 test -z ${SINGLE_DIR} && makedir ${PRODUCT_DIR} || mkdir -p ${PRODUCT_DIR}
230
231 check_jb tar xfz ${SOURCE_DIR}/${PRODUCT}.tar.gz -C ${PRODUCT_DIR}
232
233 # overriding installation path
234 cd ${PRODUCT_DIR}/lib
235 old_prefix=`grep -e "^TCL_PREFIX='.*'" tclConfig.sh | sed -e "s%^TCL_PREFIX='\(.*\)'%\1%g"`
236 sed -e "s%${old_prefix}%${PRODUCT_DIR}%g" tclConfig.sh > _tclConfig.sh
237 mv -f _tclConfig.sh tclConfig.sh
238 sed -e "s%${old_prefix}%${PRODUCT_DIR}%g" tkConfig.sh > _tkConfig.sh
239 mv -f _tkConfig.sh tkConfig.sh
240
241 cd ${PRODUCT_DIR}
242   if test `uname -m` = "x86_64" ; then
243   if [ ! -h lib64 ]; then ln -s lib lib64; fi
244       fi
245
246 # to generate environment scripts
247 try_preinstalled
248 }
249
250 export PROCEDURE=$1;
251 export INSTALL_WORK=$2;
252 export SOURCE_DIR=$3;
253 export INST_ROOT=$4;
254 export PRODUCT_SEQUENCE=$5;
255 export PRODUCT_TYPE=$6;
256 export INSTALL_PRODUCTS=$7;
257 shift
258 REMOVE_SRC_TMP=$8;
259 test $# == 10 && shift && SINGLE_DIR=$9
260 export PRODUCT="tcltk-8.5.8"
261 export PRODUCT_DIR=${INST_ROOT}/${SINGLE_DIR:-${PRODUCT}}
262 export PRODUCT_WORK=${INSTALL_WORK}/${PRODUCT}
263 export PRODUCT_SRC_DIR=${INST_ROOT}/${PRODUCT}_SRC
264 source ./common.sh
265 $PROCEDURE