259 lines
8.9 KiB
Python
259 lines
8.9 KiB
Python
#Copyright ReportLab Europe Ltd. 2000-2004
|
|
#see license.txt for license details
|
|
#history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/setup.py
|
|
__version__=''' $Id: setup.py 2511 2005-01-14 15:42:12Z rgbecker $ '''
|
|
|
|
import os, sys, distutils, glob
|
|
from distutils.core import setup, Extension
|
|
|
|
# from Zope - App.Common.package_home
|
|
|
|
def package_home(globals_dict):
|
|
__name__=globals_dict['__name__']
|
|
m=sys.modules[__name__]
|
|
r=os.path.split(m.__path__[0])[0]
|
|
return r
|
|
|
|
pjoin = os.path.join
|
|
abspath = os.path.abspath
|
|
isfile = os.path.isfile
|
|
isdir = os.path.isfile
|
|
dirname = os.path.dirname
|
|
package_path = pjoin(package_home(distutils.__dict__), 'site-packages', 'reportlab')
|
|
|
|
def get_version():
|
|
#determine Version
|
|
if __name__=='__main__':
|
|
HERE=os.path.dirname(sys.argv[0])
|
|
else:
|
|
HERE=os.path.dirname(__file__)
|
|
|
|
#first try source
|
|
FN = pjoin(HERE,'__init__')
|
|
try:
|
|
for l in open(pjoin(FN+'.py'),'r').readlines():
|
|
if l.startswith('Version'):
|
|
exec l.strip()
|
|
return Version
|
|
except:
|
|
pass
|
|
|
|
#don't have source, try import
|
|
import imp
|
|
for desc in ('.pyc', 'rb', 2), ('.pyo', 'rb', 2):
|
|
try:
|
|
fn = FN+desc[0]
|
|
f = open(fn,desc[1])
|
|
m = imp.load_module('reportlab',f,fn,desc)
|
|
return m.Version
|
|
except:
|
|
pass
|
|
raise ValueError('Cannot determine ReportLab Version')
|
|
|
|
def getVersionFromCCode(fn):
|
|
import re
|
|
tag = re.search(r'^#define\s+VERSION\s+"([^"]*)"',open(fn,'r').read(),re.M)
|
|
return tag and tag.group(1) or ''
|
|
|
|
def _rl_accel_dir_info(dir):
|
|
import stat
|
|
fn = pjoin(dir,'_rl_accel')
|
|
return getVersionFromCCode(fn),os.stat(fn)[stat.ST_MTIME]
|
|
|
|
def _cmp_rl_accel_dirs(a,b):
|
|
return cmp(_rl_accel_dir_info(b),__rl_accel_dir_info(a))
|
|
|
|
def _find_rl_accel():
|
|
'''locate where the accelerator code lives'''
|
|
_ = []
|
|
for x in [
|
|
'./rl_addons/rl_accel',
|
|
'../rl_addons/rl_accel',
|
|
'../../rl_addons/rl_accel',
|
|
'./rl_accel',
|
|
'../rl_accel',
|
|
'../../rl_accel',
|
|
'./lib'] \
|
|
+ glob.glob('./rl_accel-*/rl_accel')\
|
|
+ glob.glob('../rl_accel-*/rl_accel') \
|
|
+ glob.glob('../../rl_accel-*/rl_accel') \
|
|
:
|
|
fn = pjoin(x,'_rl_accel.c')
|
|
if isfile(pjoin(x,'_rl_accel.c')):
|
|
_.append(x)
|
|
if _:
|
|
if len(_)>1: _.sort(_cmp_rl_accel_dirs)
|
|
return abspath(_[0])
|
|
return None
|
|
|
|
_FILES= [
|
|
'README',
|
|
'changes',
|
|
'license.txt',
|
|
|
|
'demos/colors/colortest.py',
|
|
'demos/gadflypaper/00readme.txt',
|
|
'demos/gadflypaper/gfe.py',
|
|
'demos/odyssey/00readme.txt',
|
|
'demos/odyssey/dodyssey.py',
|
|
'demos/odyssey/fodyssey.py',
|
|
'demos/odyssey/odyssey.py',
|
|
'demos/odyssey/odyssey.txt',
|
|
'demos/rlzope/readme.txt',
|
|
'demos/rlzope/rlzope.py',
|
|
'demos/stdfonts/00readme.txt',
|
|
'demos/stdfonts/stdfonts.py',
|
|
'demos/tests/testdemos.py',
|
|
|
|
'docs/00readme.txt',
|
|
'docs/genAll.py',
|
|
'docs/graphguide/ch1_intro.py',
|
|
'docs/graphguide/ch2_concepts.py',
|
|
'docs/graphguide/ch3_shapes.py',
|
|
'docs/graphguide/ch4_widgets.py',
|
|
'docs/graphguide/ch5_charts.py',
|
|
'docs/graphguide/gengraphguide.py',
|
|
'docs/images/Edit_Prefs.gif',
|
|
'docs/images/Python_21.gif',
|
|
'docs/images/Python_21_HINT.gif',
|
|
'docs/images/fileExchange.gif',
|
|
'docs/images/jpn.gif',
|
|
'docs/images/jpnchars.jpg',
|
|
'docs/images/lj8100.jpg',
|
|
'docs/images/replogo.a85',
|
|
'docs/images/replogo.gif',
|
|
'docs/reference/build.bat',
|
|
'docs/reference/genreference.py',
|
|
'docs/reference/reference.yml',
|
|
'docs/userguide/app_demos.py',
|
|
'docs/userguide/ch1_intro.py',
|
|
'docs/userguide/ch2_graphics.py',
|
|
'docs/userguide/ch2a_fonts.py',
|
|
'docs/userguide/ch3_pdffeatures.py',
|
|
'docs/userguide/ch4_platypus_concepts.py',
|
|
'docs/userguide/ch5_paragraphs.py',
|
|
'docs/userguide/ch6_tables.py',
|
|
'docs/userguide/ch7_custom.py',
|
|
'docs/userguide/ch9_future.py',
|
|
'docs/userguide/genuserguide.py',
|
|
'docs/userguide/testfile.txt',
|
|
|
|
'extensions/README',
|
|
|
|
'fonts/00readme.txt',
|
|
'fonts/LeERC___.AFM',
|
|
'fonts/LeERC___.PFB',
|
|
'fonts/luxiserif.ttf',
|
|
'fonts/luxiserif_license.txt',
|
|
'fonts/rina.ttf',
|
|
'fonts/rina_license.txt',
|
|
|
|
'test/pythonpowered.gif',
|
|
|
|
'tools/README',
|
|
'tools/docco/README',
|
|
'tools/py2pdf/README',
|
|
'tools/py2pdf/demo-config.txt',
|
|
'tools/py2pdf/vertpython.jpg',
|
|
'tools/pythonpoint/README',
|
|
'tools/pythonpoint/pythonpoint.dtd',
|
|
'tools/pythonpoint/demos/htu.xml',
|
|
'tools/pythonpoint/demos/LeERC___.AFM',
|
|
'tools/pythonpoint/demos/LeERC___.PFB',
|
|
'tools/pythonpoint/demos/leftlogo.a85',
|
|
'tools/pythonpoint/demos/leftlogo.gif',
|
|
'tools/pythonpoint/demos/lj8100.jpg',
|
|
'tools/pythonpoint/demos/monterey.xml',
|
|
'tools/pythonpoint/demos/outline.gif',
|
|
'tools/pythonpoint/demos/pplogo.gif',
|
|
'tools/pythonpoint/demos/python.gif',
|
|
'tools/pythonpoint/demos/pythonpoint.xml',
|
|
'tools/pythonpoint/demos/spectrum.png',
|
|
'tools/pythonpoint/demos/vertpython.gif',
|
|
]
|
|
# why oh why don't most setup scripts have a script handler?
|
|
# if you don't have one, you can't edit in Pythonwin
|
|
def run():
|
|
RL_ACCEL = _find_rl_accel()
|
|
LIBS = []
|
|
DATA_FILES = {}
|
|
if not RL_ACCEL:
|
|
EXT_MODULES = []
|
|
print '***************************************************'
|
|
print '*No rl_accel code found, you can obtain it at *'
|
|
print '*http://www.reportlab.org/downloads.html#_rl_accel*'
|
|
print '***************************************************'
|
|
else:
|
|
fn = pjoin(RL_ACCEL,'lib','hyphen.mashed')
|
|
if isfile(fn): DATA_FILES[pjoin(package_path, 'lib')] = [fn]
|
|
EXT_MODULES = [
|
|
Extension( '_rl_accel',
|
|
[pjoin(RL_ACCEL,'_rl_accel.c')],
|
|
include_dirs=[],
|
|
define_macros=[],
|
|
library_dirs=[],
|
|
libraries=LIBS, # libraries to link against
|
|
),
|
|
Extension( 'sgmlop',
|
|
[pjoin(RL_ACCEL,'sgmlop.c')],
|
|
include_dirs=[],
|
|
define_macros=[],
|
|
library_dirs=[],
|
|
libraries=LIBS, # libraries to link against
|
|
),
|
|
Extension( 'pyHnj',
|
|
[pjoin(RL_ACCEL,'pyHnjmodule.c'),
|
|
pjoin(RL_ACCEL,'hyphen.c'),
|
|
pjoin(RL_ACCEL,'hnjalloc.c')],
|
|
include_dirs=[],
|
|
define_macros=[],
|
|
library_dirs=[],
|
|
libraries=LIBS, # libraries to link against
|
|
),
|
|
]
|
|
for fn in _FILES:
|
|
fn = os.sep.join(fn.split('/'))
|
|
if isfile(fn):
|
|
tn = dirname(fn)
|
|
tn = tn and pjoin(package_path,tn) or package_path
|
|
DATA_FILES.setdefault(tn,[]).append(fn)
|
|
setup(
|
|
name="Reportlab",
|
|
version=get_version(),
|
|
license="BSD license (see license.txt for details), Copyright (c) 2000-2003, ReportLab Inc.",
|
|
description="The Reportlab Toolkit",
|
|
long_description="""The ReportLab Toolkit.
|
|
An Open Source Python library for generating PDFs and graphics.
|
|
""",
|
|
|
|
author="Robinson, Watters, Becker, Precedo and many more...",
|
|
author_email="info@reportlab.com",
|
|
url="http://www.reportlab.com/",
|
|
|
|
package_dir = {'reportlab': '.'},
|
|
|
|
packages=[ # include anything with an __init__
|
|
'reportlab',
|
|
'reportlab.extensions',
|
|
'reportlab.graphics.charts',
|
|
'reportlab.graphics.samples',
|
|
'reportlab.graphics.widgets',
|
|
'reportlab.graphics',
|
|
'reportlab.lib',
|
|
'reportlab.pdfbase',
|
|
'reportlab.pdfgen',
|
|
'reportlab.platypus',
|
|
'reportlab.test',
|
|
'reportlab.tools.docco',
|
|
'reportlab.tools.py2pdf',
|
|
'reportlab.tools.pythonpoint.styles',
|
|
'reportlab.tools.pythonpoint',
|
|
'reportlab.tools',
|
|
],
|
|
data_files = DATA_FILES.items(),
|
|
ext_modules = EXT_MODULES,
|
|
)
|
|
|
|
if __name__=='__main__':
|
|
run()
|