Blame setup.py

Packit Service 7080c1
#!/usr/bin/env python
Packit 0f19cf
# -*- coding: ISO-8859-1 -*-
Packit 0f19cf
#
Packit 0f19cf
# dblatex python setup script - See the COPYRIGHT
Packit 0f19cf
#
Packit 0f19cf
import os
Packit 0f19cf
import sys
Packit 0f19cf
import re
Packit 0f19cf
import glob
Packit 0f19cf
import subprocess
Packit 0f19cf
Packit 0f19cf
try:
Packit 0f19cf
    from setuptools import setup
Packit 0f19cf
    from setuptools.command.install import install
Packit 0f19cf
except ImportError:
Packit 0f19cf
    from distutils.core import setup
Packit 0f19cf
    from distutils.command.install import install
Packit 0f19cf
Packit 0f19cf
from distutils.command.build import build
Packit 0f19cf
from distutils.command.build_scripts import build_scripts
Packit 0f19cf
from distutils.command.install_data import install_data
Packit 0f19cf
from distutils.command.sdist import sdist
Packit 0f19cf
from distutils import log
Packit 0f19cf
from subprocess import Popen, PIPE
Packit 0f19cf
sys.path.append("lib")
Packit Service 7080c1
from contrib.debian.installer import DebianInstaller
Packit 0f19cf
Packit 0f19cf
#
Packit 0f19cf
# Build the command line script
Packit 0f19cf
#
Packit 0f19cf
class BuildScripts(build_scripts):
Packit 0f19cf
Packit Service 7080c1
    SHELL_SCRIPT = """#!%(env_executable)s%(env_args)s%(py_executable)s
Packit 0f19cf
import sys
Packit 0f19cf
import os
Packit 0f19cf
Packit 0f19cf
package_base = %(package_base)s
Packit 0f19cf
Packit 0f19cf
%(lib_path)s
Packit 0f19cf
%(catalogs)s
Packit 0f19cf
%(style_set)s
Packit 0f19cf
from %(package_path)s import %(package)s
Packit 0f19cf
%(package)s.main(base=package_base)
Packit 0f19cf
"""
Packit 0f19cf
Packit 0f19cf
    CATALOGS = """cat = os.environ.get("SGML_CATALOG_FILES")
Packit 0f19cf
if cat:
Packit 0f19cf
    cat += ":%s"
Packit 0f19cf
else:
Packit 0f19cf
    cat = "%s"
Packit 0f19cf
os.environ["SGML_CATALOG_FILES"] = cat
Packit 0f19cf
"""
Packit 0f19cf
Packit 0f19cf
    def run(self):
Packit 0f19cf
        """
Packit 0f19cf
        Create the proper script for the current platform.
Packit 0f19cf
        """
Packit 0f19cf
        if not self.scripts:
Packit 0f19cf
            return
Packit 0f19cf
Packit 0f19cf
        # The script can only work with package data
Packit 0f19cf
        self.data_files = self.distribution.data_files
Packit 0f19cf
        if not(self.data_files):
Packit 0f19cf
            return
Packit 0f19cf
Packit 0f19cf
        if self.dry_run:
Packit 0f19cf
            return
Packit 0f19cf
Packit 0f19cf
        # Ensure the destination directory exists
Packit 0f19cf
        self.mkpath(self.build_dir)
Packit 0f19cf
Packit 0f19cf
        # Data useful for building the script
Packit 0f19cf
        install = self.distribution.get_command_obj("install")
Packit 0f19cf
        if not(install.install_data):
Packit 0f19cf
            return
Packit 0f19cf
Packit 0f19cf
        self._install_lib = os.path.normpath(install.install_lib)
Packit 0f19cf
        self._root = install.root
Packit 0f19cf
        if self._root:
Packit 0f19cf
            self._root = os.path.normpath(self._root)
Packit 0f19cf
        self._package_base = os.path.join(install.install_data,
Packit 0f19cf
                                          self.data_files[0][0])
Packit 0f19cf
        self._catalogs = install.catalogs
