Newer
Older
Simon Lejeune
committed
#!/usr/bin/env python
Antony Lesuisse
committed
# -*- coding: utf-8 -*-
Simon Lejeune
committed
import os
import re
from glob import glob
from setuptools import find_packages, setup
from os.path import join, dirname
execfile(join(dirname(__file__), 'odoo', 'release.py')) # Load release variables
lib_name = 'odoo'
Simon Lejeune
committed
def py2exe_datafiles():
data_files = {}
data_files['Microsoft.VC90.CRT'] = glob('C:\Microsoft.VC90.CRT\*.*')
Antony Lesuisse
committed
for root, dirnames, filenames in os.walk('odoo'):
Antony Lesuisse
committed
for filename in filenames:
if not re.match(r'.*(\.pyc|\.pyo|\~)$', filename):
Simon Lejeune
committed
data_files.setdefault(root, []).append(join(root, filename))
Antony Lesuisse
committed
Simon Lejeune
committed
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)
Antony Lesuisse
committed
Simon Lejeune
committed
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]
Simon Lejeune
committed
import docutils
import passlib
import requests
data_mapping = ((docutils, 'docutils'),
(passlib, 'passlib'),
(requests, 'requests'))
for mod, datadir in data_mapping:
basedir = dirname(mod.__file__)
for root, _, filenames in os.walk(basedir):
base = join(datadir, root[len(basedir) + 1:])
data_files[base] = [join(root, f)
for f in filenames
if not f.endswith(('.py', '.pyc', '.pyo'))]
Simon Lejeune
committed
return data_files.items()
Antony Lesuisse
committed
def py2exe_options():
if os.name == 'nt':
import py2exe
return {
Simon Lejeune
committed
'console': [
{'script': 'openerp-server', 'icon_resources': [
(1, join('setup', 'win32', 'static', 'pixmaps', 'openerp-icon.ico'))
]},
Simon Lejeune
committed
'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',
Simon Lejeune
committed
'openid',
'passlib',
Simon Lejeune
committed
'PIL',
'poplib',
'psutil',
Simon Lejeune
committed
'pydot',
'pyparsing',
'pyPdf',
'pytz',
'reportlab',
'requests',
'select',
'smtplib',
Simon Lejeune
committed
'uuid',
'vatnumber',
'vobject',
'win32service', 'win32serviceutil',
Simon Lejeune
committed
'xlwt',
'xml', 'xml.dom',
'yaml',
Simon Lejeune
committed
'excludes': ['Tkconstants', 'Tkinter', 'tcl'],
Antony Lesuisse
committed
}
Simon Lejeune
committed
},
'data_files': py2exe_datafiles()
Antony Lesuisse
committed
}
else:
return {}
Simon Lejeune
committed
setup(
Simon Lejeune
committed
version=version,
description=description,
long_description=long_desc,
url=url,
author=author,
author_email=author_email,
classifiers=filter(None, classifiers.split('\n')),
license=license,
Simon Lejeune
committed
packages=find_packages(),
package_dir={'%s' % lib_name: 'odoo'},
Simon Lejeune
committed
include_package_data=True,
install_requires=[
'babel >= 1.0',
'decorator',
'docutils',
'feedparser',
'gevent',
'Jinja2',
'lxml', # windows binary http://www.lfd.uci.edu/~gohlke/pythonlibs/
'mako',
'mock',
Simon Lejeune
committed
'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',
Simon Lejeune
committed
'pydot',
'pyparsing',
Simon Lejeune
committed
'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',
Simon Lejeune
committed
'vatnumber',
'vobject',
'werkzeug',
Simon Lejeune
committed
'xlwt',
],
extras_require={
'SSL': ['pyopenssl'],
},
tests_require=[
'mock',
],
**py2exe_options()