pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/graphics/cairo Second try at updating to 1.12.4 with a...
details: https://anonhg.NetBSD.org/pkgsrc/rev/09e175c87cf7
branches: trunk
changeset: 610164:09e175c87cf7
user: wiz <wiz%pkgsrc.org@localhost>
date: Sat Oct 20 00:55:05 2012 +0000
description:
Second try at updating to 1.12.4 with an additional patch from
Chris Wilson (upstream).
Fixes problems on NetBSD and OS X.
Bump PKGREVISION compared to last 1.12.4 version.
diffstat:
graphics/cairo/Makefile | 9 +-
graphics/cairo/distinfo | 11 +-
graphics/cairo/options.mk | 4 +-
graphics/cairo/patches/patch-configure | 80 +++++++++++++++
graphics/cairo/patches/patch-configure.ac | 53 +++++++++
graphics/cairo/patches/patch-src_cairo-xlib-surface-shm.c | 66 ++++++++++++
6 files changed, 209 insertions(+), 14 deletions(-)
diffs (273 lines):
diff -r 5cc55d864df3 -r 09e175c87cf7 graphics/cairo/Makefile
--- a/graphics/cairo/Makefile Sat Oct 20 00:29:40 2012 +0000
+++ b/graphics/cairo/Makefile Sat Oct 20 00:55:05 2012 +0000
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.112 2012/10/15 17:33:33 asau Exp $
+# $NetBSD: Makefile,v 1.113 2012/10/20 00:55:05 wiz Exp $
-DISTNAME= cairo-1.12.2
+DISTNAME= cairo-1.12.4
PKGREVISION= 2
CATEGORIES= graphics
MASTER_SITES= http://cairographics.org/releases/
@@ -38,11 +38,6 @@
TEST_TARGET= check
-# Workaround for FreeBSD (noticed on 9.0):
-.if ${OPSYS} == "FreeBSD"
-BUILDLINK_TRANSFORM+= rm:-ldl
-.endif
-
# PR#43928
.include "../../mk/compiler.mk"
.if ${MACHINE_PLATFORM:MDragonFly-*-x86_64} && ${CC_VERSION:Mgcc-4.1.*}
diff -r 5cc55d864df3 -r 09e175c87cf7 graphics/cairo/distinfo
--- a/graphics/cairo/distinfo Sat Oct 20 00:29:40 2012 +0000
+++ b/graphics/cairo/distinfo Sat Oct 20 00:55:05 2012 +0000
@@ -1,9 +1,12 @@
-$NetBSD: distinfo,v 1.64 2012/10/08 21:54:05 wiz Exp $
+$NetBSD: distinfo,v 1.65 2012/10/20 00:55:06 wiz Exp $
-SHA1 (cairo-1.12.2.tar.xz) = bc2ee50690575f16dab33af42a2e6cdc6451e3f9
-RMD160 (cairo-1.12.2.tar.xz) = 0174a5110f5f4c9ff15da984e0602dfd04643a63
-Size (cairo-1.12.2.tar.xz) = 42051584 bytes
+SHA1 (cairo-1.12.4.tar.xz) = f4158981ed01e73c94fb8072074b17feee61a68b
+RMD160 (cairo-1.12.4.tar.xz) = 0e2ab9442f47228b7df2354caf157f2a4eeafb31
+Size (cairo-1.12.4.tar.xz) = 42099760 bytes
SHA1 (patch-aa) = 474f44c1c8d4017137fe59b160afca8f16ad7287
SHA1 (patch-ab) = 62ff361d52742bba0f49c6a32149269b958fa24a
SHA1 (patch-ac) = 151c682245004902cf42ba141e3743592691dfb9
SHA1 (patch-ad) = a1068a37113b162ccfe14d7f1bd0baa9df7e5530
+SHA1 (patch-configure) = abd507d7707f6e5bd000471dedaa4e615bb117ad
+SHA1 (patch-configure.ac) = c6df883204c5074d52443626f434cd6077a8d834
+SHA1 (patch-src_cairo-xlib-surface-shm.c) = 86be07c7c759fca8d1cbd19c0ac8e7287d42c3c6
diff -r 5cc55d864df3 -r 09e175c87cf7 graphics/cairo/options.mk
--- a/graphics/cairo/options.mk Sat Oct 20 00:29:40 2012 +0000
+++ b/graphics/cairo/options.mk Sat Oct 20 00:55:05 2012 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: options.mk,v 1.10 2012/10/10 13:29:25 drochner Exp $
+# $NetBSD: options.mk,v 1.11 2012/10/20 00:55:06 wiz Exp $
PKG_OPTIONS_VAR= PKG_OPTIONS.cairo
PKG_SUPPORTED_OPTIONS= x11 xcb
@@ -28,8 +28,6 @@
CONFIGURE_ARGS+= --enable-xcb
PLIST.xcb= yes
. include "../../x11/libxcb/buildlink3.mk"
-. else
-CONFIGURE_ARGS+= --disable-xcb
. endif
.else
diff -r 5cc55d864df3 -r 09e175c87cf7 graphics/cairo/patches/patch-configure
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graphics/cairo/patches/patch-configure Sat Oct 20 00:55:05 2012 +0000
@@ -0,0 +1,80 @@
+$NetBSD: patch-configure,v 1.1 2012/10/20 00:55:06 wiz Exp $
+
+Whilst reading through other users of XShm, it became apparent that
+IPC_RMID behaves differently across the platforms. Linux allows
+processes to attach to an existing ShmSegment id after a IPC_RMID, but
+for others the IPC_RMID takes immediate effect. On those platforms
+without a "deferred" IPC_RMID, we then need to perform the XShmAttach
+synchronously before perfomring the IPC_RMID.
+
+Reported-by: Thomas Klausner <wiz%NetBSD.org@localhost>
+Signed-off-by: Chris Wilson <chris%chris-wilson.co.uk@localhost>
+
+--- configure.orig 2012-10-05 15:45:31.000000000 +0000
++++ configure
+@@ -21646,6 +21646,65 @@ $as_echo "yes" >&6; }
+ :
+ fi
+
++ ac_fn_c_check_header_mongrel "$LINENO" "sys/ipc.h" "ac_cv_header_sys_ipc_h" "$ac_includes_default"
++if test "x$ac_cv_header_sys_ipc_h" = xyes; then :
++
++fi
++
++
++ ac_fn_c_check_header_mongrel "$LINENO" "sys/shm.h" "ac_cv_header_sys_shm_h" "$ac_includes_default"
++if test "x$ac_cv_header_sys_shm_h" = xyes; then :
++
++fi
++
++
++
++ if test "$ac_cv_header_sys_ipc_h" = "yes" -a "$ac_cv_header_sys_shm_h" = "yes"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether shmctl IPC_RMID allowes subsequent attaches" >&5
++$as_echo_n "checking whether shmctl IPC_RMID allowes subsequent attaches... " >&6; }
++ if test "$cross_compiling" = yes; then :
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: assuming no" >&5
++$as_echo "assuming no" >&6; }
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++ #include <sys/types.h>
++ #include <sys/ipc.h>
++ #include <sys/shm.h>
++ int main()
++ {
++ char *shmaddr;
++ int id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
++ if (id == -1) return 2;
++ shmaddr = shmat (id, 0, 0);
++ shmctl (id, IPC_RMID, 0);
++ if ((char*) shmat (id, 0, 0) == (char*) -1) {
++ shmdt (shmaddr);
++ return 1;
++ }
++ shmdt (shmaddr);
++ shmdt (shmaddr);
++ return 0;
++ }
++
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
++
++$as_echo "#define IPC_RMID_DEFERRED_RELEASE 1" >>confdefs.h
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++ conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
++
++ fi
++
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's Xlib surface backend feature could be enabled" >&5
+ $as_echo_n "checking whether cairo's Xlib surface backend feature could be enabled... " >&6; }
diff -r 5cc55d864df3 -r 09e175c87cf7 graphics/cairo/patches/patch-configure.ac
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graphics/cairo/patches/patch-configure.ac Sat Oct 20 00:55:05 2012 +0000
@@ -0,0 +1,53 @@
+$NetBSD: patch-configure.ac,v 1.1 2012/10/20 00:55:07 wiz Exp $
+
+Whilst reading through other users of XShm, it became apparent that
+IPC_RMID behaves differently across the platforms. Linux allows
+processes to attach to an existing ShmSegment id after a IPC_RMID, but
+for others the IPC_RMID takes immediate effect. On those platforms
+without a "deferred" IPC_RMID, we then need to perform the XShmAttach
+synchronously before perfomring the IPC_RMID.
+
+Reported-by: Thomas Klausner <wiz%NetBSD.org@localhost>
+Signed-off-by: Chris Wilson <chris%chris-wilson.co.uk@localhost>
+
+--- configure.ac.orig 2012-09-13 11:38:21.000000000 +0000
++++ configure.ac
+@@ -74,6 +74,38 @@ CAIRO_ENABLE_SURFACE_BACKEND(xlib, Xlib,
+ xlib_NONPKGCONFIG_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext $X_EXTRA_LIBS"
+ xlib_NONPKGCONFIG_CFLAGS=$X_CFLAGS
+ fi])
++
++ AC_CHECK_HEADER(sys/ipc.h)
++ AC_CHECK_HEADER(sys/shm.h)
++
++ if test "$ac_cv_header_sys_ipc_h" = "yes" -a "$ac_cv_header_sys_shm_h" = "yes"; then
++ AC_MSG_CHECKING(whether shmctl IPC_RMID allowes subsequent attaches)
++ AC_TRY_RUN([
++ #include <sys/types.h>
++ #include <sys/ipc.h>
++ #include <sys/shm.h>
++ int main()
++ {
++ char *shmaddr;
++ int id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
++ if (id == -1) return 2;
++ shmaddr = shmat (id, 0, 0);
++ shmctl (id, IPC_RMID, 0);
++ if ((char*) shmat (id, 0, 0) == (char*) -1) {
++ shmdt (shmaddr);
++ return 1;
++ }
++ shmdt (shmaddr);
++ shmdt (shmaddr);
++ return 0;
++ }
++ ],
++ AC_DEFINE(IPC_RMID_DEFERRED_RELEASE, 1,
++ [Define to 1 if shared memory segments are released deferred.])
++ AC_MSG_RESULT(yes),
++ AC_MSG_RESULT(no),
++ AC_MSG_RESULT(assuming no))
++ fi
+ ])
+
+ CAIRO_ENABLE_SURFACE_BACKEND(xlib_xrender, Xlib Xrender, auto, [
diff -r 5cc55d864df3 -r 09e175c87cf7 graphics/cairo/patches/patch-src_cairo-xlib-surface-shm.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graphics/cairo/patches/patch-src_cairo-xlib-surface-shm.c Sat Oct 20 00:55:05 2012 +0000
@@ -0,0 +1,66 @@
+$NetBSD: patch-src_cairo-xlib-surface-shm.c,v 1.3 2012/10/20 00:55:07 wiz Exp $
+
+First chunk:
+Whilst reading through other users of XShm, it became apparent that
+IPC_RMID behaves differently across the platforms. Linux allows
+processes to attach to an existing ShmSegment id after a IPC_RMID, but
+for others the IPC_RMID takes immediate effect. On those platforms
+without a "deferred" IPC_RMID, we then need to perform the XShmAttach
+synchronously before perfomring the IPC_RMID.
+
+Reported-by: Thomas Klausner <wiz%NetBSD.org@localhost>
+Signed-off-by: Chris Wilson <chris%chris-wilson.co.uk@localhost>
+
+Rest:
+Prevent application crashes under old version of X.org e.g. under
+Mac OS X Lion. Patch taken from here:
+
+http://cgit.freedesktop.org/cairo/commit/?id=b1532f465e05d566f6d160c5ca916a5a12614067
+
+--- src/cairo-xlib-surface-shm.c.orig 2012-10-05 13:06:00.000000000 +0000
++++ src/cairo-xlib-surface-shm.c
+@@ -449,6 +449,9 @@ _cairo_xlib_shm_pool_create(cairo_xlib_d
+
+ pool->attached = NextRequest (dpy);
+ success = XShmAttach (dpy, &pool->shm);
++#if !IPC_RMID_DEFERRED_RELEASE
++ XSync (dpy, FALSE);
++#endif
+ shmctl (pool->shm.shmid, IPC_RMID, NULL);
+
+ if (! success)
+@@ -1121,6 +1124,24 @@ _cairo_xlib_shm_surface_is_idle (cairo_s
+ return shm->idle > 0;
+ }
+
++#define XORG_VERSION_ENCODE(major,minor,patch,snap) \
++ (((major) * 10000000) + ((minor) * 100000) + ((patch) * 1000) + snap)
++
++static cairo_bool_t
++xorg_has_buggy_send_event(Display *dpy)
++{
++ /* Avoid incurring the wrath fixed by:
++ *
++ * commit 2d2dce558d24eeea0eb011ec9ebaa6c5c2273c39
++ * Author: Sam Spilsbury <sam.spilsbury%canonical.com@localhost>
++ * Date: Wed Sep 14 09:58:34 2011 +0800
++ *
++ * Remove the SendEvent bit (0x80) before doing range checks on event type.
++ */
++ return (strstr (ServerVendor (dpy), "X.Org") != NULL &&
++ VendorRelease (dpy) < XORG_VERSION_ENCODE(1,11,0,1));
++}
++
+ void
+ _cairo_xlib_display_init_shm (cairo_xlib_display_t *display)
+ {
+@@ -1153,6 +1174,9 @@ _cairo_xlib_display_init_shm (cairo_xlib
+ DefaultVisual (display->display, scr),
+ CWOverrideRedirect, &attr);
+
++ if (xorg_has_buggy_send_event(display->display))
++ has_pixmap = 0;
++
+ shm->has_pixmaps = has_pixmap ? MIN_PIXMAP_SIZE : 0;
+ cairo_list_init (&shm->pool);
+
Home |
Main Index |
Thread Index |
Old Index