summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Alexander <wired@gentoo.org>2012-01-29 15:53:24 +0000
committerAlex Alexander <wired@gentoo.org>2012-01-29 15:53:24 +0000
commitcaf58035ccb0e95776896b4ed2d4fa01f442dff6 (patch)
treee2787b66db81362754266388dbaea6989a423779 /x11-libs
parentmasked new revbump of cairo, will unmask it together with new Qt (diff)
downloadgentoo-2-caf58035ccb0e95776896b4ed2d4fa01f442dff6.tar.gz
gentoo-2-caf58035ccb0e95776896b4ed2d4fa01f442dff6.tar.bz2
gentoo-2-caf58035ccb0e95776896b4ed2d4fa01f442dff6.zip
revbump with patch for Qt-4.8. bug #380013
(Portage version: 2.2.0_alpha84/cvs/Linux x86_64)
Diffstat (limited to 'x11-libs')
-rw-r--r--x11-libs/cairo/ChangeLog10
-rw-r--r--x11-libs/cairo/cairo-1.10.2-r2.ebuild159
-rw-r--r--x11-libs/cairo/files/cairo-1.10.2-qt-surface.patch55
3 files changed, 222 insertions, 2 deletions
diff --git a/x11-libs/cairo/ChangeLog b/x11-libs/cairo/ChangeLog
index d45233b8042a..f67162ac8fa4 100644
--- a/x11-libs/cairo/ChangeLog
+++ b/x11-libs/cairo/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for x11-libs/cairo
-# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-libs/cairo/ChangeLog,v 1.284 2011/08/14 06:48:39 mgorny Exp $
+# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/cairo/ChangeLog,v 1.285 2012/01/29 15:53:24 wired Exp $
+
+*cairo-1.10.2-r2 (29 Jan 2012)
+
+ 29 Jan 2012; Alex Alexander <wired@gentoo.org> +cairo-1.10.2-r2.ebuild,
+ +files/cairo-1.10.2-qt-surface.patch:
+ revbump with patch for Qt-4.8. bug #380013
14 Aug 2011; Michał Górny <mgorny@gentoo.org> cairo-9999.ebuild:
Remove unnecessary --{en,dis}able-xcb-drm wrt bug #379097.
diff --git a/x11-libs/cairo/cairo-1.10.2-r2.ebuild b/x11-libs/cairo/cairo-1.10.2-r2.ebuild
new file mode 100644
index 000000000000..476536c0a9c8
--- /dev/null
+++ b/x11-libs/cairo/cairo-1.10.2-r2.ebuild
@@ -0,0 +1,159 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/cairo/cairo-1.10.2-r2.ebuild,v 1.1 2012/01/29 15:53:24 wired Exp $
+
+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="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~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 )
+ opengl? ( virtual/opengl )
+ openvg? ( media-libs/mesa[gallium] )
+ qt4? ( >=x11-libs/qt-gui-4.4: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}
+ dev-util/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}"/${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
+
+ # --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/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 000000000000..cf0b57a1c252
--- /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