--- /dev/null
+#!/bin/bash -noprofile
+
+####################################################################################
+# File : Python.sh
+# Created : Thu Dec 18 12:01:00 2002
+# Author : Vadim SANDLER, Open CASCADE SAS (vadim.sandler@opencascade.com)
+# Project : SALOME
+# Module : Installation Wizard
+# Copyright : 2002-2012 CEA
+#
+# This script is the part of the SALOME installation procedure.
+#
+####################################################################################
+
+#
+# Python version
+#
+PY_VERSION=2.6.6
+PY_XVERSION=`echo ${PY_VERSION} | awk -F. '{v1=0;v2=0;v3=0;if(NF>0)v1=$1;if(NF>1)v2=$2;if(NF>2)v3=$3;print v1*10000+v2*100+v3}'`
+PY_LIBVERSION=`echo ${PY_VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
+
+check_version()
+{
+if [ -z "$PYTHONHOME" ]; then
+ return 1
+fi
+isPython=`which python 2>/dev/null`
+if [ -n "$isPython" ]; then
+ # version number is calculated as: <major>*10000+<minor>*100+<release>
+ ver=`python -V 2>&1`
+ ver=`echo $ver | awk '{print $2}' | awk -F. '{v1=0;v2=0;v3=0;if(NF>0)v1=$1;if(NF>1)v2=$2;if(NF>2)v3=$3;print v1*10000+v2*100+v3}'`
+ if [ $ver -eq ${PY_XVERSION} ] ; then
+ return 0
+ fi
+fi
+return 1
+}
+
+print_env_bin()
+{
+cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh <<EOF
+#$DELIM ${PRODUCT_TYPE} $DELIM
+export PYTHONROOT=\${INST_ROOT}/${SINGLE_DIR:-${PRODUCT}}
+export PYTHONHOME=\$PYTHONROOT
+export PATH=\${PYTHONROOT}/bin:\${PATH}
+export LD_LIBRARY_PATH=\${PYTHONROOT}/lib:\${LD_LIBRARY_PATH}
+export PYTHON_VERSION=$PY_LIBVERSION
+export PYTHON_INCLUDE=\${PYTHONROOT}/include/python\${PYTHON_VERSION}
+export PYTHONPATH=\${PYTHONROOT}/lib/python\${PYTHON_VERSION}:\${PYTHONPATH}
+##
+EOF
+(test -w ${PRODUCT_DIR} && cp ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh ${PRODUCT_DIR})
+make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}"
+}
+
+print_env_src()
+{
+cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}_src.sh <<EOF
+#$DELIM ${PRODUCT_TYPE}_src $DELIM
+# nothing to do
+##
+EOF
+(test -w ${PRODUCT_SRC_DIR} && cp ${INSTALL_WORK}/env_${PRODUCT_TYPE}_src.sh ${PRODUCT_SRC_DIR})
+make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}"
+}
+
+try_preinstalled(){
+try_existing ${PRODUCT_DIR} ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}
+try_existing ${PRODUCT_SRC_DIR} ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}_src
+return $?
+}
+
+install_source()
+{
+make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}_src
+source ${INSTALL_WORK}/$SHRC
+
+check_jb tar xfz ${SOURCE_DIR}/${PRODUCT}.tar.gz -C ${INST_ROOT}
+
+# to generate environment scripts
+try_preinstalled
+}
+
+install_source_and_build()
+{
+# install sources
+install_source
+
+# build sources
+test -z ${SINGLE_DIR} && makedir ${PRODUCT_DIR} || mkdir -p ${PRODUCT_DIR}
+cd ${PRODUCT_SRC_DIR}
+
+export PYTHON_ARCHIVE_PREFIX=""
+PYTHON_CONFIGURE_OPTIONS="--with-threads --with-cxx=`which g++` --enable-shared --without-test --with-libs=-lstdc++"
+### --with-pydebug ### (for debug)
+
+tcl_dir=`where_tcl`
+tk_dir=`where_tk`
+INCDIR=
+LIBDIR=
+if [ "${tcl_dir}" != "" ] ; then
+ source ${tk_dir}/tclConfig.sh
+ INCDIR="${TCL_INCLUDE_SPEC}"
+ LIBDIR="-L${TCL_PACKAGE_PATH}"
+fi
+#if [ "${tk_dir}" != "" ] ; then
+# INCDIR="${INCDIR} ${TK_INCLUDE_SPEC}"
+# LIBDIR="${LIBDIR} -L${TCL_PACKAGE_PATH}"
+#fi
+
+if test `uname -m` = "x86_64" ; then
+ PYTHON_CONFIGURE_OPTIONS="${PYTHON_CONFIGURE_OPTIONS} CFLAGS=-m64 CXXFLAGS=-m64"
+fi
+
+check_job ${PRODUCT_DIR}/CONFIGURE.LOG ./configure --prefix=${PRODUCT_DIR} $PYTHON_CONFIGURE_OPTIONS CPPFLAGS="${INCDIR}" LDFLAGS="${LIBDIR}"
+
+GCC=`which gcc`
+cat >> ${PRODUCT_DIR}/MAKE.LOG <<EOF
+used gcc=$GCC
+EOF
+unset PYTHONPATH PYTHONHOME
+check_job ${PRODUCT_DIR}/MAKE.LOG make
+check_job ${PRODUCT_DIR}/MAKINSTALL.LOG make install
+(cd ${PRODUCT_DIR}/lib${PYTHON_LIB_PREFIX}/python${PY_LIBVERSION}/config; ln -fs ../../libpython${PY_LIBVERSION}.so.1.0 libpython${PY_LIBVERSION}.so)
+
+cd ${PRODUCT_DIR}/bin
+for sc in idle pydoc smtpd.py 2to3 python${PY_LIBVERSION}-config ; do
+ if [ -e $sc ] ; then
+ sed -i "s%^#\!.*python.*$%#\!/usr/bin/env python%" "$sc"
+ fi
+done
+
+cd ${PRODUCT_DIR};
+
+# remove sources and temporary files after building
+if [ ${REMOVE_SRC_TMP} == "TRUE" ] ; then
+ test -d ${PRODUCT_SRC_DIR} && rm -fr ${PRODUCT_SRC_DIR}
+fi
+
+# to generate environment scripts
+try_preinstalled
+}
+
+install_binary()
+{
+make_env ${INST_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" "${INSTALL_PRODUCTS}" ${PRODUCT_TYPE}
+source ${INSTALL_WORK}/$SHRC
+
+# create a product directory
+test -z ${SINGLE_DIR} && makedir ${PRODUCT_DIR} || mkdir -p ${PRODUCT_DIR}
+
+check_jb tar xfz ${SOURCE_DIR}/${PRODUCT}.tar.gz -C ${PRODUCT_DIR}
+
+(cd ${PRODUCT_DIR}/lib/python${PY_LIBVERSION}/config; ln -fs ../../libpython${PY_LIBVERSION}.so.1.0 libpython${PY_LIBVERSION}.so)
+(cd ${PRODUCT_DIR}/lib/python${PY_LIBVERSION}/config && test -e Makefile && sed -i "s%^\(prefix[[:space:]]*=[[:space:]]*\).*%\1${PRODUCT_DIR}%g;s%^\(CONFIG_ARGS[[:space:]]*=.*\)--prefix=[^']*'%\1--prefix=${PRODUCT_DIR}'%g" Makefile)
+
+cd ${PRODUCT_DIR}/bin
+for sc in idle pydoc smtpd.py ; do
+ if [ -e $sc ] ; then
+ sed -i "s%#\!.*python%#\!/usr/bin/env python%" "$sc"
+ fi
+done
+
+# to generate environment scripts
+try_preinstalled
+}
+
+export PROCEDURE=$1;
+export INSTALL_WORK=$2;
+export SOURCE_DIR=$3;
+export INST_ROOT=$4;
+export PRODUCT_SEQUENCE=$5;
+export PRODUCT_TYPE=$6;
+export INSTALL_PRODUCTS=$7;
+shift
+REMOVE_SRC_TMP=$8;
+test $# == 10 && shift && SINGLE_DIR=$9
+export PRODUCT="Python-${PY_VERSION}"
+export PRODUCT_DIR=${INST_ROOT}/${SINGLE_DIR:-${PRODUCT}}
+export PRODUCT_WORK=${INSTALL_WORK}/${PRODUCT}
+export PRODUCT_SRC_DIR=${INST_ROOT}/${PRODUCT}_SRC
+source ./common.sh
+${PROCEDURE}
+++ /dev/null
-diff -Naur --exclude=CVS Python-2.4.4/configure.in Python-2.4.4-patched/configure.in
---- Python-2.4.4/configure.in 2006-10-17 20:03:36.000000000 +0400
-+++ Python-2.4.4-patched/configure.in 2007-04-23 19:31:52.000000000 +0400
-@@ -494,6 +494,41 @@
- ;;
- esac
-
-+AC_SUBST(ARCH)
-+AC_MSG_CHECKING(ARCH)
-+ARCH=`uname -m`
-+case $ARCH in
-+i?86) ARCH=i386;;
-+esac
-+AC_MSG_RESULT($ARCH)
-+
-+AC_SUBST(LIB)
-+AC_MSG_CHECKING(LIB)
-+case $ac_sys_system in
-+Linux*)
-+ # Test if the compiler is 64bit
-+ echo 'int i;' > conftest.$ac_ext
-+ python_cv_cc_64bit_output=no
-+ if AC_TRY_EVAL(ac_compile); then
-+ case `/usr/bin/file conftest.$ac_objext` in
-+ *"ELF 64"*)
-+ python_cv_cc_64bit_output=yes
-+ ;;
-+ esac
-+ fi
-+ rm -rf conftest*
-+ ;;
-+esac
-+
-+case $ARCH:$python_cv_cc_64bit_output in
-+powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes)
-+ LIB="lib64"
-+ ;;
-+*:*)
-+ LIB="lib"
-+ ;;
-+esac
-+AC_MSG_RESULT($LIB)
-
- AC_SUBST(LIBRARY)
- AC_MSG_CHECKING(LIBRARY)
-diff -Naur --exclude=CVS Python-2.4.4/Include/pythonrun.h Python-2.4.4-patched/Include/pythonrun.h
---- Python-2.4.4/Include/pythonrun.h 2004-10-07 07:58:07.000000000 +0400
-+++ Python-2.4.4-patched/Include/pythonrun.h 2007-04-23 19:10:18.000000000 +0400
-@@ -93,6 +93,8 @@
- /* In their own files */
- PyAPI_FUNC(const char *) Py_GetVersion(void);
- PyAPI_FUNC(const char *) Py_GetPlatform(void);
-+PyAPI_FUNC(const char *) Py_GetArch(void);
-+PyAPI_FUNC(const char *) Py_GetLib(void);
- PyAPI_FUNC(const char *) Py_GetCopyright(void);
- PyAPI_FUNC(const char *) Py_GetCompiler(void);
- PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
-diff -Naur --exclude=CVS Python-2.4.4/Lib/distutils/command/install.py Python-2.4.4-patched/Lib/distutils/command/install.py
---- Python-2.4.4/Lib/distutils/command/install.py 2005-01-20 22:15:39.000000000 +0300
-+++ Python-2.4.4-patched/Lib/distutils/command/install.py 2007-04-23 19:12:27.000000000 +0400
-@@ -19,6 +19,8 @@
- from distutils.errors import DistutilsOptionError
- from glob import glob
-
-+libname = sys.lib
-+
- if sys.version < "2.2":
- WINDOWS_SCHEME = {
- 'purelib': '$base',
-@@ -38,15 +40,15 @@
-
- INSTALL_SCHEMES = {
- 'unix_prefix': {
-- 'purelib': '$base/lib/python$py_version_short/site-packages',
-- 'platlib': '$platbase/lib/python$py_version_short/site-packages',
-+ 'purelib': '$base/'+libname+'/python$py_version_short/site-packages',
-+ 'platlib': '$platbase/'+libname+'/python$py_version_short/site-packages',
- 'headers': '$base/include/python$py_version_short/$dist_name',
- 'scripts': '$base/bin',
- 'data' : '$base',
- },
- 'unix_home': {
-- 'purelib': '$base/lib/python',
-- 'platlib': '$base/lib/python',
-+ 'purelib': '$base/'+libname+'/python',
-+ 'platlib': '$base/'+libname+'/python',
- 'headers': '$base/include/python/$dist_name',
- 'scripts': '$base/bin',
- 'data' : '$base',
-diff -Naur --exclude=CVS Python-2.4.4/Lib/distutils/sysconfig.py Python-2.4.4-patched/Lib/distutils/sysconfig.py
---- Python-2.4.4/Lib/distutils/sysconfig.py 2006-10-08 21:41:25.000000000 +0400
-+++ Python-2.4.4-patched/Lib/distutils/sysconfig.py 2007-04-23 19:21:19.000000000 +0400
-@@ -100,7 +100,7 @@
-
- if os.name == "posix":
- libpython = os.path.join(prefix,
-- "lib", "python" + get_python_version())
-+ sys.lib, "python" + get_python_version())
- if standard_lib:
- return libpython
- else:
-diff -Naur --exclude=CVS Python-2.4.4/Lib/distutils/tests/test_install.py Python-2.4.4-patched/Lib/distutils/tests/test_install.py
---- Python-2.4.4/Lib/distutils/tests/test_install.py 2004-06-26 03:02:59.000000000 +0400
-+++ Python-2.4.4-patched/Lib/distutils/tests/test_install.py 2007-04-23 19:20:24.000000000 +0400
-@@ -1,6 +1,7 @@
- """Tests for distutils.command.install."""
-
- import os
-+import sys
- import unittest
-
- from distutils.command.install import install
-@@ -38,7 +39,7 @@
- expected = os.path.normpath(expected)
- self.assertEqual(got, expected)
-
-- libdir = os.path.join(destination, "lib", "python")
-+ libdir = os.path.join(destination, sys.lib, "python")
- check_path(cmd.install_lib, libdir)
- check_path(cmd.install_platlib, libdir)
- check_path(cmd.install_purelib, libdir)
-diff -Naur --exclude=CVS Python-2.4.4/Lib/site.py Python-2.4.4-patched/Lib/site.py
---- Python-2.4.4/Lib/site.py 2004-07-20 06:28:28.000000000 +0400
-+++ Python-2.4.4-patched/Lib/site.py 2007-04-23 19:23:19.000000000 +0400
-@@ -179,12 +179,18 @@
- sitedirs = [os.path.join(prefix, "Lib", "site-packages")]
- elif os.sep == '/':
- sitedirs = [os.path.join(prefix,
-- "lib",
-+ sys.lib,
- "python" + sys.version[:3],
- "site-packages"),
-- os.path.join(prefix, "lib", "site-python")]
-+ os.path.join(prefix, sys.lib, "site-python")]
-+ if sys.lib != 'lib':
-+ sitedirs.append(os.path.join(prefix,
-+ 'lib',
-+ "python" + sys.version[:3],
-+ "site-packages"))
-+ sitedirs.append(os.path.join(prefix, 'lib', "site-python"))
- else:
-- sitedirs = [prefix, os.path.join(prefix, "lib", "site-packages")]
-+ sitedirs = [prefix, os.path.join(prefix, sys.lib, "site-packages")]
- if sys.platform == 'darwin':
- # for framework builds *only* we add the standard Apple
- # locations. Currently only per-user, but /Library and
-diff -Naur --exclude=CVS Python-2.4.4/Makefile.pre.in Python-2.4.4-patched/Makefile.pre.in
---- Python-2.4.4/Makefile.pre.in 2006-10-08 21:41:25.000000000 +0400
-+++ Python-2.4.4-patched/Makefile.pre.in 2007-04-23 19:34:43.000000000 +0400
-@@ -70,6 +70,8 @@
-
- # Machine-dependent subdirectories
- MACHDEP= @MACHDEP@
-+LIB= @LIB@
-+ARCH= @ARCH@
-
- # Install prefix for architecture-independent files
- prefix= @prefix@
-@@ -79,11 +81,11 @@
-
- # Expanded directories
- BINDIR= $(exec_prefix)/bin
--LIBDIR= $(exec_prefix)/lib
-+LIBDIR= $(exec_prefix)/$(LIB)
- MANDIR= @mandir@
- INCLUDEDIR= @includedir@
- CONFINCLUDEDIR= $(exec_prefix)/include
--SCRIPTDIR= $(prefix)/lib
-+SCRIPTDIR= $(prefix)/$(LIB)
-
- # Detailed destination directories
- BINLIBDEST= $(LIBDIR)/python$(VERSION)
-@@ -471,7 +473,7 @@
- Python/compile.o Python/symtable.o: $(GRAMMAR_H)
-
- Python/getplatform.o: $(srcdir)/Python/getplatform.c
-- $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
-+ $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -DARCH='"$(ARCH)"' -DLIB='"$(LIB)"' -o $@ $(srcdir)/Python/getplatform.c
-
- Python/importdl.o: $(srcdir)/Python/importdl.c
- $(CC) -c $(PY_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
-diff -Naur --exclude=CVS Python-2.4.4/Modules/getpath.c Python-2.4.4-patched/Modules/getpath.c
---- Python-2.4.4/Modules/getpath.c 2006-02-20 20:37:39.000000000 +0300
-+++ Python-2.4.4-patched/Modules/getpath.c 2007-04-23 19:25:34.000000000 +0400
-@@ -111,9 +111,17 @@
- #define EXEC_PREFIX PREFIX
- #endif
-
-+#ifndef LIB_PYTHON
-+#if defined(__x86_64__)
-+#define LIB_PYTHON "lib64/python" VERSION
-+#else
-+#define LIB_PYTHON "lib/python" VERSION
-+#endif
-+#endif
-+
- #ifndef PYTHONPATH
--#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
-- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
-+#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \
-+ EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload"
- #endif
-
- #ifndef LANDMARK
-@@ -124,7 +132,7 @@
- static char exec_prefix[MAXPATHLEN+1];
- static char progpath[MAXPATHLEN+1];
- static char *module_search_path = NULL;
--static char lib_python[] = "lib/python" VERSION;
-+static char lib_python[] = LIB_PYTHON;
-
- static void
- reduce(char *dir)
-diff -Naur --exclude=CVS Python-2.4.4/Python/getplatform.c Python-2.4.4-patched/Python/getplatform.c
---- Python-2.4.4/Python/getplatform.c 2000-09-02 03:29:29.000000000 +0400
-+++ Python-2.4.4-patched/Python/getplatform.c 2007-04-23 19:27:19.000000000 +0400
-@@ -10,3 +10,23 @@
- {
- return PLATFORM;
- }
-+
-+#ifndef ARCH
-+#define ARCH "unknown"
-+#endif
-+
-+const char *
-+Py_GetArch(void)
-+{
-+ return ARCH;
-+}
-+
-+#ifndef LIB
-+#define LIB "lib"
-+#endif
-+
-+const char *
-+Py_GetLib(void)
-+{
-+ return LIB;
-+}
-diff -Naur --exclude=CVS Python-2.4.4/Python/sysmodule.c Python-2.4.4-patched/Python/sysmodule.c
---- Python-2.4.4/Python/sysmodule.c 2006-10-05 22:08:58.000000000 +0400
-+++ Python-2.4.4-patched/Python/sysmodule.c 2007-04-23 19:29:43.000000000 +0400
-@@ -1035,6 +1035,10 @@
- PyString_FromString(Py_GetCopyright()));
- SET_SYS_FROM_STRING("platform",
- PyString_FromString(Py_GetPlatform()));
-+ SET_SYS_FROM_STRING("arch",
-+ PyString_FromString(Py_GetArch()));
-+ SET_SYS_FROM_STRING("lib",
-+ PyString_FromString(Py_GetLib()));
- SET_SYS_FROM_STRING("executable",
- PyString_FromString(Py_GetProgramFullPath()));
- SET_SYS_FROM_STRING("prefix",
-diff -Naur --exclude=CVS Python-2.4.4/setup.py Python-2.4.4-patched/setup.py
---- Python-2.4.4/setup.py 2006-10-08 21:41:25.000000000 +0400
-+++ Python-2.4.4-patched/setup.py 2007-04-23 19:38:02.000000000 +0400
-@@ -263,12 +263,12 @@
- except NameError:
- have_unicode = 0
-
-+ libname = sys.lib
- # lib_dirs and inc_dirs are used to search for files;
- # if a file is found in one of those directories, it can
- # be assumed that no additional -I,-L directives are needed.
- lib_dirs = self.compiler.library_dirs + [
-- '/lib64', '/usr/lib64',
-- '/lib', '/usr/lib',
-+ libname, '/usr/'+libname
- ]
- inc_dirs = self.compiler.include_dirs + ['/usr/include']
- exts = []
-@@ -450,7 +450,7 @@
- elif self.compiler.find_library_file(lib_dirs, 'curses'):
- readline_libs.append('curses')
- elif self.compiler.find_library_file(lib_dirs +
-- ['/usr/lib/termcap'],
-+ ['/usr/'+libname+'/termcap'],
- 'termcap'):
- readline_libs.append('termcap')
-
-@@ -465,7 +465,7 @@
- readline_extra_link_args = ()
-
- exts.append( Extension('readline', ['readline.c'],
-- library_dirs=['/usr/lib/termcap'],
-+ library_dirs=['/usr/'+libname+'/termcap'],
- extra_link_args=readline_extra_link_args,
- libraries=readline_libs) )
- if platform not in ['mac']:
-@@ -1069,8 +1069,8 @@
- added_lib_dirs.append('/usr/openwin/lib')
- elif os.path.exists('/usr/X11R6/include'):
- include_dirs.append('/usr/X11R6/include')
-- added_lib_dirs.append('/usr/X11R6/lib64')
-- added_lib_dirs.append('/usr/X11R6/lib')
-+ added_lib_dirs.append('/usr/X11R6/'+sys.lib)
-+ #added_lib_dirs.append('/usr/X11R6/lib')
- elif os.path.exists('/usr/X11R5/include'):
- include_dirs.append('/usr/X11R5/include')
- added_lib_dirs.append('/usr/X11R5/lib')