diff --git a/0002-test-time-util-fix-truncation-of-usec-to-sec.patch b/0002-test-time-util-fix-truncation-of-usec-to-sec.patch new file mode 100644 index 0000000..7b91ac5 --- /dev/null +++ b/0002-test-time-util-fix-truncation-of-usec-to-sec.patch @@ -0,0 +1,58 @@ +From 3f1d499964abb6a4c0141d7ea8f852829880adff Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Sat, 14 Dec 2024 16:49:54 +0900 +Subject: [PATCH] test-time-util: fix truncation of usec to sec + +Also +- use ASSERT_XYZ() macros, +- log tzname[] on failure. +--- + src/test/test-time-util.c | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +diff --git a/src/test/test-time-util.c b/src/test/test-time-util.c +index d761261e24..d717ca94d2 100644 +--- a/src/test/test-time-util.c ++++ b/src/test/test-time-util.c +@@ -393,27 +393,31 @@ TEST(format_timestamp) { + static void test_format_timestamp_impl(usec_t x) { + bool success, override; + const char *xx, *yy; +- usec_t y; ++ usec_t y, x_sec, y_sec; + + xx = FORMAT_TIMESTAMP(x); +- assert_se(xx); +- assert_se(parse_timestamp(xx, &y) >= 0); ++ ASSERT_NOT_NULL(xx); ++ ASSERT_OK(parse_timestamp(xx, &y)); + yy = FORMAT_TIMESTAMP(y); +- assert_se(yy); ++ ASSERT_NOT_NULL(yy); + +- success = (x / USEC_PER_SEC == y / USEC_PER_SEC) && streq(xx, yy); ++ x_sec = x / USEC_PER_SEC; ++ y_sec = y / USEC_PER_SEC; ++ success = (x_sec == y_sec) && streq(xx, yy); + /* Workaround for https://github.com/systemd/systemd/issues/28472 + * and https://github.com/systemd/systemd/pull/35471. */ + override = !success && + (STRPTR_IN_SET(tzname[0], "CAT", "EAT", "WET") || + STRPTR_IN_SET(tzname[1], "CAT", "EAT", "WET")) && +- DIV_ROUND_UP(x > y ? x - y : y - x, USEC_PER_SEC) == 3600; /* 1 hour, ignore fractional second */ ++ (x_sec > y_sec ? x_sec - y_sec : y_sec - x_sec) == 3600; /* 1 hour, ignore fractional second */ + log_full(success ? LOG_DEBUG : override ? LOG_WARNING : LOG_ERR, + "@" USEC_FMT " → %s → @" USEC_FMT " → %s%s", + x, xx, y, yy, + override ? ", ignoring." : ""); + if (!override) { +- assert_se(x / USEC_PER_SEC == y / USEC_PER_SEC); ++ if (!success) ++ log_warning("tzname[0]=\"%s\", tzname[1]=\"%s\"", tzname[0], tzname[1]); ++ ASSERT_EQ(x_sec, y_sec); + ASSERT_STREQ(xx, yy); + } + } +-- +2.47.1 + diff --git a/systemd.spec b/systemd.spec index 1b0ef00..1313d23 100644 --- a/systemd.spec +++ b/systemd.spec @@ -121,6 +121,9 @@ Patch0491: https://github.com/systemd/systemd/pull/30846.patch # Soft-disable tmpfiles --purge until a good use case comes up. Patch0492: 0001-tmpfiles-make-purge-hard-to-mis-use.patch +# https://github.com/systemd/systemd/pull/35615 +Patch0493: 0002-test-time-util-fix-truncation-of-usec-to-sec.patch + %ifarch %{ix86} x86_64 aarch64 riscv64 %global want_bootloader 1 %endif