X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=setup.py;h=9d08e5d161fcccc77a150ad46ec54fbb19e61b11;hb=b680e6133ab5b2be7da352e29dbbb79ac2627e0a;hp=bba05f434b8291ef9f15588bde82458d0efa0cfa;hpb=69c8cf55089f37b96bedb5504c04d3c7946ee1da;p=roundup.git diff --git a/setup.py b/setup.py index bba05f4..9d08e5d 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: setup.py,v 1.49 2003-04-19 05:03:54 richard Exp $ +# $Id: setup.py,v 1.58 2003-11-13 05:56:48 richard Exp $ from distutils.core import setup, Extension from distutils.util import get_platform @@ -26,8 +26,8 @@ import sys, os, string from glob import glob # patch distutils if it can't cope with the "classifiers" keyword -if sys.version < '2.2.3': - from distutils.dist import DistributionMetadata +from distutils.dist import DistributionMetadata +if not hasattr(DistributionMetadata, 'classifiers'): DistributionMetadata.classifiers = None DistributionMetadata.download_url = None @@ -77,10 +77,22 @@ class build_scripts_create(build_scripts): module = os.path.splitext(os.path.basename(script))[0] module = string.translate(module, to_module) + cmdopt=self.distribution.command_options + if (cmdopt.has_key('install') and + cmdopt['install'].has_key('prefix')): + prefix = cmdopt['install']['prefix'][1] + version = '%d.%d'%sys.version_info[:2] + prefix = ''' +import sys +sys.path.insert(1, "%s/lib/python%s/site-packages") +'''%(prefix, version) + else: + prefix = '' script_vars = { 'python': os.path.normpath(sys.executable), 'package': self.package_name, 'module': module, + 'prefix': prefix, } self.announce("creating %s" % outfile) @@ -93,7 +105,7 @@ class build_scripts_create(build_scripts): 'if "%%_4ver%%" == "" "%(python)s" -O -c "from %(package)s.scripts.%(module)s import run; run()" %%*\n' % script_vars) else: - file.write('#! %(python)s -O\n' + file.write('#! %(python)s -O\n%(prefix)s' 'from %(package)s.scripts.%(module)s import run\n' 'run()\n' % script_vars) @@ -146,7 +158,7 @@ def main(): 'doc/roundup-mailgw.1', 'doc/roundup-server.1'])) # add the templates to the data files lists - from roundup.admin import listTemplates + from roundup.init import listTemplates templates = [t['path'] for t in listTemplates('templates').values()] for tdir in templates: # scan for data files @@ -168,14 +180,47 @@ def main(): setup( name = "roundup", version = __version__, - description = "Roundup issue tracking system.", + description = "A simple-to-use and -install issue-tracking system" + " with command-line, web and e-mail interfaces. Highly" + " customisable.", + long_description = +'''Roundup is a simple-to-use and -install issue-tracking system with +command-line, web and e-mail interfaces. It is based on the winning design +from Ka-Ping Yee in the Software Carpentry "Track" design competition. + +The 0.6 release has lots of new goodies including: + +- new instant-gratification Demo Mode ("python demo.py" :) +- added mysql backend (see doc/mysql.txt for details) +- web interface cleanups including nicer history display, nicer index + navigation and nicer popup list windows +- searching of date ranges +- better international support, including utf-8 email handling and ability + to display localized dates in web interface. +- more documentation including revamped design document, unix manual pages + and some FAQ entries +- significantly more powerful form handling allowing editing of multiple + items and creation of multiple items +- tracker templates can contain subdirectories and static files (e.g. + images) and we may now distribute templates separately from Roundup. + Template HTML files now have a .html extension too. +- user registration is now a two-step process, with confirmation from the + email address supplied in the registration form, and we also have a + password reset feature for forgotten password / login +- Windows Service mode for roundup-server when daemonification is + attempted on Windows +- lots of speed enhancements, making the web interface much more responsive +- fixed issues with dumb email or web clients +- email system handles more SMTP and POP features (TLS, APOP, ...) +- lots more little tweaks and back-end work... +''', author = "Richard Jones", author_email = "richard@users.sourceforge.net", - url = 'http://sourceforge.net/projects/roundup/', + url = 'http://roundup.sourceforge.net/', download_url = 'http://sourceforge.net/project/showfiles.php?group_id=31577', packages = packagelist, classifiers = [ - 'Development Status :: 4 - Beta', + 'Development Status :: 5 - Production/Stable', 'Environment :: Console', 'Environment :: Web Environment', 'Intended Audience :: End Users/Desktop', @@ -200,83 +245,7 @@ def main(): data_files = installdatafiles ) -def install_demo(): - ''' Install a demo server for users to play with for instant gratification. - - Sets up the web service on localhost port 8080. Disables nosy lists. - ''' - import shutil, socket, errno, BaseHTTPServer - - # create the instance - home = os.path.abspath('demo') - try: - shutil.rmtree(home) - except os.error, error: - if error.errno != errno.ENOENT: - raise - from roundup import init, instance, password - init.install(home, os.path.join('templates', 'classic')) - # don't have email flying around - os.remove(os.path.join(home, 'detectors', 'nosyreaction.py')) - init.write_select_db(home, 'anydbm') - - # figure basic params for server - hostname = socket.gethostname() - # pick a fairly odd, random port - port = 8917 - while 1: - print 'Trying to set up web server on port %d ...'%port, - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - try: - s.connect((hostname, port)) - except socket.error, e: - if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED: - raise - print 'should be ok.' - break - else: - s.close() - print 'already in use.' - port += 100 - url = 'http://%s:%s/demo/'%(hostname, port) - - # write the config - f = open(os.path.join(home, 'config.py'), 'r') - s = f.read().replace('http://tracker.example/cgi-bin/roundup.cgi/bugs/', - url) - f.close() - f = open(os.path.join(home, 'config.py'), 'w') - f.write(s) - f.close() - - # initialise the database - init.initialise(home, 'admin') - - # add the "demo" user - tracker = instance.open(home) - db = tracker.open('admin') - db.user.create(username='demo', password=password.Password('demo'), - realname='Demo User', roles='User') - db.commit() - db.close() - - # ok, so start up the server - from roundup.scripts.roundup_server import RoundupRequestHandler - RoundupRequestHandler.TRACKER_HOMES = {'demo': home} - httpd = BaseHTTPServer.HTTPServer((hostname, port), RoundupRequestHandler) - print 'Server running - connect to:\n %s'%url - print 'You may log in as "demo"/"demo" or "admin"/"admin".' - print 'Hit Control-C to stop the server.' - try: - httpd.serve_forever() - except KeyboardInterrupt: - print 'Keyboard Interrupt: exiting' - if __name__ == '__main__': - if len(sys.argv) > 1 and sys.argv[1] == 'demo': - install_demo() - else: - main() + main() # vim: set filetype=python ts=4 sw=4 et si