Packit 0f19cf
        self._style = install.style
Packit 0f19cf
        self._use_py_path = install.use_python_path
Packit Service 7080c1
        print self._package_base
Packit 0f19cf
Packit 0f19cf
        # Build the command line script
Packit 0f19cf
        self.build_script()
Packit 0f19cf
Packit 0f19cf
    def _strip_root(self, *paths):
Packit 0f19cf
        if not(self._root):
Packit 0f19cf
            return paths
Packit 0f19cf
Packit 0f19cf
        newpaths = []
Packit 0f19cf
        for path in paths:
Packit 0f19cf
            if path.startswith(self._root):
Packit 0f19cf
                newpaths.append(path[len(self._root):])
Packit 0f19cf
            else:
Packit 0f19cf
                newpaths.append(path)
Packit 0f19cf
        return newpaths
Packit 0f19cf
Packit 0f19cf
    def build_script(self):
Packit 0f19cf
        script_name = self.scripts[0]
Packit 0f19cf
Packit 0f19cf
        # prepare args for the bang path at the top of the script
Packit 0f19cf
        ENV_BIN = '/usr/bin/env'
Packit 0f19cf
        env_args = ''
Packit 0f19cf
        if self._use_py_path:
Packit 0f19cf
            env_exec = ''
Packit 0f19cf
            py_exec = sys.executable
Packit 0f19cf
        elif os.name == 'posix':
Packit 0f19cf
            # Some Solaris platforms may not have an 'env' binary.
Packit 0f19cf
            # If /usr/bin/env exists, use '#!/usr/bin/env python'
Packit 0f19cf
            # otherwise, use '#!' + sys.executable
Packit 0f19cf
            env_exec = os.path.isfile(ENV_BIN) and \
Packit 0f19cf
                os.access(ENV_BIN, os.X_OK) and ENV_BIN or ''
Packit 0f19cf
            py_exec = env_exec and 'python' or sys.executable
Packit 0f19cf
        else:
Packit 0f19cf
            # shouldn't matter on non-POSIX; we'll just use defaults
Packit 0f19cf
            env_exec = ENV_BIN
Packit 0f19cf
            py_exec = 'python'
Packit 0f19cf
Packit 0f19cf
        # Retrieve actual installation paths
Packit 0f19cf
        lib_path, package_base = self._strip_root(self._install_lib,
Packit 0f19cf
                                                  self._package_base)
Packit 0f19cf
Packit 0f19cf
        # Just help for non standard installation paths
Packit 0f19cf
        if lib_path in sys.path:
Packit 0f19cf
            lib_path = ""
Packit 0f19cf
        else:
Packit 0f19cf
            lib_path = "sys.path.append(r\"%s\")" % lib_path
Packit 0f19cf
Packit 0f19cf
        # Things to adapt when building an egg
Packit 0f19cf
        if "/egg" in lib_path:
Packit 0f19cf
            lib_path = ""
Packit 0f19cf
            package_base = 'os.path.abspath(os.path.join(os.path.dirname('\
Packit 0f19cf
                           '__file__), "..", "..", "share", "dblatex"))'
Packit 0f19cf
        else:
Packit 0f19cf
            package_base = 'r"%s"' % (package_base)
Packit 0f19cf
Packit 0f19cf
        if self._catalogs:
Packit 0f19cf
            catalogs = self.CATALOGS % (self._catalogs, self._catalogs)
Packit 0f19cf
        else:
Packit 0f19cf
            catalogs = ""
Packit 0f19cf
Packit 0f19cf
        if self._style:
Packit 0f19cf
            style_set = "sys.argv.insert(1, '-T%s')" % self._style
Packit 0f19cf
        else:
Packit 0f19cf
            style_set = ""
