X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=setup.py;h=c7bde8e0cf741f283afacf73bacade50321645e4;hb=4bcb31f7060149831a26e030e64ee54b71e456b6;hp=3f108685f94bd5a8b2affb847327b1e1a990e41e;hpb=c3b6ba715702d6bd7d43d87af1adbf3bcd0bd505;p=odoo%2Fodoo.git diff --git a/setup.py b/setup.py index 3f10868..c7bde8e 100644 --- a/setup.py +++ b/setup.py @@ -1,73 +1,176 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- import os import re -import sys -from setuptools import setup, find_packages +from glob import glob +from setuptools import find_packages, setup +from os.path import join, dirname -execfile('addons/web/common/release.py') -version_dash_incompatible = False -if 'bdist_rpm' in sys.argv: - version_dash_incompatible = True -try: - import py2exe - from py2exe_utils import opts - version_dash_incompatible = True -except ImportError: - opts = {} -if version_dash_incompatible: - version = version.split('-')[0] +execfile(join(dirname(__file__), 'openerp', 'release.py')) # Load release variables +lib_name = 'openerp' -FILE_PATTERNS = \ - r'.+\.(py|cfg|po|pot|mo|txt|rst|gif|png|jpg|ico|mako|html|js|css|htc|swf)$' -def find_data_files(source, patterns=FILE_PATTERNS): - file_matcher = re.compile(patterns, re.I) - out = [] - for base, _, files in os.walk(source): - cur_files = [] - for f in files: - if file_matcher.match(f): - cur_files.append(os.path.join(base, f)) - if cur_files: - out.append( - (base, cur_files)) - return out +def py2exe_datafiles(): + data_files = {} + data_files['Microsoft.VC90.CRT'] = glob('C:\Microsoft.VC90.CRT\*.*') + + for root, dirnames, filenames in os.walk('openerp'): + for filename in filenames: + if not re.match(r'.*(\.pyc|\.pyo|\~)$', filename): + data_files.setdefault(root, []).append(join(root, filename)) + + import babel + data_files['babel/localedata'] = glob(join(dirname(babel.__file__), 'localedata', '*')) + others = ['global.dat', 'numbers.py', 'support.py', 'plural.py'] + data_files['babel'] = map(lambda f: join(dirname(babel.__file__), f), others) + others = ['frontend.py', 'mofile.py'] + data_files['babel/messages'] = map(lambda f: join(dirname(babel.__file__), 'messages', f), others) + + import pytz + tzdir = dirname(pytz.__file__) + for root, _, filenames in os.walk(join(tzdir, 'zoneinfo')): + base = join('pytz', root[len(tzdir) + 1:]) + data_files[base] = [join(root, f) for f in filenames] + + import docutils + dudir = dirname(docutils.__file__) + for root, _, filenames in os.walk(dudir): + base = join('docutils', root[len(dudir) + 1:]) + data_files[base] = [join(root, f) for f in filenames if not f.endswith(('.py', '.pyc', '.pyo'))] + + import passlib + pl = dirname(passlib.__file__) + for root, _, filenames in os.walk(pl): + base = join('passlib', root[len(pl) + 1:]) + data_files[base] = [join(root, f) for f in filenames if not f.endswith(('.py', '.pyc', '.pyo'))] + + return data_files.items() + + +def py2exe_options(): + if os.name == 'nt': + import py2exe + return { + 'console': [ + {'script': 'odoo.py'}, + {'script': 'openerp-gevent'}, + {'script': 'openerp-server', 'icon_resources': [ + (1, join('setup', 'win32', 'static', 'pixmaps', 'openerp-icon.ico')) + ]}, + ], + 'options': { + 'py2exe': { + 'skip_archive': 1, + 'optimize': 0, # Keep the assert running as the integrated tests rely on them. + 'dist_dir': 'dist', + 'packages': [ + 'asynchat', 'asyncore', + 'commands', + 'dateutil', + 'decimal', + 'decorator', + 'docutils', + 'email', + 'encodings', + 'HTMLParser', + 'imaplib', + 'jinja2', + 'lxml', 'lxml._elementpath', 'lxml.builder', 'lxml.etree', 'lxml.objectify', + 'mako', + 'markupsafe', + 'mock', + 'openerp', + 'openid', + 'passlib', + 'PIL', + 'poplib', + 'psutil', + 'pychart', + 'pydot', + 'pyparsing', + 'pyPdf', + 'pytz', + 'reportlab', + 'requests', + 'select', + 'simplejson', + 'smtplib', + 'uuid', + 'vatnumber', + 'vobject', + 'win32service', 'win32serviceutil', + 'xlwt', + 'xml', 'xml.dom', + 'yaml', + ], + 'excludes': ['Tkconstants', 'Tkinter', 'tcl'], + } + }, + 'data_files': py2exe_datafiles() + } + else: + return {} + setup( - name=name, + name='odoo', version=version, description=description, - long_description=long_description, + long_description=long_desc, + url=url, author=author, author_email=author_email, - url=url, - download_url=download_url, + classifiers=filter(None, classifiers.split('\n')), license=license, + scripts=['openerp-server', 'openerp-gevent', 'odoo.py'], + packages=find_packages(), + package_dir={'%s' % lib_name: 'openerp'}, + include_package_data=True, + dependency_links=['http://download.gna.org/pychart/'], install_requires=[ - "Babel >= 0.9.6", - "simplejson >= 2.0.9", - "python-dateutil >= 1.4.1", - "pytz", - "werkzeug == 0.7", + 'babel >= 1.0', + 'decorator', + 'docutils', + 'feedparser', + 'gevent', + 'Jinja2', + 'lxml', # windows binary http://www.lfd.uci.edu/~gohlke/pythonlibs/ + 'mako', + 'mock', + 'passlib', + 'pillow', # windows binary http://www.lfd.uci.edu/~gohlke/pythonlibs/ + 'psutil', # windows binary code.google.com/p/psutil/downloads/list + 'psycogreen', + 'psycopg2 >= 2.2', + 'pychart', # not on pypi, use: pip install http://download.gna.org/pychart/PyChart-1.39.tar.gz + 'pydot', + 'pyparsing < 2', + 'pypdf', + 'pyserial', + 'python-dateutil', + 'python-ldap', # optional + 'python-openid', + 'pytz', + 'pyusb >= 1.0.0b1', + 'pyyaml', + 'qrcode', + 'reportlab', # windows binary pypi.python.org/pypi/reportlab + 'requests', + 'simplejson', + 'unittest2', + 'vatnumber', + 'vobject', + 'werkzeug', + 'xlwt', ], + extras_require={ + 'SSL': ['pyopenssl'], + }, tests_require=[ 'unittest2', 'mock', ], - test_suite = 'unittest2.collector', - zip_safe=False, - packages=find_packages(), - classifiers=[ - 'Development Status :: 6 - Production/Stable', - 'Operating System :: OS Independent', - 'Programming Language :: Python', - 'Environment :: Web Environment', - 'Topic :: Office/Business :: Financial', - ], - scripts=['openerp-web'], - data_files=(find_data_files('addons') - + opts.pop('data_files', []) - ), - **opts + **py2exe_options() )