#!/usr/bin/env python
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import imp
import sys
import os
-from os.path import join, isfile
+from os.path import join, isfile, basename
import glob
from distutils.core import setup, Command
required_modules = [
('lxml', 'lxml module: pythonic libxml2 and libxslt bindings'),
- ('mx', "egenix's mx library for its extended DateTime module"),
+ ('mako', 'Mako template engine'),
+ ('dateutil', "Extensions to the standard datetime module"),
('psycopg2', 'PostgreSQL module'),
('pychart', 'pychart module'),
('pydot', 'pydot module'),
sys.exit(1)
def find_addons():
- for (dp, dn, names) in os.walk(join('bin', 'addons')):
+ for root, _, names in os.walk(join('bin', 'addons')):
if '__terp__.py' in names:
- modname = os.path.basename(dp)
- yield (modname, dp)
+ yield basename(root), root
#look for extra modules
try:
- empath = os.getenv('EXTRA_MODULES_PATH','../addons/')
- f = open(join(empath,'server_modules.list'),'r')
- # print 'Getting modules from:' , join(empath,'server_modules.list')
- mods = f.readlines()
- for mname in mods:
+ 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) )
+ 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:
'''Build list of data files to be installed'''
files = []
if os.name == 'nt':
- for (dp,dn,names) in os.walk(join('bin','addons')):
- files.append((dp, map(lambda x: join(dp, x), names)))
- for (dp,dn,names) in os.walk('doc'):
- files.append((dp, map(lambda x: join(dp, x), names)))
+ for root, _, names in os.walk(join('bin','addons')):
+ files.append((root, [join(root, name) for name in names]))
+ for root, _, names in os.walk('doc'):
+ files.append((root, [join(root, name) for name in names]))
files.append(('.', [join('bin', 'import_xml.rng'),
join('bin', 'server.pkey'),
join('bin', 'server.cert')]))
join('python25-compat','SimpleXMLRPCServer.py'),
join('python25-compat','SocketServer.py')]))
- for (addonname, add_path) in find_addons():
+ for addonname, add_path in find_addons():
addon_path = join('lib', 'python%s' % py_short_version, 'site-packages', 'openerp-server','addons', addonname)
- pathfiles = []
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:
res = os.path.normpath(join(addon_path, root.replace(join(add_path), '.')))
- pathfiles.extend(((res, map(lambda fil: join(root, fil), innerfiles)),))
- files.extend(pathfiles)
+ files.extend(((res, map(lambda fil: join(root, fil),
+ innerfiles)),))
- # for tup in files:
- # print "Files:", tup[0], tup[1]
return files
-if not os.getenv('NO_CHECK_MODULES',False) :
+if not os.getenv('NO_CHECK_MODULES') :
check_modules()
f = file('openerp-server','w')
-start_script = """#!/bin/sh\necho "OpenERP Setup - The content of this file is generated at the install stage\n" """
-f.write(start_script)
+f.write("""#!/bin/sh
+echo "Error: the content of this file should have been replaced during "
+echo "installation\n"
+exit 1
+""")
f.close()
def find_package_dirs():
- res = {}
- for (mod, path) in find_addons():
- res ['openerp-server.addons.'+ mod ] = path
- res ['openerp-server'] = 'bin'
- return res
+ package_dirs = {'openerp-server': 'bin'}
+ for mod, path in find_addons():
+ package_dirs['openerp-server.addons.' + mod] = path
+ return package_dirs
class openerp_server_install(install):
def run(self):
# create startup script
- start_script = "#!/bin/sh\ncd %s\nexec %s ./openerp-server.py $@\n" % (join(self.install_libbase, "openerp-server"), sys.executable)
+ start_script = "#!/bin/sh\ncd %s\nexec %s ./openerp-server.py $@\n"\
+ % (join(self.install_libbase, "openerp-server"), sys.executable)
# write script
f = open('openerp-server', 'w')
f.write(start_script)
"optimize": 2,
"dist_dir": 'dist',
"packages": ["lxml", "lxml.builder", "lxml._elementpath", "lxml.etree",
- "lxml.objectify", "decimal", "xml", "xml.dom", "xml.xpath",
- "encodings","mx.DateTime","wizard","pychart","PIL", "pyparsing",
- "pydot","asyncore","asynchat", "reportlab", "vobject",
+ "lxml.objectify", "decimal", "xml", "encodings",
+ "dateutil", "wizard", "pychart", "PIL", "pyparsing",
+ "pydot", "asyncore","asynchat", "reportlab", "vobject",
"HTMLParser", "select"],
"excludes" : ["Tkconstants","Tkinter","tcl"],
}
packages = ['openerp-server',
'openerp-server.addons',
'openerp-server.ir',
- 'openerp-server.mako',
'openerp-server.osv',
'openerp-server.pychart',
+ 'openerp-server.pychart.afm',
'openerp-server.report',
'openerp-server.report.printscreen',
'openerp-server.report.pyPdf',
'openerp-server.tools',
'openerp-server.wizard',
'openerp-server.workflow'] + \
- list(map( lambda (a, p): 'openerp-server.addons.'+ a ,find_addons())),
+ [('openerp-server.addons.' + name)
+ for name, _ in find_addons()],
package_dir = find_package_dirs(),
- console = [ { "script" : "bin\\openerp-server.py", "icon_resources" : [ (1,"pixmaps\\openerp-icon.ico") ] } ],
+ console = [{"script": join("bin", "openerp-server.py"),
+ "icon_resources": [(1,join("pixmaps","openerp-icon.ico"))]
+ }],
options = options,
)