[Subversion] / PEAK / setup.py  

Diff of /PEAK/setup.py

Parent Directory | Revision Log

version 501, Sat Aug 17 21:32:48 2002 UTC version 2151, Thu May 25 15:45:55 2006 UTC
Line 1 
Line 1 
 #!/usr/bin/env python  #!/usr/bin/env python
   
 """Distutils setup file"""  """Distutils setup file"""
   
 from distutils.core import setup, Command  import sys, os, ez_setup
 from distutils.command.install_data import install_data  ez_setup.use_setuptools()
 from distutils.command.sdist import sdist as old_sdist  
 import sys  
   
 class install_data(install_data):  
   
     """Variant of 'install_data' that installs data to module directories"""  
   
     def finalize_options (self):  
         self.set_undefined_options('install',  
                                    ('install_purelib', 'install_dir'),  
                                    ('root', 'root'),  
                                    ('force', 'force'),  
                                   )  
   
 class sdist(old_sdist):  
   
     """Variant of 'sdist' that (re)builds the documentation first"""  
   
     def run(self):  
   
         # Build docs before source distribution  
         self.run_command('happy')  
   
         # Run the standard sdist command  
         old_sdist.run(self)  
   
   
   
   
   
   
   from setuptools import setup, Extension, Feature, find_packages
   
   # Metadata
   PACKAGE_NAME = "PEAK"
   PACKAGE_VERSION = "0.5a4"
   HAPPYDOC_IGNORE = [
       '-i','old', '-i','tests', '-i','setup', '-i','examples',
   ]
   
   
   packages = find_packages('src')
   
 class test(Command):  extensions = [
       Extension("peak.util.pyexpat", [
           "src/peak/util/pyexpat.c",
           "src/expat/xmlparse.c", "src/expat/xmltok.c", #"src/expat/xmltok_ns.c",
           "src/expat/xmlrole.c",], #"src/expat/xmltok_impl.c"],
           include_dirs=["src/expat"],
           define_macros=[('XML_STATIC',1),('HAVE_MEMMOVE',1)]   # XXX
       ),
       Extension(
           "peak.binding._once", [
               "src/peak/binding/_once.pyx", "src/peak/binding/getdict.c"
           ]
       ),
       Extension("peak.util.buffer_gap", ["src/peak/util/buffer_gap.pyx"]),
       Extension("peak.util._Code", ["src/peak/util/_Code.pyx"]),
       Extension(
           "peak.persistence._persistence", ["src/peak/persistence/persistence.c"]
       ),
   ]
   
     """Command to run unit tests after installation"""  
   
     description = "Run unit tests after installation"  
   
     user_options = [('test-module=','m','Test module (default=peak.tests)'),]  
   
     def initialize_options(self):  have_uuidgen = False
         self.test_module = None  
   
     def finalize_options(self):  if os.name=='posix' and hasattr(os, 'uname'):
   
         if self.test_module is None:      un = os.uname()
             self.test_module = 'peak.tests'  
   
         self.test_args = [self.test_module+'.test_suite']      if un[0] == 'FreeBSD' and int(un[2].split('.')[0]) >= 5:
           have_uuidgen = True
   
         if self.verbose:      elif un[0] == 'NetBSD' and int(un[2].split('.')[0]) >= 2:
             self.test_args.insert(0,'--verbose')          have_uuidgen = True
   
     def run(self):      elif un[0] == 'NetBSD' and un[2].startswith('1.6Z'):
           # XXX for development versions before 2.x where uuidgen
           # is present -- this should be removed at some point
           try:
               if len(un[2]) > 4:
                   if ord(un[2][4]) >= ord('I'):
                       if os.path.exists('/lib/libc.so.12'):
                           l = os.listdir('/lib')
                           l = [x for x in l if x.startswith('libc.so.12.')]
                           l = [int(x.split('.')[-1]) for x in l]
                           l.sort(); l.reverse()
                           if l[0] >= 111:
                               have_uuidgen = True
           except:
               pass
   
         # Install before testing  
         self.run_command('install')  
   
         if not self.dry_run:  
             from unittest import main  
             main(None, None, sys.argv[:1]+self.test_args)  
   
   
   
