diff options
author | Petteri Räty <betelgeuse@gentoo.org> | 2007-06-23 22:02:15 +0000 |
---|---|---|
committer | Petteri Räty <betelgeuse@gentoo.org> | 2007-06-23 22:02:15 +0000 |
commit | 1ac327897b2718ba1b3d4dd8cd4323fcb8ecdc00 (patch) | |
tree | f3d1266493d6ea572e5652335e1216de880a3673 /x11-libs | |
parent | net-wireless/bluez-gnome: Add live cvs ebuild for bluez-gnome. (diff) | |
download | betelgeuse-1ac327897b2718ba1b3d4dd8cd4323fcb8ecdc00.tar.gz betelgeuse-1ac327897b2718ba1b3d4dd8cd4323fcb8ecdc00.tar.bz2 betelgeuse-1ac327897b2718ba1b3d4dd8cd4323fcb8ecdc00.zip |
Add gtk+ with directfb capatibility.
svn path=/; revision=139
Diffstat (limited to 'x11-libs')
-rw-r--r-- | x11-libs/gtk+/ChangeLog | 10 | ||||
-rw-r--r-- | x11-libs/gtk+/Manifest | 6 | ||||
-rw-r--r-- | x11-libs/gtk+/files/gtk+-2.10.11-update-icon-subdirs.patch | 132 | ||||
-rw-r--r-- | x11-libs/gtk+/files/gtk+-2.10.7-mozilla-dnd-fix.patch | 72 | ||||
-rw-r--r-- | x11-libs/gtk+/files/gtk+-2.8.10-xinerama.patch | 32 | ||||
-rw-r--r-- | x11-libs/gtk+/gtk+-2.10.13.ebuild | 170 |
6 files changed, 422 insertions, 0 deletions
diff --git a/x11-libs/gtk+/ChangeLog b/x11-libs/gtk+/ChangeLog new file mode 100644 index 0000000..71b22d8 --- /dev/null +++ b/x11-libs/gtk+/ChangeLog @@ -0,0 +1,10 @@ +# ChangeLog for x11-libs/gtk+ +# Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2 +# $Header: $ + + 23 Jun 2007; Petteri Räty <betelgeuse@gentoo.org> + +files/gtk+-2.8.10-xinerama.patch, + +files/gtk+-2.10.7-mozilla-dnd-fix.patch, + +files/gtk+-2.10.11-update-icon-subdirs.patch, +gtk+-2.10.13.ebuild: + Add gtk+ with directfb capatibility. + diff --git a/x11-libs/gtk+/Manifest b/x11-libs/gtk+/Manifest new file mode 100644 index 0000000..ca047ca --- /dev/null +++ b/x11-libs/gtk+/Manifest @@ -0,0 +1,6 @@ +AUX gtk+-2.10.11-update-icon-subdirs.patch 3756 RMD160 60c3abb77f6484b8700a5f42ffa5b0784503fea0 SHA1 ffb3d5b1d1d346d3a38899d93883874232e86baf SHA256 41d31835a5feaaf5eafdd0ab173be30c8d9579c4d08824105db2a12ad765436e +AUX gtk+-2.10.7-mozilla-dnd-fix.patch 2899 RMD160 2cc33847d78fe0c207bc79f514546113d740ca2c SHA1 5f385f6fcd05cb21c33e0fbbbaa98389ee24019e SHA256 9ec24dbe7e652aaee7d6118adffb4919ee0b3d7887587649cb475f3e69f5d729 +AUX gtk+-2.8.10-xinerama.patch 1083 RMD160 499801f3be2289bdc656563bb5c96797d14512f7 SHA1 7817e3c2bbec1058192d524d68e78635fa48beca SHA256 7786691d5f89588abc7174e97cbd374d8cbe98b4e8dfd27005eade03b047aa2d +DIST gtk+-2.10.13.tar.bz2 15163566 RMD160 bd812db8b11fbca5283e04958660fd3beec23caa SHA1 8d00b928a8788ff86d97197c20c18d41f9a1b1cd SHA256 6443ecc087a7cf771406264044e3f942ca49cc5fcb84f66d700fd291d55d0b4e +EBUILD gtk+-2.10.13.ebuild 4663 RMD160 2a2ffec1276fdf1ac91c4a1c3f0c6987f0181b86 SHA1 503ff90ddb88f7e23f2971f108e678815dffad01 SHA256 57bc9b89bdb212db70544e4421936240090760721c90a5c8c3ddd0fe6e840016 +MISC ChangeLog 359 RMD160 b7095a70d3906ac2c3d800332b4246824baad8d2 SHA1 59705d14f9996589088168e53b7974c79994387c SHA256 d83272709d3d5b457eccc24b4cb6f9c37951e37a5b88a17b5bb14b34b8720078 diff --git a/x11-libs/gtk+/files/gtk+-2.10.11-update-icon-subdirs.patch b/x11-libs/gtk+/files/gtk+-2.10.11-update-icon-subdirs.patch new file mode 100644 index 0000000..64cbb0f --- /dev/null +++ b/x11-libs/gtk+/files/gtk+-2.10.11-update-icon-subdirs.patch @@ -0,0 +1,132 @@ +diff --exclude-from=/home/dang/bin/scripts/diffrc -up -ruN gtk+-2.10.11.orig/gtk/updateiconcache.c gtk+-2.10.11/gtk/updateiconcache.c +--- gtk+-2.10.11.orig/gtk/updateiconcache.c 2007-03-14 00:07:02.000000000 -0400 ++++ gtk+-2.10.11/gtk/updateiconcache.c 2007-05-01 17:01:46.000000000 -0400 +@@ -43,6 +43,7 @@ static gboolean force_update = FALSE; + static gboolean ignore_theme_index = FALSE; + static gboolean quiet = FALSE; + static gboolean index_only = FALSE; ++static gboolean check_subdirs = FALSE; + static gchar *var_name = "-"; + + #define CACHE_NAME "icon-theme.cache" +@@ -61,8 +62,82 @@ static gchar *var_name = "-"; + #define ALIGN_VALUE(this, boundary) \ + (( ((unsigned long)(this)) + (((unsigned long)(boundary)) -1)) & (~(((unsigned long)(boundary))-1))) + ++/* returns >0 if dir is newer than time, 0 if dir is older than time, ++ * <0 if stat fails */ ++int ++dir_check (const gchar *path, time_t cache_time) ++{ ++ struct stat path_stat; ++ ++ if (g_stat (path, &path_stat) < 0) ++ { ++ return -1; ++ } ++ return cache_time < path_stat.st_mtime; ++} ++ ++/* Check the subdirectories of the cache dir to see if the cache is up-to-date ++ * We check first and second level subdirs. */ ++gboolean ++is_cache_up_to_date_subdirs (const gchar *toppath, time_t cache_time) ++{ ++ GDir *topdir, *subdir; ++ const gchar *name, *subname; ++ gchar *path, *subpath; ++ int dir_state; ++ ++ topdir = g_dir_open (toppath, 0, NULL); ++ if (!topdir) ++ { ++ /* we can't open dir, assume updated cache */ ++ return TRUE; ++ } ++ ++ while ((name = g_dir_read_name (topdir))) ++ { ++ path = g_build_filename (toppath, name, NULL); ++ dir_state = dir_check (path, cache_time); ++ if (dir_state < 0) ++ { ++ /* cannot stat dir, for some reason; skip */ ++ g_free (path); ++ continue; ++ } ++ else if (dir_state > 0) ++ { ++ /* cache is out of date */ ++ g_free (path); ++ return FALSE; ++ } ++ ++ subdir = g_dir_open (path, 0, NULL); ++ if (!subdir) ++ { ++ /* Cannot open subdir; skip */ ++ g_free (path); ++ continue; ++ } ++ while ((subname = g_dir_read_name (subdir))) ++ { ++ subpath = g_build_filename (path, subname, NULL); ++ dir_state = dir_check (subpath, cache_time); ++ g_free (subpath); ++ ++ if (dir_state > 0) ++ { ++ /* Cache out of date */ ++ return FALSE; ++ } ++ } ++ g_free (path); ++ } ++ ++ /* If we get here, the cache is up to date */ ++ return TRUE; ++} ++ + gboolean +-is_cache_up_to_date (const gchar *path) ++is_cache_up_to_date (const gchar *path, gboolean check_subdirs) + { + struct stat path_stat, cache_stat; + gchar *cache_path; +@@ -88,7 +163,18 @@ is_cache_up_to_date (const gchar *path) + } + + /* Check mtime */ +- return cache_stat.st_mtime >= path_stat.st_mtime; ++ if (cache_stat.st_mtime < path_stat.st_mtime) ++ { ++ /* Cache is out of date */ ++ return FALSE; ++ } ++ if (check_subdirs) ++ { ++ return is_cache_up_to_date_subdirs (path, cache_stat.st_mtime); ++ } ++ ++ /* Cache is up to date */ ++ return TRUE; + } + + gboolean +@@ -1284,6 +1370,7 @@ static GOptionEntry args[] = { + { "index-only", 'i', 0, G_OPTION_ARG_NONE, &index_only, N_("Don't include image data in the cache"), NULL }, + { "source", 'c', 0, G_OPTION_ARG_STRING, &var_name, N_("Output a C header file"), "NAME" }, + { "quiet", 'q', 0, G_OPTION_ARG_NONE, &quiet, N_("Turn off verbose output"), NULL }, ++ { "check-subdirs", 's', 0, G_OPTION_ARG_NONE, &check_subdirs, N_("Check subdirectories when determining if cache is up-to-date"), NULL }, + { NULL } + }; + +@@ -1316,7 +1403,7 @@ main (int argc, char **argv) + return 1; + } + +- if (!force_update && is_cache_up_to_date (path)) ++ if (!force_update && is_cache_up_to_date (path, check_subdirs)) + return 0; + + g_type_init (); diff --git a/x11-libs/gtk+/files/gtk+-2.10.7-mozilla-dnd-fix.patch b/x11-libs/gtk+/files/gtk+-2.10.7-mozilla-dnd-fix.patch new file mode 100644 index 0000000..9188972 --- /dev/null +++ b/x11-libs/gtk+/files/gtk+-2.10.7-mozilla-dnd-fix.patch @@ -0,0 +1,72 @@ +This patch is applied upstream to fix http://bugzilla.gnome.org/show_bug.cgi?id=122688 +As this regresses mozilla products drag-and-drop (bug 162362) we are reverse applying +it as what it fixed is a corner case while mozilla case is a big problem. +The real problem is inside mozilla code, see http://bugzilla.gnome.org/show_bug.cgi?id=394525 +but we can't fix this for binary thunderbird/firefox/seamonkey packages + +--- /branches/gtk-2-10/gtk/gtkdnd.c 2006/11/05 08:55:47 16711 ++++ branches/gtk-2-10/gtk/gtkdnd.c 2006/11/06 17:16:37 16712 +@@ -285,6 +285,9 @@ + static gboolean gtk_drag_grab_broken_event_cb (GtkWidget *widget, + GdkEventGrabBroken *event, + gpointer data); ++static void gtk_drag_grab_notify_cb (GtkWidget *widget, ++ gboolean was_grabbed, ++ gpointer data); + static gboolean gtk_drag_button_release_cb (GtkWidget *widget, + GdkEventButton *event, + gpointer data); +@@ -2331,6 +2334,8 @@ + + g_signal_connect (info->ipc_widget, "grab_broken_event", + G_CALLBACK (gtk_drag_grab_broken_event_cb), info); ++ g_signal_connect (info->ipc_widget, "grab_notify", ++ G_CALLBACK (gtk_drag_grab_notify_cb), info); + g_signal_connect (info->ipc_widget, "button_release_event", + G_CALLBACK (gtk_drag_button_release_cb), info); + g_signal_connect (info->ipc_widget, "motion_notify_event", +@@ -3762,6 +3767,9 @@ + gtk_drag_grab_broken_event_cb, + info); + g_signal_handlers_disconnect_by_func (info->ipc_widget, ++ gtk_drag_grab_notify_cb, ++ info); ++ g_signal_handlers_disconnect_by_func (info->ipc_widget, + gtk_drag_button_release_cb, + info); + g_signal_handlers_disconnect_by_func (info->ipc_widget, +@@ -3926,6 +3934,9 @@ + gtk_drag_grab_broken_event_cb, + info); + g_signal_handlers_disconnect_by_func (info->ipc_widget, ++ gtk_drag_grab_notify_cb, ++ info); ++ g_signal_handlers_disconnect_by_func (info->ipc_widget, + gtk_drag_button_release_cb, + info); + g_signal_handlers_disconnect_by_func (info->ipc_widget, +@@ -4117,6 +4128,24 @@ + return TRUE; + } + ++static void ++gtk_drag_grab_notify_cb (GtkWidget *widget, ++ gboolean was_grabbed, ++ gpointer data) ++{ ++ GtkDragSourceInfo *info = (GtkDragSourceInfo *)data; ++ ++ if (!was_grabbed) ++ { ++ /* We have to block callbacks to avoid recursion here, because ++ gtk_drag_cancel calls gtk_grab_remove (via gtk_drag_end) */ ++ g_signal_handlers_block_by_func (widget, gtk_drag_grab_notify_cb, data); ++ gtk_drag_cancel (info, gtk_get_current_event_time ()); ++ g_signal_handlers_unblock_by_func (widget, gtk_drag_grab_notify_cb, data); ++ } ++} ++ ++ + /************************************************************* + * gtk_drag_button_release_cb: + * "button_release_event" callback during drag. diff --git a/x11-libs/gtk+/files/gtk+-2.8.10-xinerama.patch b/x11-libs/gtk+/files/gtk+-2.8.10-xinerama.patch new file mode 100644 index 0000000..429e083 --- /dev/null +++ b/x11-libs/gtk+/files/gtk+-2.8.10-xinerama.patch @@ -0,0 +1,32 @@ +Index: gtk+-2.8.9/configure.in +=================================================================== +--- gtk+-2.8.9.orig/configure.in ++++ gtk+-2.8.9/configure.in +@@ -195,6 +195,10 @@ AC_ARG_ENABLE(shm, + [AC_HELP_STRING([--enable-shm], + [support shared memory if available [default=yes]])],, + [enable_shm="yes"]) ++AC_ARG_ENABLE(xinerama, ++ [AC_HELP_STRING([--enable-xinerama], ++ [support xinerama extension if available [default=yes]])],, ++ [enable_xinerama="yes"]) + AC_ARG_ENABLE(xkb, + [AC_HELP_STRING([--enable-xkb], + [support XKB [default=maybe]])],, +@@ -1193,7 +1197,7 @@ if test "x$gdktarget" = "xx11"; then + fi + + # Check for Xinerama extension (Solaris impl or Xfree impl) +- ++ if test "x$enable_xinerama" = "xyes"; then + gtk_save_cppflags="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $x_cflags" + +@@ -1241,6 +1245,7 @@ if test "x$gdktarget" = "xx11"; then + fi + ;; + esac ++ fi + + # set up things for XInput + diff --git a/x11-libs/gtk+/gtk+-2.10.13.ebuild b/x11-libs/gtk+/gtk+-2.10.13.ebuild new file mode 100644 index 0000000..c36f93a --- /dev/null +++ b/x11-libs/gtk+/gtk+-2.10.13.ebuild @@ -0,0 +1,170 @@ +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/x11-libs/gtk+/gtk+-2.10.13.ebuild,v 1.1 2007/06/14 02:42:37 leio Exp $ + +inherit gnome.org flag-o-matic eutils autotools virtualx + +DESCRIPTION="Gimp ToolKit +" +HOMEPAGE="http://www.gtk.org/" + +LICENSE="LGPL-2" +SLOT="2" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd" +IUSE="debug directfb doc jpeg tiff xinerama" + +RDEPEND=" + directfb? ( >=dev-libs/DirectFB-0.9.24 ) + !directfb? ( + x11-libs/libXrender + x11-libs/libX11 + x11-libs/libXi + x11-libs/libXt + x11-libs/libXext + x11-libs/libXcursor + x11-libs/libXrandr + x11-libs/libXfixes + xinerama? ( x11-libs/libXinerama ) + media-libs/fontconfig + ) + >=dev-libs/glib-2.12.1 + >=x11-libs/pango-1.12.0 + >=dev-libs/atk-1.10.1 + >=x11-libs/cairo-1.2.0 + x11-misc/shared-mime-info + >=media-libs/libpng-1.2.1 + jpeg? ( >=media-libs/jpeg-6b-r2 ) + tiff? ( >=media-libs/tiff-3.5.7 )" + +DEPEND="${RDEPEND} + sys-devel/autoconf + >=dev-util/pkgconfig-0.9 + =sys-devel/automake-1.7* + !directfb? ( + x11-proto/xextproto + x11-proto/xproto + x11-proto/inputproto + ) + xinerama? ( x11-proto/xineramaproto ) + doc? ( + >=dev-util/gtk-doc-1.4 + ~app-text/docbook-xml-dtd-4.1.2 + )" + +RESTRICT="confcache" + +pkg_setup() { + if ! built_with_use x11-libs/cairo X; then + einfo "Please re-emerge x11-libs/cairo with the X USE flag set" + die "cairo needs the X flag set" + fi + + if use directfb && ! built_with_use x11-libs/cairo directfb; then + eerror "You need to emerge x11-libs/cairo with the directfb use flag," + eerror "if you want to use the directfb gdktarget in gtk+." + die "USE='directfb' for gtk+ need x11-libs/cairo build with directfb" + fi +} + +set_gtk2_confdir() { + # An arch specific config directory is used on multilib systems + has_multilib_profile && GTK2_CONFDIR="/etc/gtk-2.0/${CHOST}" + GTK2_CONFDIR=${GTK2_CONFDIR:=/etc/gtk-2.0} +} + +src_unpack() { + unpack ${A} + cd "${S}" + + # Optionalize xinerama support + epatch "${FILESDIR}/${PN}-2.8.10-xinerama.patch" + + # Make gtk-update-icon-cache check subdirs in it's update check + epatch "${FILESDIR}"/${PN}-2.10.11-update-icon-subdirs.patch + + # use an arch-specific config directory so that 32bit and 64bit versions + # dont clash on multilib systems + has_multilib_profile && epatch "${FILESDIR}/${PN}-2.8.0-multilib.patch" + + # Revert DND change that makes mozilla products DND broken + EPATCH_OPTS="-R" epatch "${FILESDIR}/${PN}-2.10.7-mozilla-dnd-fix.patch" + + # -O3 and company cause random crashes in applications. Bug #133469 + replace-flags -O3 -O2 + strip-flags + + use ppc64 && append-flags -mminimal-toc + + # remember, eautoreconf applies elibtoolize. + # if you remove this, you should manually run elibtoolize + export WANT_AUTOMAKE=1.7 + cp aclocal.m4 old_macros.m4 + AT_M4DIR="." + eautoreconf + + epunt_cxx +} + +src_compile() { + # png always on to display icons (foser) + local myconf="$(use_enable doc gtk-doc) \ + $(use_with jpeg libjpeg) \ + $(use_with tiff libtiff) \ + $(use_enable xinerama) \ + $(use_with X x) \ + $(use_enable !directfb xinput) \ + --with-libpng" + + # Passing --disable-debug is not recommended for production use + use debug && myconf="${myconf} --enable-debug=yes" + + local gdktarget=x11 + use directfb && gdktarget=directfb + + econf ${myconf} \ + --with-gdktarget=${gdktarget} || die "configure failed" + + emake || die "compile failed" +} + +src_test() { + Xmake check || die +} + +src_install() { + make DESTDIR="${D}" install || die "Installation failed" + + set_gtk2_confdir + dodir ${GTK2_CONFDIR} + keepdir ${GTK2_CONFDIR} + + # see bug #133241 + echo 'gtk-fallback-icon-theme = "gnome"' > ${D}/${GTK2_CONFDIR}/gtkrc + + # Enable xft in environment as suggested by <utx@gentoo.org> + dodir /etc/env.d + echo "GDK_USE_XFT=1" > ${D}/etc/env.d/50gtk2 + + dodoc AUTHORS ChangeLog* HACKING NEWS* README* +} + +pkg_postinst() { + set_gtk2_confdir + + if [ -d "${ROOT}${GTK2_CONFDIR}" ]; then + gtk-query-immodules-2.0 > ${ROOT}${GTK2_CONFDIR}/gtk.immodules + gdk-pixbuf-query-loaders > ${ROOT}${GTK2_CONFDIR}/gdk-pixbuf.loaders + else + ewarn "The destination path ${ROOT}${GTK2_CONFDIR} doesn't exist;" + ewarn "to complete the installation of GTK+, please create the" + ewarn "directory and then manually run:" + ewarn " cd ${ROOT}${GTK2_CONFDIR}" + ewarn " gtk-query-immodules-2.0 > gtk.immodules" + ewarn " gdk-pixbuf-query-loaders > gdk-pixbuf.loaders" + fi + + if [ -e /usr/lib/gtk-2.0/2.[^1]* ]; then + elog "You need to rebuild ebuilds that installed into" /usr/lib/gtk-2.0/2.[^1]* + elog "to do that you can use qfile from portage-utils:" + elog "emerge -va1 \$(qfile -qC /usr/lib/gtk-2.0/2.[^1]*)" + fi +} |