File: setup.py

package info (click to toggle)
pyfribidi 0.12.0%2Brepack-9
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 184 kB
  • sloc: python: 395; ansic: 108; makefile: 4
file content (109 lines) | stat: -rwxr-xr-x 3,397 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/usr/bin/env python

from distutils.core import setup
from distutils.extension import Extension
from distutils.command import build_ext
from my_build_ext import build_ext as _link_build_ext
from distutils.util import strtobool

import os

EMBED = strtobool(os.environ.get("EMBED", "1"))

if not os.path.exists("fribidi-src"):
    EMBED = False


class my_build_ext(_link_build_ext):
    def build_extension(self, ext):
        configure = os.path.abspath("fribidi-src/configure")
        bdir = os.path.join(self.build_temp, "fribidi")
        if not os.path.isdir(bdir):
            os.makedirs(bdir)
        cwd = os.getcwd()
        os.chdir(bdir)
        try:
            if not os.path.exists("./config.status"):
                os.system("sh %s --with-glib=no" % configure)
        finally:
            os.chdir(cwd)

        self.include_dirs[:0] = [bdir, "%s/lib" % bdir]
        self.compiler.set_include_dirs(self.include_dirs)

        return _link_build_ext.build_extension(self, ext)


def _getpkgconfigvalue(value, package="fribidi"):
    """ get a value from pkg-config for package (default: fribidi)
    param value: long-option to pkg-config
    """
    f = os.popen("pkg-config --%s %s" % (value, package))
    x = f.readline().strip()
    f.close()

    l = []
    for y in x.split(" "):
        l.append(y[2:])
    return [x.strip() for x in l if x.strip()]

if not EMBED:
    lib_sources = []
    include_dirs = _getpkgconfigvalue("cflags-only-I") or ["/usr/include/fribidi"]
    libraries = _getpkgconfigvalue("libs-only-l") or ["fribidi"]
    define_macros = []
    my_build_ext = _link_build_ext
else:
        lib_sources = """
fribidi-src/lib/fribidi.c
fribidi-src/lib/fribidi-arabic.c
fribidi-src/lib/fribidi-bidi.c
fribidi-src/lib/fribidi-bidi-types.c
fribidi-src/lib/fribidi-deprecated.c
fribidi-src/lib/fribidi-joining.c
fribidi-src/lib/fribidi-joining-types.c
fribidi-src/lib/fribidi-mem.c
fribidi-src/lib/fribidi-mirroring.c
fribidi-src/lib/fribidi-run.c
fribidi-src/lib/fribidi-shape.c
fribidi-src/charset/fribidi-char-sets-cp1256.c
fribidi-src/charset/fribidi-char-sets-iso8859-8.c
fribidi-src/charset/fribidi-char-sets-cap-rtl.c
fribidi-src/charset/fribidi-char-sets-utf8.c
fribidi-src/charset/fribidi-char-sets.c
fribidi-src/charset/fribidi-char-sets-cp1255.c
fribidi-src/charset/fribidi-char-sets-iso8859-6.c
""".split()
        libraries = []
        include_dirs = ["fribidi-src", "fribidi-src/lib", "fribidi-src/charset"]
        define_macros = [("HAVE_CONFIG_H", 1)]


def get_version():
    d = {}
    try:
        exec(compile(open("pyfribidi.py", "rb").read(), "pyfribidi.py", 'exec'), d, d)
    except (ImportError, RuntimeError):
        pass
    return d["__version__"]


setup(name="pyfribidi",
      version=get_version(),
      description="Python libfribidi interface",
      author="Yaacov Zamir, Nir Soffer",
      author_email="kzamir@walla.co.il",
      url="https://github.com/pediapress/pyfribidi",
      license="GPL",
      install_requires=[
          "six",
      ],
      cmdclass={'build_ext': my_build_ext},
      long_description=open("README.rst").read(),
      py_modules=["pyfribidi", "pyfribidi2"],
      ext_modules=[Extension(
            name='_pyfribidi',
            sources=['pyfribidi.c'] + lib_sources,
            define_macros=define_macros,
            libraries=libraries,
            include_dirs=include_dirs)])