Packit 0f19cf
Packit 0f19cf
        script_args = { 'env_executable': env_exec,
Packit 0f19cf
                        'env_args': env_exec and (' %s' % env_args) or '',
Packit 0f19cf
                        'py_executable': py_exec,
Packit 0f19cf
                        'lib_path': lib_path,
Packit 0f19cf
                        'style_set': style_set,
Packit 0f19cf
                        'package': "dblatex",
Packit 0f19cf
                        'package_path': "dbtexmf.dblatex",
Packit 0f19cf
                        'catalogs': catalogs,
Packit 0f19cf
                        'package_base': package_base }
Packit 0f19cf
Packit 0f19cf
        script = self.SHELL_SCRIPT % script_args
Packit 0f19cf
        script_name = os.path.basename(script_name)
Packit 0f19cf
        outfile = os.path.join(self.build_dir, script_name)
Packit Service 7080c1
        fd = os.open(outfile, os.O_WRONLY|os.O_CREAT|os.O_TRUNC, 0755)
Packit Service 7080c1
        os.write(fd, script)
Packit 0f19cf
        os.close(fd)
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
class Build(build):
Packit 0f19cf
    """
Packit 0f19cf
    Build the documentation if missing or required to rebuild
Packit 0f19cf
    """
Packit 0f19cf
    user_options = build.user_options + \
Packit 0f19cf
                 [('docbook-xsl=', None,
Packit 0f19cf
                   'DocBook Project Stylesheet base directory (build_doc)')]
Packit 0f19cf
Packit 0f19cf
    def initialize_options(self):
Packit 0f19cf
        build.initialize_options(self)
Packit 0f19cf
        self.docbook_xsl = None
Packit 0f19cf
Packit 0f19cf
    def run(self):
Packit 0f19cf
        # Do the default tasks
Packit 0f19cf
        build.run(self)
Packit 0f19cf
        # And build the doc
Packit 0f19cf
        self.build_doc()
Packit 0f19cf
Packit 0f19cf
    def build_doc(self):
Packit 0f19cf
        log.info("running build_doc")
Packit 0f19cf
        htmldir = os.path.join("docs", "xhtml")
Packit 0f19cf
        pdfdocs = glob.glob(os.path.join("docs", "[mr]*.pdf"))
Packit 0f19cf
        manpage = os.path.join("docs", "manpage", "dblatex.1.gz")
Packit 0f19cf
Packit 0f19cf
        # Lazy check to avoid a rebuild for nothing
Packit 0f19cf
        if (not(self.force) and os.path.exists(htmldir) and len(pdfdocs) >= 2
Packit 0f19cf
            and os.path.exists(manpage)):
Packit 0f19cf
            return
Packit 0f19cf
Packit 0f19cf
        # Assumes that make is the GNU make
Packit 0f19cf
        cmd = ["make", "-C", "docs", "VERSION=%s" % (get_version())]
Packit 0f19cf
        if self.docbook_xsl:
Packit 0f19cf
            cmd.append("XSLDBK=%s" % os.path.abspath(self.docbook_xsl))
Packit 0f19cf
Packit 0f19cf
        subprocess.call(cmd)
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
def find_programs(utils):
Packit Service 7080c1
    sys.path.append("lib")
Packit Service 7080c1
    from contrib.which import which
Packit 0f19cf
    util_paths = {}
Packit 0f19cf
    missed = []
Packit 0f19cf
    for util in utils:
Packit Service 7080c1
        try:
Packit Service 7080c1
            path = which.which(util)
Packit 0f19cf
            util_paths[util] = path
Packit Service 7080c1
        except which.WhichError:
Packit 0f19cf
            missed.append(util)
Packit Service 7080c1
    sys.path.remove("lib")
Packit 0f19cf
    return (util_paths, missed)
Packit 0f19cf
Packit 0f19cf
def kpsewhich(tex_file):
Packit 0f19cf
    if os.name == "nt":
Packit 0f19cf
        close_fds = False
Packit 0f19cf
    else:
Packit 0f19cf
        close_fds = True
Packit 0f19cf
    p = Popen("kpsewhich %s" % tex_file, shell=True,
Packit 0f19cf
              stdin=PIPE, stdout=PIPE, close_fds=close_fds)
Packit Service 7080c1
    out = "".join(p.stdout.readlines()).strip()
