trac-ticketlinks / setup.py

jonas 6d023f4 

jonas 22b4284 
daniel 2d6b43d 
daniel 844171f 
rocky 1e1d321 
daniel 2d6b43d 
jonas 6d023f4 
daniel 844171f 
jonas 811a63c 
jonas 30c6d4c 
jonas 811a63c 
jonas d14eb0d 
jonas c21f14a 
jonas 6d023f4 
daniel 844171f 
jonas c21f14a 


jonas 6d023f4 
cmlenz fa6f638 


daniel 9267099 

daniel 2d6b43d 

daniel 844171f 





mgood 0a0d218 







cmlenz 34b6882 
daniel 844171f 



cmlenz 34b6882 
daniel 1559209 


cmlenz 7a033d0 
athomas 6b0b43d 
daniel 844171f 
cmlenz 34b6882 

athomas 6b0b43d 

daniel 844171f 





jonas 2af4533 
daniel 844171f 
jonas 30c6d4c 
jonas d14eb0d 







jonas 30c6d4c 
jonas d14eb0d 


daniel 9267099 
jonas d14eb0d 







jonas bdbf361 




jonas d14eb0d 








mgood 9f8dd8a 





athomas 3163902 




jonas d14eb0d 



jonas a8b4064 
jonas d14eb0d 

cmlenz a28a559 






jonas 30c6d4c 

jonas 811a63c 













daniel f382d0e 





cmlenz a28a559 


daniel f382d0e 


rocky 0861fc7 


jonas 183a9e2 
rocky 0861fc7 























jonas 2cee433 
rocky 0861fc7 



rocky 1e1d321 
rocky 0861fc7 















cmlenz 87f7d6f 
rocky 0861fc7 




jonas c21f14a 
daniel f382d0e 







jonas 6d023f4 
daniel 2d602b1 
daniel 844171f 
jonas 6d023f4 

jonas d0502d7 
cboos fbf077e 
cboos 6fb6d35 
cmlenz a12188a 
daniel 2d6b43d 


cmlenz 4eb7e6e 
jonas a7c53aa 
cmlenz 7a033d0 

jonas bdbf361 
cmlenz a28a559 
jonas bdbf361 
mgood 9f8dd8a 

jonas 30c6d4c 
jonas 811a63c 
#!/usr/bin/env python

import os
import os.path
import sys
import string
from glob import glob
from distutils.core import setup
from distutils.command.install import install
from distutils.command.install_data import install_data
from distutils.command.install_scripts import install_scripts
from stat import ST_MODE, S_ISDIR

import trac

PACKAGE = 'Trac'
VERSION = str(trac.__version__)
URL = trac.__url__
LICENSE = trac.__license__

if sys.version_info < (2, 3):
    print >>sys.stderr, 'You need at least Python 2.3 for %s %s' \
                        % (PACKAGE, VERSION)
    sys.exit(3)

def _p(unix_path):
     return os.path.normpath(unix_path)

class my_install (install):
     def run (self):
         self.siteconfig()

     def siteconfig(self):
         path = self.prefix or self.home
         path = os.path.expanduser(path)
         conf_dir = os.path.join(path, 'share', 'trac', 'conf')
         templates_dir = os.path.join(path, 'share', 'trac', 'templates')
         htdocs_dir = os.path.join(path, 'share', 'trac', 'htdocs')
         wiki_dir = os.path.join(path, 'share', 'trac', 'wiki-default')
         macros_dir = os.path.join(path, 'share', 'trac', 'wiki-macros')
         plugins_dir = os.path.join(path, 'share', 'trac', 'plugins')
         f = open(_p('trac/siteconfig.py'), 'w')
         f.write("""
# PLEASE DO NOT EDIT THIS FILE!
# This file was autogenerated when installing %(trac)s %(ver)s.
#
__default_conf_dir__ = %(conf)r
__default_templates_dir__ = %(templates)r
__default_htdocs_dir__ = %(htdocs)r
__default_wiki_dir__ = %(wiki)r
__default_macros_dir__ = %(macros)r
__default_plugins_dir__ = %(plugins)r

""" % {'trac': PACKAGE, 'ver': VERSION, 'conf': _p(conf_dir),
       'templates': _p(templates_dir), 'htdocs': _p(htdocs_dir),
       'wiki': _p(wiki_dir), 'macros': _p(macros_dir),
       'plugins': _p(plugins_dir)})
         f.close()

         # Run actual install
         install.run(self)
         print
         print "Thank you for choosing Trac %s. Enjoy your stay!" % VERSION
         print

class my_install_scripts (install_scripts):
    def initialize_options (self):
        install_scripts.initialize_options(self)
        self.install_data = None
        
    def finalize_options (self):
        install_scripts.finalize_options(self)
        self.set_undefined_options('install',
                                   ('install_data', 'install_data'))
          
    def run (self):
        if not self.skip_build:
            self.run_command('build_scripts')

        self.outfiles = []

        self.mkpath(os.path.normpath(self.install_dir))
        ofile, copied = self.copy_file(os.path.join(self.build_dir,
                                                     'trac-admin'),
                                        self.install_dir)
        if copied:
            self.outfiles.append(ofile)
        ofile, copied = self.copy_file(os.path.join(self.build_dir,
                                                     'tracd'),
                                        self.install_dir)
        if copied:
            self.outfiles.append(ofile)
            
        cgi_dir = os.path.join(self.install_data, 'share', 'trac', 'cgi-bin')
        if not os.path.exists(cgi_dir):
            os.makedirs(cgi_dir)
            
        ofile, copied = self.copy_file(os.path.join(self.build_dir,
                                                    'trac.cgi'), cgi_dir)
        if copied:
            self.outfiles.append(ofile)

        ofile, copied = self.copy_file(os.path.join(self.build_dir,
                                                    'trac.fcgi'), cgi_dir)
        if copied:
            self.outfiles.append(ofile)
         
        for path in ('plugins', 'conf'):
            full_path = os.path.join(self.install_data, 'share', 'trac', path)
            if not os.path.exists(full_path):
                os.makedirs(full_path)
            
        if os.name == 'posix':
            # Set the executable bits (owner, group, and world) on
            # all the scripts we just installed.
            for file in self.get_outputs():
                if not self.dry_run:
                    mode = ((os.stat(file)[ST_MODE]) | 0555) & 07777
                    os.chmod(file, mode)
        elif os.name == 'nt':
            # Install post-install script on windows
            ofile, copied = self.copy_file(os.path.join(self.build_dir,
                                                        'trac-postinstall.py'),
                                            self.install_dir)
            if copied:
                self.outfiles.append(ofile)


