From 6912eb315fabe0bbf25593ab897265fa79a7e24b Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Mon, 30 Jun 2025 17:37:58 +0200 Subject: [PATCH] core/transaction: be explicit about cyclic ordering relationship Inspired by https://github.com/systemd/systemd/pull/35417#discussion_r1867868221 --- src/core/transaction.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/core/transaction.c b/src/core/transaction.c index 23933936a55..e57907766a9 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -373,17 +373,15 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi STRV_FOREACH_PAIR(unit_id, job_type, array) (void) strextendf_with_separator(&unit_ids, "\n", "%s%s", unit_log_field(j->unit), *unit_id); - size_t m = strv_length(array); - _cleanup_free_ char *cycle_path_text = strdup("Found ordering cycle"); - if (m > 0) { - (void) strextendf(&cycle_path_text, " on %s/%s", array[0], array[1]); - if (m > 2) - (void) strextendf(&cycle_path_text, "; has dependency on %s/%s", array[2], array[3]); - } + if (!strv_isempty(array)) { + (void) strextendf(&cycle_path_text, ": %s/%s", array[0], array[1]); - STRV_FOREACH_PAIR(unit_id, job_type, strv_skip(array, 4)) - (void) strextendf(&cycle_path_text, ", %s/%s", *unit_id, *job_type); + STRV_FOREACH_PAIR(unit_id, job_type, strv_skip(array, 2)) + (void) strextendf(&cycle_path_text, " after %s/%s", *unit_id, *job_type); + + (void) strextendf(&cycle_path_text, " - after %s", array[0]); + } /* logging for j not k here to provide a consistent narrative */ if (cycle_path_text) -- 2.47.3