pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/devel/glib2 patches/patch-glib_gmain.c: Imported patch...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/4c8bac5ba30a
branches:  trunk
changeset: 645188:4c8bac5ba30a
user:      pho <pho%pkgsrc.org@localhost>
date:      Sun Jan 25 06:54:28 2015 +0000

description:
patches/patch-glib_gmain.c: Imported patch from the upstream Bugzilla

  Bug 728123 - glib2 @2.40.0 issues a "Got weird mach timebase info" error (Macports, PPC)
  https://bugzilla.gnome.org/show_bug.cgi?id=728123

Tested on powerpc-apple-darwin9.

diffstat:

 devel/glib2/Makefile                   |   3 +-
 devel/glib2/distinfo                   |   3 +-
 devel/glib2/patches/patch-glib_gmain.c |  81 ++++++++++++++++++++++++++++++++++
 3 files changed, 85 insertions(+), 2 deletions(-)

diffs (115 lines):

diff -r d324ea73b548 -r 4c8bac5ba30a devel/glib2/Makefile
--- a/devel/glib2/Makefile      Sun Jan 25 00:07:58 2015 +0000
+++ b/devel/glib2/Makefile      Sun Jan 25 06:54:28 2015 +0000
@@ -1,8 +1,9 @@
-# $NetBSD: Makefile,v 1.224 2014/10/07 23:18:36 prlw1 Exp $
+# $NetBSD: Makefile,v 1.225 2015/01/25 06:54:28 pho Exp $
 
 .include "Makefile.common"
 
 CATEGORIES=            devel gnome
+PKGREVISION=           1
 
 COMMENT=               Some useful routines for C programming (glib2)
 
diff -r d324ea73b548 -r 4c8bac5ba30a devel/glib2/distinfo
--- a/devel/glib2/distinfo      Sun Jan 25 00:07:58 2015 +0000
+++ b/devel/glib2/distinfo      Sun Jan 25 06:54:28 2015 +0000
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.206 2014/11/29 17:55:07 prlw1 Exp $
+$NetBSD: distinfo,v 1.207 2015/01/25 06:54:28 pho Exp $
 
 SHA1 (glib-2.42.1.tar.xz) = b5158fd434f01e84259155c04ff93026a090e586
 RMD160 (glib-2.42.1.tar.xz) = 1c2079f5242b5133d345fba9bc9b846c4a46c5cc
@@ -23,5 +23,6 @@
 SHA1 (patch-cn) = 0cb2fa14b2d3f0ff66f5d5f32e79a36c71a99b78
 SHA1 (patch-gio_gdbusauthmechanismsha1.c) = dfbd4a85ea842f11e4bb76d39c5509fb8b0d5baa
 SHA1 (patch-gio_gresource-tool.c) = 4eb7c9df25e9ac3e977edf3be8fb977a6fb39182
+SHA1 (patch-glib_gmain.c) = d09ff66e475ee52d37ac0dcb463110f690ce6511
 SHA1 (patch-glib_gthread-posix.c) = ca93c8dc358453eb79b518c884464c90d7628888
 SHA1 (patch-glib_gtimezone.c) = d9686da52f171a073d80cfd9f80aa490088a00a3
diff -r d324ea73b548 -r 4c8bac5ba30a devel/glib2/patches/patch-glib_gmain.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/glib2/patches/patch-glib_gmain.c    Sun Jan 25 06:54:28 2015 +0000
@@ -0,0 +1,81 @@
+$NetBSD: patch-glib_gmain.c,v 1.1 2015/01/25 06:54:28 pho Exp $
+
+Imported patch from the upstream Bugzilla:
+
+  Bug 728123 - glib2 @2.40.0 issues a "Got weird mach timebase info" error (Macports, PPC)
+  https://bugzilla.gnome.org/show_bug.cgi?id=728123
+
+Tested on powerpc-apple-darwin9.
+
+--- glib/gmain.c.orig  2014-11-09 21:54:26.000000000 +0000
++++ glib/gmain.c
+@@ -2694,47 +2694,31 @@ g_get_monotonic_time (void)
+ gint64
+ g_get_monotonic_time (void)
+ {
+-  static mach_timebase_info_data_t timebase_info;
++  mach_timebase_info_data_t timebase_info;
++  guint64 val;
+ 
+-  if (timebase_info.denom == 0)
+-    {
+-      /* This is a fraction that we must use to scale
+-       * mach_absolute_time() by in order to reach nanoseconds.
+-       *
+-       * We've only ever observed this to be 1/1, but maybe it could be
+-       * 1000/1 if mach time is microseconds already, or 1/1000 if
+-       * picoseconds.  Try to deal nicely with that.
+-       */
+-      mach_timebase_info (&timebase_info);
+-
+-      /* We actually want microseconds... */
+-      if (timebase_info.numer % 1000 == 0)
+-        timebase_info.numer /= 1000;
+-      else
+-        timebase_info.denom *= 1000;
+-
+-      /* We want to make the numer 1 to avoid having to multiply... */
+-      if (timebase_info.denom % timebase_info.numer == 0)
+-        {
+-          timebase_info.denom /= timebase_info.numer;
+-          timebase_info.numer = 1;
+-        }
+-      else
+-        {
+-          /* We could just multiply by timebase_info.numer below, but why
+-           * bother for a case that may never actually exist...
+-           *
+-           * Plus -- performing the multiplication would risk integer
+-           * overflow.  If we ever actually end up in this situation, we
+-           * should more carefully evaluate the correct course of action.
+-           */
+-          mach_timebase_info (&timebase_info); /* Get a fresh copy for a better message */
+-          g_error ("Got weird mach timebase info of %d/%d.  Please file a bug against GLib.",
+-                   timebase_info.numer, timebase_info.denom);
+-        }
++  /* we get nanoseconds from mach_absolute_time() using timebase_info */
++  mach_timebase_info (&timebase_info);
++  val = mach_absolute_time();
++
++  if (timebase_info.numer != timebase_info.denom)
++    {
++      guint64 t_high, t_low;
++      guint64 result_high, result_low;
++
++      /* 64 bit x 32 bit / 32 bit with 96-bit intermediate 
++       * algorithm lifted from qemu */
++      t_low = (val & 0xffffffffLL) * (guint64)timebase_info.numer;
++      t_high = (val >> 32) * (guint64)timebase_info.numer;
++      t_high += (t_low >> 32);
++      result_high = t_high / (guint64)timebase_info.denom;
++      result_low = (((t_high % (guint64)timebase_info.denom) << 32) +
++                   (t_low & 0xffffffff)) / (guint64)timebase_info.denom;
++      val = ((result_high << 32) | result_low);
+     }
+ 
+-  return mach_absolute_time () / timebase_info.denom;
++  /* nanoseconds to microseconds */
++  return val / 1000;
+ }
+ #else
+ gint64



Home | Main Index | Thread Index | Old Index