Blame setup.py

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