132 lines
3.6 KiB
Diff
132 lines
3.6 KiB
Diff
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 'lib64' or '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']),
|
|
+ ],
|
|
+ )
|