Packit Service 7080c1
    return out
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
class Sdist(sdist):
Packit 0f19cf
    """
Packit 0f19cf
    Make the source package, and remove the .pyc files
Packit 0f19cf
    """
Packit 0f19cf
    def prune_file_list(self):
Packit 0f19cf
        sdist.prune_file_list(self)
Packit 0f19cf
        self.filelist.exclude_pattern(r'.*.pyc', is_regex=1)
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
class Install(install):
Packit 0f19cf
Packit 0f19cf
    user_options = install.user_options + \
Packit 0f19cf
                   [('catalogs=', None, 'default SGML catalogs'),
Packit 0f19cf
                    ('nodeps', None, 'don\'t check the dependencies'),
Packit 0f19cf
                    ('style=', None, 'default style to use'),
Packit 0f19cf
                    ('use-python-path', None, 'don\'t use env to locate python')]
Packit 0f19cf
Packit 0f19cf
    def initialize_options(self):
Packit 0f19cf
        install.initialize_options(self)
Packit 0f19cf
        self.catalogs = None
Packit 0f19cf
        self.nodeps = None
Packit 0f19cf
        self.style = None
Packit 0f19cf
        self.use_python_path = None
Packit 0f19cf
        # Prevents from undefined 'install_layout' attribute
Packit 0f19cf
        if not(getattr(self, "install_layout", None)):
Packit 0f19cf
            self.install_layout = None
Packit 0f19cf
Packit 0f19cf
    def check_util_dependencies(self):
Packit 0f19cf
        # First, check non critical graphic tools
Packit 0f19cf
        found, missed = find_programs(("epstopdf", "convert", "fig2dev"))
Packit 0f19cf
        for util in found:
Packit Service 7080c1
            print "+checking %s... yes" % util
Packit 0f19cf
        for util in missed:
Packit Service 7080c1
            print "+checking %s... no" % util
Packit 0f19cf
        if missed:
Packit Service 7080c1
            print("warning: not found: %s" % ", ".join(missed))
Packit 0f19cf
Packit 0f19cf
        # Now, be serious
Packit 0f19cf
        found, missed = find_programs(("latex", "makeindex",
Packit 0f19cf
                                       "pdflatex", "kpsewhich"))
Packit 0f19cf
        for util in found:
Packit Service 7080c1
            print "+checking %s... yes" % util
Packit 0f19cf
        for util in missed:
Packit Service 7080c1
            print "+checking %s... no" % util
Packit 0f19cf
        if missed:
Packit 0f19cf
            raise OSError("not found: %s" % ", ".join(missed))
Packit 0f19cf
Packit 0f19cf
    def check_xslt_dependencies(self):
Packit 0f19cf
        sys.path.insert(0, "lib")
Packit 0f19cf
        from dbtexmf.xslt import xslt
Packit 0f19cf
        sys.path.remove("lib")
Packit 0f19cf
Packit 0f19cf
        # At least one XSLT must be available
Packit 0f19cf
        deplists = xslt.get_deplists()
Packit 0f19cf
        if not(deplists):
Packit 0f19cf
            raise OSError("no XSLT available")
Packit 0f19cf
Packit 0f19cf
        # For each XSLT check the programs they depend on
Packit 0f19cf
        xslt_found = []
Packit 0f19cf
        xslt_missed = []
Packit 0f19cf
        for (mod, deplist) in deplists:
Packit 0f19cf
            if not(deplist):
Packit 0f19cf
                xslt_found.append(mod)
Packit Service 7080c1
                print "+checking XSLT %s... yes" % mod
Packit 0f19cf
                continue
Packit 0f19cf
            found, missed = find_programs(deplist)
Packit 0f19cf
            if missed:
Packit 0f19cf
                xslt_missed.append(mod)
Packit Service 7080c1
                print "+checking XSLT %s... no (missing %s)" % \
Packit Service 7080c1
                      (mod, ", ".join(missed))
Packit 0f19cf
            else:
Packit 0f19cf
                xslt_found.append(mod)
