Salome HOME
daa72fab7cc6073b948f71ec5fa7842dcf16f3a2
[tools/sat_salome.git] / products / compil_scripts / Python.sh
1 #!/bin/bash
2
3 echo "##########################################################################"
4 echo "Python" $VERSION
5 echo "##########################################################################"
6
7 if [ ${#VERSION} -lt 5 ]
8 then
9     echo "ERROR : VERSION argument of Python compilation script has not the expected x.y.z format"
10     exit 1
11 fi
12 PYTHON_VERSION="${VERSION:0:3}"
13 PYTHON_VERSION_MAJ=${PYTHON_VERSION:0:1}
14
15
16 function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
17 if version_ge $VERSION "3.6"; then
18     echo "*** Python version is newer than version 3.6 ..."
19     # --enable-shared   : enable building shared python library
20     # --with-threads    : enable thread support
21     # --without-pymalloc: disable specialized mallocs
22     # --with-ensurepip  : installation using bundled pip
23     # --enable-optimizations:  recommandé et utilisé par Nijni -> mais trop long!
24     # spns #30153 :  pymalloc on demand
25     CONFIGURE_ARGUMENTS="--enable-shared --with-threads --with-ensurepip=install --with-ssl --enable-loadable-sqlite-extensions"
26     if [ "${SAT_ENABLE_PYTHON_PYMALLOC}" == "1" ]; then
27         CONFIGURE_ARGUMENTS+=" --with-pymalloc"
28     else
29         CONFIGURE_ARGUMENTS+=" --without-pymalloc"
30     fi
31 else
32     echo "*** Python version is older than version 3.6 ..."
33     CONFIGURE_ARGUMENTS="--enable-shared --with-threads --without-pymalloc --enable-unicode=ucs4"
34 fi
35
36 echo
37 echo   "*** configure --prefix=$PRODUCT_INSTALL $CONFIGURE_ARGUMENTS"
38 $SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL $CONFIGURE_ARGUMENTS
39 if [ $? -ne 0 ]
40 then
41     echo "ERROR on configure"
42     exit 1
43 fi
44
45 echo
46 echo "*** make" $MAKE_OPTIONS
47 make $MAKE_OPTIONS
48 if [ $? -ne 0 ]
49 then
50     echo "ERROR on make"
51     exit 2
52 fi
53
54 echo
55 echo "*** make install"
56 make install
57 if [ $? -ne 0 ]
58 then
59     echo "ERROR on make install"
60     exit 3
61 fi
62
63 if [ ${PYTHON_VERSION_MAJ} == 3 ]
64 then
65     # OP trick for Python 3.6.1
66     #cd ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}
67     cd ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}*
68 else
69     cd ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/config
70 fi
71
72 if [ ! -e libpython${PYTHON_VERSION}.so ]
73 then
74     echo
75     echo "*** create missing link"
76     ln -sf ../../libpython${PYTHON_VERSION}.so .
77     if [ $? -ne 0 ]
78     then
79         echo "ERROR when creating missing link"
80         # no error here
81     fi
82 fi
83 if [ ${PYTHON_VERSION_MAJ} == 3 ]
84 then
85     cd ${PRODUCT_INSTALL}/bin
86     ln -s python3 python
87     ln -s pip3 pip
88     #
89     if [ "${SAT_ENABLE_PYTHON_PYMALLOC}" == "1" ]; then
90         cd ${PRODUCT_INSTALL}/include
91         if [ ! -d python3.6 ]; then
92             ln -s python3.6m python3.6
93         fi
94     fi
95 fi
96
97 # fix the path... 
98 if version_ge $VERSION "3.6"; then
99     L="2to3  2to3-3.6 easy_install-3.6 idle3 idle3.6 pip3 pip3.6 pydoc3 pydoc3.6 pyvenv pyvenv-3.6"
100     cd ${PRODUCT_INSTALL}/bin
101     for f in  $L; do
102         awk '$0 = NR==1 ? replace : $0' replace="#!/usr/bin/env python3" $f > $f.t && mv $f.t $f && chmod 755 $f
103     done
104 fi
105
106 echo
107 echo "########## END"
108