Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libfaketime for openSUSE:Factory 
checked in at 2026-09-21 12:01:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libfaketime (Old)
 and      /work/SRC/openSUSE:Factory/.libfaketime.new.383539 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libfaketime"

Mon Sep 21 12:01:21 2026 rev:9 rq:1378856 version:0.9.13

Changes:
--------
--- /work/SRC/openSUSE:Factory/libfaketime/libfaketime.changes  2026-06-15 
19:53:09.407855309 +0200
+++ /work/SRC/openSUSE:Factory/.libfaketime.new.383539/libfaketime.changes      
2026-09-21 12:01:36.192172884 +0200
@@ -1,0 +2,23 @@
+Tue Sep 15 14:55:25 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to version 0.9.13:
+  * Fixed clock-domain handling for monotonic and realtime waits,
+    timerfd, semaphores, pthread, futex, poll, select and pselect
+  * Added glibc 32-bit time64 ABI coverage
+  * Timestamp-save writes no longer wrap offsets or hang on short,
+    zero-byte or interrupted writes
+  * Hardened configuration and numeric parsing, initialization,
+    cleanup and the shared-memory lifecycle
+  * Fixed deterministic FAKE_RANDOM seeds over the whole 64-bit
+    range
+- Drop fix-build-with-ISO_C23.patch: merged upstream
+- Drop fix-build-with-gcc-16.patch: the file it patched is gone
+- Add remove-NULL-contract-tests.patch: the NULL argument contract
+  tests segfault instead of returning errno; merged upstream after
+  0.9.13 (gh#wolfcw/libfaketime#555)
+- Run the test suite with -j1: test/Makefile runs the suite from
+  'all', which races the helper binaries under a parallel make
+- LTO stays disabled: lto-wrapper rejects the version-scripted
+  timer_gettime symbol outside aarch64
+
+-------------------------------------------------------------------

Old:
----
  fix-build-with-ISO_C23.patch
  fix-build-with-gcc-16.patch
  libfaketime-0.9.12.tar.gz

New:
----
  libfaketime-0.9.13.tar.gz
  remove-NULL-contract-tests.patch

----------(Old B)----------
  Old:    range
- Drop fix-build-with-ISO_C23.patch: merged upstream
- Drop fix-build-with-gcc-16.patch: the file it patched is gone
  Old:- Drop fix-build-with-ISO_C23.patch: merged upstream
- Drop fix-build-with-gcc-16.patch: the file it patched is gone
- Add remove-NULL-contract-tests.patch: the NULL argument contract
----------(Old E)----------

----------(New B)----------
  New:- Drop fix-build-with-gcc-16.patch: the file it patched is gone
- Add remove-NULL-contract-tests.patch: the NULL argument contract
  tests segfault instead of returning errno; merged upstream after
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libfaketime.spec ++++++
--- /var/tmp/diff_new_pack.Ot4Jq8/_old  2026-09-21 12:01:37.155213273 +0200
+++ /var/tmp/diff_new_pack.Ot4Jq8/_new  2026-09-21 12:01:37.157213357 +0200
@@ -16,19 +16,17 @@
 #
 
 
+# LTO: fixed upstream after 0.9.13, gh#wolfcw/libfaketime#557
 %define _lto_cflags %{nil}
-
 Name:           libfaketime
-Version:        0.9.12
+Version:        0.9.13
 Release:        0
 Summary:        FakeTime Preload Library
 License:        GPL-2.0-only
 URL:            https://github.com/wolfcw/libfaketime
 Source:         %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
-# PATCH-FIX-UPSTREAM fix-build-with-ISO_C23.patch gh#wolfcw/libfaketime#524
-Patch0:         fix-build-with-ISO_C23.patch
-# PATCH-FIX-UPSTREAM fix-build-with-gcc-16.patch gh#wolfcw/libfaketime#528
-Patch1:         fix-build-with-gcc-16.patch
+# PATCH-FIX-UPSTREAM remove-NULL-contract-tests.patch gh#wolfcw/libfaketime#555
+Patch0:         remove-NULL-contract-tests.patch
 BuildRequires:  bash
 BuildRequires:  gcc
 BuildRequires:  make
@@ -62,7 +60,8 @@
 %ifarch riscv64
 export FAKETIME_COMPILE_CFLAGS="-DFORCE_MONOTONIC_FIX -DFORCE_PTHREAD_NONVER"
 %endif
-make PREFIX=%{_prefix} LIBDIRNAME=/%{_lib}/%{name} -C test
+# -j1: the test 'all' target runs the suite while helpers still build
+%make_build -j1 PREFIX=%{_prefix} LIBDIRNAME=/%{_lib}/%{name} -C test
 
 %files
 %doc NEWS README

++++++ libfaketime-0.9.12.tar.gz -> libfaketime-0.9.13.tar.gz ++++++
++++ 10687 lines of diff (skipped)

++++++ remove-NULL-contract-tests.patch ++++++
>From 79aaa421ff8a6beb339ddc4e8c0e1dec65c27f9a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <[email protected]>
Date: Thu, 3 Sep 2026 13:40:41 +0200
Subject: [PATCH] Remove tests passing NULL to sem_timedwait() and
 clock_gettime()

Some functests/test_clock_contract.sh tests failed with glibc on
x86_64 Linux:

    Begin functests/test_clock_contract.sh
    # PLATFORM=linuxlike
    out=2020-06-15 12:00:00 realtime clock should honor absolute configuration 
- ok
    out=2020 fractional realtime values should retain the calendar second - ok
    out=ok monotonic clock should not move backwards - ok
    out=ok short relative sleep should return - ok
    out=ok invalid clock id should fail - ok
    out= null clock output should fail with EFAULT expected=clock_gettime(NULL) 
returned EFAULT - bad
    out=realtime and monotonic past deadlines returned ETIMEDOUT past realtime 
and monotonic deadlines should time out - ok
    out= semaphore timed-wait contract should be preserved expected=semaphore 
realtime, monotonic, and null handling passed - bad
    out= semaphore timed-wait contract should be preserved expected=semaphore 
realtime, monotonic, and null handling passed - bad
    out= semaphore timed-wait contract should be preserved expected=semaphore 
realtime, monotonic, and null handling passed - bad
    out=positive poll timeout was preserved positive poll timeout should not be 
truncated to zero - ok
    out=select, pselect, and ppoll timeout contracts passed select, pselect, 
and ppoll timeout contracts should be preserved - ok
    # functests/test_clock_contract.sh summary: 8 succeeded, 4 failed
    # End functests/test_clock_contract.sh - BAD

These 4 tests pass a NULL pointer to a syscall and expect that -1 with
an approriate errno is returned. But that's not true for glibc on
x86_64 Linux: clock_gettime() is implemented as VDSO and segfaults
instead, sem_timedwait() also segfaults.

This patch removes the affected tests.

Resolve: #554
---
 test/Makefile                         |  9 +++------
 test/Makefile.OSX                     |  9 +++------
 test/clock_error_test.c               | 28 ---------------------------
 test/functests/test_clock_contract.sh |  9 ---------
 test/sem_contract_test.c              | 11 -----------
 5 files changed, 6 insertions(+), 60 deletions(-)
 delete mode 100644 test/clock_error_test.c

diff --git a/test/Makefile b/test/Makefile
index 87530b6..c1314df 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -10,7 +10,7 @@ OBJ = ${SRC:.c=.o}
 TEST_SNIPPETS = $(notdir $(basename $(wildcard snippets/*.c)))
 EXPECTATIONS = $(notdir $(basename $(wildcard snippets/*.variable)))
 
-ALL_TESTS = timetest test shm_layout_test abi_info_test set_mtime 
time_ops_test clock_consistency_test clock_error_test wait_contract_test 
wait_api_contract_test sem_contract_test wait_timeout_contract_test 
timerfd_contract_test asan_preload_test fd_leak_test fd_liveness_test 
emfile_clock_test timezone_contract_test
+ALL_TESTS = timetest test shm_layout_test abi_info_test set_mtime 
time_ops_test clock_consistency_test wait_contract_test wait_api_contract_test 
sem_contract_test wait_timeout_contract_test timerfd_contract_test 
asan_preload_test fd_leak_test fd_liveness_test emfile_clock_test 
timezone_contract_test
 
 TIME64_CFLAGS = -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64
 IS_GLIBC := $(shell if $(CC) -dM -E -include features.h - < /dev/null 
2>/dev/null | grep -q '^#define __GLIBC__ '; then echo 1; else echo 0; fi)
@@ -90,9 +90,6 @@ time_ops_test: time_ops_test.c ../src/time_ops.h
 clock_consistency_test: clock_consistency_test.c
        ${CC} -o $@ ${CFLAGS} $<
 
-clock_error_test: clock_error_test.c
-       ${CC} -o $@ ${CFLAGS} $<
-
 wait_contract_test: wait_contract_test.c
        ${CC} -o $@ ${CFLAGS} $< ${LDFLAGS}
 
@@ -129,7 +126,7 @@ syscall_contract_test: syscall_contract_test.c
 futex_contract_test: futex_contract_test.c
        ${CC} -o $@ ${CFLAGS} $<
 
-test: timetest abi_info_test shm_layout_test time64_contract_test 
time_ops_test clock_consistency_test set_mtime clock_error_test 
wait_contract_test wait_api_contract_test sem_contract_test 
wait_timeout_contract_test timerfd_contract_test asan_preload_test fd_leak_test 
fd_liveness_test emfile_clock_test timezone_contract_test init_reentry.so 
${RANDOM_TEST_DEP} ${FILE_TIMESTAMP_TEST_DEP} ${FAKE_PID_TEST_DEP} 
${SYSCALL_TEST_DEP} ${FUTEX_TEST_DEP} functest
+test: timetest abi_info_test shm_layout_test time64_contract_test 
time_ops_test clock_consistency_test set_mtime wait_contract_test 
wait_api_contract_test sem_contract_test wait_timeout_contract_test 
timerfd_contract_test asan_preload_test fd_leak_test fd_liveness_test 
emfile_clock_test timezone_contract_test init_reentry.so ${RANDOM_TEST_DEP} 
${FILE_TIMESTAMP_TEST_DEP} ${FAKE_PID_TEST_DEP} ${SYSCALL_TEST_DEP} 
${FUTEX_TEST_DEP} functest
        @echo
        @./abi_info_test
        @./time64_contract_test
@@ -179,7 +176,7 @@ use_lib_%: _use_lib_test.c snippets/%.c lib%.so
 ## cleanup and metainformation
 
 clean:
-       @rm -f ${OBJ} timetest shm_layout_test abi_info_test 
time64_contract_test set_mtime time_ops_test clock_consistency_test 
clock_error_test wait_contract_test wait_api_contract_test sem_contract_test 
wait_timeout_contract_test timerfd_contract_test asan_preload_test fd_leak_test 
fd_liveness_test emfile_clock_test timezone_contract_test futex_contract_test 
init_reentry.so fake_pid_test fake_pid_contract_test random_test 
file_timestamp_test syscall_contract_test getrandom_test syscall_test $(foreach 
f,${TEST_SNIPPETS},use_lib_${f} lib${f}.so run_${f}) variadic_promotion 
variadic/*.o repeat_random libmallocintercept.so
+       @rm -f ${OBJ} timetest shm_layout_test abi_info_test 
time64_contract_test set_mtime time_ops_test clock_consistency_test 
wait_contract_test wait_api_contract_test sem_contract_test 
wait_timeout_contract_test timerfd_contract_test asan_preload_test fd_leak_test 
fd_liveness_test emfile_clock_test timezone_contract_test futex_contract_test 
init_reentry.so fake_pid_test fake_pid_contract_test random_test 
file_timestamp_test syscall_contract_test getrandom_test syscall_test $(foreach 
f,${TEST_SNIPPETS},use_lib_${f} lib${f}.so run_${f}) variadic_promotion 
variadic/*.o repeat_random libmallocintercept.so
 
 distclean: clean
        @echo
diff --git a/test/Makefile.OSX b/test/Makefile.OSX
index 30341a7..39b0d11 100644
--- a/test/Makefile.OSX
+++ b/test/Makefile.OSX
@@ -14,7 +14,7 @@ ifneq ($(filter -DFAKE_PID,${CFLAGS}),)
 FAKE_PID_TEST_DEP = fake_pid_contract_test
 endif
 
-all: timetest abi_info_test shm_layout_test set_mtime time_ops_test 
clock_consistency_test macos_clock_test clock_error_test wait_contract_test 
wait_api_contract_test sem_contract_test wait_timeout_contract_test 
fd_leak_test fd_liveness_test emfile_clock_test timezone_contract_test 
init_reentry.dylib ${FILE_TIMESTAMP_TEST_DEP} ${FAKE_PID_TEST_DEP} test
+all: timetest abi_info_test shm_layout_test set_mtime time_ops_test 
clock_consistency_test macos_clock_test wait_contract_test 
wait_api_contract_test sem_contract_test wait_timeout_contract_test 
fd_leak_test fd_liveness_test emfile_clock_test timezone_contract_test 
init_reentry.dylib ${FILE_TIMESTAMP_TEST_DEP} ${FAKE_PID_TEST_DEP} test
 
 .c.o:
        ${CC} -c ${CFLAGS} $<
@@ -37,9 +37,6 @@ time_ops_test: time_ops_test.c ../src/time_ops.h
 clock_consistency_test: clock_consistency_test.c
        ${CC} -o $@ ${CFLAGS} $<
 
-clock_error_test: clock_error_test.c
-       ${CC} -o $@ ${CFLAGS} $< ../src/libfaketime.1.dylib
-
 wait_contract_test: wait_contract_test.c
        ${CC} -o $@ ${CFLAGS} $<
 
@@ -76,7 +73,7 @@ fake_pid_contract_test: fake_pid_contract_test.c
 macos_clock_test: macos_clock_test.c
        ${CC} -o $@ ${CFLAGS} $< ../src/libfaketime.1.dylib
 
-test: timetest abi_info_test shm_layout_test time_ops_test 
clock_consistency_test set_mtime macos_clock_test clock_error_test 
wait_contract_test wait_api_contract_test sem_contract_test 
wait_timeout_contract_test fd_leak_test fd_liveness_test emfile_clock_test 
timezone_contract_test init_reentry.dylib ${RANDOM_TEST_DEP} 
${FILE_TIMESTAMP_TEST_DEP} ${FAKE_PID_TEST_DEP} functest
+test: timetest abi_info_test shm_layout_test time_ops_test 
clock_consistency_test set_mtime macos_clock_test wait_contract_test 
wait_api_contract_test sem_contract_test wait_timeout_contract_test 
fd_leak_test fd_liveness_test emfile_clock_test timezone_contract_test 
init_reentry.dylib ${RANDOM_TEST_DEP} ${FILE_TIMESTAMP_TEST_DEP} 
${FAKE_PID_TEST_DEP} functest
        @echo
        @./abi_info_test
        @./time_ops_test
@@ -87,7 +84,7 @@ functest:
        ./testframe.sh functests
 
 clean:
-       @rm -f ${OBJ} timetest abi_info_test shm_layout_test set_mtime 
time_ops_test clock_consistency_test macos_clock_test clock_error_test 
wait_contract_test wait_api_contract_test sem_contract_test 
wait_timeout_contract_test fd_leak_test fd_liveness_test emfile_clock_test 
timezone_contract_test init_reentry.dylib file_timestamp_test 
fake_pid_contract_test
+       @rm -f ${OBJ} timetest abi_info_test shm_layout_test set_mtime 
time_ops_test clock_consistency_test macos_clock_test wait_contract_test 
wait_api_contract_test sem_contract_test wait_timeout_contract_test 
fd_leak_test fd_liveness_test emfile_clock_test timezone_contract_test 
init_reentry.dylib file_timestamp_test fake_pid_contract_test
 
 distclean: clean
        @echo
diff --git a/test/clock_error_test.c b/test/clock_error_test.c
deleted file mode 100644
index 43842a0..0000000
--- a/test/clock_error_test.c
+++ /dev/null
@@ -1,28 +0,0 @@
-#include <errno.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-
-#ifdef __APPLE__
-int macos_clock_gettime(clockid_t clk_id, struct timespec *tp);
-#define test_clock_gettime macos_clock_gettime
-#else
-#define test_clock_gettime clock_gettime
-#endif
-
-int main(void)
-{
-  int (*clock_gettime_fn)(clockid_t, struct timespec *) = test_clock_gettime;
-  struct timespec *output = (struct timespec *)(uintptr_t)0;
-
-  errno = 0;
-  if (clock_gettime_fn(CLOCK_REALTIME, output) != -1 || errno != EFAULT)
-  {
-    fprintf(stderr, "clock_gettime(NULL) returned errno %d\n", errno);
-    return EXIT_FAILURE;
-  }
-
-  puts("clock_gettime(NULL) returned EFAULT");
-  return EXIT_SUCCESS;
-}
diff --git a/test/functests/test_clock_contract.sh 
b/test/functests/test_clock_contract.sh
index 1425889..e7afe02 100644
--- a/test/functests/test_clock_contract.sh
+++ b/test/functests/test_clock_contract.sh
@@ -20,7 +20,6 @@ run()
        run_testcase monotonic_is_non_decreasing
        run_testcase sleep_returns
        run_testcase invalid_clock_id_fails
-       run_testcase null_clock_output_fails
        run_testcase past_wait_deadlines_timeout
        run_testcase semaphore_deadlines
        run_testcase semaphore_deadlines_absolute
@@ -118,14 +117,6 @@ invalid_clock_id_fails()
        asserteq "$result" "ok" "invalid clock id should fail"
 }
 
-null_clock_output_fails()
-{
-       typeset result
-       result=$(fakecmd "+0" ./clock_error_test)
-       asserteq "$result" "clock_gettime(NULL) returned EFAULT" \
-               "null clock output should fail with EFAULT"
-}
-
 past_wait_deadlines_timeout()
 {
        typeset result
diff --git a/test/sem_contract_test.c b/test/sem_contract_test.c
index e72f00f..6d20102 100644
--- a/test/sem_contract_test.c
+++ b/test/sem_contract_test.c
@@ -87,7 +87,6 @@ int main(void)
   char name[64];
   sem_t *semaphore;
   struct timespec deadline;
-  int (*sem_timedwait_fn)(sem_t *, const struct timespec *) = sem_timedwait;
 
   (void)snprintf(name, sizeof(name), "/libfaketime-sem-%ld", (long)getpid());
   sem_unlink(name);
@@ -117,16 +116,6 @@ int main(void)
     return EXIT_FAILURE;
   }
 
-  report_case("null-deadline");
-  errno = 0;
-  if (sem_timedwait_fn(semaphore, NULL) != -1 || errno != EINVAL)
-  {
-    fprintf(stderr, "null semaphore deadline returned errno %d\n", errno);
-    sem_close(semaphore);
-    sem_unlink(name);
-    return EXIT_FAILURE;
-  }
-
   report_case("realtime-future");
   if (check_future_realtime_wait(semaphore) != EXIT_SUCCESS)
   {
-- 
2.55.0

Reply via email to