guix-commits
[Top][All Lists]
Advanced

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

02/02: gnu: glib-networking: Work around test failure on 32-bit platform


From: guix-commits
Subject: 02/02: gnu: glib-networking: Work around test failure on 32-bit platforms.
Date: Wed, 24 Nov 2021 12:52:43 -0500 (EST)

civodul pushed a commit to branch core-updates-frozen
in repository guix.

commit 3e810b846ab10eca86f8c6c7a3815954f1b77ebd
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Wed Nov 24 18:22:08 2021 +0100

    gnu: glib-networking: Work around test failure on 32-bit platforms.
    
    On 32-bit platforms with a 32-bit 'time_t', we'd get this test failure:
    
      
GLib-Net:ERROR:../glib-networking-2.70.rc/tls/tests/certificate.c:689:test_certificate_not_valid_after:
 assertion failed (actual_str == EXPECTED_NOT_VALID_AFTER): 
("2037-12-31T23:23:23Z" == "2046-07-25T18:13:10Z")
    
    This commit includes the workaround implemented upstream.
    
    * gnu/packages/patches/glib-networking-32-bit-time.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Add it.
    * gnu/packages/gnome.scm (glib-networking)[arguments]: New field.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/gnome.scm                             | 11 ++++
 .../patches/glib-networking-32-bit-time.patch      | 61 ++++++++++++++++++++++
 3 files changed, 73 insertions(+)

diff --git a/gnu/local.mk b/gnu/local.mk
index 98399a6..ea8a203 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1129,6 +1129,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/glade-test-widget-null-icon.patch       \
   %D%/packages/patches/glib-appinfo-watch.patch                        \
   %D%/packages/patches/glib-networking-gnutls-binding.patch    \
+  %D%/packages/patches/glib-networking-32-bit-time.patch       \
   %D%/packages/patches/glib-skip-failing-test.patch            \
   %D%/packages/patches/glibc-CVE-2018-11236.patch              \
   %D%/packages/patches/glibc-CVE-2018-11237.patch              \
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 6d56d04..492cebd 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4845,6 +4845,17 @@ library.")
               (patches
                (search-patches "glib-networking-gnutls-binding.patch"))))
     (build-system meson-build-system)
+    (arguments
+     (if (target-64bit?)
+         '()
+         (list #:phases
+               #~(modify-phases %standard-phases
+                   (add-after 'unpack 'work-around-32-bit-time-t
+                     (lambda _
+                       (invoke "patch" "--force" "-p1" "-i"
+                               #$(local-file
+                                  (search-patch
+                                   "glib-networking-32-bit-time.patch")))))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("gettext" ,gettext-minimal)))
diff --git a/gnu/packages/patches/glib-networking-32-bit-time.patch 
b/gnu/packages/patches/glib-networking-32-bit-time.patch
new file mode 100644
index 0000000..a437310
--- /dev/null
+++ b/gnu/packages/patches/glib-networking-32-bit-time.patch
@@ -0,0 +1,61 @@
+Work around a year-2038 issue when building with a 32-bit 'time_t'
+on 32-bit platforms:
+
+  https://gitlab.gnome.org/GNOME/glib-networking/-/issues/172
+
+From 4f8ca86a0e460794188c3355f0c7cc11fdbe4229 Mon Sep 17 00:00:00 2001
+From: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: Tue, 21 Sep 2021 17:07:44 +0000
+Subject: [PATCH] tests: Accept GNUTLS' workaround for limited size of time_t
+
+---
+ tls/tests/certificate.c | 15 +++++++++++++++
+ tls/tests/meson.build   |  1 +
+ 2 files changed, 16 insertions(+)
+
+diff --git a/tls/tests/certificate.c b/tls/tests/certificate.c
+index c0100d30..d216c710 100644
+--- a/tls/tests/certificate.c
++++ b/tls/tests/certificate.c
+@@ -672,6 +672,12 @@ test_certificate_not_valid_before (void)
+   g_object_unref (cert);
+ }
+ 
++/* On 32-bit, GNUTLS caps expiry times at 2037-12-31 23:23:23 to avoid
++ * overflowing time_t. Hopefully by 2037, either 32-bit will finally have
++ * died out, or GNUTLS will rethink its approach to
++ * https://gitlab.com/gnutls/gnutls/-/issues/370 */
++#define GNUTLS_32_BIT_NOT_VALID_AFTER_MAX 2145914603
++
+ static void
+ test_certificate_not_valid_after (void)
+ {
+@@ -686,7 +692,16 @@ test_certificate_not_valid_after (void)
+   actual = g_tls_certificate_get_not_valid_after (cert);
+   g_assert_nonnull (actual);
+   actual_str = g_date_time_format_iso8601 (actual);
++
++#if SIZEOF_TIME_T <= 4
++  if (g_date_time_to_unix (actual) == GNUTLS_32_BIT_NOT_VALID_AFTER_MAX)
++    g_test_incomplete ("not-valid-after date not representable on 32-bit");
++  else
++    g_assert_cmpstr (actual_str, ==, EXPECTED_NOT_VALID_AFTER);
++#else
+   g_assert_cmpstr (actual_str, ==, EXPECTED_NOT_VALID_AFTER);
++#endif
++
+   g_free (actual_str);
+   g_date_time_unref (actual);
+   g_object_unref (cert);
+diff --git a/tls/tests/meson.build b/tls/tests/meson.build
+index e9c7d8c6..7415f913 100644
+--- a/tls/tests/meson.build
++++ b/tls/tests/meson.build
+@@ -69,6 +69,7 @@ foreach backend: backends
+     test_cflags = cflags + [
+       '-DBACKEND="@0@"'.format(backend),
+       '-DBACKEND_IS_' + backend.to_upper(),
++      '-DSIZEOF_TIME_T=@0@'.format(cc.sizeof('time_t', prefix: '#include 
<time.h>')),
+     ]
+ 
+     if backend == 'openssl'



reply via email to

[Prev in Thread] Current Thread [Next in Thread]