Packit Service 7080c1
                print "+checking XSLT %s... yes" % mod
Packit 0f19cf
Packit 0f19cf
        if not(xslt_found):
Packit 0f19cf
            raise OSError("XSLT not installed: %s" % ", ".join(xslt_missed))
Packit 0f19cf
        elif xslt_missed:
Packit Service 7080c1
            print "warning: XSLT not found: %s" % ", ".join(xslt_missed)
Packit 0f19cf
Packit 0f19cf
    def check_latex_dependencies(self):
Packit 0f19cf
        # Find the Latex files from the package
Packit 0f19cf
        stys = []
Packit 0f19cf
        for root, dirs, files in os.walk('latex/'):
Packit 0f19cf
            stys += glob.glob(os.path.join(root, "*.sty"))
Packit 0f19cf
        if stys:
Packit 0f19cf
            own_stys = [os.path.basename(s)[:-4] for s in stys]
Packit 0f19cf
        else:
Packit 0f19cf
            own_stys = []
Packit 0f19cf
Packit 0f19cf
        # Find the used packages
Packit 0f19cf
        used_stys = []
Packit 0f19cf
        re_sty = re.compile(r"\\usepackage\s*\[?.*\]?{(\w+)}")
Packit 0f19cf
        for sty in stys:
Packit Service 7080c1
            f = open(sty)
Packit 0f19cf
            for line in f:
Packit 0f19cf
                line = line.split("%")[0]
Packit 0f19cf
                m = re_sty.search(line)
Packit 0f19cf
                if m:
Packit 0f19cf
                    p = m.group(1)
Packit 0f19cf
                    try:
Packit 0f19cf
                        used_stys.index(p)
Packit 0f19cf
                    except:
Packit 0f19cf
                        used_stys.append(p)
Packit 0f19cf
            f.close()
Packit 0f19cf
Packit 0f19cf
        # Now look if they are found
Packit 0f19cf
        found_stys = []
Packit 0f19cf
        mis_stys = []
Packit 0f19cf
        used_stys.sort()
Packit 0f19cf
Packit 0f19cf
        # Dirty...
Packit 0f19cf
        for f in ("truncate", "elfonts", "CJKutf8", "pinyin", "ifxetex"):
Packit 0f19cf
            try:
Packit 0f19cf
                used_stys.remove(f)
Packit 0f19cf
            except:
Packit 0f19cf
                pass
Packit 0f19cf
Packit 0f19cf
        for sty in used_stys:
Packit 0f19cf
            if sty in found_stys:
Packit 0f19cf
                continue
Packit 0f19cf
            status = "+checking %s... " % sty
Packit 0f19cf
            if sty in own_stys:
Packit 0f19cf
                status += "found in package"
Packit 0f19cf
                found_stys.append(sty)
Packit Service 7080c1
                print status
Packit 0f19cf
                continue
Packit 0f19cf
            stypath = kpsewhich("%s.sty" % sty)
Packit 0f19cf
            if stypath:
Packit 0f19cf
                status += "yes"
Packit 0f19cf
                found_stys.append(sty)
Packit 0f19cf
            else:
Packit 0f19cf
                status += "no"
Packit 0f19cf
                mis_stys.append(sty)
Packit Service 7080c1
            print status
Packit 0f19cf
            
Packit 0f19cf
        if mis_stys:
Packit 0f19cf
            raise OSError("not found: %s" % ", ".join(mis_stys))
Packit 0f19cf
Packit 0f19cf
    def run(self):
Packit Service 7080c1
        if self.install_layout == "deb":
Packit Service 7080c1
            db = DebianInstaller(self)
Packit Service 7080c1
        else:
Packit Service 7080c1
            db = None
Packit 0f19cf
Packit 0f19cf
        if not(db) and not(self.nodeps):
Packit 0f19cf
            try:
Packit 0f19cf
                self.check_xslt_dependencies()
Packit 0f19cf
                self.check_util_dependencies()
Packit 0f19cf
                self.check_latex_dependencies()
