File: Setup.py

package info (click to toggle)
python-gd 0.56%2Bdfsg-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 204 kB
  • ctags: 159
  • sloc: ansic: 1,656; python: 191; makefile: 51
file content (118 lines) | stat: -rw-r--r-- 2,597 bytes parent folder | download | duplicates (2)
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
110
111
112
113
114
115
116
117
118
# Setup for gdmodule 0.50 and later

from distutils.core import setup, Extension
import os, glob, sys, string

# version of this gdmodule package
this_version = "0.56"

# directory existence tester

def dirtest(lst):
    rlst = []
    for d in lst:
        try:
            if os.listdir(d):
                rlst.append(d)
        except:
            pass
    return rlst

def filetest(path, names):
    rlst = []
    for d in path:
        for i in range(len(names)):
            found = glob.glob(os.path.join(d, "lib%s.*" % names[i]))
            if found:
                rlst.append(names[i])
                names[i] = None
        names = filter(None, names)
    return rlst

def remove(itm, lst):
    r = range(len(lst))
    r.reverse()
    for i in r:
        if lst[i] == itm:
            del lst[i]

# library_dirs option is rather non-portable, but since I am targetting
# Unixoid OS's I will just look for the usual suspects.

libdirs = dirtest([
    "/usr/local/lib", "/sw/lib", "/usr/lib",
    "/usr/lib/X11", "/usr/X11R6/lib",
    "/opt/gnome/lib",
])

# include_dirs are also non-portable; same trick here.

incdirs = dirtest([
    "/usr/local/include", "/sw/include", "/usr/include",
    "/usr/include/X11", "/usr/X11R6/include",
    "/opt/gnome/include",
])

# Try to identify our libraries

want_libs = [
    "gd",
    "jpeg", "png", "gif", "z",
    "X11", "Xpm",
    "ttf", "freetype",
]

libs = filetest(libdirs, want_libs)

missing = []

for l in want_libs:
    if l and l not in libs:
        missing.append(l)

if missing:
    print "WARNING:  Missing", string.join(missing, ", "), "Libraries"

# hand-clean the libs

if "gd" not in libs:
    print "Can't find GD library."
    sys.exit(0)

if "ttf" in libs and "freetype" in libs:
    remove("ttf", libs)

if "Xpm" in libs and "X11" not in libs:
    remove("Xpm", libs)

if "png" in libs and "z" not in libs:
    remove("png", libs)

if "z" in libs and "png" not in libs:
    remove("png", libs)

# build the macro list

macros = []

for l in libs:
    macros.append(( "HAVE_LIB%s" % l.upper(), None ))

# OK, now do it!

setup(name="gdmodule", version=this_version,

    description="GD Package",
    long_description="GD Package",
    author="Chris Gonnerman",
    author_email="chris.gonnerman@newcenturycomputers.net",

    url="http://newcenturycomputers.net/projects/gdmodule.html",
    py_modules=["gd"],
    ext_modules=[
        Extension("_gd", ["_gdmodule.c"], 
            include_dirs=incdirs, library_dirs=libdirs,
            libraries=libs, define_macros=macros)],
)

# end of file... I guess we're done.