summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>2005-12-15 08:18:44 +0800
committermarcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>2005-12-15 08:18:44 +0800
commit118e10841b48f2a52c67c5070e8265d515504f58 (patch)
tree4af5d1f31290edcf522e26d9482ef9b95d24d714
parentb1301a8538cddb271a21b270872ec5c66498f328 (diff)
downloadmarcuscom-ports-118e10841b48f2a52c67c5070e8265d515504f58.tar
marcuscom-ports-118e10841b48f2a52c67c5070e8265d515504f58.tar.gz
marcuscom-ports-118e10841b48f2a52c67c5070e8265d515504f58.tar.bz2
marcuscom-ports-118e10841b48f2a52c67c5070e8265d515504f58.tar.lz
marcuscom-ports-118e10841b48f2a52c67c5070e8265d515504f58.tar.xz
marcuscom-ports-118e10841b48f2a52c67c5070e8265d515504f58.tar.zst
marcuscom-ports-118e10841b48f2a52c67c5070e8265d515504f58.zip
Add glib20 at 2.9.0 from the ports-experiment module. While GTK+ 2.10 won't
be ready for GNOME 2.14, Glib 2.10 will be. git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@5294 df743ca5-7f9a-e211-a948-0013205c9059
-rw-r--r--devel/glib20/Makefile53
-rw-r--r--devel/glib20/distinfo3
-rw-r--r--devel/glib20/files/extra-patch-gthread_gthread-posix.c32
-rw-r--r--devel/glib20/files/patch-ae11
-rw-r--r--devel/glib20/files/patch-ag14
-rw-r--r--devel/glib20/files/patch-ah11
-rw-r--r--devel/glib20/files/patch-glib::libcharset::Makefile.in31
-rw-r--r--devel/glib20/files/patch-glib_gthread.c28
-rw-r--r--devel/glib20/files/patch-glib_gthreadprivate.h53
-rw-r--r--devel/glib20/files/patch-glib_gutils.c20
-rw-r--r--devel/glib20/files/patch-gmodule::gmodule-dl.c24
-rw-r--r--devel/glib20/files/patch-gthread_gthread-impl.c185
-rw-r--r--devel/glib20/files/patch-gthread_gthread-posix.c21
-rw-r--r--devel/glib20/pkg-descr5
-rw-r--r--devel/glib20/pkg-plist195
15 files changed, 686 insertions, 0 deletions
diff --git a/devel/glib20/Makefile b/devel/glib20/Makefile
new file mode 100644
index 000000000..3bf78f386
--- /dev/null
+++ b/devel/glib20/Makefile
@@ -0,0 +1,53 @@
+# New ports collection makefile for: glib13
+# Date Created: 28 July 1998
+# Whom: Vanilla I. Shu <vanilla@FreeBSD.org>
+#
+# $FreeBSD$
+# $MCom: ports-experimental/devel/glib20/Makefile,v 1.9 2005/11/18 23:01:16 kwm Exp $
+#
+
+PORTNAME= glib
+PORTVERSION= 2.9.0
+CATEGORIES= devel
+MASTER_SITES= ${MASTER_SITE_GNOME:S,%SUBDIR%,sources/${PORTNAME}/2.9,} \
+ ftp://ftp.gtk.org/pub/gtk/v2.9/ \
+ ftp://ftp.gimp.org/pub/%SUBDIR%/ \
+ ftp://ftp.cs.umn.edu/pub/gimp/%SUBDIR%/ \
+ http://www.ameth.org/gimp/%SUBDIR%/ \
+ ${MASTER_SITE_RINGSERVER:S,%SUBDIR%,graphics/gimp/%SUBDIR%,}
+MASTER_SITE_SUBDIR= gtk/v${PORTVERSION:R}
+DIST_SUBDIR= gnome2
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= Some useful routines of C programming (current stable version)
+
+LATEST_LINK= glib20
+
+USE_BZIP2= yes
+USE_GETTEXT= yes
+USE_AUTOTOOLS= libtool:15
+USE_REINPLACE= yes
+INSTALLS_SHLIB= yes
+USE_GNOME= gnomehack gnometarget pkgconfig ltverhack
+USE_GMAKE= yes
+USE_PERL5= yes
+CONFIGURE_ARGS= --enable-static --with-libiconv=gnu \
+ --disable-gtk-doc --with-html-dir=${PREFIX}/share/doc \
+ --disable-man --without-xml-catalog
+CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
+ LDFLAGS="-L${LOCALBASE}/lib -lintl" \
+ PTHREAD_CFLAGS="${PTHREAD_CFLAGS}" \
+ PTHREAD_LIBS="${PTHREAD_LIBS}"
+
+.include <bsd.port.pre.mk>
+
+.if ( ( ${OSVERSION} < 504101 ) || ( ${OSVERSION} >= 600000 && ${OSVERSION} < 600012 ) )
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-gthread_gthread-posix.c
+.endif
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ ${WRKSRC}/glib/gutils.c
+
+.include <bsd.port.post.mk>
diff --git a/devel/glib20/distinfo b/devel/glib20/distinfo
new file mode 100644
index 000000000..ab4d2f66d
--- /dev/null
+++ b/devel/glib20/distinfo
@@ -0,0 +1,3 @@
+MD5 (gnome2/glib-2.9.0.tar.bz2) = b71e24bba5e137d39ed576e1dfdd3680
+SHA256 (gnome2/glib-2.9.0.tar.bz2) = 79f050acad7c88a2ebb8e4c3914faed8d270aaaf3b05521e05598e505c527c32
+SIZE (gnome2/glib-2.9.0.tar.bz2) = 2544468
diff --git a/devel/glib20/files/extra-patch-gthread_gthread-posix.c b/devel/glib20/files/extra-patch-gthread_gthread-posix.c
new file mode 100644
index 000000000..bde2862f6
--- /dev/null
+++ b/devel/glib20/files/extra-patch-gthread_gthread-posix.c
@@ -0,0 +1,32 @@
+--- gthread/gthread-posix.c.orig Thu Jun 9 11:25:01 2005
++++ gthread/gthread-posix.c Fri Jun 10 20:23:17 2005
+@@ -115,7 +115,11 @@ static gint priority_normal_value;
+ # define PRIORITY_NORMAL_VALUE priority_normal_value
+ #endif /* POSIX_MIN_PRIORITY && POSIX_MAX_PRIORITY */
+
++#define G_THREAD_STACK_SIZE32 (1*1024*1024)
++#define G_THREAD_STACK_SIZE64 (2*1024*1024)
++
+ static gulong g_thread_min_stack_size = 0;
++static gulong g_thread_default_stack_size = 0;
+
+ #define G_MUTEX_SIZE (sizeof (pthread_mutex_t))
+
+@@ -309,8 +313,16 @@ g_thread_create_posix_impl (GThreadFunc
+ stack_size = MAX (g_thread_min_stack_size, stack_size);
+ /* No error check here, because some systems can't do it and
+ * we simply don't want threads to fail because of that. */
+- pthread_attr_setstacksize (&attr, stack_size);
+ }
++ else
++ {
++ if (sizeof(void *) == 8)
++ g_thread_default_stack_size = G_THREAD_STACK_SIZE64;
++ else
++ g_thread_default_stack_size = G_THREAD_STACK_SIZE32;
++ stack_size = MAX (g_thread_min_stack_size, g_thread_default_stack_size);
++ }
++ pthread_attr_setstacksize (&attr, stack_size);
+ #endif /* HAVE_PTHREAD_ATTR_SETSTACKSIZE */
+
+ #ifdef PTHREAD_SCOPE_SYSTEM
diff --git a/devel/glib20/files/patch-ae b/devel/glib20/files/patch-ae
new file mode 100644
index 000000000..89850e102
--- /dev/null
+++ b/devel/glib20/files/patch-ae
@@ -0,0 +1,11 @@
+--- configure.orig Fri Apr 30 09:05:01 2004
++++ configure Tue May 4 12:52:56 2004
+@@ -31818,6 +31819,8 @@
+ ;;
+ esac
+ fi
++ G_THREAD_CFLAGS="${PTHREAD_CFLAGS}"
++ G_THREAD_LIBS="${PTHREAD_LIBS}"
+
+ if test x"$G_THREAD_CFLAGS" = x; then
+
diff --git a/devel/glib20/files/patch-ag b/devel/glib20/files/patch-ag
new file mode 100644
index 000000000..3e8fbfbf4
--- /dev/null
+++ b/devel/glib20/files/patch-ag
@@ -0,0 +1,14 @@
+--- Makefile.in.orig Sun Dec 23 16:53:53 2001
++++ Makefile.in Fri Feb 8 12:44:30 2002
+@@ -151,3 +151,3 @@
+
+-SUBDIRS = . m4macros glib gobject gmodule gthread tests build po docs
++SUBDIRS = . m4macros glib gobject gmodule gthread build po docs
+
+@@ -192,4 +192,4 @@
+
+-
+-configexecincludedir = $(libdir)/glib-2.0/include
++glibincludedir = $(includedir)/glib-2.0
++configexecincludedir = $(glibincludedir)
+
diff --git a/devel/glib20/files/patch-ah b/devel/glib20/files/patch-ah
new file mode 100644
index 000000000..c339b76e2
--- /dev/null
+++ b/devel/glib20/files/patch-ah
@@ -0,0 +1,11 @@
+--- docs/reference/Makefile.in.orig Fri Oct 24 18:05:32 2003
++++ docs/reference/Makefile.in Fri Oct 24 18:06:00 2003
+@@ -226,7 +226,7 @@
+ sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+ target_alias = @target_alias@
+-SUBDIRS = glib gobject
++SUBDIRS = #glib gobject
+ subdir = docs/reference
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+ CONFIG_HEADER = $(top_builddir)/config.h
diff --git a/devel/glib20/files/patch-glib::libcharset::Makefile.in b/devel/glib20/files/patch-glib::libcharset::Makefile.in
new file mode 100644
index 000000000..9afd57416
--- /dev/null
+++ b/devel/glib20/files/patch-glib::libcharset::Makefile.in
@@ -0,0 +1,31 @@
+--- glib/libcharset/Makefile.in.orig Fri Apr 30 12:10:27 2004
++++ glib/libcharset/Makefile.in Fri Apr 30 12:12:01 2004
+@@ -225,7 +225,7 @@
+ target_alias = @target_alias@
+
+ INCLUDES = \
+- -DLIBDIR=\"$(libdir)\" -I$(top_srcdir)
++ -DLIBDIR=\"$(prefix)/libdata\" -I$(top_srcdir)
+
+
+ noinst_LTLIBRARIES = libcharset.la
+@@ -246,8 +246,8 @@
+ make-patch.sh
+
+
+-charset_alias = $(DESTDIR)$(libdir)/charset.alias
+-charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
++charset_alias = $(DESTDIR)$(prefix)/libdata/charset.alias
++charset_tmp = $(DESTDIR)$(prefix)/libdata/charset.tmp
+
+ SUFFIXES = .sed .sin
+
+@@ -487,7 +487,7 @@
+
+ install-data-am:
+
+-install-exec-am: install-exec-local
++install-exec-am: # install-exec-local
+
+ install-info: install-info-am
+
diff --git a/devel/glib20/files/patch-glib_gthread.c b/devel/glib20/files/patch-glib_gthread.c
new file mode 100644
index 000000000..1dce08388
--- /dev/null
+++ b/devel/glib20/files/patch-glib_gthread.c
@@ -0,0 +1,28 @@
+--- glib/gthread.c.orig Mon Mar 14 05:02:07 2005
++++ glib/gthread.c Wed Jul 20 19:44:08 2005
+@@ -42,24 +42,8 @@
+
+ #include "glib.h"
+ #include "gthreadinit.h"
++#include "gthreadprivate.h"
+ #include "galias.h"
+-
+-#if GLIB_SIZEOF_SYSTEM_THREAD == SIZEOF_VOID_P
+-# define g_system_thread_equal_simple(thread1, thread2) \
+- ((thread1).dummy_pointer == (thread2).dummy_pointer)
+-# define g_system_thread_assign(dest, src) \
+- ((dest).dummy_pointer = (src).dummy_pointer)
+-#else /* GLIB_SIZEOF_SYSTEM_THREAD != SIZEOF_VOID_P */
+-# define g_system_thread_equal_simple(thread1, thread2) \
+- (memcmp (&(thread1), &(thread2), GLIB_SIZEOF_SYSTEM_THREAD) == 0)
+-# define g_system_thread_assign(dest, src) \
+- (memcpy (&(dest), &(src), GLIB_SIZEOF_SYSTEM_THREAD))
+-#endif /* GLIB_SIZEOF_SYSTEM_THREAD == SIZEOF_VOID_P */
+-
+-#define g_system_thread_equal(thread1, thread2) \
+- (g_thread_functions_for_glib_use.thread_equal ? \
+- g_thread_functions_for_glib_use.thread_equal (&(thread1), &(thread2)) :\
+- g_system_thread_equal_simple((thread1), (thread2)))
+
+ GQuark
+ g_thread_error_quark (void)
diff --git a/devel/glib20/files/patch-glib_gthreadprivate.h b/devel/glib20/files/patch-glib_gthreadprivate.h
new file mode 100644
index 000000000..0235c2026
--- /dev/null
+++ b/devel/glib20/files/patch-glib_gthreadprivate.h
@@ -0,0 +1,53 @@
+--- glib/gthreadprivate.h.orig Wed Jul 20 19:44:08 2005
++++ glib/gthreadprivate.h Wed Jul 20 19:44:08 2005
+@@ -0,0 +1,50 @@
++/* gthreadprivate.h
++ *
++ * Copyright 1998 Sebastian Wilhelmi; University of Karlsruhe
++ * Owen Taylor
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ * Boston, MA 02111-1307, USA.
++ */
++
++#ifndef __G_THREAD_PRIVATE_H__
++#define __G_THREAD_PRIVATE_H__
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++G_BEGIN_DECLS
++
++#if GLIB_SIZEOF_SYSTEM_THREAD == SIZEOF_VOID_P
++# define g_system_thread_equal_simple(thread1, thread2) \
++ ((thread1).dummy_pointer == (thread2).dummy_pointer)
++# define g_system_thread_assign(dest, src) \
++ ((dest).dummy_pointer = (src).dummy_pointer)
++#else /* GLIB_SIZEOF_SYSTEM_THREAD != SIZEOF_VOID_P */
++# define g_system_thread_equal_simple(thread1, thread2) \
++ (memcmp (&(thread1), &(thread2), GLIB_SIZEOF_SYSTEM_THREAD) == 0)
++# define g_system_thread_assign(dest, src) \
++ (memcpy (&(dest), &(src), GLIB_SIZEOF_SYSTEM_THREAD))
++#endif /* GLIB_SIZEOF_SYSTEM_THREAD == SIZEOF_VOID_P */
++
++#define g_system_thread_equal(thread1, thread2) \
++ (g_thread_functions_for_glib_use.thread_equal ? \
++ g_thread_functions_for_glib_use.thread_equal (&(thread1), &(thread2)) :\
++ g_system_thread_equal_simple((thread1), (thread2)))
++
++G_END_DECLS
++
++#endif /* __G_THREAD_PRIVATE_H__ */
diff --git a/devel/glib20/files/patch-glib_gutils.c b/devel/glib20/files/patch-glib_gutils.c
new file mode 100644
index 000000000..ad4210c25
--- /dev/null
+++ b/devel/glib20/files/patch-glib_gutils.c
@@ -0,0 +1,20 @@
+--- glib/gutils.c.orig Wed Mar 23 09:55:02 2005
++++ glib/gutils.c Thu Apr 7 01:06:16 2005
+@@ -1929,7 +1929,7 @@ g_get_system_data_dirs (void)
+ data_dirs = (gchar *) g_getenv ("XDG_DATA_DIRS");
+
+ if (!data_dirs || !data_dirs[0])
+- data_dirs = "/usr/local/share/:/usr/share/";
++ data_dirs = "%%X11BASE%%/share/gnome/:/usr/local/share/gnome/:%%X11BASE%%/share/:/usr/local/share/:/usr/share/";
+
+ data_dir_vector = g_strsplit (data_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
+ #endif
+@@ -1983,7 +1983,7 @@ g_get_system_config_dirs (void)
+ conf_dirs = (gchar *) g_getenv ("XDG_CONFIG_DIRS");
+
+ if (!conf_dirs || !conf_dirs[0])
+- conf_dirs = "/etc/xdg";
++ conf_dirs = "%%X11BASE%%/etc/xdg:/usr/local/etc/xdg:/etc/xdg";
+
+ conf_dir_vector = g_strsplit (conf_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
+ #endif
diff --git a/devel/glib20/files/patch-gmodule::gmodule-dl.c b/devel/glib20/files/patch-gmodule::gmodule-dl.c
new file mode 100644
index 000000000..7e27afe4b
--- /dev/null
+++ b/devel/glib20/files/patch-gmodule::gmodule-dl.c
@@ -0,0 +1,24 @@
+
+$FreeBSD$
+ $MCom: ports-experimental/devel/glib20/files/patch-gmodule::gmodule-dl.c,v 1.3 2005/11/18 23:01:16 kwm Exp $
+
+--- gmodule/gmodule-dl.c.orig Sat Feb 17 08:28:07 2001
++++ gmodule/gmodule-dl.c Fri Jan 18 09:48:45 2002
+@@ -104,6 +104,7 @@
+ static gpointer
+ _g_module_self (void)
+ {
++#ifndef __FreeBSD__
+ gpointer handle;
+
+ /* to query symbols from the program itself, special link options
+@@ -115,6 +116,9 @@
+ g_module_set_error (fetch_dlerror (TRUE));
+
+ return handle;
++#else
++ return RTLD_DEFAULT;
++#endif
+ }
+
+ static void
diff --git a/devel/glib20/files/patch-gthread_gthread-impl.c b/devel/glib20/files/patch-gthread_gthread-impl.c
new file mode 100644
index 000000000..5f1b6dcbd
--- /dev/null
+++ b/devel/glib20/files/patch-gthread_gthread-impl.c
@@ -0,0 +1,185 @@
+--- gthread/gthread-impl.c.orig Fri Feb 14 16:08:46 2003
++++ gthread/gthread-impl.c Wed Jul 20 19:44:08 2005
+@@ -37,9 +37,11 @@
+
+ #include <glib.h>
+ #include <gthreadinit.h>
++#include "gthreadprivate.h"
+
+ #ifdef G_THREADS_ENABLED
+
++static GSystemThread zero_thread; /* This is initialized to all zero */
+ static gboolean thread_system_already_initialized = FALSE;
+ static gint g_thread_priority_map [G_THREAD_PRIORITY_URGENT + 1];
+
+@@ -76,7 +78,7 @@
+ struct _ErrorCheckInfo
+ {
+ gchar *location;
+- GThread *owner;
++ GSystemThread owner;
+ };
+
+ static GMutex *
+@@ -94,7 +96,9 @@
+ gchar *location)
+ {
+ ErrorCheckInfo *info;
+- GThread *self = g_thread_self ();
++ GSystemThread self;
++
++ g_thread_functions_for_glib_use.thread_self (&self);
+
+ if (magic != G_MUTEX_DEBUG_MAGIC)
+ location = "unknown";
+@@ -116,14 +120,14 @@
+ }
+
+ info = G_MUTEX_DEBUG_INFO (mutex);
+- if (info->owner == self)
++ if (g_system_thread_equal (info->owner, self))
+ g_error ("Trying to recursivly lock a mutex at '%s', "
+ "previously locked at '%s'",
+ location, info->location);
+
+ g_thread_functions_for_glib_use_default.mutex_lock (mutex);
+
+- info->owner = self;
++ g_system_thread_assign (info->owner, self);
+ info->location = location;
+ }
+
+@@ -133,7 +137,9 @@
+ gchar *location)
+ {
+ ErrorCheckInfo *info = G_MUTEX_DEBUG_INFO (mutex);
+- GThread *self = g_thread_self ();
++ GSystemThread self;
++
++ g_thread_functions_for_glib_use.thread_self (&self);
+
+ if (magic != G_MUTEX_DEBUG_MAGIC)
+ location = "unknown";
+@@ -145,7 +151,7 @@
+ return TRUE;
+ }
+
+- if (info->owner == self)
++ if (g_system_thread_equal (info->owner, self))
+ g_error ("Trying to recursivly lock a mutex at '%s', "
+ "previously locked at '%s'",
+ location, info->location);
+@@ -153,7 +159,7 @@
+ if (!g_thread_functions_for_glib_use_default.mutex_trylock (mutex))
+ return FALSE;
+
+- info->owner = self;
++ g_system_thread_assign (info->owner, self);
+ info->location = location;
+
+ return TRUE;
+@@ -165,20 +171,22 @@
+ gchar *location)
+ {
+ ErrorCheckInfo *info = G_MUTEX_DEBUG_INFO (mutex);
+- GThread *self = g_thread_self ();
++ GSystemThread self;
++
++ g_thread_functions_for_glib_use.thread_self (&self);
+
+ if (magic != G_MUTEX_DEBUG_MAGIC)
+ location = "unknown";
+
+- if (!info || info->owner == NULL)
++ if (!info || g_system_thread_equal (info->owner, zero_thread))
+ g_error ("Trying to unlock an unlocked mutex at '%s'", location);
+
+- if (info->owner != self)
++ if (!g_system_thread_equal (info->owner, self))
+ g_warning ("Trying to unlock a mutex at '%s', "
+ "previously locked by a different thread at '%s'",
+ location, info->location);
+
+- info->owner = NULL;
++ g_system_thread_assign (info->owner, zero_thread);
+ info->location = NULL;
+
+ g_thread_functions_for_glib_use_default.mutex_unlock (mutex);
+@@ -194,7 +202,7 @@
+ if (magic != G_MUTEX_DEBUG_MAGIC)
+ location = "unknown";
+
+- if (info && info->owner != NULL)
++ if (info && !g_system_thread_equal (info->owner, zero_thread))
+ g_error ("Trying to free a locked mutex at '%s', "
+ "which was previously locked at '%s'",
+ location, info->location);
+@@ -211,25 +219,27 @@
+ {
+
+ ErrorCheckInfo *info = G_MUTEX_DEBUG_INFO (mutex);
+- GThread *self = g_thread_self ();
++ GSystemThread self;
++
++ g_thread_functions_for_glib_use.thread_self (&self);
+
+ if (magic != G_MUTEX_DEBUG_MAGIC)
+ location = "unknown";
+
+- if (!info || info->owner == NULL)
++ if (!info || g_system_thread_equal (info->owner, zero_thread))
+ g_error ("Trying to use an unlocked mutex in g_cond_wait() at '%s'",
+ location);
+
+- if (info->owner != self)
++ if (!g_system_thread_equal (info->owner, self))
+ g_error ("Trying to use a mutex locked by another thread in "
+ "g_cond_wait() at '%s'", location);
+
+- info->owner = NULL;
++ g_system_thread_assign (info->owner, zero_thread);
+ location = info->location;
+
+ g_thread_functions_for_glib_use_default.cond_wait (cond, mutex);
+
+- info->owner = self;
++ g_system_thread_assign (info->owner, self);
+ info->location = location;
+ }
+
+@@ -242,28 +252,30 @@
+ gchar *location)
+ {
+ ErrorCheckInfo *info = G_MUTEX_DEBUG_INFO (mutex);
+- GThread *self = g_thread_self ();
++ GSystemThread self;
+ gboolean retval;
+
++ g_thread_functions_for_glib_use.thread_self (&self);
++
+ if (magic != G_MUTEX_DEBUG_MAGIC)
+ location = "unknown";
+
+- if (!info || info->owner == NULL)
++ if (!info || g_system_thread_equal (info->owner, zero_thread))
+ g_error ("Trying to use an unlocked mutex in g_cond_timed_wait() at '%s'",
+ location);
+
+- if (info->owner != self)
++ if (!g_system_thread_equal (info->owner, self))
+ g_error ("Trying to use a mutex locked by another thread in "
+ "g_cond_timed_wait() at '%s'", location);
+
+- info->owner = NULL;
++ g_system_thread_assign (info->owner, zero_thread);
+ location = info->location;
+
+ retval = g_thread_functions_for_glib_use_default.cond_timed_wait (cond,
+ mutex,
+ end_time);
+
+- info->owner = self;
++ g_system_thread_assign (info->owner, self);
+ info->location = location;
+
+ return retval;
diff --git a/devel/glib20/files/patch-gthread_gthread-posix.c b/devel/glib20/files/patch-gthread_gthread-posix.c
new file mode 100644
index 000000000..47c5ab8f1
--- /dev/null
+++ b/devel/glib20/files/patch-gthread_gthread-posix.c
@@ -0,0 +1,21 @@
+--- gthread/gthread-posix.c.orig Mon Nov 1 13:47:12 2004
++++ gthread/gthread-posix.c Wed Mar 9 14:21:20 2005
+@@ -125,7 +129,8 @@
+ g_thread_impl_init(void)
+ {
+ #ifdef _SC_THREAD_STACK_MIN
+- g_thread_min_stack_size = MAX (sysconf (_SC_THREAD_STACK_MIN), 0);
++ g_thread_min_stack_size = MAX (sysconf (_SC_THREAD_STACK_MIN),
++ g_thread_min_stack_size);
+ #endif /* _SC_THREAD_STACK_MIN */
+ #ifdef HAVE_PRIORITIES
+ # ifdef G_THREADS_IMPL_POSIX
+@@ -176,7 +181,7 @@
+ result = pthread_mutex_trylock ((pthread_mutex_t *) mutex);
+
+ #ifdef G_THREADS_IMPL_POSIX
+- if (result == EBUSY)
++ if ((result == EBUSY) || (result == EDEADLK))
+ return FALSE;
+ #else /* G_THREADS_IMPL_DCE */
+ if (result == 0)
diff --git a/devel/glib20/pkg-descr b/devel/glib20/pkg-descr
new file mode 100644
index 000000000..3b3059030
--- /dev/null
+++ b/devel/glib20/pkg-descr
@@ -0,0 +1,5 @@
+GLib provides a simple, abstract, and highly portable set of C support
+routines such as lists, trees, hashes, memory allocation, and much, much
+more. It is a foundation for writing portable applications.
+
+WWW: http://www.gtk.org/
diff --git a/devel/glib20/pkg-plist b/devel/glib20/pkg-plist
new file mode 100644
index 000000000..8d9febc87
--- /dev/null
+++ b/devel/glib20/pkg-plist
@@ -0,0 +1,195 @@
+bin/glib-genmarshal
+bin/glib-gettextize
+bin/glib-mkenums
+bin/gobject-query
+include/glib-2.0/glib-object.h
+include/glib-2.0/glib.h
+include/glib-2.0/glib/galloca.h
+include/glib-2.0/glib/garray.h
+include/glib-2.0/glib/gasyncqueue.h
+include/glib-2.0/glib/gatomic.h
+include/glib-2.0/glib/gbacktrace.h
+include/glib-2.0/glib/gcache.h
+include/glib-2.0/glib/gcompletion.h
+include/glib-2.0/glib/gconvert.h
+include/glib-2.0/glib/gdataset.h
+include/glib-2.0/glib/gdate.h
+include/glib-2.0/glib/gdir.h
+include/glib-2.0/glib/gerror.h
+include/glib-2.0/glib/gfileutils.h
+include/glib-2.0/glib/ghash.h
+include/glib-2.0/glib/ghook.h
+include/glib-2.0/glib/gi18n-lib.h
+include/glib-2.0/glib/gi18n.h
+include/glib-2.0/glib/giochannel.h
+include/glib-2.0/glib/gkeyfile.h
+include/glib-2.0/glib/glist.h
+include/glib-2.0/glib/gmacros.h
+include/glib-2.0/glib/gmain.h
+include/glib-2.0/glib/gmappedfile.h
+include/glib-2.0/glib/gmarkup.h
+include/glib-2.0/glib/gmem.h
+include/glib-2.0/glib/gmessages.h
+include/glib-2.0/glib/gnode.h
+include/glib-2.0/glib/goption.h
+include/glib-2.0/glib/gpattern.h
+include/glib-2.0/glib/gprimes.h
+include/glib-2.0/glib/gprintf.h
+include/glib-2.0/glib/gqsort.h
+include/glib-2.0/glib/gquark.h
+include/glib-2.0/glib/gqueue.h
+include/glib-2.0/glib/grand.h
+include/glib-2.0/glib/grel.h
+include/glib-2.0/glib/gscanner.h
+include/glib-2.0/glib/gshell.h
+include/glib-2.0/glib/gslist.h
+include/glib-2.0/glib/gspawn.h
+include/glib-2.0/glib/gstdio.h
+include/glib-2.0/glib/gstrfuncs.h
+include/glib-2.0/glib/gstring.h
+include/glib-2.0/glib/gthread.h
+include/glib-2.0/glib/gthreadpool.h
+include/glib-2.0/glib/gtimer.h
+include/glib-2.0/glib/gtree.h
+include/glib-2.0/glib/gtypes.h
+include/glib-2.0/glib/gunicode.h
+include/glib-2.0/glib/gutils.h
+include/glib-2.0/glib/gwin32.h
+include/glib-2.0/glibconfig.h
+include/glib-2.0/gmodule.h
+include/glib-2.0/gobject/gboxed.h
+include/glib-2.0/gobject/gclosure.h
+include/glib-2.0/gobject/genums.h
+include/glib-2.0/gobject/gmarshal.h
+include/glib-2.0/gobject/gobject.h
+include/glib-2.0/gobject/gobjectnotifyqueue.c
+include/glib-2.0/gobject/gparam.h
+include/glib-2.0/gobject/gparamspecs.h
+include/glib-2.0/gobject/gsignal.h
+include/glib-2.0/gobject/gsourceclosure.h
+include/glib-2.0/gobject/gtype.h
+include/glib-2.0/gobject/gtypemodule.h
+include/glib-2.0/gobject/gtypeplugin.h
+include/glib-2.0/gobject/gvalue.h
+include/glib-2.0/gobject/gvaluearray.h
+include/glib-2.0/gobject/gvaluecollector.h
+include/glib-2.0/gobject/gvaluetypes.h
+lib/libglib-2.0.a
+lib/libglib-2.0.so
+lib/libglib-2.0.so.0
+lib/libgmodule-2.0.a
+lib/libgmodule-2.0.so
+lib/libgmodule-2.0.so.0
+lib/libgobject-2.0.a
+lib/libgobject-2.0.so
+lib/libgobject-2.0.so.0
+lib/libgthread-2.0.a
+lib/libgthread-2.0.so
+lib/libgthread-2.0.so.0
+libdata/pkgconfig/glib-2.0.pc
+libdata/pkgconfig/gmodule-2.0.pc
+libdata/pkgconfig/gmodule-export-2.0.pc
+libdata/pkgconfig/gmodule-no-export-2.0.pc
+libdata/pkgconfig/gobject-2.0.pc
+libdata/pkgconfig/gthread-2.0.pc
+share/aclocal/glib-2.0.m4
+share/aclocal/glib-gettext.m4
+share/glib-2.0/gettext/mkinstalldirs
+share/glib-2.0/gettext/po/Makefile.in.in
+share/locale/am/LC_MESSAGES/glib20.mo
+share/locale/ar/LC_MESSAGES/glib20.mo
+share/locale/az/LC_MESSAGES/glib20.mo
+share/locale/be/LC_MESSAGES/glib20.mo
+share/locale/bg/LC_MESSAGES/glib20.mo
+share/locale/bn/LC_MESSAGES/glib20.mo
+share/locale/bs/LC_MESSAGES/glib20.mo
+share/locale/ca/LC_MESSAGES/glib20.mo
+share/locale/cs/LC_MESSAGES/glib20.mo
+share/locale/cy/LC_MESSAGES/glib20.mo
+share/locale/da/LC_MESSAGES/glib20.mo
+share/locale/de/LC_MESSAGES/glib20.mo
+share/locale/el/LC_MESSAGES/glib20.mo
+share/locale/en_CA/LC_MESSAGES/glib20.mo
+share/locale/en_GB/LC_MESSAGES/glib20.mo
+share/locale/eo/LC_MESSAGES/glib20.mo
+share/locale/es/LC_MESSAGES/glib20.mo
+share/locale/et/LC_MESSAGES/glib20.mo
+share/locale/eu/LC_MESSAGES/glib20.mo
+share/locale/fa/LC_MESSAGES/glib20.mo
+share/locale/fi/LC_MESSAGES/glib20.mo
+share/locale/fr/LC_MESSAGES/glib20.mo
+share/locale/ga/LC_MESSAGES/glib20.mo
+share/locale/gl/LC_MESSAGES/glib20.mo
+share/locale/gu/LC_MESSAGES/glib20.mo
+share/locale/he/LC_MESSAGES/glib20.mo
+share/locale/hi/LC_MESSAGES/glib20.mo
+share/locale/hr/LC_MESSAGES/glib20.mo
+share/locale/hu/LC_MESSAGES/glib20.mo
+share/locale/id/LC_MESSAGES/glib20.mo
+share/locale/is/LC_MESSAGES/glib20.mo
+share/locale/it/LC_MESSAGES/glib20.mo
+share/locale/ja/LC_MESSAGES/glib20.mo
+share/locale/ko/LC_MESSAGES/glib20.mo
+share/locale/ku/LC_MESSAGES/glib20.mo
+share/locale/lt/LC_MESSAGES/glib20.mo
+share/locale/lv/LC_MESSAGES/glib20.mo
+share/locale/mk/LC_MESSAGES/glib20.mo
+share/locale/mn/LC_MESSAGES/glib20.mo
+share/locale/ms/LC_MESSAGES/glib20.mo
+share/locale/nb/LC_MESSAGES/glib20.mo
+share/locale/ne/LC_MESSAGES/glib20.mo
+share/locale/nl/LC_MESSAGES/glib20.mo
+share/locale/nn/LC_MESSAGES/glib20.mo
+share/locale/no/LC_MESSAGES/glib20.mo
+share/locale/or/LC_MESSAGES/glib20.mo
+share/locale/pa/LC_MESSAGES/glib20.mo
+share/locale/pl/LC_MESSAGES/glib20.mo
+share/locale/pt/LC_MESSAGES/glib20.mo
+share/locale/pt_BR/LC_MESSAGES/glib20.mo
+share/locale/ro/LC_MESSAGES/glib20.mo
+share/locale/ru/LC_MESSAGES/glib20.mo
+share/locale/rw/LC_MESSAGES/glib20.mo
+share/locale/sk/LC_MESSAGES/glib20.mo
+share/locale/sl/LC_MESSAGES/glib20.mo
+share/locale/sq/LC_MESSAGES/glib20.mo
+share/locale/sr/LC_MESSAGES/glib20.mo
+share/locale/sr@Latn/LC_MESSAGES/glib20.mo
+share/locale/sr@ije/LC_MESSAGES/glib20.mo
+share/locale/sv/LC_MESSAGES/glib20.mo
+share/locale/ta/LC_MESSAGES/glib20.mo
+share/locale/te/LC_MESSAGES/glib20.mo
+share/locale/th/LC_MESSAGES/glib20.mo
+share/locale/tl/LC_MESSAGES/glib20.mo
+share/locale/tr/LC_MESSAGES/glib20.mo
+share/locale/tt/LC_MESSAGES/glib20.mo
+share/locale/uk/LC_MESSAGES/glib20.mo
+share/locale/vi/LC_MESSAGES/glib20.mo
+share/locale/wa/LC_MESSAGES/glib20.mo
+share/locale/xh/LC_MESSAGES/glib20.mo
+share/locale/yi/LC_MESSAGES/glib20.mo
+share/locale/zh_CN/LC_MESSAGES/glib20.mo
+share/locale/zh_TW/LC_MESSAGES/glib20.mo
+@unexec rmdir %D/share/locale/ku/LC_MESSAGES 2> /dev/null || true
+@unexec rmdir %D/share/locale/ku 2> /dev/null || true
+@unexec rmdir %D/share/locale/ne/LC_MESSAGES 2> /dev/null || true
+@unexec rmdir %D/share/locale/ne 2> /dev/null || true
+@unexec rmdir %D/share/locale/rw/LC_MESSAGES 2> /dev/null || true
+@unexec rmdir %D/share/locale/rw 2> /dev/null || true
+@unexec rmdir %D/share/locale/sr@ije/LC_MESSAGES 2> /dev/null || true
+@unexec rmdir %D/share/locale/sr@ije 2> /dev/null || true
+@unexec rmdir %D/share/locale/tt/LC_MESSAGES 2> /dev/null || true
+@unexec rmdir %D/share/locale/tt 2> /dev/null || true
+@unexec rmdir %D/share/locale/te/LC_MESSAGES 2> /dev/null || true
+@unexec rmdir %D/share/locale/te 2> /dev/null || true
+@unexec rmdir %D/share/locale/tl/LC_MESSAGES 2> /dev/null || true
+@unexec rmdir %D/share/locale/tl 2> /dev/null || true
+@unexec rmdir %D/share/locale/xh/LC_MESSAGES 2> /dev/null || true
+@unexec rmdir %D/share/locale/xh 2> /dev/null || true
+@unexec rmdir %D/share/locale/yi/LC_MESSAGES 2> /dev/null || true
+@unexec rmdir %D/share/locale/yi 2> /dev/null || true
+@dirrm share/glib-2.0/gettext/po
+@dirrm share/glib-2.0/gettext
+@dirrm share/glib-2.0
+@dirrm include/glib-2.0/gobject
+@dirrm include/glib-2.0/glib
+@dirrm include/glib-2.0