install_sequitur.sh
4.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/bash
set -u
set -e
# Make sure we are in the tools/ directory.
if [ `basename $PWD` == extras ]; then
cd ..
fi
! [ `basename $PWD` == tools ] && \
echo "You must call this script from the tools/ directory" && exit 1;
# Install python-devel package if not already available
# first, makes sure distutils.sysconfig usable
if ! $(python -c "import distutils.sysconfig" &> /dev/null); then
echo "$0: WARNING: python library distutils.sysconfig not usable, this is necessary to figure out the path of Python.h." >&2
echo "Proceeding with installation." >&2
else
# get include path for this python version
INCLUDE_PY=$(python -c "from distutils import sysconfig as s; print(s.get_python_inc())")
if [ ! -f "${INCLUDE_PY}/Python.h" ]; then
echo "$0 : ERROR: python-devel/python-dev not installed" >&2
if which yum >&/dev/null; then
# this is a red-hat system
echo "$0: we recommend that you run (our best guess):"
echo " sudo yum install python-devel"
fi
if which apt-get >&/dev/null; then
# this is a debian system
echo "$0: we recommend that you run (our best guess):"
echo " sudo apt-get install python-dev"
fi
exit 1
fi
fi
command -v swig >/dev/null 2>&1 || {
echo >&2 "$0: Error: I require swig but it's not installed.";
echo >&2 " Please install swig and run this script again. "
exit 1;
}
if [ -d ./g2p ] || [ -d sequitur ] ; then
echo >&2 "$0: Warning: old installation of Sequitur found. You should manually"
echo >&2 " delete the directories tools/sequitur and/or tools/g2p and "
echo >&2 " edit the file tools/env.sh and remove manually all references to it"
exit 1
fi
if [ ! -d ./sequitur-g2p ] ; then
git clone https://github.com/sequitur-g2p/sequitur-g2p.git sequitur-g2p ||
{
echo >&2 "$0: Warning: git clone operation ended unsuccessfully"
echo >&2 " I will assume this is because you don't have https support"
echo >&2 " compiled into your git "
git clone git@github.com:sequitur-g2p/sequitur-g2p.git sequitur-g2p
if [ $? -ne 0 ]; then
echo >&2 "$0: Error git clone operation ended unsuccessfully"
echo >&2 " Clone the github repository (https://github.com/sequitur-g2p/sequitur-g2p.git)"
echo >&2 " manually and re-run the script"
fi
}
else
echo >&2 "$0: Updating the repository -- we will try to merge with local changes (if you have any)"
(
cd sequitur-g2p/
git pull
# this would work also, but would drop all local modifications
#git fetch
#git reset --hard origin/master
) || {
echo >&2 "Failed to do git pull, delete the sequitur dir and run again";
exit 1
}
fi
(
cd sequitur-g2p
#we had some reports that the CPPFLAGS is needed under MacOS X but we could not
#reproduce it, actually, this, however, seems to work just fine for us
#the primary issue is that real GNU GCC does not accept that switch
#in addition, Apple fake g++ based on LLVM version 8.1 prints warning about
#the libstdc++ should no longer be used.
if (g++ --version 2>/dev/null | grep -s "LLVM version 8.0" >/dev/null) ; then
#Apple fake-g++
make CXX=g++ CC=gcc CPPFLAGS="-stdlib=libstdc++"
else
make CXX=g++ CC=gcc
fi
# the next two lines deal with the issue that the new setup tools
# expect the directory in which we will be installing to be visible
# as module directory to python
site_packages_dir=$(PYTHONPATH="" python -m site --user-site | grep -oE "lib.*")
SEQUITUR=$(pwd)/$site_packages_dir
# some bits of info to troubleshoot this in case people have problems
echo -n >&2 "USER SITE: "; PYTHONPATH="" python -m site --user-site
echo >&2 "SEQUITUR_PACKAGE: ${site_packages_dir:-}"
echo >&2 "SEQUITUR: $SEQUITUR"
echo >&2 "PYTHONPATH: ${PYTHONPATH:-}"
mkdir -p $SEQUITUR
PYTHONPATH=${PYTHONPATH:-}:$SEQUITUR python setup.py install --prefix `pwd`
) || {
echo >&2 "Problem installing sequitur!"
exit 1
}
site_packages_dir=$(cd sequitur-g2p; find ./lib{,64} -type d -name site-packages | head -n 1)
(
set +u
[ ! -z "${SEQUITUR}" ] && \
echo >&2 "SEQUITUR variable is aleady defined. Undefining..." && \
unset SEQUITUR
[ -f ./env.sh ] && . ./env.sh
[ ! -z "${SEQUITUR}" ] && \
echo >&2 "SEQUITUR config is already in env.sh" && exit
wd=`pwd`
wd=`readlink -f $wd || pwd`
echo "export SEQUITUR=\"$wd/sequitur-g2p\""
echo "export PATH=\"\$PATH:\${SEQUITUR}/bin\""
echo "export PYTHONPATH=\"\${PYTHONPATH:-}:\$SEQUITUR/${site_packages_dir}\""
) >> env.sh
echo >&2 "Installation of SEQUITUR finished successfully"
echo >&2 "Please source tools/env.sh in your path.sh to enable it"