Line 80 
Line 80 
   
   
   
 class happy(Command):  execfile('src/setup/common.py')
   
     """Command to generate documentation using HappyDoc  features = {
       'tests': Feature(
           "test modules", standard = True,
           remove = [p for p in packages if p.endswith('.tests')]
       ),
       'metamodels': Feature(
           "MOF/UML metamodels", standard = True, remove=['peak.metamodels']
       ),
       'uuidgen': Feature(
           "UUID generation via BSD system libraries",
           available = have_uuidgen, standard = have_uuidgen,
           optional = have_uuidgen,
           ext_modules = [
               Extension("peak.util._uuidgen", ["src/peak/util/_uuidgen.c"]),
           ]
       ),
       'pyexpat-plus': Feature(
           "Backport pyexpat features from Python 2.4",
           standard=sys.version_info < (2,4), optional = False,
           remove = ["peak.util.pyexpat"]
       ),
   }
   
         I should probably make this more general, and contribute it to either  ALL_EXTS = [
         HappyDoc or the distutils, but this does the trick for PEAK for now...      '*.ini', '*.html', '*.conf', '*.xml', '*.pwt', '*.dtd', '*.txt',
     """  ]
   
     description = "Generate docs using happydoc"  
   
     user_options = []  
   
   
     def initialize_options(self):  
         self.happy_options = None  
         self.doc_output_path = None  
   
   
     def finalize_options(self):  
   
         if self.doc_output_path is None:  
             self.doc_output_path = 'docs/html/reference'  
   
         if self.happy_options is None:  
             self.happy_options = [  
                 '-t', 'PEAK Reference', '-d', self.doc_output_path,  
                 '-i', 'examples', '-i', 'old', '-i', 'tests', '.',  
             ]  
             if not self.verbose: self.happy_options.insert(0,'-q')  
   
     def run(self):  
         from distutils.dir_util import remove_tree, mkpath  
         from happydoclib import HappyDoc  
   
         mkpath(self.doc_output_path, 0755, self.verbose, self.dry_run)  
         remove_tree(self.doc_output_path, self.verbose, self.dry_run)  
   
         if not self.dry_run:  
             HappyDoc(self.happy_options).run()  
   
   
 setup(  setup(
       name=PACKAGE_NAME,
       version=PACKAGE_VERSION,
   
     name="PEAK",  
     version="0.2pre1",  
     description="The Python Enterprise Application Kit",      description="The Python Enterprise Application Kit",
   
     author="Phillip J. Eby",      author="Phillip J. Eby",
     author_email="transwarp@eby-sarna.com",      author_email="peak@eby-sarna.com",
       url="http://peak.telecommunity.com/",
     url="http://telecommunity.com/TransWarp/",      download_url="http://peak.telecommunity.com/snapshots/",
       license="PSF or ZPL",
       platforms=['UNIX','Windows'],
       package_dir = {'':'src'},
       packages    = packages,
       cmdclass = SETUP_COMMANDS,
   
     packages=[      install_requires = [
         'peak', 'peak.api', 'peak.binding', 'peak.model', 'peak.metamodels',          'RuleDispatch >= 0.5a0dev', 'PyProtocols  >= 1.0a0dev-r2070',
         'peak.metamodels.mof', 'peak.metamodels.uml', 'peak.metamodels.xmi',          'Importing    >= 1.9',      'SymbolType   >= 1.0',
         'peak.naming', 'peak.naming.factories', 'peak.util', 'peak.running',          'wsgiref      >= 0.0.1dev', 'ZConfig      >  2.0',
         'peak.config', 'peak.storage',      ],
   
         'peak.binding.tests',      extras_require = {
         'peak.metamodels.tests', 'peak.util.tests', 'peak.tests',          'FastCGI': ['fcgiapp >= 1.4'],
       },
   
         'Interface', 'Interface.Common', 'Interface.tests',      package_data = {
     ],          '': ALL_EXTS,
           'peak.metamodels': ['*.asdl']
       },
   
     package_dir = {'':'src'},      features = features,
       test_suite = 'peak.tests.test_suite',
       ext_modules = extensions,
   
     cmdclass = {      entry_points = {
         'install_data': install_data, 'sdist': sdist, 'happy': happy,          "console_scripts":["peak = peak.running.commands:__main__"]
         'test': test,  
     },      },
       zip_safe=True,
   
     data_files = [  
         ('peak/metamodels/tests', ['src/peak/metamodels/tests/MetaMeta.xml']),  
     ],      long_description = """\
   PEAK is an application kit, and applications are made from components.
   PEAK provides you with a component architecture, component infrastructure,
   and various general-purpose components and component frameworks for
   building applications.  As with J2EE, the idea is to let you stop
   reinventing architectural and infrastructure wheels, so you can put more
   time into your actual application.
   
   Development version: svn://svn.eby-sarna.com/svnroot/PEAK#egg=PEAK-dev
   """,
   
       keywords = "Enterprise,SQL,LDAP,UML,XMI,JNDI,persistence,AOP,FastCGI,MOF,event-driven,twisted,web",
   
       classifiers = """
       Development Status :: 3 - Alpha
       Development Status :: 4 - Beta
       Environment :: Console
       Environment :: No Input/Output (Daemon)
       Environment :: Web Environment
       Environment :: Win32 (MS Windows)
       Intended Audience :: Developers
       License :: OSI Approved :: BSD License
       License :: OSI Approved :: Python Software Foundation License
       License :: OSI Approved :: Zope Public License
       Natural Language :: English
       Operating System :: Microsoft :: Windows
       Operating System :: POSIX
       Programming Language :: C
       Programming Language :: Python
       Topic :: Database :: Front-Ends
       Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries
       Topic :: Office/Business
       Topic :: Software Development :: Code Generators
       Topic :: Software Development :: Libraries :: Application Frameworks
       Topic :: Software Development :: Libraries :: Python Modules
       Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP
       Topic :: Text Processing :: Markup :: XML""".strip().splitlines()
 )  )
   
   
   


Generate output suitable for use with a patch program
Legend:
Removed from v.501  
changed lines
  Added in v.2151

cvs-admin@eby-sarna.com

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help