Packit Service 7080c1
            except Exception, e:
Packit Service 7080c1
                print >>sys.stderr, "Error: %s" % e
Packit 0f19cf
                sys.exit(1)
Packit 0f19cf
Packit 0f19cf
        if db: db.adapt_paths()
Packit 0f19cf
Packit 0f19cf
        # If no build is required, at least build the script
Packit 0f19cf
        if self.skip_build:
Packit 0f19cf
            self.run_command('build_scripts')
Packit 0f19cf
Packit 0f19cf
        install.run(self)
Packit 0f19cf
Packit 0f19cf
        if db: db.finalize()
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
class InstallData(install_data):
Packit 0f19cf
Packit 0f19cf
    def run(self):
Packit 0f19cf
        ignore_pattern = os.path.sep + r"(CVS|RCS)" + os.path.sep
Packit 0f19cf
        # literal backslash must be doubled in regular expressions
Packit 0f19cf
        ignore_pattern = ignore_pattern.replace('\\', r'\\')
Packit 0f19cf
Packit 0f19cf
        # Walk through sub-dirs, specified in data_files and build the
Packit 0f19cf
        # full data files list accordingly
Packit 0f19cf
        full_data_files = []
Packit 0f19cf
        for install_base, paths in self.data_files:
Packit 0f19cf
            base_files = []
Packit 0f19cf
            for path in paths:
Packit 0f19cf
                if os.path.isdir(path):
Packit 0f19cf
                    pref = os.path.dirname(path)
Packit 0f19cf
                    for root, dirs, files in os.walk(path):
Packit 0f19cf
                        if re.search(ignore_pattern, root + os.sep):
Packit 0f19cf
                            continue
Packit 0f19cf
                        # Only the last directory is copied, not the full path
Packit 0f19cf
                        if not(pref):
Packit 0f19cf
                            iroot = root
Packit 0f19cf
                        else:
Packit 0f19cf
                            iroot = root.split(pref + os.path.sep, 1)[1]
Packit 0f19cf
                        idir = os.path.join(install_base, iroot)
Packit 0f19cf
                        files = [os.path.join(root, i) for i in files]
Packit 0f19cf
                        if files:
Packit 0f19cf
                            full_data_files += [(idir, files)]
Packit 0f19cf
                else:
Packit 0f19cf
                    base_files.append(path)
Packit 0f19cf
Packit 0f19cf
            if base_files:
Packit 0f19cf
                full_data_files += [(install_base, base_files)]
Packit 0f19cf
Packit 0f19cf
        # Replace synthetic data_files by the full one, and do the actual job
Packit 0f19cf
        self.data_files = full_data_files
Packit 0f19cf
        rc = install_data.run(self)
Packit 0f19cf
Packit 0f19cf
        if self.distribution.get_command_obj("install").install_layout != "deb":
Packit 0f19cf
            self.adapt_installed_data()
Packit 0f19cf
        return rc
Packit 0f19cf
Packit 0f19cf
    def adapt_installed_data(self):
Packit 0f19cf
        installed = self.get_outputs()
Packit 0f19cf
        for data_file in installed:
Packit 0f19cf
            if os.path.basename(data_file) == "param.xsl":
Packit 0f19cf
                self._set_texlive_version(data_file)
Packit 0f19cf
                break
Packit 0f19cf
Packit 0f19cf
    def _set_texlive_version(self, param_file):
Packit 0f19cf
        """Detect the installed Texlive version from hyperref.sty version, and
Packit 0f19cf
        override the texlive.version param accordingly."""
Packit 0f19cf
        hyper_sty = kpsewhich("hyperref.sty")
Packit 0f19cf
        if not(hyper_sty):
Packit 0f19cf
            # Cannot do anything, give up
Packit 0f19cf
            return
Packit 0f19cf
Packit 0f19cf
        # Grab the value from package version
Packit Service 7080c1
        d = open(hyper_sty).read()
Packit Service 7080c1
        m = re.search("\\ProvidesPackage{hyperref}\s+\[(\d+)", d, re.M)
