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