You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
233 lines
8.9 KiB
233 lines
8.9 KiB
#!/usr/bin/env python |
|
# $Id: setup.py 8147 2017-08-03 09:01:16Z grubert $ |
|
# Copyright: This file has been placed in the public domain. |
|
|
|
import sys |
|
import os |
|
import glob |
|
try: |
|
from distutils.core import setup, Command |
|
from distutils.command.build import build |
|
from distutils.command.build_py import build_py |
|
if sys.version_info >= (3,): |
|
from distutils.command.build_py import build_py_2to3 |
|
from distutils.util import copydir_run_2to3 |
|
from distutils.command.install_data import install_data |
|
from distutils.util import convert_path |
|
from distutils import log |
|
except ImportError: |
|
print ('Error: The "distutils" standard module, which is required for the ') |
|
print ('installation of Docutils, could not be found. You may need to ') |
|
print ('install a package called "python-devel" (or similar) on your ') |
|
print ('system using your package manager.') |
|
sys.exit(1) |
|
|
|
|
|
if sys.version_info >= (3,): |
|
# copy-convert auxiliary python sources |
|
class copy_build_py_2to3(build_py_2to3): |
|
"""Copy/convert Python source files in given directories recursively. |
|
|
|
Build py3k versions of the modules and packages. |
|
Also copy 'test/' suite and run 2to3 on *.py files. |
|
""" |
|
manifest_in = """\ |
|
exclude *.pyc *~ .DS_Store |
|
recursive-exclude * *.pyc *~ .DS_Store |
|
recursive-exclude functional/output * |
|
include functional/output/README.txt |
|
prune .svn |
|
prune */.svn |
|
prune */*/.svn |
|
prune */*/*/.svn |
|
prune */*/*/*/.svn |
|
prune */*/*/*/*/.svn |
|
""" |
|
def run(self): |
|
# fix |
|
print("build_py_2to3") |
|
build_py_2to3.run(self) |
|
print("copy/convert test suite") |
|
loglevel = log.set_threshold(log.ERROR) |
|
copydir_run_2to3('test', 'test3', template=self.manifest_in) |
|
log.set_threshold(loglevel) |
|
|
|
|
|
class smart_install_data(install_data): |
|
# From <http://wiki.python.org/moin/DistutilsInstallDataScattered>, |
|
# by Pete Shinners. |
|
|
|
def run(self): |
|
#need to change self.install_dir to the library dir |
|
install_cmd = self.get_finalized_command('install') |
|
self.install_dir = getattr(install_cmd, 'install_lib') |
|
return install_data.run(self) |
|
|
|
class build_data(Command): |
|
|
|
def initialize_options(self): |
|
pass |
|
|
|
def finalize_options(self): |
|
pass |
|
|
|
def run(self): |
|
build_py = self.get_finalized_command('build_py') |
|
data_files = self.distribution.data_files |
|
for f in data_files: |
|
dir = convert_path(f[0]) |
|
dir = os.path.join(build_py.build_lib, dir) |
|
self.mkpath(dir) |
|
for data in f[1]: |
|
data = convert_path(data) |
|
self.copy_file(data, dir) |
|
|
|
# let our build_data run |
|
build.sub_commands.append(('build_data', lambda *a: True)) |
|
|
|
|
|
def do_setup(): |
|
kwargs = package_data.copy() |
|
kwargs['classifiers'] = classifiers |
|
# Install data files properly. |
|
kwargs['cmdclass'] = {'build_data': build_data, |
|
'install_data': smart_install_data} |
|
# Auto-convert source code for Python 3 |
|
if sys.version_info >= (3,): |
|
kwargs['cmdclass']['build_py'] = copy_build_py_2to3 |
|
else: |
|
kwargs['cmdclass']['build_py'] = build_py |
|
dist = setup(**kwargs) |
|
return dist |
|
|
|
s5_theme_files = [] |
|
for dir in glob.glob('docutils/writers/s5_html/themes/*'): |
|
if os.path.isdir(dir): |
|
theme_files = glob.glob('%s/*' % dir) |
|
s5_theme_files.append((dir, theme_files)) |
|
|
|
package_data = { |
|
'name': 'docutils', |
|
'description': 'Docutils -- Python Documentation Utilities', |
|
'long_description': """\ |
|
Docutils is a modular system for processing documentation |
|
into useful formats, such as HTML, XML, and LaTeX. For |
|
input Docutils supports reStructuredText, an easy-to-read, |
|
what-you-see-is-what-you-get plaintext markup syntax.""", # wrap at col 60 |
|
'url': 'http://docutils.sourceforge.net/', |
|
'version': '0.14', |
|
'author': 'David Goodger', |
|
'author_email': 'goodger@python.org', |
|
'maintainer': 'docutils-develop list', |
|
'maintainer_email': 'docutils-develop@lists.sourceforge.net', |
|
'license': 'public domain, Python, 2-Clause BSD, GPL 3 (see COPYING.txt)', |
|
'platforms': 'OS-independent', |
|
'package_dir': {'docutils': 'docutils', |
|
'docutils.tools': 'tools'}, |
|
'packages': ['docutils', |
|
'docutils.languages', |
|
'docutils.parsers', |
|
'docutils.parsers.rst', |
|
'docutils.parsers.rst.directives', |
|
'docutils.parsers.rst.languages', |
|
'docutils.readers', |
|
# 'docutils.readers.python', # in the sandbox since 0.8 |
|
'docutils.transforms', |
|
'docutils.utils', |
|
'docutils.utils.math', |
|
'docutils.writers', |
|
'docutils.writers.html4css1', |
|
'docutils.writers.html5_polyglot', |
|
# 'docutils.writers.xhtml11', # moved to the sandbox |
|
'docutils.writers.pep_html', |
|
'docutils.writers.s5_html', |
|
'docutils.writers.latex2e', |
|
# 'docutils.writers.newlatex2e', # in the sandbox since 0.8 |
|
'docutils.writers.xetex', |
|
'docutils.writers.odf_odt', |
|
], |
|
'data_files': ([('docutils/parsers/rst/include', |
|
glob.glob('docutils/parsers/rst/include/*.txt')), |
|
('docutils/writers/html5_polyglot', |
|
['docutils/writers/html5_polyglot/minimal.css', |
|
'docutils/writers/html5_polyglot/plain.css', |
|
'docutils/writers/html5_polyglot/math.css', |
|
'docutils/writers/html5_polyglot/template.txt']), |
|
('docutils/writers/html4css1', |
|
['docutils/writers/html4css1/html4css1.css', |
|
'docutils/writers/html4css1/template.txt']), |
|
('docutils/writers/latex2e', |
|
['docutils/writers/latex2e/default.tex', |
|
'docutils/writers/latex2e/titlepage.tex', |
|
'docutils/writers/latex2e/xelatex.tex',]), |
|
('docutils/writers/pep_html', |
|
['docutils/writers/pep_html/pep.css', |
|
'docutils/writers/pep_html/template.txt']), |
|
('docutils/writers/s5_html/themes', |
|
['docutils/writers/s5_html/themes/README.txt']), |
|
('docutils/writers/odf_odt', |
|
['docutils/writers/odf_odt/styles.odt']), |
|
] |
|
+ s5_theme_files), |
|
'scripts' : ['tools/rst2html.py', |
|
'tools/rst2html4.py', |
|
'tools/rst2html5.py', |
|
'tools/rst2s5.py', |
|
'tools/rst2latex.py', |
|
'tools/rst2xetex.py', |
|
'tools/rst2man.py', |
|
'tools/rst2xml.py', |
|
'tools/rst2pseudoxml.py', |
|
'tools/rstpep2html.py', |
|
'tools/rst2odt.py', |
|
'tools/rst2odt_prepstyles.py', |
|
],} |
|
"""Distutils setup parameters.""" |
|
|
|
classifiers = [ |
|
'Development Status :: 4 - Beta', |
|
'Environment :: Console', |
|
'Intended Audience :: End Users/Desktop', |
|
'Intended Audience :: Other Audience', |
|
'Intended Audience :: Developers', |
|
'Intended Audience :: System Administrators', |
|
'License :: Public Domain', |
|
'License :: OSI Approved :: Python Software Foundation License', |
|
'License :: OSI Approved :: BSD License', |
|
'License :: OSI Approved :: GNU General Public License (GPL)', |
|
'Operating System :: OS Independent', |
|
'Programming Language :: Python :: 2.4', |
|
'Programming Language :: Python :: 2.5', |
|
'Programming Language :: Python :: 2.6', |
|
'Programming Language :: Python :: 2.7', |
|
'Programming Language :: Python :: 3', |
|
'Topic :: Documentation', |
|
'Topic :: Software Development :: Documentation', |
|
'Topic :: Text Processing', |
|
'Natural Language :: English', # main/default language, keep first |
|
'Natural Language :: Afrikaans', |
|
'Natural Language :: Catalan', |
|
'Natural Language :: Chinese (Simplified)', |
|
'Natural Language :: Chinese (Traditional)', |
|
'Natural Language :: Czech', |
|
'Natural Language :: Dutch', |
|
'Natural Language :: Esperanto', |
|
'Natural Language :: Finnish', |
|
'Natural Language :: French', |
|
'Natural Language :: Galician', |
|
'Natural Language :: German', |
|
'Natural Language :: Italian', |
|
'Natural Language :: Japanese', |
|
'Natural Language :: Polish', |
|
'Natural Language :: Portuguese (Brazilian)', |
|
'Natural Language :: Russian', |
|
'Natural Language :: Slovak', |
|
'Natural Language :: Spanish', |
|
'Natural Language :: Swedish', |
|
] |
|
# BUG pypi did not like following languages |
|
# 'Natural Language :: Lithuanian', |
|
"""Trove classifiers for the Distutils "register" command.""" |
|
|
|
if __name__ == '__main__' : |
|
do_setup()
|
|
|