X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=setup.py;h=d4fefa4d59ef63d9b45ae3746eef7b7a55b50a22;hb=1f2b2be39adab391d346087692ca8f201ba170b2;hp=28d8e8d516d2b26c6a4ec65a80360fe82251f8a5;hpb=f850f28ea68c016fa2c61977dbb14cc13e787f5d;p=odoo%2Fodoo.git diff --git a/setup.py b/setup.py index 28d8e8d..d4fefa4 100755 --- a/setup.py +++ b/setup.py @@ -32,9 +32,8 @@ import os from os.path import join, isfile, basename import glob -from setuptools import setup, find_packages -from setuptools.command.install import install -from distutils.sysconfig import get_python_lib +from distutils.core import setup, Command +from distutils.command.install import install has_py2exe = False if os.name == 'nt': @@ -45,16 +44,53 @@ sys.path.append(join(os.path.abspath(os.path.dirname(__file__)), "bin")) execfile(join('bin', 'release.py')) -if 'bdist_rpm' in sys.argv: +if sys.argv[1] == 'bdist_rpm': version = version.split('-')[0] # get python short version py_short_version = '%s.%s' % sys.version_info[:2] +required_modules = [ + ('lxml', 'lxml module: pythonic libxml2 and libxslt bindings'), + ('mako', 'Mako template engine'), + ('dateutil', "Extensions to the standard datetime module"), + ('psycopg2', 'PostgreSQL module'), + ('pychart', 'pychart module'), + ('pydot', 'pydot module'), + ('pytz', 'Timezone handling library for Python'), + ('reportlab', 'reportlab module'), +] + +def check_modules(): + errors = [] + for modname, desc in required_modules: + try: + imp.find_module(modname) + except ImportError: + errors.append( + 'Error: python module %s (%s) is required' % (modname, desc)) + + if errors: + print '\n'.join(errors) + sys.exit(1) + def find_addons(): - for root, _, names in os.walk(join('bin', 'addons'), followlinks=True): - if '__openerp__.py' in names or '__terp__.py' in names: + for root, _, names in os.walk(join('bin', 'addons')): + if '__terp__.py' in names: yield basename(root), root + #look for extra modules + try: + empath = os.getenv('EXTRA_MODULES_PATH', '../addons/') + for mname in open(join(empath, 'server_modules.list')): + mname = mname.strip() + if not mname: + continue + if os.path.exists(join(empath, mname, '__terp__.py')): + yield mname, join(empath, mname) + else: + print "Module %s specified, but no valid path." % mname + except: + pass def data_files(): '''Build list of data files to be installed''' @@ -79,7 +115,7 @@ def data_files(): files.append((join(doc_directory, 'migrate', '3.4.0-4.0.0'), filter(isfile, glob.glob('doc/migrate/3.4.0-4.0.0/*')))) - openerp_site_packages = join(get_python_lib(prefix=''), 'openerp-server') + openerp_site_packages = join('lib', 'python%s' % py_short_version, 'site-packages', 'openerp-server') files.append((openerp_site_packages, [join('bin', 'import_xml.rng'), join('bin', 'server.pkey'), @@ -91,7 +127,7 @@ def data_files(): join('python25-compat','SocketServer.py')])) for addonname, add_path in find_addons(): - addon_path = join(get_python_lib(prefix=''), 'openerp-server','addons', addonname) + addon_path = join('lib', 'python%s' % py_short_version, 'site-packages', 'openerp-server','addons', addonname) for root, dirs, innerfiles in os.walk(add_path): innerfiles = filter(lambda fil: os.path.splitext(fil)[1] not in ('.pyc', '.pyd', '.pyo'), innerfiles) if innerfiles: @@ -101,6 +137,9 @@ def data_files(): return files +if not os.getenv('NO_CHECK_MODULES') : + check_modules() + f = file('openerp-server','w') f.write("""#!/bin/sh echo "Error: the content of this file should have been replaced during " @@ -126,21 +165,16 @@ class openerp_server_install(install): f.close() install.run(self) - - options = { "py2exe": { "compressed": 1, "optimize": 2, "dist_dir": 'dist', - "packages": [ - "lxml", "lxml.builder", "lxml._elementpath", "lxml.etree", - "lxml.objectify", "decimal", "xml", "xml", "xml.dom", "xml.xpath", - "encodings", "dateutil", "wizard", "pychart", "PIL", "pyparsing", - "pydot", "asyncore","asynchat", "reportlab", "vobject", - "HTMLParser", "select", "mako", "poplib", - "imaplib", "smtplib", "email", "yaml","pywebdav", - ], + "packages": ["lxml", "lxml.builder", "lxml._elementpath", "lxml.etree", + "lxml.objectify", "decimal", "xml", "encodings", + "dateutil", "wizard", "pychart", "PIL", "pyparsing", + "pydot", "asyncore","asynchat", "reportlab", "vobject", + "HTMLParser", "select"], "excludes" : ["Tkconstants","Tkinter","tcl"], } } @@ -156,42 +190,37 @@ setup(name = name, license = license, data_files = data_files(), cmdclass = { - 'install' : openerp_server_install, + 'install' : openerp_server_install, }, scripts = ['openerp-server'], - packages = [ - '.'.join(['openerp-server'] + package.split('.')[1:]) for package in find_packages() - ], + packages = ['openerp-server', + 'openerp-server.addons', + 'openerp-server.ir', + 'openerp-server.osv', + 'openerp-server.pychart', + 'openerp-server.pychart.afm', + 'openerp-server.report', + 'openerp-server.report.printscreen', + 'openerp-server.report.pyPdf', + 'openerp-server.report.render', + 'openerp-server.report.render.html2html', + 'openerp-server.report.render.makohtml2html', + 'openerp-server.report.render.odt2odt', + 'openerp-server.report.render.rml2html', + 'openerp-server.report.render.rml2pdf', + 'openerp-server.report.render.rml2txt', + 'openerp-server.service', + 'openerp-server.tools', + 'openerp-server.wizard', + 'openerp-server.workflow'] + \ + [('openerp-server.addons.' + name) + for name, _ in find_addons()], package_dir = find_package_dirs(), - console = [ - { - "script": join("bin", "openerp-server.py"), - "icon_resources": [(1, join("pixmaps","openerp-icon.ico"))] - } - ], + console = [{"script": join("bin", "openerp-server.py"), + "icon_resources": [(1,join("pixmaps","openerp-icon.ico"))] + }], options = options, - install_requires = ['lxml', - 'mako', - 'python-dateutil', - 'psycopg2', - 'pychart', - 'pydot', - 'pytz', - 'reportlab', - 'caldav', - 'pyyaml', - 'sqlalchemy', - 'django', - 'pywebdav' - 'cx_Oracle', - 'mysqldb', - 'feedparser', - 'bsddb3', - 'egenix-mx-base'], - extras_require={ - 'SSL' : ['pyopenssl'], - } -) + ) if has_py2exe: # Sometime between pytz-2008a and pytz-2008i common_timezones started to