3 ####################################################################################
5 # Created : Thu Dec 18 12:01:00 2002
6 # Author : Vadim SANDLER, Open CASCADE SAS (vadim.sandler@opencascade.com)
8 # Module : Installation Wizard
9 # Copyright : 2002-2014 CEA
11 # This script is the part of the SALOME installation procedure.
13 ####################################################################################
16 # tcl, tk and tclX versions
22 TCL_LIBVERSION=`echo ${VERSION_TCL} | awk -F. '{printf("%d.%d", $1, $2)}'`
23 TK_LIBVERSION=`echo ${VERSION_TK} | awk -F. '{printf("%d.%d", $1, $2)}'`
24 TCLX_LIBVERSION=`echo ${VERSION_TCLX} | awk -F. '{printf("%d.%d", $1, $2)}'`
28 if [ -z "${TCLHOME}" ]; then
29 echo "TCLHOME doesn't set"
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 '/^VERSION_TCL=.*/ {gsub("VERSION_TCL=","",$1);print $1}' ${tcl_cfg} | cut -d "'" -f 2`
40 if [ "${tcl_ver}" != ${TCL_LIBVERSION} ] ; then
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 '/^VERSION_TK=.*/ {gsub("VERSION_TK=","",$1);print $1}' ${tk_cfg} | cut -d "'" -f 2`
54 if [ "${tk_ver}" != ${TK_LIBVERSION} ] ; then
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}
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}"
80 cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}_src.sh <<EOF
81 #${DELIM} ${PRODUCT_TYPE}_src ${DELIM}
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}"
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
97 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}_src
98 source ${INSTALL_WORK}/${SHRC}
100 mkdir -p ${PRODUCT_SRC_DIR}
102 check_jb tar xfz ${SOURCE_DIR}/tcl-${VERSION_TCL}.tar.gz -C ${PRODUCT_SRC_DIR}
103 check_jb tar xfz ${SOURCE_DIR}/tk-${VERSION_TK}.tar.gz -C ${PRODUCT_SRC_DIR}
104 check_jb tar xfz ${SOURCE_DIR}/tclx-${VERSION_TCLX}.tar.gz -C ${PRODUCT_SRC_DIR}
106 if [ "${SALOME_IW_COMPSIZE}" = "1" ] ; then
107 du -sk ${PRODUCT_SRC_DIR} > ${INST_ROOT}/${PRODUCT_TYPE}.src.size
110 # to generate environment scripts
114 install_source_and_build()
120 test -z ${SINGLE_DIR} && makedir ${PRODUCT_DIR} || mkdir -p ${PRODUCT_DIR}
122 cd ${PRODUCT_SRC_DIR}/tcl-${VERSION_TCL}_SRC/unix
123 cat >> ${PRODUCT_DIR}/CONFIGURE.LOG <<EOF
128 local TCL_CONFIGURE_FLAGS="--enable-gcc --enable-shared --enable-threads"
129 if test `uname -m` = "x86_64" ; then
130 TCL_CONFIGURE_FLAGS="${TCL_CONFIGURE_FLAGS} --enable-64bit"
132 check_job ${PRODUCT_DIR}/CONFIGURE.LOG ./configure --prefix=${PRODUCT_DIR} ${TCL_CONFIGURE_FLAGS}
134 cat >> ${PRODUCT_DIR}/MAKE.LOG <<EOF
140 check_job ${PRODUCT_DIR}/MAKE.LOG make
141 cat >> ${PRODUCT_DIR}/MAKEINSTALL.LOG <<EOF
146 check_job ${PRODUCT_DIR}/MAKEINSTALL.LOG make install
148 (cd ${PRODUCT_DIR}/bin && ln -fs tclsh${TCL_LIBVERSION} tclsh)
149 (cd ${PRODUCT_DIR}/lib && ln -fs libtcl${TCL_LIBVERSION}.so libtcl.so)
150 (cd ${PRODUCT_DIR}/lib && ln -fs libtclstub${TCL_LIBVERSION}.a libtclstub.a)
152 cd ${PRODUCT_SRC_DIR}/tk-${VERSION_TK}_SRC/unix
153 cat >> ${PRODUCT_DIR}/CONFIGURE.LOG <<EOF
158 local TK_CONFIGURE_FLAGS="--enable-gcc --enable-shared --enable-threads --with-tcl=${PRODUCT_DIR}/lib"
159 if test `uname -m` = "x86_64" ; then
160 TK_CONFIGURE_FLAGS="${TK_CONFIGURE_FLAGS} --enable-64bit"
162 check_job ${PRODUCT_DIR}/CONFIGURE.LOG ./configure --prefix=${PRODUCT_DIR} ${TK_CONFIGURE_FLAGS}
163 cat >> ${PRODUCT_DIR}/MAKE.LOG <<EOF
168 check_job ${PRODUCT_DIR}/MAKE.LOG make
169 cat >> ${PRODUCT_DIR}/MAKEINSTALL.LOG <<EOF
174 check_job ${PRODUCT_DIR}/MAKEINSTALL.LOG make install
176 (cd ${PRODUCT_DIR}/bin && ln -fs wish${TK_LIBVERSION} wish)
177 (cd ${PRODUCT_DIR}/lib && ln -fs libtk${TK_LIBVERSION}.so libtk.so)
178 (cd ${PRODUCT_DIR}/lib && ln -fs libtkstub${TK_LIBVERSION}.a libtkstub.a)
180 cat >> ${PRODUCT_DIR}/CONFIGURE.LOG <<EOF
185 local TCLX_CONFIGURE_FLAGS="--enable-gcc --enable-shared --enable-threads --with-tcl=${PRODUCT_DIR}/lib --with-tk=${PRODUCT_DIR}/lib"
186 if test `uname -m` = "x86_64" ; then
187 TCLX_CONFIGURE_FLAGS="${TCLX_CONFIGURE_FLAGS} --enable-64bit"
189 check_job ${PRODUCT_DIR}/CONFIGURE.LOG ./configure --prefix=${PRODUCT_DIR} ${TCLX_CONFIGURE_FLAGS}
190 cat >> ${PRODUCT_DIR}/MAKE.LOG <<EOF
195 check_job ${PRODUCT_DIR}/MAKE.LOG make
196 cat >> ${PRODUCT_DIR}/MAKEINSTALL.LOG <<EOF
201 check_job ${PRODUCT_DIR}/MAKEINSTALL.LOG make install
203 (cd ${PRODUCT_DIR}/lib && ln -fs tclx${TCLX_LIBVERSION}/libtclx${TCLX_LIBVERSION}.so .)
204 (cd ${PRODUCT_DIR}/lib && ln -fs libtclx${TCLX_LIBVERSION}.so libtclx.so)
205 ###(cd ${PRODUCT_DIR} && test `uname -m` = "x86_64" && test ! -e lib64 && ln -sf lib lib64)
209 if [ "${SALOME_IW_COMPSIZE}" = "1" ] ; then
210 du -sk ${PRODUCT_SRC_DIR} > ${INST_ROOT}/${PRODUCT_TYPE}.build.size
211 du -sk ${PRODUCT_DIR} > ${INST_ROOT}/${PRODUCT_TYPE}.bin.size
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}
219 # to generate environment scripts
225 make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}
226 source ${INSTALL_WORK}/${SHRC}
228 # create a product directory
229 test -z ${SINGLE_DIR} && makedir ${PRODUCT_DIR} || mkdir -p ${PRODUCT_DIR}
231 check_jb tar xfz ${SOURCE_DIR}/${PRODUCT}.tar.gz -C ${PRODUCT_DIR}
233 # add symbolic link for 64bit platforms (VSR: is it indeed needed?)
234 (cd ${PRODUCT_DIR} && test `uname -m` = "x86_64" && test ! -e lib64 && ln -sf lib lib64)
236 # overriding installation path
237 old_prefix=`grep -e "^TCL_PREFIX='.*'" ${PRODUCT_DIR}/lib/tclConfig.sh | sed -e "s%^TCL_PREFIX='\(.*\)'%\1%g"`
238 for l in X `find ${PRODUCT_DIR}/lib -name "*Config.sh"` `find ${PRODUCT_DIR}/lib/pkgconfig -name "*.pc"` ; do
239 if [ "${l}" != "X" ] ; then
240 sed -i "s%${old_prefix}%${PRODUCT_DIR}%g" ${l}
244 # to generate environment scripts
249 export INSTALL_WORK=$2;
250 export SOURCE_DIR=$3;
252 export PRODUCT_SEQUENCE=$5;
253 export PRODUCT_TYPE=$6;
254 export INSTALL_PRODUCTS=$7;
257 test $# = 10 && shift && SINGLE_DIR=$9
258 export PRODUCT="tcltk-${VERSION_TCL}"
259 export PRODUCT_DIR=${INST_ROOT}/${SINGLE_DIR:-${PRODUCT}}
260 export PRODUCT_WORK=${INSTALL_WORK}/${PRODUCT}
261 export PRODUCT_SRC_DIR=${INST_ROOT}/${PRODUCT}_SRC