c2589f11850d66d29dbda17943aec83c9f6bfe36
1 #! /usr/bin/env python
2 #
3 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
4 # This module is free software, and you may redistribute it and/or modify
5 # under the same terms as Python, so long as this copyright message and
6 # disclaimer are retained in their original form.
7 #
8 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
9 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
10 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
11 # POSSIBILITY OF SUCH DAMAGE.
12 #
13 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
14 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
15 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
16 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
17 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
18 #
21 from roundup.dist.command.build_doc import build_doc
22 from roundup.dist.command.build_scripts import build_scripts
23 from roundup.dist.command.build_py import build_py
24 from roundup.dist.command.build import build, list_message_files
25 from roundup.dist.command.bdist_rpm import bdist_rpm
26 from distutils.core import setup
28 import sys, os
29 from glob import glob
31 # patch distutils if it can't cope with the "classifiers" keyword
32 from distutils.dist import DistributionMetadata
33 if not hasattr(DistributionMetadata, 'classifiers'):
34 DistributionMetadata.classifiers = None
35 DistributionMetadata.download_url = None
37 def include(d, e):
38 """Generate a pair of (directory, file-list) for installation.
40 'd' -- A directory
42 'e' -- A glob pattern"""
44 return (d, [f for f in glob('%s/%s'%(d, e)) if os.path.isfile(f)])
46 def scriptname(path):
47 """ Helper for building a list of script names from a list of
48 module files.
49 """
50 script = os.path.splitext(os.path.basename(path))[0]
51 script = script.replace('_', '-')
52 return script
54 def main():
55 # template munching
56 packages = [
57 'roundup',
58 'roundup.anypy',
59 'roundup.cgi',
60 'roundup.cgi.PageTemplates',
61 'roundup.cgi.TAL',
62 'roundup.cgi.ZTUtils',
63 'roundup.backends',
64 'roundup.scripts',
65 ]
66 py_modules = ['roundup.demo',]
68 # build list of scripts from their implementation modules
69 scripts = [scriptname(f) for f in glob('roundup/scripts/[!_]*.py')]
71 data_files = [
72 ('share/roundup/cgi-bin', ['frontends/roundup.cgi']),
73 ]
74 # install man pages on POSIX platforms
75 if os.name == 'posix':
76 data_files.append(include('share/man/man1', '*'))
78 # add the templates to the data files lists
79 from roundup.init import listTemplates
80 templates = [t['path']
81 for t in listTemplates('share/roundup/templates').values()]
82 for tdir in templates:
83 for idir in '. detectors extensions html'.split():
84 data_files.append(include(os.path.join(tdir, idir), '*'))
86 # add message files
87 for (_dist_file, _mo_file) in list_message_files():
88 data_files.append((os.path.dirname(_mo_file),
89 [os.path.join("build", _mo_file)]))
91 # add docs
92 data_files.append(include('share/doc/roundup/html', '*'))
94 # perform the setup action
95 from roundup import __version__
97 setup(name='roundup',
98 version=__version__,
99 author="Richard Jones",
100 author_email="richard@users.sourceforge.net",
101 description="A simple-to-use and -install issue-tracking system"
102 " with command-line, web and e-mail interfaces. Highly"
103 " customisable.",
104 long_description='''This version of Roundup fixes some bugs:
106 - Minor update of doc/developers.txt to point to the new resources
107 on www.roundup-tracker.org (Bernhard Reiter)
108 - Small CSS improvements regaring the search box (thanks Thomas Arendsan Hein)
109 (issue 2550589)
110 - Indexers behaviour made more consistent regarding length of indexed words
111 and stopwords (thanks Thomas Arendsen Hein, Bernhard Reiter)(issue 2550584)
112 - fixed typos in the installation instructions (thanks Thomas Arendsen Hein)
113 (issue 2550573)
114 - New config option csv_field_size: Pythons csv module (which is used
115 for export/import) has a new field size limit starting with python2.5.
116 We now issue a warning during export if the limit is too small and use
117 the csv_field_size configuration during import to set the limit for
118 the csv module.
119 - Small fix for CGI-handling of XMLRPC requests for python2.4, this
120 worked only for 2.5 and beyond due to a change in the xmlrpc interface
121 in python
122 - Document filter method of xmlrpc interface
123 - Fix interaction of SSL and XMLRPC, now XMLRPC works with SSL
125 If you're upgrading from an older version of Roundup you *must* follow
126 the "Software Upgrade" guidelines given in the maintenance documentation.
128 Roundup requires python 2.3 or later (but not 3+) for correct operation.
130 To give Roundup a try, just download (see below), unpack and run::
132 roundup-demo
134 Documentation is available at the website:
135 http://roundup.sourceforge.net/
136 Mailing lists - the place to ask questions:
137 http://sourceforge.net/mail/?group_id=31577
139 About Roundup
140 =============
142 Roundup is a simple-to-use and -install issue-tracking system with
143 command-line, web and e-mail interfaces. It is based on the winning design
144 from Ka-Ping Yee in the Software Carpentry "Track" design competition.
146 Note: Ping is not responsible for this project. The contact for this
147 project is richard@users.sourceforge.net.
149 Roundup manages a number of issues (with flexible properties such as
150 "description", "priority", and so on) and provides the ability to:
152 (a) submit new issues,
153 (b) find and edit existing issues, and
154 (c) discuss issues with other participants.
156 The system will facilitate communication among the participants by managing
157 discussions and notifying interested parties when issues are edited. One of
158 the major design goals for Roundup that it be simple to get going. Roundup
159 is therefore usable "out of the box" with any python 2.3+ (but not 3+)
160 installation. It doesn't even need to be "installed" to be operational,
161 though an install script is provided.
163 It comes with two issue tracker templates (a classic bug/feature tracker and
164 a minimal skeleton) and five database back-ends (anydbm, sqlite, metakit,
165 mysql and postgresql).
166 ''',
167 url='http://www.roundup-tracker.org',
168 download_url='http://pypi.python.org/pypi/roundup',
169 classifiers=['Development Status :: 5 - Production/Stable',
170 'Environment :: Console',
171 'Environment :: Web Environment',
172 'Intended Audience :: End Users/Desktop',
173 'Intended Audience :: Developers',
174 'Intended Audience :: System Administrators',
175 'License :: OSI Approved :: Python Software Foundation License',
176 'Operating System :: MacOS :: MacOS X',
177 'Operating System :: Microsoft :: Windows',
178 'Operating System :: POSIX',
179 'Programming Language :: Python',
180 'Topic :: Communications :: Email',
181 'Topic :: Office/Business',
182 'Topic :: Software Development :: Bug Tracking',
183 ],
185 # Override certain command classes with our own ones
186 cmdclass= {'build_doc': build_doc,
187 'build_scripts': build_scripts,
188 'build_py': build_py,
189 'build': build,
190 'bdist_rpm': bdist_rpm,
191 },
192 packages=packages,
193 py_modules=py_modules,
194 scripts=scripts,
195 data_files=data_files)
197 if __name__ == '__main__':
198 main()
200 # vim: set filetype=python sts=4 sw=4 et si :