summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen de Groot <yngwin@gmail.com>2012-07-23 18:50:58 +0800
committerBen de Groot <yngwin@gmail.com>2012-07-23 18:50:58 +0800
commit7f54602764865c6bebda162b10a5b3cd49ec3f8b (patch)
tree1b3de380546f2e503f77c3a0774c864bdb6514d5 /x11-libs
parentmedia-sound/coquillo has been moved to official tree (diff)
downloadbetagarden-7f54602764865c6bebda162b10a5b3cd49ec3f8b.tar.gz
betagarden-7f54602764865c6bebda162b10a5b3cd49ec3f8b.tar.bz2
betagarden-7f54602764865c6bebda162b10a5b3cd49ec3f8b.zip
Add infinality font patches and eselect module
Diffstat (limited to 'x11-libs')
-rw-r--r--x11-libs/cairo/Manifest10
-rw-r--r--x11-libs/cairo/cairo-1.10.2-r3.ebuild165
-rw-r--r--x11-libs/cairo/cairo-1.12.2-r1.ebuild140
-rw-r--r--x11-libs/cairo/files/cairo-1.10.0-buggy_gradients.patch17
-rw-r--r--x11-libs/cairo/files/cairo-1.10.2-interix.patch36
-rw-r--r--x11-libs/cairo/files/cairo-1.10.2-qt-surface.patch55
-rw-r--r--x11-libs/cairo/files/cairo-1.10.2-ubuntu.patch53
-rw-r--r--x11-libs/cairo/files/cairo-1.8.8-interix.patch16
-rw-r--r--x11-libs/cairo/files/cairo-respect-fontconfig.patch13
9 files changed, 505 insertions, 0 deletions
diff --git a/x11-libs/cairo/Manifest b/x11-libs/cairo/Manifest
new file mode 100644
index 0000000..99a1c5b
--- /dev/null
+++ b/x11-libs/cairo/Manifest
@@ -0,0 +1,10 @@
+AUX cairo-1.10.0-buggy_gradients.patch 581 SHA256 3b622bb250b996ea5f5adc5c899af343e0efba5c477fa0e51fdbb720a8dd1b18 SHA512 c602992dd962586f9de09d2a838f828901845a02ba7afa1bc0cb434393aa05e98f02dc2342299b0b09f7cfbabb0295a22874023b68e1312982df2b71e3030442 WHIRLPOOL 55c72b55b1d378653204e1c8e0db463d12254ffa7a52e5c4b86eca9b67607bdcbb545b1589fa9a6df781d230d17264c67a018cece4030aac90eda7c68c41f5ea
+AUX cairo-1.10.2-interix.patch 1235 SHA256 d915d69e2eb96f6a4bef1de0c493ed9face7b5d6a79194ab9f2a7f3d85b799ea SHA512 fbc524c2f359b489dc337a2aa70fbfc21e4cea0e306d144f45f520875471a66b65cd7687730461bff16c47792a30d81ed2be48895e2809cc24996a2dc26c560e WHIRLPOOL d25a09cb9c53b553690e865385be90cd696ed6135734d4d2f3814bd30e386c5f0bff05e7cd4f34c737dd2db2e35f590023b4dd7a00e767abdad9acf60775d684
+AUX cairo-1.10.2-qt-surface.patch 2687 SHA256 fb96199ec7a4cf8527726be8d0333ed883183b56960832218eca1c9ef2e05dbd SHA512 1263f129f96ecf0277ba436cac0229b6245bed273594b2199d6b0f36711e323c966c43d9264e4cc8b69a299c8e9c1ec4af09ae2284bf5ca59a72486b31439c48 WHIRLPOOL 1ec6c56a6e1de3c838fb2dfa541e062e3f63630910a5609fe211bab8c8bbdb1968af021954020b4da208ba43cde18795e6114fccdd13ee0de2e0edd285d7996a
+AUX cairo-1.10.2-ubuntu.patch 1777 SHA256 150d5b9f7f842d574a6e10e579bc8f27ca7b2055af8e0dd455aa0832bc3f4dae SHA512 8d9144fe809c4135f0dbd271d580620da769e2f946386e345783cf2379db458ed5ef964785b66d70b4e44a007c85a9209c85366144ad057d3ac5b60ee80383bc WHIRLPOOL c0754ccdeacc91ee2d222a945d8787ae3379a2881c36d8f0f6c545262baeb8f9fc866dba657f5d706c0b658efd5834c06725c2b942473b8755af10662f8ec088
+AUX cairo-1.8.8-interix.patch 619 SHA256 505be82a1a0b7f963cb49ff85ecf1fa1389a4e43621df76b91fc1529616b2299 SHA512 651b73124ee5b65e2735deefde36727122e9c513da134441be923fb875aedfd3dbd81de8652e3919f3fa04d1de13dee6ec28e4fcd687aaec427d3b0dd94ac703 WHIRLPOOL a1803cbd8f32a8e926a8af932e099c5275920e3e09f7a53ee49898823e81ee7a2533a4db8d2125f200fa409d98fb8e2cbdeb01f00f64b7ba64ba8dffb8487bc3
+AUX cairo-respect-fontconfig.patch 538 SHA256 1732f21adfe5ab291d987b7537b13470266253f599901a4707d27fd2b3d66734 SHA512 4d4d473f956b56f11b31f513de06751dcc77342e0f04ecf37064a74b8217f9d3536c0a8a41b09e580f34576ff2d06815b4cbc2bc091c201f947965509677415e WHIRLPOOL c7d8f364a787b095054507a6dceafe08e8112322853e261303adc07b79a9070be63200dbd4ff465943e2303126bcd7eec51b0f6c53f1d4e9a49fd363acbccde2
+DIST cairo-1.10.2.tar.gz 23558405 SHA256 32018c7998358eebc2ad578ff8d8559d34fc80252095f110a572ed23d989fc41 SHA512 8be4b9ce002f039014d747cc2b48c6a6dfac78df74ebc5ad711a8f36572b819b2c6da3cc4732d0ca93e9052b4b3bb42a146f5e7e346b75dde695d44477b19c9a WHIRLPOOL 8ee0e6f2f520a8e5e046a311926f07a49dd7b730b66b49684ce0ea296b9b5822a80a194b8eff56c73d92da850faa15fed925a1df41b3ea28e3841530548d4ef5
+DIST cairo-1.12.2.tar.xz 42051584 SHA256 b786bc4a70542bcb09f2d9d13e5e6a0c86408cbf6d1edde5f0de807eecf93f96 SHA512 149e55e206175220448c520624980ba0081a3e2336202f6c5d5ba9098a51c01f6d89843c3c3f0d5bed3473a5ff49dee6530e2cacec93a94c9d78767cb881f847 WHIRLPOOL 89c773c1b82909a02332731a4e16e401ec20779205189503c08a1bf25946733c2b02415555f520ab3ca64202fb7e0ef3a5fbea39676436aafeb42d977a6e3897
+EBUILD cairo-1.10.2-r3.ebuild 4052 SHA256 78d81007f31d5f5aa5a6af2df9590655af96f6854d78fe9e6b4f18be903b473a SHA512 14875d8a82da1810da30c5e332a7cd9b7b33a76a6b25f45829d225e2972b47701114b0d68b501cf7b2d28269d8d131c9a5c99e44b2924d29e250410568652585 WHIRLPOOL b056750da32e89698fe1028dff65976b1a3aac0704d61dd15840e52cad6687337907ed4dc7b1bd45ecffa8e7db081bc1cdfe7bfe1ccb43daf52cfa3fd7363615
+EBUILD cairo-1.12.2-r1.ebuild 3709 SHA256 ea40f468cca6c66682dbecacc55c08136049e5f6e50deb5e9f86bba345add1d2 SHA512 13b23402a48aa8292dea557c81a42ff2c9f16cea713d511dc8749cdad243d99d4a18b432dd29ecbdfafd7454a7d4e55d18b6d33cc7009f00d73f3923e2e74311 WHIRLPOOL 8e61e66cae015804841e84e8740f4973c9e27c3eef4b6c0416755478710c1aaad263d9cc54b4a188f65f01c53fd8bcf3b45c77e80048074b6b47ea448fba355c
diff --git a/x11-libs/cairo/cairo-1.10.2-r3.ebuild b/x11-libs/cairo/cairo-1.10.2-r3.ebuild
new file mode 100644
index 0000000..747f27c
--- /dev/null
+++ b/x11-libs/cairo/cairo-1.10.2-r3.ebuild
@@ -0,0 +1,165 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=3
+
+EGIT_REPO_URI="git://anongit.freedesktop.org/git/cairo"
+[[ ${PV} == *9999 ]] && GIT_ECLASS="git"
+
+inherit eutils flag-o-matic autotools ${GIT_ECLASS}
+
+DESCRIPTION="A vector graphics library with cross-device output support"
+HOMEPAGE="http://cairographics.org/"
+[[ ${PV} == *9999 ]] || SRC_URI="http://cairographics.org/releases/${P}.tar.gz"
+
+LICENSE="|| ( LGPL-2.1 MPL-1.1 )"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="X aqua debug directfb doc drm gallium +glib opengl openvg qt4 static-libs +svg xcb"
+
+# Test causes a circular depend on gtk+... since gtk+ needs cairo but test needs gtk+ so we need to block it
+RESTRICT="test"
+
+RDEPEND="media-libs/fontconfig
+ media-libs/freetype:2[lcdfilter]
+ media-libs/libpng:0
+ sys-libs/zlib
+ >=x11-libs/pixman-0.18.4
+ directfb? ( dev-libs/DirectFB )
+ glib? ( dev-libs/glib:2 )
+ opengl? ( virtual/opengl )
+ openvg? ( media-libs/mesa[gallium] )
+ qt4? ( >=x11-libs/qt-gui-4.8:4 )
+ svg? ( dev-libs/libxml2 )
+ X? (
+ >=x11-libs/libXrender-0.6
+ x11-libs/libXext
+ x11-libs/libX11
+ x11-libs/libXft
+ drm? (
+ >=sys-fs/udev-136
+ gallium? ( media-libs/mesa[gallium] )
+ )
+ )
+ xcb? (
+ x11-libs/libxcb
+ x11-libs/xcb-util
+ )"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ >=sys-devel/libtool-2
+ doc? (
+ >=dev-util/gtk-doc-1.6
+ ~app-text/docbook-xml-dtd-4.2
+ )
+ X? (
+ x11-proto/renderproto
+ drm? (
+ x11-proto/xproto
+ >=x11-proto/xextproto-7.1
+ )
+ )"
+
+src_prepare() {
+
+ epatch "${FILESDIR}"/${P}-ubuntu.patch
+ epatch "${FILESDIR}"/${PN}-respect-fontconfig.patch
+
+ epatch "${FILESDIR}"/${PN}-1.8.8-interix.patch
+ epatch "${FILESDIR}"/${PN}-1.10.0-buggy_gradients.patch
+ epatch "${FILESDIR}"/${P}-interix.patch
+ epatch "${FILESDIR}"/${P}-qt-surface.patch
+
+ # Slightly messed build system YAY
+ if [[ ${PV} == *9999* ]]; then
+ touch boilerplate/Makefile.am.features
+ touch src/Makefile.am.features
+ touch ChangeLog
+ fi
+
+ # We need to run elibtoolize to ensure correct so versioning on FreeBSD
+ # upgraded to an eautoreconf for the above interix patch.
+ eautoreconf
+}
+
+src_configure() {
+ local myopts
+
+ # SuperH doesn't have native atomics yet
+ use sh && myopts+=" --disable-atomic"
+
+ [[ ${CHOST} == *-interix* ]] && append-flags -D_REENTRANT
+
+ # tracing fails to compile, because Solaris' libelf doesn't do large files
+ [[ ${CHOST} == *-solaris* ]] && myopts+=" --disable-trace"
+
+ # 128-bits long arithemetic functions are missing
+ [[ ${CHOST} == powerpc*-*-darwin* ]] && filter-flags -mcpu=*
+
+ #gets rid of fbmmx.c inlining warnings
+ append-flags -finline-limit=1200
+
+ if use X; then
+ myopts+="
+ --enable-tee=yes
+ $(use_enable drm)
+ "
+
+ if use drm; then
+ myopts+="
+ $(use_enable gallium)
+ $(use_enable xcb xcb-drm)
+ "
+ else
+ use gallium && ewarn "Gallium use requires drm use enabled. So disabling for now."
+ myopts+="
+ --disable-gallium
+ --disable-xcb-drm
+ "
+ fi
+ else
+ use drm && ewarn "drm use requires X use enabled. So disabling for now."
+ myopts+="
+ --disable-drm
+ --disable-gallium
+ --disable-xcb-drm
+ "
+ fi
+
+ use elibc_FreeBSD && myopts+=" --disable-symbol-lookup"
+
+ # --disable-xcb-lib:
+ # do not override good xlib backed by hardforcing rendering over xcb
+ econf \
+ --disable-dependency-tracking \
+ $(use_with X x) \
+ $(use_enable X xlib) \
+ $(use_enable X xlib-xrender) \
+ $(use_enable aqua quartz) \
+ $(use_enable aqua quartz-image) \
+ $(use_enable debug test-surfaces) \
+ $(use_enable directfb) \
+ $(use_enable glib gobject) \
+ $(use_enable doc gtk-doc) \
+ $(use_enable openvg vg) \
+ $(use_enable opengl gl) \
+ $(use_enable qt4 qt) \
+ $(use_enable static-libs static) \
+ $(use_enable svg) \
+ $(use_enable xcb) \
+ $(use_enable xcb xcb-shm) \
+ --enable-ft \
+ --enable-pdf \
+ --enable-png \
+ --enable-ps \
+ --disable-xlib-xcb \
+ ${myopts}
+}
+
+src_install() {
+ # parallel make install fails
+ emake -j1 DESTDIR="${D}" install || die
+ find "${ED}" -name '*.la' -exec rm -f {} +
+ dodoc AUTHORS ChangeLog NEWS README || die
+}
diff --git a/x11-libs/cairo/cairo-1.12.2-r1.ebuild b/x11-libs/cairo/cairo-1.12.2-r1.ebuild
new file mode 100644
index 0000000..5b003b4
--- /dev/null
+++ b/x11-libs/cairo/cairo-1.12.2-r1.ebuild
@@ -0,0 +1,140 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=4
+
+EGIT_REPO_URI="git://anongit.freedesktop.org/git/cairo"
+[[ ${PV} == *9999 ]] && GIT_ECLASS="git-2"
+
+inherit eutils flag-o-matic autotools ${GIT_ECLASS}
+
+DESCRIPTION="A vector graphics library with cross-device output support"
+HOMEPAGE="http://cairographics.org/"
+[[ ${PV} == *9999 ]] || SRC_URI="http://cairographics.org/releases/${P}.tar.xz"
+
+LICENSE="|| ( LGPL-2.1 MPL-1.1 )"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="X aqua debug directfb doc drm gallium +glib opengl openvg qt4 static-libs +svg xcb"
+
+# Test causes a circular depend on gtk+... since gtk+ needs cairo but test needs gtk+ so we need to block it
+RESTRICT="test"
+
+RDEPEND="media-libs/fontconfig
+ media-libs/freetype:2
+ media-libs/libpng:0
+ sys-libs/zlib
+ >=x11-libs/pixman-0.18.4
+ directfb? ( dev-libs/DirectFB )
+ glib? ( >=dev-libs/glib-2.28.6:2 )
+ opengl? ( virtual/opengl )
+ openvg? ( media-libs/mesa[openvg] )
+ qt4? ( >=x11-libs/qt-gui-4.8:4 )
+ svg? ( dev-libs/libxml2 )
+ X? (
+ >=x11-libs/libXrender-0.6
+ x11-libs/libXext
+ x11-libs/libX11
+ x11-libs/libXft
+ drm? (
+ >=sys-fs/udev-136
+ gallium? ( media-libs/mesa[gallium] )
+ )
+ )
+ xcb? (
+ x11-libs/libxcb
+ x11-libs/xcb-util
+ )"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ >=sys-devel/libtool-2
+ doc? (
+ >=dev-util/gtk-doc-1.6
+ ~app-text/docbook-xml-dtd-4.2
+ )
+ X? (
+ x11-proto/renderproto
+ drm? (
+ x11-proto/xproto
+ >=x11-proto/xextproto-7.1
+ )
+ )"
+
+# drm module requires X
+# for gallium we need to enable drm
+REQUIRED_USE="
+ drm? ( X )
+ gallium? ( drm )
+"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-respect-fontconfig.patch
+ epatch "${FILESDIR}"/${PN}-1.8.8-interix.patch
+ epatch "${FILESDIR}"/${PN}-1.10.2-qt-surface.patch
+
+ # Slightly messed build system YAY
+ if [[ ${PV} == *9999* ]]; then
+ touch boilerplate/Makefile.am.features
+ touch src/Makefile.am.features
+ touch ChangeLog
+ fi
+
+ # We need to run elibtoolize to ensure correct so versioning on FreeBSD
+ # upgraded to an eautoreconf for the above interix patch.
+ eautoreconf
+}
+
+src_configure() {
+ local myopts
+
+ # SuperH doesn't have native atomics yet
+ use sh && myopts+=" --disable-atomic"
+
+ [[ ${CHOST} == *-interix* ]] && append-flags -D_REENTRANT
+ # http://bugs.freedesktop.org/show_bug.cgi?id=15463
+ [[ ${CHOST} == *-solaris* ]] && append-flags -D_POSIX_PTHREAD_SEMANTICS
+
+ #gets rid of fbmmx.c inlining warnings
+ append-flags -finline-limit=1200
+
+ use X && myopts+=" --enable-tee=yes"
+
+ use elibc_FreeBSD && myopts+=" --disable-symbol-lookup"
+
+ # --disable-xcb-lib:
+ # do not override good xlib backed by hardforcing rendering over xcb
+ econf \
+ --disable-dependency-tracking \
+ $(use_with X x) \
+ $(use_enable X xlib) \
+ $(use_enable X xlib-xrender) \
+ $(use_enable aqua quartz) \
+ $(use_enable aqua quartz-image) \
+ $(use_enable debug test-surfaces) \
+ $(use_enable directfb) \
+ $(use_enable glib gobject) \
+ $(use_enable doc gtk-doc) \
+ $(use_enable openvg vg) \
+ $(use_enable opengl gl) \
+ $(use_enable qt4 qt) \
+ $(use_enable static-libs static) \
+ $(use_enable svg) \
+ $(use_enable xcb) \
+ $(use_enable xcb xcb-shm) \
+ $(use_enable drm) \
+ $(use_enable gallium) \
+ --enable-ft \
+ --enable-pdf \
+ --enable-png \
+ --enable-ps \
+ --disable-xlib-xcb \
+ ${myopts}
+}
+
+src_install() {
+ # parallel make install fails
+ emake -j1 DESTDIR="${D}" install
+ find "${ED}" -name '*.la' -exec rm -f {} +
+ dodoc AUTHORS ChangeLog NEWS README
+}
diff --git a/x11-libs/cairo/files/cairo-1.10.0-buggy_gradients.patch b/x11-libs/cairo/files/cairo-1.10.0-buggy_gradients.patch
new file mode 100644
index 0000000..a58c2f8
--- /dev/null
+++ b/x11-libs/cairo/files/cairo-1.10.0-buggy_gradients.patch
@@ -0,0 +1,17 @@
+http://repos.archlinux.org/wsvn/packages/cairo/trunk/cairo-1.10.0-buggy_gradients.patch
+http://bugs.gentoo.org/336696
+
+--- src/cairo-xlib-display.c
++++ src/cairo-xlib-display.c
+@@ -353,11 +353,7 @@
+ /* Prior to Render 0.10, there is no protocol support for gradients and
+ * we call function stubs instead, which would silently consume the drawing.
+ */
+-#if RENDER_MAJOR == 0 && RENDER_MINOR < 10
+ display->buggy_gradients = TRUE;
+-#else
+- display->buggy_gradients = FALSE;
+-#endif
+ display->buggy_pad_reflect = FALSE;
+ display->buggy_repeat = FALSE;
+
diff --git a/x11-libs/cairo/files/cairo-1.10.2-interix.patch b/x11-libs/cairo/files/cairo-1.10.2-interix.patch
new file mode 100644
index 0000000..3333e3e
--- /dev/null
+++ b/x11-libs/cairo/files/cairo-1.10.2-interix.patch
@@ -0,0 +1,36 @@
+commit 95f6f7a174ca096a3d3dbe84ff220d166d1e2baa
+Author: Uli Schlachter <psychon@znc.in>
+Date: Fri Oct 22 11:54:57 2010 +0200
+
+ Make both versions of _cairo_lround consistent again
+
+ Commit c0008242b0f made cairo use libm's lround instead of its own _cairo_lround
+ by default. However, since commit ce58f874 from 2006, _cairo_lround does
+ arithmetic rounding instead of away-from-zero rounding (before said commit, it
+ was using baker's rounding).
+
+ So to make the rounding of _cairo_lround be independent from
+ DISABLE_SOME_FLOATING_POINT, we have to use another function. Turns out that
+ _cairo_round already does the same thing that _cairo_lround does. Their only
+ difference is the return type.
+
+ Signed-off-by: Uli Schlachter <psychon@znc.in>
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+diff --git a/src/cairoint.h b/src/cairoint.h
+index 53c87e5..539d92e 100644
+--- a/src/cairoint.h
++++ b/src/cairoint.h
+@@ -968,7 +968,11 @@ _cairo_round (double r)
+ cairo_private int
+ _cairo_lround (double d) cairo_const;
+ #else
+-#define _cairo_lround lround
++static inline int cairo_const
++_cairo_lround (double r)
++{
++ return _cairo_round (r);
++}
+ #endif
+
+ cairo_private uint16_t
diff --git a/x11-libs/cairo/files/cairo-1.10.2-qt-surface.patch b/x11-libs/cairo/files/cairo-1.10.2-qt-surface.patch
new file mode 100644
index 0000000..cf0b57a
--- /dev/null
+++ b/x11-libs/cairo/files/cairo-1.10.2-qt-surface.patch
@@ -0,0 +1,55 @@
+diff -ruN cairo-1.10.2-0-vanilla/src/cairo-qt-surface.cpp cairo-1.10.2/src/cairo-qt-surface.cpp
+--- cairo-1.10.2-0-vanilla/src/cairo-qt-surface.cpp 2010-12-25 15:21:34.000000000 +0100
++++ cairo-1.10.2/src/cairo-qt-surface.cpp 2011-12-20 22:59:30.000000000 +0100
+@@ -61,7 +61,9 @@
+ #include <QtGui/QX11Info>
+ #include <QtCore/QVarLengthArray>
+
+-#if (QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)) || defined(QT_GLYPHS_API_BACKPORT)
++#if (QT_VERSION >= QT_VERSION_CHECK(4, 8, 0))
++#include <QtGui/QGlyphRun>
++#elif (QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)) || defined(QT_GLYPHS_API_BACKPORT)
+ extern void qt_draw_glyphs(QPainter *, const quint32 *glyphs, const QPointF *positions, int count);
+ #endif
+
+@@ -1370,7 +1372,39 @@
+ cairo_clip_t *clip,
+ int *remaining_glyphs)
+ {
+-#if (QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)) || defined(QT_GLYPHS_API_BACKPORT)
++#if (QT_VERSION >= QT_VERSION_CHECK(4, 8, 0)) && !defined(QT_NO_RAWFONT)
++ cairo_qt_surface_t *qs = (cairo_qt_surface_t *) abstract_surface;
++
++ // pick out the colour to use from the cairo source
++ cairo_solid_pattern_t *solid = (cairo_solid_pattern_t*) source;
++ // documentation says you have to freeze the cache, but I don't believe it
++ _cairo_scaled_font_freeze_cache(scaled_font);
++
++ QColor tempColour(solid->color.red * 255, solid->color.green * 255, solid->color.blue * 255);
++ QVector<QPointF> positions(num_glyphs);
++ QVector<unsigned int> glyphss(num_glyphs);
++ FT_Face face = cairo_ft_scaled_font_lock_face (scaled_font);
++ const FT_Size_Metrics& ftMetrics = face->size->metrics;
++ QFont font(face->family_name);
++ font.setStyleStrategy(QFont::NoFontMerging);
++ font.setBold(face->style_flags & FT_STYLE_FLAG_BOLD);
++ font.setItalic(face->style_flags & FT_STYLE_FLAG_ITALIC);
++ font.setKerning(face->face_flags & FT_FACE_FLAG_KERNING);
++ font.setPixelSize(ftMetrics.y_ppem);
++ cairo_ft_scaled_font_unlock_face(scaled_font);
++ qs->p->setFont(font);
++ qs->p->setPen(tempColour);
++ for (int currentGlyph = 0; currentGlyph < num_glyphs; currentGlyph++) {
++ positions.append(QPointF(glyphs[currentGlyph].x, glyphs[currentGlyph].y));
++ glyphss.append(glyphs[currentGlyph].index);
++ }
++ QGlyphRun qglyphs;
++ qglyphs.setGlyphIndexes(glyphss);
++ qglyphs.setPositions(positions);
++ qs->p->drawGlyphRun(QPointF(), qglyphs);
++ _cairo_scaled_font_thaw_cache(scaled_font);
++ return CAIRO_INT_STATUS_SUCCESS;
++#elif (QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)) || defined(QT_GLYPHS_API_BACKPORT)
+ cairo_qt_surface_t *qs = (cairo_qt_surface_t *) abstract_surface;
+
+ // pick out the colour to use from the cairo source
diff --git a/x11-libs/cairo/files/cairo-1.10.2-ubuntu.patch b/x11-libs/cairo/files/cairo-1.10.2-ubuntu.patch
new file mode 100644
index 0000000..751bbd4
--- /dev/null
+++ b/x11-libs/cairo/files/cairo-1.10.2-ubuntu.patch
@@ -0,0 +1,53 @@
+--- cairo.orig/build/configure.ac.features 2010-12-28 14:41:21.487225155 +0100
++++ cairo/build/configure.ac.features 2010-12-28 14:42:06.166239606 +0100
+@@ -407,6 +407,7 @@
+ echo "The following features and utilities:"
+ echo " cairo-trace: $use_trace"
+ echo " cairo-script-interpreter: $use_interpreter"
++ echo " cairo-perf-utils: $use_perf_utils"
+ echo ""
+ echo "And the following internal features:"
+ echo " pthread: $use_pthread"
+--- cairo.orig/configure.ac 2010-12-28 14:43:02.291226995 +0100
++++ cairo/configure.ac 2010-12-28 14:43:18.191141863 +0100
+@@ -10,6 +10,7 @@
+ AC_CONFIG_SRCDIR(src/cairo.h)
+ AC_CONFIG_HEADERS(config.h)
+ AM_INIT_AUTOMAKE([1.9.6 gnu -Wall no-define])
++AM_MAINTAINER_MODE
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+ AC_LIBTOOL_WIN32_DLL dnl Must be called before AC_PROG_LIBTOOL
+ AC_PROG_LIBTOOL dnl ([1.4]) Don't remove!
+@@ -796,6 +796,11 @@
+ PKG_CHECK_MODULES(gtk, "gtk+-2.0",have_gtk=yes, have_gtk=no)
+ AM_CONDITIONAL(HAVE_GTK, test "x$have_gtk" = "xyes")
+
++dnl ===========================================================================
++
++CAIRO_ENABLE(perf_utils, cairo-perf-utils, no, [use_perf_utils=yes])
++
++
+ AC_CONFIG_FILES([
+ Makefile
+ boilerplate/Makefile
+--- cairo.orig/perf/Makefile.am 2010-06-18 13:47:11.000000000 +0200
++++ cairo/perf/Makefile.am 2010-12-28 14:42:06.162226875 +0100
+@@ -10,6 +10,18 @@
+
+ AM_LDFLAGS = $(CAIRO_LDFLAGS)
+
++if CAIRO_HAS_PERF_UTILS
++bin_PROGRAMS = cairo-perf-micro \
++ cairo-perf-trace \
++ cairo-perf-diff-files \
++ cairo-perf-print \
++ cairo-perf-chart \
++ cairo-perf-compare-backends
++if HAVE_GTK
++bin_PROGRAMS += cairo-perf-graph-files
++endif
++endif
++
+ EXTRA_PROGRAMS += cairo-perf-micro \
+ cairo-perf-trace \
+ cairo-perf-diff-files \
diff --git a/x11-libs/cairo/files/cairo-1.8.8-interix.patch b/x11-libs/cairo/files/cairo-1.8.8-interix.patch
new file mode 100644
index 0000000..dc20714
--- /dev/null
+++ b/x11-libs/cairo/files/cairo-1.8.8-interix.patch
@@ -0,0 +1,16 @@
+diff -ru cairo-1.8.8.orig/build/configure.ac.tools cairo-1.8.8/build/configure.ac.tools
+--- cairo-1.8.8.orig/build/configure.ac.tools 2009-09-30 13:36:42 +0200
++++ cairo-1.8.8/build/configure.ac.tools 2009-09-30 13:50:50 +0200
+@@ -21,5 +21,12 @@
+ *) PKGCONFIG_REQUIRES="Requires.private"; ;;
+ esac
+
++dnl hmm... on interix, things go really bad with Requires.private, since libpng12
++dnl is missing on the final link commands, so gtk+'s configure checks for cairo
++dnl fail miserably with unresolved symbols to it.
++case "$host_os" in
++interix*) PKGCONFIG_REQUIRES="Requires" ;;
++esac
++
+ AC_SUBST(PKGCONFIG_REQUIRES)
+
diff --git a/x11-libs/cairo/files/cairo-respect-fontconfig.patch b/x11-libs/cairo/files/cairo-respect-fontconfig.patch
new file mode 100644
index 0000000..b0a1b29
--- /dev/null
+++ b/x11-libs/cairo/files/cairo-respect-fontconfig.patch
@@ -0,0 +1,13 @@
+--- cairo-1.7.6-orig/src/cairo-ft-font.c 2008-09-29 21:43:13.000000000 +0100
++++ cairo-1.7.6/src/cairo-ft-font.c 2008-09-29 21:52:19.000000000 +0100
+@@ -1705,7 +1705,9 @@
+ options->base.subpixel_order = other->base.subpixel_order;
+ }
+
+- if (options->base.hint_style == CAIRO_HINT_STYLE_DEFAULT)
++ options->base.hint_style = CAIRO_HINT_STYLE_DEFAULT;
++
++ if (other->base.hint_style != CAIRO_HINT_STYLE_DEFAULT)
+ options->base.hint_style = other->base.hint_style;
+
+ if (other->base.hint_style == CAIRO_HINT_STYLE_NONE)