diff -urN pycairo-1.10.0.orig/setup.py pycairo-1.10.0/setup.py --- pycairo-1.10.0.orig/setup.py 1970-01-01 00:00:00.000000000 +0000 +++ pycairo-1.10.0/setup.py 2013-07-16 05:59:25.414054186 +0000 @@ -0,0 +1,127 @@ +#!/usr/bin/env python + +import distutils.core as dic +import distutils.dir_util as dut +import distutils.file_util as fut +import distutils.sysconfig as dsy +import io +import os +import subprocess +import sys + +pycairo_version = '1.10.0' +cairo_version_required = '1.10.1' +python_version_required = (3,1) +pkgconfig_file = 'py3cairo.pc' +config_file = 'src/config.h' + +LIBDIR = os.uname ()[-1] == 'x86_64' and 'lib' + +def call(command): + pipe = subprocess.Popen(command, shell=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + pipe.wait() + return pipe + +def pkg_config_version_check(pkg, version): + check = '%s >= %s' % (pkg, version) + pipe = call("pkg-config --print-errors --exists '%s'" % (check,)) + if pipe.returncode == 0: + print(check, ' Successful') + else: + print(check, ' Failed') + raise SystemExit(pipe.stderr.read().decode()) + +def pkg_config_parse(opt, pkg): + check = "pkg-config %s %s" % (opt, pkg) + pipe = call("pkg-config %s %s" % (opt, pkg)) + if pipe.returncode != 0: + print(check, ' Failed') + raise SystemExit(pipe.stderr.read().decode()) + + output = pipe.stdout.read() + output = output.decode() # get the str + opt = opt[-2:] + return [x.lstrip(opt) for x in output.split()] + + +def createPcFile(PcFile): + print('creating %s' % PcFile) + with open(PcFile, 'w') as fo: + fo.write ("""\ +prefix=%s + +Name: Pycairo +Description: Python 3 bindings for cairo +Version: %s +Requires: cairo +Cflags: -I${prefix}/include/pycairo +Libs: +""" % (sys.prefix, pycairo_version) + ) + +def createConfigFile(ConfigFile): + print('creating %s' % ConfigFile) + v = pycairo_version.split('.') + + with open(ConfigFile, 'w') as fo: + fo.write ("""\ +// Configuration header created by setup.py - do not edit +#ifndef _CONFIG_H +#define _CONFIG_H 1 + +#define PYCAIRO_VERSION_MAJOR %s +#define PYCAIRO_VERSION_MINOR %s +#define PYCAIRO_VERSION_MICRO %s +#define VERSION "%s" + +#endif // _CONFIG_H +""" % (v[0], v[1], v[2], pycairo_version) + ) + + +if sys.version_info < python_version_required: + raise SystemExit('Error: Python >= %s is required' % + (python_version_required,)) + +pkg_config_version_check ('cairo', cairo_version_required) +if sys.platform == 'win32': + runtime_library_dirs = [] +else: + runtime_library_dirs = pkg_config_parse('--libs-only-L', 'cairo') + +createPcFile(pkgconfig_file) +createConfigFile(config_file) + + +cairo = dic.Extension( + name = 'cairo._cairo', + sources = ['src/cairomodule.c', + 'src/context.c', + 'src/font.c', + 'src/matrix.c', + 'src/path.c', + 'src/pattern.c', + 'src/surface.c', + ], + include_dirs = pkg_config_parse('--cflags-only-I', 'cairo'), + library_dirs = pkg_config_parse('--libs-only-L', 'cairo'), + libraries = pkg_config_parse('--libs-only-l', 'cairo'), + runtime_library_dirs = runtime_library_dirs, + ) + +dic.setup( + name = "pycairo", + version = pycairo_version, + description = "python interface for cairo", + ext_modules = [cairo], + package_dir = {'cairo': 'src'}, + packages = ['cairo'], + data_files = [ + ('include/pycairo', ['src/py3cairo.h']), + (LIBDIR + '/pkgconfig', [pkgconfig_file]), + (os.path.join(dsy.get_python_lib(True, False, prefix=sys.prefix), 'cairo'), + ['src/__init__.py']), + ], + )