GNU bug report logs - #71993
[core-updates] gnu: libfaketime: Support compilation with glibc 2.39 on i686-linux.

Previous Next

Package: guix-patches;

Reported by: Christopher Baines <mail <at> cbaines.net>

Date: Mon, 8 Jul 2024 08:48:02 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Ludovic Courtès <ludo <at> gnu.org>
To: 71993 <at> debbugs.gnu.org
Cc: Ludovic Courtès <ludo <at> gnu.org>
Subject: [bug#71993] [PATCH v3] gnu: libfaketime: Support compilation with glibc 2.39 on i686-linux.
Date: Mon,  8 Jul 2024 14:54:22 +0200
* gnu/packages/check.scm (libfaketime)[arguments]: Add
‘switch-libc-call’ phase when not ‘target-64bit?’.
In ‘pre-check’ phase, delete ‘test_exclude_mono.sh’ on 32-bit platforms.

Change-Id: Ia4c0d1d13cdfa6028f3e11c63e76122a99a84e4d
---
 gnu/packages/check.scm | 38 +++++++++++++++++++++++++++++++++++---
 1 file changed, 35 insertions(+), 3 deletions(-)

This updated version of the patch works for me on i686-linux.

diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index bc341943f02..ee23406c86f 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -26,7 +26,7 @@
 ;;; Copyright © 2017 Nikita <nikita <at> n0.is>
 ;;; Copyright © 2015, 2017, 2018, 2020, 2021, 2023, 2024 Ricardo Wurmus <rekado <at> elephly.net>
 ;;; Copyright © 2016-2022 Marius Bakke <marius <at> gnu.org>
-;;; Copyright © 2017, 2018, 2020, 2021 Ludovic Courtès <ludo <at> gnu.org>
+;;; Copyright © 2017-2018, 2020-2021, 2024 Ludovic Courtès <ludo <at> gnu.org>
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans <at> hotmail.com>
 ;;; Copyright © 2019, 2021 Pierre Langlois <pierre.langlois <at> gmx.com>
 ;;; Copyright © 2019 Chris Marusich <cmmarusich <at> gmail.com>
@@ -3477,6 +3477,32 @@ (define-public libfaketime
               (substitute* "src/faketime.c"
                 (("\"date\"")
                  (format #f "~s" (search-input-file inputs "bin/date"))))))
+
+          #$@(if (target-64bit?)
+                 #~()
+                 #~((add-after 'unpack 'switch-libc-call
+                      (lambda _
+                        (substitute* "src/libfaketime.c"
+                          (("#define _GNU_SOURCE")
+                           ;; Make sure to use the 64-bit 'struct timespec' in
+                           ;; replacement functions.
+                           (string-append "#define _GNU_SOURCE\n"
+                                          "#define _FILE_OFFSET_BITS 64\n"
+                                          "#define _TIME_BITS 64\n"))
+                          (("\"__clock_gettime\"")
+                           ;; Replace '__clock_gettime64' rather than
+                           ;; '__clock_gettime64' since this is what
+                           ;; newly-built applications use.
+                           "\"__clock_gettime64\""))
+
+                        ;; XXX: Turn off 'pthread_cond_timedwait' etc.: tests
+                        ;; related to this are failing and this feature is
+                        ;; probably not useful for the purposes of running
+                        ;; code at a fixed date.
+                        (substitute* "src/Makefile"
+                          (("-DFAKE_PTHREAD")
+                           ""))))))
+
           (replace 'configure
             (lambda* (#:key outputs #:allow-other-keys)
               (setenv "CC" #$(cc-for-target))
@@ -3495,8 +3521,14 @@ (define-public libfaketime
           (add-before 'check 'pre-check
             (lambda _
               (substitute* "test/functests/test_exclude_mono.sh"
-                (("/bin/bash") (which "bash"))))))))
-    (native-inputs (list perl))         ;for tests
+                (("/bin/bash") (which "bash")))
+              #$@(if (target-64bit?)
+                     #~()
+                     ;; XXX: This test uses Perl to call 'clock_gettime' and
+                     ;; fails for unclear reasons on i686-linux.
+                     #~((delete-file
+                         "test/functests/test_exclude_mono.sh"))))))))
+    (native-inputs (list perl))                   ;for tests
     (inputs (list coreutils-minimal))
     (synopsis "Fake the system time for single applications")
     (description

base-commit: e4da066f0029ef38f6a791f6f9d4cfdb8b39b6a3
-- 
2.45.2





This bug report was last modified 276 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.