python3-cairo:fix

This commit is contained in:
alihanozturk
2017-02-16 08:51:44 +03:00
parent 01168ef295
commit 106c7bb202
3 changed files with 139 additions and 15 deletions
@@ -4,21 +4,14 @@
# Licensed under the GNU General Public License, version 3. # Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt # See the file http://www.gnu.org/licenses/gpl.txt
from pisi.actionsapi import autotools from pisi.actionsapi import pythonmodules
from pisi.actionsapi import shelltools
from pisi.actionsapi import get from pisi.actionsapi import get
from pisi.actionsapi import pisitools from pisi.actionsapi import pisitools
shelltools.export("JOBS", get.makeJOBS().replace("-j", ""))
def setup(): def setup():
shelltools.export("PYTHON","/usr/bin/python3") pythonmodules.compile(pyVer = "3")
shelltools.system("python3 ./waf configure --prefix=/usr --libdir=/usr/lib")
def build():
shelltools.system("python3 waf build -v")
def install(): def install():
shelltools.system("DESTDIR=%s python3 waf install" % get.installDIR()) pythonmodules.install(pyVer = "3")
pisitools.dodoc("AUTHORS", "COPYING", "README","COPYING*") pisitools.dodoc("AUTHORS", "COPYING", "README","COPYING*")
@@ -0,0 +1,131 @@
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']),
+ ],
+ )
@@ -18,7 +18,7 @@
<Dependency>cairo-devel</Dependency> <Dependency>cairo-devel</Dependency>
</BuildDependencies> </BuildDependencies>
<Patches> <Patches>
<Patch>pycairo-1.10.0-waf-python3.4.patch</Patch> <Patch level="1">pycairo-setup.patch</Patch>
</Patches> </Patches>
</Source> </Source>
@@ -49,7 +49,7 @@
<History> <History>
<Update release="3"> <Update release="3">
<Date>2017-02-01</Date> <Date>2017-02-16</Date>
<Version>1.10.0</Version> <Version>1.10.0</Version>
<Comment>Release Bump</Comment> <Comment>Release Bump</Comment>
<Name>Ayhan Yalçınsoy</Name> <Name>Ayhan Yalçınsoy</Name>