Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F78073709
configure-tests.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sun, Aug 18, 06:33
Size
13 KB
Mime Type
text/x-python
Expires
Tue, Aug 20, 06:33 (1 d, 22 h)
Engine
blob
Format
Raw Data
Handle
18310501
Attached To
R3600 invenio-infoscience
configure-tests.py
View Options
## This file is part of Invenio.
## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 CERN.
##
## Invenio is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License as
## published by the Free Software Foundation; either version 2 of the
## License, or (at your option) any later version.
##
## Invenio is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
## General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with Invenio; if not, write to the Free Software Foundation, Inc.,
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
"""
Test the suitability of Python core and the availability of various
Python modules for running Invenio. Warn the user if there are
eventual troubles. Exit status: 0 if okay, 1 if not okay. Useful for
running from configure.ac.
"""
## minimally recommended/required versions:
cfg_min_python_version
=
"2.4"
cfg_max_python_version
=
"2.9.9999"
cfg_min_mysqldb_version
=
"1.2.1_p2"
## 0) import modules needed for this testing:
import
string
import
sys
import
getpass
def
wait_for_user
(
msg
):
"""Print MSG and prompt user for confirmation."""
try
:
raw_input
(
msg
)
except
KeyboardInterrupt
:
print
"
\n\n
Installation aborted."
sys
.
exit
(
1
)
except
EOFError
:
print
" (continuing in batch mode)"
return
## 1) check Python version:
if
sys
.
version
<
cfg_min_python_version
:
print
"""
*******************************************************
** ERROR: TOO OLD PYTHON DETECTED: %s
*******************************************************
** You seem to be using a too old version of Python. **
** You must use at least Python %s. **
** **
** Note that if you have more than one Python **
** installed on your system, you can specify the **
** --with-python configuration option to choose **
** a specific (e.g. non system wide) Python binary. **
** **
** Please upgrade your Python before continuing. **
*******************************************************
"""
%
(
string
.
replace
(
sys
.
version
,
"
\n
"
,
""
),
cfg_min_python_version
)
sys
.
exit
(
1
)
if
sys
.
version
>
cfg_max_python_version
:
print
"""
*******************************************************
** ERROR: TOO NEW PYTHON DETECTED: %s
*******************************************************
** You seem to be using a too new version of Python. **
** You must use at most Python %s. **
** **
** Perhaps you have downloaded and are installing an **
** old Invenio version? Please look for more recent **
** Invenio version or please contact the development **
** team at <info@invenio-software.org> about this **
** problem. **
** **
** Installation aborted. **
*******************************************************
"""
%
(
string
.
replace
(
sys
.
version
,
"
\n
"
,
""
),
cfg_max_python_version
)
sys
.
exit
(
1
)
## 2) check for required modules:
try
:
import
MySQLdb
import
base64
import
cPickle
import
cStringIO
import
cgi
import
copy
import
fileinput
import
getopt
import
sys
if
sys
.
hexversion
<
0x2060000
:
import
md5
else
:
import
hashlib
import
marshal
import
os
import
signal
import
tempfile
import
time
import
traceback
import
unicodedata
import
urllib
import
zlib
import
wsgiref
except
ImportError
,
msg
:
print
"""
*************************************************
** IMPORT ERROR %s
*************************************************
** Perhaps you forgot to install some of the **
** prerequisite Python modules? Please look **
** at our INSTALL file for more details and **
** fix the problem before continuing! **
*************************************************
"""
%
msg
sys
.
exit
(
1
)
## 3) check for recommended modules:
try
:
import
rdflib
except
ImportError
,
msg
:
print
"""
*****************************************************
** IMPORT WARNING %s
*****************************************************
** Note that rdflib is needed only if you plan **
** to work with the automatic classification of **
** documents based on RDF-based taxonomies. **
** **
** You can safely continue installing Invenio **
** now, and add this module anytime later. (I.e. **
** even after your Invenio installation is put **
** into production.) **
*****************************************************
"""
%
msg
wait_for_user
(
"Press ENTER to continue the installation..."
)
try
:
import
pyRXP
except
ImportError
,
msg
:
print
"""
*****************************************************
** IMPORT WARNING %s
*****************************************************
** Note that PyRXP is not really required but **
** we recommend it for fast XML MARC parsing. **
** **
** You can safely continue installing Invenio **
** now, and add this module anytime later. (I.e. **
** even after your Invenio installation is put **
** into production.) **
*****************************************************
"""
%
msg
wait_for_user
(
"Press ENTER to continue the installation..."
)
try
:
import
dateutil
except
ImportError
,
msg
:
print
"""
*****************************************************
** IMPORT WARNING %s
*****************************************************
** Note that dateutil is not really required but **
** we recommend it for user-friendly date **
** parsing. **
** **
** You can safely continue installing Invenio **
** now, and add this module anytime later. (I.e. **
** even after your Invenio installation is put **
** into production.) **
*****************************************************
"""
%
msg
wait_for_user
(
"Press ENTER to continue the installation..."
)
try
:
import
libxml2
except
ImportError
,
msg
:
print
"""
*****************************************************
** IMPORT WARNING %s
*****************************************************
** Note that libxml2 is not really required but **
** we recommend it for XML metadata conversions **
** and for fast XML parsing. **
** **
** You can safely continue installing Invenio **
** now, and add this module anytime later. (I.e. **
** even after your Invenio installation is put **
** into production.) **
*****************************************************
"""
%
msg
wait_for_user
(
"Press ENTER to continue the installation..."
)
try
:
import
libxslt
except
ImportError
,
msg
:
print
"""
*****************************************************
** IMPORT WARNING %s
*****************************************************
** Note that libxslt is not really required but **
** we recommend it for XML metadata conversions. **
** **
** You can safely continue installing Invenio **
** now, and add this module anytime later. (I.e. **
** even after your Invenio installation is put **
** into production.) **
*****************************************************
"""
%
msg
wait_for_user
(
"Press ENTER to continue the installation..."
)
try
:
import
Gnuplot
except
ImportError
,
msg
:
print
"""
*****************************************************
** IMPORT WARNING %s
*****************************************************
** Note that Gnuplot.py is not really required but **
** we recommend it in order to have nice download **
** and citation history graphs on Detailed record **
** pages. **
** **
** You can safely continue installing Invenio **
** now, and add this module anytime later. (I.e. **
** even after your Invenio installation is put **
** into production.) **
*****************************************************
"""
%
msg
wait_for_user
(
"Press ENTER to continue the installation..."
)
try
:
import
magic
if
not
hasattr
(
magic
,
"open"
):
raise
StandardError
except
ImportError
,
msg
:
print
"""
*****************************************************
** IMPORT WARNING %s
*****************************************************
** Note that magic module is not really required **
** but we recommend it in order to have detailed **
** content information about fulltext files. **
** **
** You can safely continue installing Invenio **
** now, and add this module anytime later. (I.e. **
** even after your Invenio installation is put **
** into production.) **
*****************************************************
"""
%
msg
except
StandardError
:
print
"""
*****************************************************
** IMPORT WARNING python-magic
*****************************************************
** The python-magic package you installed is not **
** the one supported by Invenio. Please refer to **
** the INSTALL file for more details. **
** **
** You can safely continue installing Invenio **
** now, and add this module anytime later. (I.e. **
** even after your Invenio installation is put **
** into production.) **
*****************************************************
"""
try
:
import
reportlab
except
ImportError
,
msg
:
print
"""
*****************************************************
** IMPORT WARNING %s
*****************************************************
** Note that reportlab module is not really **
** required, but we recommend it you want to **
** enrich PDF with OCR information. **
** **
** You can safely continue installing Invenio **
** now, and add this module anytime later. (I.e. **
** even after your Invenio installation is put **
** into production.) **
*****************************************************
"""
%
msg
wait_for_user
(
"Press ENTER to continue the installation..."
)
## 4) check for versions of some important modules:
if
MySQLdb
.
__version__
<
cfg_min_mysqldb_version
:
print
"""
*****************************************************
** ERROR: PYTHON MODULE MYSQLDB %s DETECTED
*****************************************************
** You have to upgrade your MySQLdb to at least **
** version %s. You must fix this problem **
** before continuing. Please see the INSTALL file **
** for more details. **
*****************************************************
"""
%
(
MySQLdb
.
__version__
,
cfg_min_mysqldb_version
)
sys
.
exit
(
1
)
try
:
import
Stemmer
try
:
from
Stemmer
import
algorithms
except
ImportError
,
msg
:
print
"""
*****************************************************
** ERROR: STEMMER MODULE PROBLEM %s
*****************************************************
** Perhaps you are using an old Stemmer version? **
** You must either remove your old Stemmer or else **
** upgrade to Snowball Stemmer
** <http://snowball.tartarus.org/wrappers/PyStemmer-1.0.1.tar.gz>
** before continuing. Please see the INSTALL file **
** for more details. **
*****************************************************
"""
%
(
msg
)
sys
.
exit
(
1
)
except
ImportError
:
pass
# no prob, Stemmer is optional
## 5) check for Python.h (needed for intbitset):
try
:
from
distutils.sysconfig
import
get_python_inc
path_to_python_h
=
get_python_inc
()
+
os
.
sep
+
'Python.h'
if
not
os
.
path
.
exists
(
path_to_python_h
):
raise
StandardError
,
"Cannot find
%s
"
%
path_to_python_h
except
StandardError
,
msg
:
print
"""
*****************************************************
** ERROR: PYTHON HEADER FILE ERROR %s
*****************************************************
** You do not seem to have Python developer files **
** installed (such as Python.h). Some operating **
** systems provide these in a separate Python **
** package called python-dev or python-devel. **
** You must install such a package before **
** continuing the installation process. **
*****************************************************
"""
%
(
msg
)
sys
.
exit
(
1
)
Event Timeline
Log In to Comment