summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Dahlin <zilch@src.gnome.org>2003-02-08 22:39:21 +0000
committerJohan Dahlin <zilch@src.gnome.org>2003-02-08 22:39:21 +0000
commit1920ba0212c27c60d97cb8aa8a6530a07fbf2bdc (patch)
tree51278e396c1335cd4b19bfb7a6d1550b8b44bcae
parentbd804e22585a5cb60c5e2432e693e159d9b4299f (diff)
downloadpygtk-1920ba0212c27c60d97cb8aa8a6530a07fbf2bdc.tar.gz
Added.
* pygtk-2.0.pc.in (codegendir): Added. * setup.py: Added Numeric and gtkgl support (gtkgl untested). * dsextras.py: Updated.
-rw-r--r--ChangeLog6
-rw-r--r--dsextras.py42
-rw-r--r--pygtk-2.0.pc.in1
-rwxr-xr-xsetup.py24
4 files changed, 63 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 845f010b..ed4ae4fa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2003-02-08 Johan Dahlin <jdahlin@async.com.br>
+ * pygtk-2.0.pc.in (codegendir): Added.
+
+ * setup.py: Added Numeric and gtkgl support (gtkgl untested).
+
+ * dsextras.py: Updated.
+
* gtk/libglade.override (connect_many): Add PyErr_Clear()
here. Since PyMapping_GetItemString will raise an AttributeError
if the handler can't be found.
diff --git a/dsextras.py b/dsextras.py
index 620a8963..387d3dcc 100644
--- a/dsextras.py
+++ b/dsextras.py
@@ -61,6 +61,25 @@ class InstallLib(install_lib):
def get_inputs(self):
return install_lib.get_inputs(self) + self.local_inputs
+def pkgc_version_check(name, longname, req_version):
+ is_installed = not os.system('pkg-config --exists %s' % name)
+ if not is_installed:
+ print "Could not find %s" % longname
+ return 0
+
+ orig_version = getoutput('pkg-config --modversion %s' % name)
+ version = map(int, orig_version.split('.'))
+ pkc_version = map(int, req_version.split('.'))
+
+ if version >= pkc_version:
+ return 1
+ else:
+ print "Warning: Too old version of %s" % longname
+ print " Need %s, but %s is installed" % \
+ (self.pkc_version, orig_version)
+ self.can_build_ok = 0
+ return 0
+
class PkgConfigExtension(Extension):
can_build_ok = None
def __init__(self, **kwargs):
@@ -68,7 +87,8 @@ class PkgConfigExtension(Extension):
kwargs['include_dirs'] = self.get_include_dirs(name) + GLOBAL_INC
kwargs['define_macros'] = GLOBAL_MACROS
kwargs['libraries'] = self.get_libraries(name)
- kwargs['library_dirs'] = self.get_library_dirs(name)
+ kwargs['library_dirs'] = self.get_library_dirs(name)
+ self.name = kwargs['name']
self.pkc_name = kwargs['pkc_name']
self.pkc_version = kwargs['pkc_version']
del kwargs['pkc_name'], kwargs['pkc_version']
@@ -93,7 +113,8 @@ class PkgConfigExtension(Extension):
retval = os.system('pkg-config --exists %s' % self.pkc_name)
if retval:
- print "* Could not find %s." % self.pkc_name
+ print ("* %s.pc could not be found, bindings for %s"
+ " will not be built." % (self.pkc_name, self.name))
self.can_build_ok = 0
return 0
@@ -115,13 +136,15 @@ class PkgConfigExtension(Extension):
pass
class Template:
- def __init__(self, override, output, defs, prefix, register=[]):
+ def __init__(self, override, output, defs, prefix,
+ register=[], load_types=None):
self.override = override
self.defs = defs
self.register = register
self.output = output
self.prefix = prefix
-
+ self.load_types = load_types
+
def check_dates(self):
if not os.path.exists(self.output):
return 0
@@ -158,6 +181,10 @@ class Template:
dp.startParsing()
register_types(dp)
+ if self.load_types:
+ globals = {}
+ execfile(self.load_types, globals)
+
dp = DefsParser(self.defs)
dp.startParsing()
register_types(dp)
@@ -175,12 +202,15 @@ class TemplateExtension(PkgConfigExtension):
defs = kwargs['defs']
output = defs[:-5] + '.c'
override = kwargs['override']
+ load_types = kwargs.get('load_types')
self.templates = []
self.templates.append(Template(override, output, defs, 'py' + name,
- kwargs['register']))
+ kwargs['register'], load_types))
del kwargs['register'], kwargs['override'], kwargs['defs']
-
+ if load_types:
+ del kwargs['load_types']
+
if kwargs.has_key('output'):
kwargs['name'] = kwargs['output']
del kwargs['output']
diff --git a/pygtk-2.0.pc.in b/pygtk-2.0.pc.in
index c950201a..85682144 100644
--- a/pygtk-2.0.pc.in
+++ b/pygtk-2.0.pc.in
@@ -10,6 +10,7 @@ pygtkincludedir=${includedir}/pygtk-2.0
# same here. Useful when calling the code generator in addon packages.
defsdir=${datadir}/pygtk/2.0/defs
+codegendir=${datadir}/pygtk/2.0/codegen
Name: PyGTK
Description: Python bindings for GTK+ and related libraries
diff --git a/setup.py b/setup.py
index 141c5dcb..39f7c091 100755
--- a/setup.py
+++ b/setup.py
@@ -4,10 +4,8 @@
#
# TODO:
# pygtk.spec(.in)
-# Numeric support
# win32 testing
# install *.pyc for codegen
-# GtkGL
#
"""Python Bindings for the GTK Widget Set.
@@ -35,6 +33,7 @@ ATK_REQUIRED = '1.0.0'
PANGO_REQUIRED = '1.0.0'
GTK_REQUIRED = '2.0.0'
LIBGLADE_REQUIRED = '2.0.0'
+GTKGL_REQUIRED = '1.99.0'
PYGTK_SUFFIX = '2.0'
PYGTK_SUFFIX_LONG = 'gtk-' + PYGTK_SUFFIX
@@ -144,6 +143,15 @@ gtk = TemplateExtension(name='gtk', pkc_name='gtk+-2.0',
defs='gtk/gtk.defs')
gtk.templates.append(gdk_template)
+gtkgl = TemplateExtension(name='gtkgl', pkc_name='gtkgl-2.0',
+ pkc_version=LIBGLADE_REQUIRED,
+ output='gtk.gtkgl',
+ defs='gtk/gtkgl.defs',
+ sources=['gtk/gtkglmodule.c',
+ 'gtk/gtkgl.c'],
+ register=['gtk/gtk-types.defs',
+ 'gtk/gtkgl.defs'],
+ override='gtk/gtkgl.override')
# Libglade
libglade = TemplateExtension(name='libglade', pkc_name='libglade-2.0',
pkc_version=LIBGLADE_REQUIRED,
@@ -178,6 +186,12 @@ if pango.can_build():
ext_modules.append(pango)
data_files.append((DEFS_DIR, ('pango.defs', 'pango-types.defs')))
if gtk.can_build():
+ try:
+ import Numeric
+ GLOBAL_MACROS.append(('HAVE_NUMPY', 1))
+ except ImportError:
+ print ('* Numeric module could not be found, '
+ 'will build without Numeric support.')
ext_modules.append(gtk)
data_files.append((INCLUDE_DIR, ('gtk/pygtk.h',)))
data_files.append((DEFS_DIR, ('gtk/gdk.defs', 'gtk/gdk-types.defs',
@@ -187,7 +201,10 @@ if gtk.can_build():
if libglade.can_build():
ext_modules.append(libglade)
data_files.append((DEFS_DIR, ('gtk/libglade.defs',)))
-
+if gtkgl.can_build():
+ ext_modules.append(gtkgl)
+ data_files.append((DEFS_DIR, ('gtk/gtkgl.defs',)))
+
if '--enable-threading' in sys.argv:
try:
import thread
@@ -202,7 +219,6 @@ if '--enable-threading' in sys.argv:
module.extra_link_args += raw.split()
raw = getoutput('pkg-config --cflags-only-I %s' % name)
module.extra_compile_args.append(raw)
-
doclines = __doc__.split("\n")
setup(name="pygtk",