gnu: glib: Fix build on i686.
authorEric Bavier <bavier@member.fsf.org>
Thu, 10 Jul 2014 22:03:42 +0000 (17:03 -0500)
committerEric Bavier <bavier@member.fsf.org>
Thu, 10 Jul 2014 22:03:42 +0000 (17:03 -0500)
* gnu/packages/patches/glib-tests-timer.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/glib.scm: Use it.

gnu-system.am
gnu/packages/glib.scm
gnu/packages/patches/glib-tests-timer.patch [new file with mode: 0644]

index 5822c82..6a22420 100644 (file)
@@ -300,6 +300,7 @@ dist_patch_DATA =                                           \
   gnu/packages/patches/glib-tests-desktop.patch                        \
   gnu/packages/patches/glib-tests-homedir.patch                        \
   gnu/packages/patches/glib-tests-prlimit.patch                        \
+  gnu/packages/patches/glib-tests-timer.patch                  \
   gnu/packages/patches/glibc-bootstrap-system.patch            \
   gnu/packages/patches/glibc-ldd-x86_64.patch                  \
   gnu/packages/patches/gnunet-fix-scheduler.patch              \
index c3b0b39..239715e 100644 (file)
@@ -116,7 +116,8 @@ shared NFS home directories.")
              (base32 "1d98mbqjmc34s8095lkw1j1bwvnnkw9581yfvjaikjvfjsaz29qd"))
             (patches (list (search-patch "glib-tests-homedir.patch")
                            (search-patch "glib-tests-desktop.patch")
-                           (search-patch "glib-tests-prlimit.patch")))))
+                           (search-patch "glib-tests-prlimit.patch")
+                           (search-patch "glib-tests-timer.patch")))))
    (build-system gnu-build-system)
    (outputs '("out"           ; everything
               "bin"           ; glib-mkenums, gtester, etc.; depends on Python
diff --git a/gnu/packages/patches/glib-tests-timer.patch b/gnu/packages/patches/glib-tests-timer.patch
new file mode 100644 (file)
index 0000000..1ac364f
--- /dev/null
@@ -0,0 +1,26 @@
+* On i686 floating-point roundoff errors could sometimes cause this check to
+  fail depending on the elapsed microseconds.  Improve rounding by adding a
+  fractional bit.
+
+* The /timer/stop test fails if compiler optimizations are enabled, which they
+  are by default.  Disable that test.
+
+--- glib-2.40.0/glib/tests/timer.c     2014-03-05 08:05:42.000000000 -0600
++++ glib-2.40.0/glib/tests/timer.c     2014-07-10 16:33:12.746862822 -0500
+@@ -35,7 +35,7 @@
+   elapsed = g_timer_elapsed (timer, &micros);
+   g_assert_cmpfloat (elapsed, <, 1.0);
+-  g_assert_cmpuint (micros, ==, ((guint64)(elapsed * 1e6)) % 1000000);
++  g_assert_cmpuint (micros, ==, ((guint64)(elapsed * 1e6 + 0.5)) % 1000000);
+   g_timer_destroy (timer);
+ }
+@@ -204,7 +204,6 @@
+   g_test_init (&argc, &argv, NULL);
+   g_test_add_func ("/timer/basic", test_timer_basic);
+-  g_test_add_func ("/timer/stop", test_timer_stop);
+   g_test_add_func ("/timer/continue", test_timer_continue);
+   g_test_add_func ("/timer/reset", test_timer_reset);
+   g_test_add_func ("/timeval/add", test_timeval_add);