class my_install_data (install_data):
    def run (self):
        install_data.run(self)

        if os.name == 'posix' and not self.dry_run:
            # Make the data files we just installed world-readable,
            # and the directories world-executable as well.
            for path in self.get_outputs():
                mode = os.stat(path)[ST_MODE]
                if S_ISDIR(mode):
                    mode |= 011
                mode |= 044
                os.chmod(path, mode)

# Our custom bdist_wininst
import distutils.command.bdist_wininst
from distutils.command.bdist_wininst import bdist_wininst
class my_bdist_wininst(bdist_wininst):
    def initialize_options(self):
        bdist_wininst.initialize_options(self)
        self.title = 'Trac %s' % VERSION
        self.bitmap = 'setup_wininst.bmp'
        self.install_script = 'trac-postinstall.py'
distutils.command.bdist_wininst.bdist_wininst = my_bdist_wininst


# parameters for various rpm distributions
rpm_distros = {
    'suse_options': { 'version_suffix': 'SuSE',
                      'requires': """python >= 2.3
                        subversion >= 1.0.0
                        pysqlite >= 0.4.3
                        clearsilver >= 0.9.3
                        httpd""" },

    'fedora_options': { 'version_suffix': 'fc'}
    }


# Our custom bdist_rpm
import distutils.command.bdist_rpm
from distutils.command.bdist_rpm import bdist_rpm
class generic_bdist_rpm(bdist_rpm):

    def __init__(self, dist, distro):
        self.distro = distro
        bdist_rpm.__init__(self, dist)

    def initialize_options(self):
        bdist_rpm.initialize_options(self)
        self.title = "Trac %s" % VERSION
        self.packager = "Edgewall Software <info@edgewall.com>"
        for x in rpm_distros[self.distro].keys():
            setattr(self, x, rpm_distros[self.distro][x])
        self.install_script = "scripts/rpm-install.sh"

    def run(self):
        bdist_rpm.run(self)
        if hasattr(self, 'version_suffix'):
            prefix = os.path.join(self.dist_dir, string.lower(PACKAGE)+'-'+VERSION+'-1')
            os.rename(prefix+'.noarch.rpm', prefix+self.version_suffix+'.noarch.rpm')
            os.rename(prefix+'.src.rpm', prefix+self.version_suffix+'.src.rpm')

class proxy_bdist_rpm(bdist_rpm):

    def __init__(self, dist):
        bdist_rpm.__init__(self, dist)
        self.dist = dist

    def initialize_options(self):
        bdist_rpm.initialize_options(self)

    def run(self):
        for distro in rpm_distros.keys():
            r = generic_bdist_rpm(self.dist, distro)
            r.initialize_options()
            self.dist._set_command_options(r, self.dist.command_options['bdist_rpm'])
            r.finalize_options()
            r.run()

distutils.command.bdist_rpm.bdist_rpm = proxy_bdist_rpm

setup(name="trac",
      description="Integrated scm, wiki, issue tracker and project environment",
      long_description=\
"""
Trac is a minimalistic web-based software project management and bug/issue
tracking system. It provides an interface to the Subversion revision control
systems, an integrated wiki, flexible issue tracking and convenient report
facilities.
""",
      version=VERSION,
      author="Edgewall Software",
      author_email="info@edgewall.com",
      license=LICENSE,
      url=URL,
      packages=['trac', 'trac.db', 'trac.mimeview', 'trac.scripts',
                'trac.ticket', 'trac.upgrades', 'trac.util', 'trac.web',
                'trac.versioncontrol', 'trac.versioncontrol.web_ui', 
                'trac.wiki'],
      data_files=[(_p('share/trac/templates'), glob('templates/*')),
                  (_p('share/trac/htdocs'), glob(_p('htdocs/*.*')) + [_p('htdocs/README')]),
                  (_p('share/trac/htdocs/css'), glob(_p('htdocs/css/*'))),
                  (_p('share/trac/htdocs/js'), glob(_p('htdocs/js/*'))),
                  (_p('share/man/man1'), glob(_p('scripts/*.1'))),
                  (_p('share/trac/wiki-default'), glob(_p('wiki-default/[A-Z]*'))),
                  (_p('share/trac/wiki-macros'), glob(_p('wiki-macros/*.py')))],
      scripts=[_p('scripts/trac-admin'),
               _p('scripts/trac-postinstall.py'),
               _p('scripts/tracd'),
               _p('cgi-bin/trac.cgi'),
               _p('cgi-bin/trac.fcgi')],
      cmdclass = {'install': my_install,
                  'install_scripts': my_install_scripts,
                  'install_data': my_install_data})
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.