2 # -*- encoding: utf-8 -*-
3 ##############################################################################
5 # OpenERP, Open Source Management Solution
6 # Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
9 # This program is free software: you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation, either version 3 of the License, or
12 # (at your option) any later version.
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 # GNU General Public License for more details.
19 # You should have received a copy of the GNU General Public License
20 # along with this program. If not, see <http://www.gnu.org/licenses/>.
22 ##############################################################################
25 # taken from straw http://www.nongnu.org/straw/index.html
26 # taken from gnomolicious http://www.nongnu.org/gnomolicious/
27 # adapted by Nicolas Évrard <nicoe@altern.org>
35 from stat import ST_MODE
37 from distutils.core import setup, Command
38 from distutils.command.install_scripts import install_scripts
39 from distutils.file_util import copy_file
44 sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)), "bin"))
48 execfile(opj('bin', 'release.py'))
50 # get python short version
51 py_short_version = '%s.%s' % sys.version_info[:2]
54 ('psycopg', 'PostgreSQL module'),
55 ('xml', 'XML Tools for python'),
56 ('libxml2', 'libxml2 python bindings'),
57 ('libxslt', 'libxslt python bindings'),
58 ('reportlab', 'reportlab module'),
59 ('pychart', 'pychart module'),
60 ('pydot', 'pydot module'),
65 for modname, desc in required_modules:
67 exec('import %s' % modname)
70 print 'Error: python module %s (%s) is required' % (modname, desc)
76 for (dp, dn, names) in os.walk(opj('bin', 'addons')):
77 for dirpath, dirnames, filenames in os.walk(dp):
78 if '__init__.py' in filenames:
79 modname = dirpath.replace(os.path.sep, '.')
80 yield modname.replace('bin', 'openerp-server', 1)
83 '''Build list of data files to be installed'''
87 for (dp,dn,names) in os.walk('addons'):
88 files.append((dp, map(lambda x: opj('bin', dp, x), names)))
89 for (dp,dn,names) in os.walk('i18n'):
90 files.append((dp, map(lambda x: opj('bin', dp, x), names)))
92 for (dp,dn,names) in os.walk('doc'):
93 files.append((dp, map(lambda x: opj(dp, x), names)))
94 files.append(('.', [('bin/import_xml.rng')]))
96 man_directory = opj('share', 'man')
97 files.append((opj(man_directory, 'man1'), ['man/openerp-server.1']))
98 files.append((opj(man_directory, 'man5'), ['man/openerp_serverrc.5']))
100 doc_directory = opj('share', 'doc', 'openerp-server-%s' % version)
101 files.append((doc_directory, [f for f in glob.glob('doc/*') if os.path.isfile(f)]))
102 files.append((opj(doc_directory, 'migrate', '3.3.0-3.4.0'), [f for f in glob.glob('doc/migrate/3.3.0-3.4.0/*') if os.path.isfile(f)]))
103 files.append((opj(doc_directory, 'migrate', '3.4.0-4.0.0'), [f for f in glob.glob('doc/migrate/3.4.0-4.0.0/*') if os.path.isfile(f)]))
105 openerp_site_packages = opj('lib', 'python%s' % py_short_version, 'site-packages', 'openerp-server')
107 files.append((opj(openerp_site_packages, 'i18n'), glob.glob('bin/i18n/*')))
108 files.append((opj(openerp_site_packages, 'addons', 'custom'),
109 glob.glob('bin/addons/custom/*xml') + glob.glob('bin/addons/custom/*rml') + glob.glob('bin/addons/custom/*xsl')))
111 files.append((openerp_site_packages, [('bin/import_xml.rng')]))
113 for addon in find_addons():
114 add_path = addon.replace('.', os.path.sep).replace('openerp-server', 'bin', 1)
115 addon_path = opj('lib', 'python%s' % py_short_version, 'site-packages', add_path.replace('bin', 'openerp-server', 1))
120 glob.glob(opj(add_path, '*xml')) +
121 glob.glob(opj(add_path, '*csv')) +
122 glob.glob(opj(add_path, '*sql'))
125 opj(addon_path, 'data'),
126 glob.glob(opj(add_path, 'data', '*xml'))
129 opj(addon_path, 'report'),
130 glob.glob(opj(add_path, 'report', '*xml')) +
131 glob.glob(opj(add_path, 'report', '*rml')) +
132 glob.glob(opj(add_path, 'report', '*sxw')) +
133 glob.glob(opj(add_path, 'report', '*xsl'))
136 opj(addon_path, 'security'),
137 glob.glob(opj(add_path, 'security', '*csv')) +
138 glob.glob(opj(add_path, 'security', '*xml'))
141 opj(addon_path, 'rng'),
142 glob.glob(opj(add_path, 'rng', '*rng'))
145 files.extend(pathfiles)
150 # create startup script
153 cd %s/lib/python%s/site-packages/openerp-server\n\
154 exec %s ./openerp-server.py $@\n" % (sys.prefix, py_short_version, sys.executable)
156 f = open('openerp-server', 'w')
157 f.write(start_script)
164 "packages": ["lxml", "lxml.builder", "lxml._elementpath", "lxml.etree",
165 "lxml.objectify", "decimal", "xml", "xml.dom", "xml.xpath",
166 "encodings","mx.DateTime","wizard","pychart","PIL", "pyparsing",
167 "pydot","asyncore","asynchat", "reportlab", "vobject", "HTMLParser"],
168 "excludes" : ["Tkconstants","Tkinter","tcl"],
174 description = description,
175 long_description = long_desc,
178 author_email = author_email,
179 classifiers = filter(None, classifiers.split("\n")),
181 data_files = data_files(),
182 scripts = ['openerp-server'],
183 packages = ['openerp-server',
184 'openerp-server.addons',
186 'openerp-server.osv',
187 'openerp-server.ssl',
188 'openerp-server.service',
189 'openerp-server.tools',
190 'openerp-server.report',
191 'openerp-server.report.printscreen',
192 'openerp-server.report.render',
193 'openerp-server.report.render.rml2pdf',
194 'openerp-server.report.render.rml2html',
195 'openerp-server.wizard',
196 'openerp-server.workflow'] + \
198 package_dir = {'openerp-server': 'bin'},
200 { "script" : "bin\\openerp-server.py",
202 (1,"pixmaps\\openerp-icon.ico")
210 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: