Hello community,
here is the log from the commit of package glib2 for openSUSE:Factory
checked in at Fri Jan 28 16:52:44 CET 2011.
--------
--- GNOME/glib2/glib2.changes 2011-01-14 10:38:20.000000000 +0100
+++ glib2/glib2.changes 2011-01-27 10:26:15.000000000 +0100
@@ -1,0 +2,22 @@
+Thu Jan 27 10:11:56 CET 2011 - vuntz(a)opensuse.org
+
+- Update to version 2.27.92:
+ + Update to Unicode 6.0
+ + Update PCRE to 8.12
+ + Bugs fixed: bgo#637696, bgo#638872, bgo#640042.
+ + Updated translations.
+- Add glib2-use-old-pcre.patch: we don't have a recent-enough
+ version of pcre, so revert the patch doing the update. We apply
+ the patch on 11.4 and earlier: when the next development cycle
+ opens, we won't need it anymore.
+
+-------------------------------------------------------------------
+Mon Jan 24 17:06:56 CET 2011 - hpj(a)novell.com
+
+- Add glib2-force-fam-for-remote-fs.patch: try monitoring files on
+ NFS mounts via FAM before falling back to inotify (bgo#592211).
+ The patch has been submitted upstream and is not yet in git, but
+ we do want it since it fixes a really annoying issue for NFS
+ users.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
glib-2.27.91.tar.bz2
New:
----
glib-2.27.92.tar.bz2
glib2-force-fam-for-remote-fs.patch
glib2-use-old-pcre.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ glib2.spec ++++++
--- /var/tmp/diff_new_pack.0CmY3s/_old 2011-01-28 16:49:50.000000000 +0100
+++ /var/tmp/diff_new_pack.0CmY3s/_new 2011-01-28 16:49:50.000000000 +0100
@@ -21,7 +21,7 @@
Name: glib2
%define _name glib
-Version: 2.27.91
+Version: 2.27.92
Release: 1
# FIXME: change zlib-devel to pkgconfig(zlib) once we have a recent enough version of zlib
# FIXME: find out if tapsets should really be in devel package or in main package
@@ -40,12 +40,16 @@
# Please update this file from the latest gtk-doc package:
Source6: gtk-doc.m4
Source99: baselibs.conf
+# PATCH-FIX-OPENSUSE glib2-use-old-pcre.patch vuntz(a)opensuse.org -- Do no require a too recent version of pcre on openSUSE versions that don't have it
+Patch0: glib2-use-old-pcre.patch
# PATCH-FIX-OPENSUSE glib2-bnc379332-desktop-su.patch bnc379332 vuntz(a)novell.com -- Use X-KDE-SubstituteUID
Patch8: glib2-bnc379332-desktop-su.patch
# PATCH-FEATURE-UPSTREAM glib2-bgo569829-gettext-gkeyfile.patch fate300461 bgo569829 vuntz(a)novell.com -- Look for translation of desktop entry strings via gettext, part that we share with Ubuntu and try to push upstream
Patch10: glib2-bgo569829-gettext-gkeyfile.patch
# PATCH-FEATURE-OPENSUSE glib2-fate300461-gettext-gkeyfile-suse.patch fate300461 vuntz(a)novell.com -- Look for translation of desktop entry strings via gettext, part that deals with the openSUSE specific infrastructure (with desktop_translations)
Patch11: glib2-fate300461-gettext-gkeyfile-suse.patch
+# PATCH-FIX-UPSTREAM glib2-force-fam-for-remote-fs.patch bgo#592211 hpj(a)novell.com -- Try monitoring files on NFS mounts via FAM before falling back to inotify.
+Patch12: glib2-force-fam-for-remote-fs.patch
BuildRequires: fam-devel
BuildRequires: fdupes
BuildRequires: gcc-c++
@@ -245,9 +249,13 @@
%prep
%setup -q -n %{_name}-%{version}
translation-update-upstream
+%if 0%{?suse_version} <= 1140
+%patch0 -p1 -R
+%endif
%patch8
%patch10 -p1
%patch11 -p1
+%patch12 -p1
cp -a %{S:1} %{S:2} %{S:3} .
cp -a %{S:4} gnome_defaults.conf
if ! test -f %{_datadir}/aclocal/gtk-doc.m4 ; then
++++++ glib-2.27.91.tar.bz2 -> glib-2.27.92.tar.bz2 ++++++
GNOME/glib2/glib-2.27.91.tar.bz2 glib2/glib-2.27.92.tar.bz2 differ: char 11, line 1
++++++ glib2-force-fam-for-remote-fs.patch ++++++
diff --git a/gio/glocaldirectorymonitor.c b/gio/glocaldirectorymonitor.c
index 6aea9a0..49b2084 100644
--- a/gio/glocaldirectorymonitor.c
+++ b/gio/glocaldirectorymonitor.c
@@ -266,26 +266,78 @@ get_default_local_directory_monitor (gpointer data)
return (gpointer)G_TYPE_INVALID;
}
+static gpointer
+get_default_remote_directory_monitor (gpointer data)
+{
+ GLocalDirectoryMonitorClass *chosen_class = NULL;
+ GLocalDirectoryMonitorClass **ret = data;
+ GIOExtensionPoint *ep;
+ GIOExtension *extension;
+ GLocalDirectoryMonitorClass *klass;
+
+ _g_io_modules_ensure_loaded ();
+
+ ep = g_io_extension_point_lookup (G_LOCAL_DIRECTORY_MONITOR_EXTENSION_POINT_NAME);
+
+ extension = g_io_extension_point_get_extension_by_name (ep, "fam");
+ if (!extension)
+ return (gpointer)G_TYPE_INVALID;
+
+ klass = G_LOCAL_DIRECTORY_MONITOR_CLASS (g_io_extension_ref_class (extension));
+
+ if (klass->is_supported ())
+ chosen_class = klass;
+ else
+ g_type_class_unref (klass);
+
+ if (chosen_class)
+ {
+ *ret = chosen_class;
+ return (gpointer)G_TYPE_FROM_CLASS (chosen_class);
+ }
+ else
+ return (gpointer)G_TYPE_INVALID;
+}
+
GFileMonitor*
_g_local_directory_monitor_new (const char *dirname,
GFileMonitorFlags flags,
+ gboolean is_remote_fs,
GError **error)
{
- static GOnce once_init = G_ONCE_INIT;
GTypeClass *type_class;
GFileMonitor *monitor;
GType type;
type_class = NULL;
- g_once (&once_init, get_default_local_directory_monitor, &type_class);
- type = (GType)once_init.retval;
-
monitor = NULL;
+
+ if (is_remote_fs)
+ {
+ static GOnce once_init = G_ONCE_INIT;
+
+ g_once (&once_init, get_default_remote_directory_monitor, &type_class);
+ type = (GType)once_init.retval;
+ }
+ else
+ {
+ static GOnce once_init = G_ONCE_INIT;
+
+ g_once (&once_init, get_default_local_directory_monitor, &type_class);
+ type = (GType)once_init.retval;
+ }
+
if (type != G_TYPE_INVALID)
monitor = G_FILE_MONITOR (g_object_new (type, "dirname", dirname, "flags", flags, NULL));
- else
- g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- _("Unable to find default local directory monitor type"));
+
+ if (!monitor)
+ {
+ if (is_remote_fs)
+ monitor = _g_local_directory_monitor_new (dirname, flags, FALSE, error);
+ else
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ _("Unable to find default local directory monitor type"));
+ }
/* This is non-null on first pass here. Unref the class now.
* This is to avoid unloading the module and then loading it
diff --git a/gio/glocaldirectorymonitor.h b/gio/glocaldirectorymonitor.h
index 418634e..b0a0d5a 100644
--- a/gio/glocaldirectorymonitor.h
+++ b/gio/glocaldirectorymonitor.h
@@ -64,6 +64,7 @@ GType g_local_directory_monitor_get_type (void) G_GNUC_CONST;
GFileMonitor * _g_local_directory_monitor_new (const char *dirname,
GFileMonitorFlags flags,
+ gboolean is_remote_fs,
GError **error);
G_END_DECLS
diff --git a/gio/glocalfile.c b/gio/glocalfile.c
index ec290e7..d8661ba 100644
--- a/gio/glocalfile.c
+++ b/gio/glocalfile.c
@@ -2344,6 +2344,57 @@ g_local_file_move (GFile *source,
return TRUE;
}
+static gboolean
+is_remote_fs (GLocalFile *local)
+{
+ const char *fsname;
+
+ fsname = NULL;
+
+#ifdef USE_STATFS
+ struct statfs statfs_buffer;
+ int statfs_result = 0;
+
+#if STATFS_ARGS == 2
+ statfs_result = statfs (local->filename, &statfs_buffer);
+#elif STATFS_ARGS == 4
+ statfs_result = statfs (local->filename, &statfs_buffer,
+ sizeof (statfs_buffer), 0);
+#endif
+
+#elif defined(USE_STATVFS)
+ struct statvfs statfs_buffer;
+
+ statfs_result = statvfs (local->filename, &statfs_buffer);
+#else
+ return FALSE;
+#endif
+
+ if (statfs_result == -1)
+ return FALSE;
+
+#ifdef USE_STATFS
+#if defined(HAVE_STRUCT_STATFS_F_FSTYPENAME)
+ fsname = statfs_buffer.f_fstypename;
+#else
+ fsname = get_fs_type (statfs_buffer.f_type);
+#endif
+
+#elif defined(USE_STATVFS) && defined(HAVE_STRUCT_STATVFS_F_BASETYPE)
+ fsname = statfs_buffer.f_basetype;
+#endif
+
+ if (fsname != NULL)
+ {
+ if (strcmp (fsname, "nfs") == 0)
+ return TRUE;
+ if (strcmp (fsname, "nfs4") == 0)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static GFileMonitor*
g_local_file_monitor_dir (GFile *file,
GFileMonitorFlags flags,
@@ -2351,7 +2402,7 @@ g_local_file_monitor_dir (GFile *file,
GError **error)
{
GLocalFile* local_file = G_LOCAL_FILE(file);
- return _g_local_directory_monitor_new (local_file->filename, flags, error);
+ return _g_local_directory_monitor_new (local_file->filename, flags, is_remote_fs (local_file), error);
}
static GFileMonitor*
@@ -2361,7 +2412,7 @@ g_local_file_monitor_file (GFile *file,
GError **error)
{
GLocalFile* local_file = G_LOCAL_FILE(file);
- return _g_local_file_monitor_new (local_file->filename, flags, error);
+ return _g_local_file_monitor_new (local_file->filename, flags, is_remote_fs (local_file), error);
}
static void
diff --git a/gio/glocalfilemonitor.c b/gio/glocalfilemonitor.c
index 8405d3a..5fc2163 100644
--- a/gio/glocalfilemonitor.c
+++ b/gio/glocalfilemonitor.c
@@ -191,26 +191,78 @@ get_default_local_file_monitor (gpointer data)
return (gpointer)G_TYPE_INVALID;
}
+static gpointer
+get_default_remote_file_monitor (gpointer data)
+{
+ GLocalFileMonitorClass *chosen_class = NULL;
+ GLocalFileMonitorClass **ret = data;
+ GIOExtensionPoint *ep;
+ GIOExtension *extension;
+ GLocalFileMonitorClass *klass;
+
+ _g_io_modules_ensure_loaded ();
+
+ ep = g_io_extension_point_lookup (G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME);
+
+ extension = g_io_extension_point_get_extension_by_name (ep, "fam");
+ if (!extension)
+ return (gpointer)G_TYPE_INVALID;
+
+ klass = G_LOCAL_FILE_MONITOR_CLASS (g_io_extension_ref_class (extension));
+
+ if (klass->is_supported ())
+ chosen_class = klass;
+ else
+ g_type_class_unref (klass);
+
+ if (chosen_class)
+ {
+ *ret = chosen_class;
+ return (gpointer)G_TYPE_FROM_CLASS (chosen_class);
+ }
+ else
+ return (gpointer)G_TYPE_INVALID;
+}
+
GFileMonitor*
_g_local_file_monitor_new (const char *pathname,
GFileMonitorFlags flags,
+ gboolean is_remote_fs,
GError **error)
{
- static GOnce once_init = G_ONCE_INIT;
GTypeClass *type_class;
GFileMonitor *monitor;
GType type;
type_class = NULL;
- g_once (&once_init, get_default_local_file_monitor, &type_class);
- type = (GType)once_init.retval;
-
monitor = NULL;
+
+ if (is_remote_fs)
+ {
+ static GOnce once_init = G_ONCE_INIT;
+
+ g_once (&once_init, get_default_remote_file_monitor, &type_class);
+ type = (GType)once_init.retval;
+ }
+ else
+ {
+ static GOnce once_init = G_ONCE_INIT;
+
+ g_once (&once_init, get_default_local_file_monitor, &type_class);
+ type = (GType)once_init.retval;
+ }
+
if (type != G_TYPE_INVALID)
monitor = G_FILE_MONITOR (g_object_new (type, "filename", pathname, "flags", flags, NULL));
- else
- g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- _("Unable to find default local file monitor type"));
+
+ if (!monitor)
+ {
+ if (is_remote_fs)
+ monitor = _g_local_file_monitor_new (pathname, flags, FALSE, error);
+ else
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ _("Unable to find default local file monitor type"));
+ }
/* This is non-null on first pass here. Unref the class now.
* This is to avoid unloading the module and then loading it
diff --git a/gio/glocalfilemonitor.h b/gio/glocalfilemonitor.h
index 6643866..dff3d81 100644
--- a/gio/glocalfilemonitor.h
+++ b/gio/glocalfilemonitor.h
@@ -57,6 +57,7 @@ GType g_local_file_monitor_get_type (void) G_GNUC_CONST;
GFileMonitor * _g_local_file_monitor_new (const char *pathname,
GFileMonitorFlags flags,
+ gboolean is_remote_fs,
GError **error);
G_END_DECLS
++++++ glib2-use-old-pcre.patch ++++++
commit c03dc6bf7dfc6e326e7249e9e377676db885d99e
Author: Matthias Clasen <mclasen(a)redhat.com>
Date: Fri Jan 21 23:10:01 2011 -0500
Update the included copy of PCRE
Update PCRE to version 8.12.
At the same time, also add Unicode 6.0 script support.
diff --git a/glib/gregex.c b/glib/gregex.c
index b62bda7..a1d2315 100644
--- a/glib/gregex.c
+++ b/glib/gregex.c
@@ -230,6 +230,10 @@ match_error (gint errcode)
return _("workspace limit for empty substrings reached");
case PCRE_ERROR_BADNEWLINE:
return _("invalid combination of newline flags");
+ case PCRE_ERROR_BADOFFSET:
+ return _("bad offset");
+ case PCRE_ERROR_SHORTUTF8:
+ return _("short utf8");
default:
break;
}
@@ -565,6 +569,14 @@ g_match_info_next (GMatchInfo *match_info,
prev_match_start = match_info->offsets[0];
prev_match_end = match_info->offsets[1];
+ if (match_info->pos > match_info->string_len)
+ {
+ /* we have reached the end of the string */
+ match_info->pos = -1;
+ match_info->matches = PCRE_ERROR_NOMATCH;
+ return FALSE;
+ }
+
match_info->matches = pcre_exec (match_info->regex->pcre_re,
match_info->regex->extra,
match_info->string,
@@ -1197,6 +1209,8 @@ g_regex_new (const gchar *pattern,
compile_options |= PCRE_NEWLINE_ANY;
}
+ compile_options |= PCRE_UCP;
+
/* compile the pattern */
re = pcre_compile2 (pattern, compile_options, &errcode,
&errmsg, &erroffset, NULL);
@@ -1792,6 +1806,7 @@ g_regex_split_simple (const gchar *pattern,
regex = g_regex_new (pattern, compile_options, 0, NULL);
if (!regex)
return NULL;
+
result = g_regex_split_full (regex, string, -1, 0, match_options, 0, NULL);
g_regex_unref (regex);
return result;
@@ -1924,6 +1939,7 @@ g_regex_split_full (const GRegex *regex,
match_ok = g_regex_match_full (regex, string, string_len, start_position,
match_options, &match_info, &tmp_error);
+
while (tmp_error == NULL)
{
if (match_ok)
diff --git a/glib/tests/regex.c b/glib/tests/regex.c
index 6e015e9..ef3ac68 100644
--- a/glib/tests/regex.c
+++ b/glib/tests/regex.c
@@ -1342,6 +1342,7 @@ test_match_all (gconstpointer d)
#define PCRE_UTF8 0x00000800
#define PCRE_NO_UTF8_CHECK 0x00002000
#define PCRE_NEWLINE_ANY 0x00400000
+#define PCRE_UCP 0x20000000
static void
test_basic (void)
@@ -1353,7 +1354,7 @@ test_basic (void)
regex = g_regex_new ("[A-Z]+", cflags, mflags, NULL);
g_assert (regex != NULL);
- g_assert_cmpint (g_regex_get_compile_flags (regex), ==, cflags|PCRE_UTF8|PCRE_NO_UTF8_CHECK|PCRE_NEWLINE_ANY );
+ g_assert_cmpint (g_regex_get_compile_flags (regex), ==, cflags|PCRE_UTF8|PCRE_NO_UTF8_CHECK|PCRE_NEWLINE_ANY|PCRE_UCP );
g_assert_cmpint (g_regex_get_match_flags (regex), ==, mflags|PCRE_NO_UTF8_CHECK);
g_regex_unref (regex);
@@ -2063,8 +2064,6 @@ main (int argc, char *argv[])
{
setlocale (LC_ALL, "");
- g_setenv ("G_DEBUG", "fatal_warnings", TRUE);
-
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/regex/basic", test_basic);
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org