Packit 0f19cf
        if not(m):
Packit 0f19cf
            return
Packit 0f19cf
        year = m.group(1)
Packit 0f19cf
Packit 0f19cf
        # Patch the parameter with the found value
Packit Service 7080c1
        p = open(param_file).read()
Packit 0f19cf
        p2 = re.sub('name="texlive.version">.*<',
Packit 0f19cf
                    'name="texlive.version">%s<' % year, p)
Packit Service 7080c1
        f = open(param_file, "w")
Packit 0f19cf
        f.write(p2)
Packit 0f19cf
        f.close()
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
def get_version():
Packit 0f19cf
    sys.path.insert(0, "lib")
Packit 0f19cf
    from dbtexmf.dblatex import dblatex
Packit 0f19cf
    d = dblatex.DbLatex(base=os.getcwd())
Packit 0f19cf
    sys.path.remove("lib")
Packit 0f19cf
    return d.get_version()
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
if __name__ == "__main__":
Packit 0f19cf
    pdfdocs = glob.glob(os.path.join("docs", "[mr]*.pdf"))
Packit 0f19cf
    htmldoc = [os.path.join("docs", "xhtml")]
Packit 0f19cf
    classifiers = [
Packit 0f19cf
       "Operating System :: OS Independent",
Packit 0f19cf
       "Topic :: Text Processing :: Markup :: XML",
Packit 0f19cf
       "License :: OSI Approved :: GNU General Public License (GPL)"
Packit 0f19cf
    ]
Packit 0f19cf
Packit 0f19cf
    description = """
Packit 0f19cf
       dblatex is a program that transforms your SGML/XML DocBook documents to
Packit 0f19cf
       DVI, PostScript or PDF by translating them into pure LaTeX as a first
Packit 0f19cf
       process.  MathML 2.0 markups are supported, too. It started as a clone
Packit 0f19cf
       of DB2LaTeX.
Packit 0f19cf
       """
Packit 0f19cf
Packit 0f19cf
    setup(name="dblatex",
Packit 0f19cf
        version=get_version(),
Packit 0f19cf
        description='DocBook to LaTeX/ConTeXt Publishing',
Packit 0f19cf
        author='Benoit Guillon',
Packit 0f19cf
        author_email='marsgui@users.sourceforge.net',
Packit 0f19cf
        url='http://dblatex.sf.net',
Packit 0f19cf
        license='GPL Version 2 or later',
Packit 0f19cf
        long_description=description,
Packit 0f19cf
        classifiers=classifiers,
Packit 0f19cf
        packages=['dbtexmf',
Packit 0f19cf
                  'dbtexmf.core',
Packit 0f19cf
                  'dbtexmf.xslt',
Packit 0f19cf
                  'dbtexmf.dblatex',
Packit 0f19cf
                  'dbtexmf.dblatex.xetex',
Packit 0f19cf
                  'dbtexmf.dblatex.grubber'],
Packit 0f19cf
        package_dir={'dbtexmf':'lib/dbtexmf'},
Packit 0f19cf
        package_data={'dbtexmf.core':['sgmlent.txt'],
Packit 0f19cf
                      'dbtexmf.dblatex.grubber':['xindylang.xml']},
Packit 0f19cf
        data_files=[('share/dblatex', ['xsl', 'latex', 'etc/schema']),
Packit 0f19cf
                    ('share/doc/dblatex', pdfdocs),
Packit 0f19cf
                    ('share/doc/dblatex', htmldoc),
Packit 0f19cf
                    ('share/man/man1', ['docs/manpage/dblatex.1.gz'])],
Packit 0f19cf
        scripts=['scripts/dblatex'],
Packit 0f19cf
        cmdclass={'build': Build,
Packit 0f19cf
                  'build_scripts': BuildScripts,
Packit 0f19cf
                  'install': Install,
Packit 0f19cf
                  'install_data': InstallData,
Packit 0f19cf
                  'sdist': Sdist}
Packit 0f19cf
        )
Packit 0f19cf