From: "Mike Gilbert" <floppym@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-apps/systemd/files/, sys-apps/systemd/
Date: Tue, 26 Oct 2021 15:00:52 +0000 (UTC) [thread overview]
Message-ID: <1635260414.52fa44e7f51d4a4d23f8929a789ab391360e2833.floppym@gentoo> (raw)
commit: 52fa44e7f51d4a4d23f8929a789ab391360e2833
Author: Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 26 14:59:55 2021 +0000
Commit: Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Tue Oct 26 15:00:14 2021 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=52fa44e7
sys-apps/systemd: backport some patches
Closes: https://bugs.gentoo.org/820113
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>
sys-apps/systemd/files/249.5-coredumpctl.patch | 31 ++
.../249.5-revert-unit-start-rate-limiting.patch | 483 +++++++++++++++++++++
...ystemd-249.5.ebuild => systemd-249.5-r1.ebuild} | 2 +
3 files changed, 516 insertions(+)
diff --git a/sys-apps/systemd/files/249.5-coredumpctl.patch b/sys-apps/systemd/files/249.5-coredumpctl.patch
new file mode 100644
index 00000000000..2892f347713
--- /dev/null
+++ b/sys-apps/systemd/files/249.5-coredumpctl.patch
@@ -0,0 +1,31 @@
+From 473627e1c9fcdf8f819ced2bb79cb7e9ff598b0c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 12 Oct 2021 19:46:25 +0200
+Subject: [PATCH] coredumpctl: stop truncating information about coredump
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+With the changes to limit that print 'Found module …' over and over, we were
+hitting the journal field message limit, effectively truncating the info output.
+
+Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1998488.
+
+(cherry picked from commit 384c6207669eb0d92aa0043dbc01957c6c7ff41e)
+---
+ src/coredump/coredumpctl.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/coredump/coredumpctl.c b/src/coredump/coredumpctl.c
+index 3d44e51e32..7eba8330d7 100644
+--- a/src/coredump/coredumpctl.c
++++ b/src/coredump/coredumpctl.c
+@@ -555,6 +555,8 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) {
+ assert(file);
+ assert(j);
+
++ (void) sd_journal_set_data_threshold(j, 0);
++
+ SD_JOURNAL_FOREACH_DATA(j, d, l) {
+ RETRIEVE(d, l, "MESSAGE_ID", mid);
+ RETRIEVE(d, l, "COREDUMP_PID", pid);
diff --git a/sys-apps/systemd/files/249.5-revert-unit-start-rate-limiting.patch b/sys-apps/systemd/files/249.5-revert-unit-start-rate-limiting.patch
new file mode 100644
index 00000000000..6d070e8d30d
--- /dev/null
+++ b/sys-apps/systemd/files/249.5-revert-unit-start-rate-limiting.patch
@@ -0,0 +1,483 @@
+From 4fa9d8f14523982482386d398d2b2669902f2098 Mon Sep 17 00:00:00 2001
+From: Yu Watanabe <watanabe.yu+github@gmail.com>
+Date: Mon, 18 Oct 2021 14:11:53 +0900
+Subject: [PATCH] Revert "core: Check unit start rate limiting earlier"
+
+This reverts commit ed8fbbf1745c6a2dc0b8cd560ac8a3353f72e979.
+
+This was causing problems during boot, see
+https://bodhi.fedoraproject.org/updates/FEDORA-2021-a1a52487e6,
+https://bugzilla.redhat.com/show_bug.cgi?id=2013386.
+https://github.com/systemd/systemd/issues/21025
+---
+ src/core/automount.c | 23 ++++++-----------------
+ src/core/mount.c | 23 ++++++-----------------
+ src/core/path.c | 23 ++++++-----------------
+ src/core/service.c | 25 +++++++------------------
+ src/core/socket.c | 23 ++++++-----------------
+ src/core/swap.c | 23 ++++++-----------------
+ src/core/timer.c | 23 ++++++-----------------
+ src/core/unit.c | 7 -------
+ src/core/unit.h | 4 ----
+ test/TEST-63-ISSUE-17433/Makefile | 1 -
+ test/TEST-63-ISSUE-17433/test.sh | 9 ---------
+ test/meson.build | 2 --
+ test/testsuite-10.units/test10.service | 3 ---
+ test/testsuite-63.units/test63.path | 2 --
+ test/testsuite-63.units/test63.service | 5 -----
+ test/units/testsuite-63.service | 16 ----------------
+ 16 files changed, 43 insertions(+), 169 deletions(-)
+ delete mode 120000 test/TEST-63-ISSUE-17433/Makefile
+ delete mode 100755 test/TEST-63-ISSUE-17433/test.sh
+ delete mode 100644 test/testsuite-63.units/test63.path
+ delete mode 100644 test/testsuite-63.units/test63.service
+ delete mode 100644 test/units/testsuite-63.service
+
+diff --git a/src/core/automount.c b/src/core/automount.c
+index 0722abef23..edc9588165 100644
+--- a/src/core/automount.c
++++ b/src/core/automount.c
+@@ -814,6 +814,12 @@ static int automount_start(Unit *u) {
+ if (r < 0)
+ return r;
+
++ r = unit_test_start_limit(u);
++ if (r < 0) {
++ automount_enter_dead(a, AUTOMOUNT_FAILURE_START_LIMIT_HIT);
++ return r;
++ }
++
+ r = unit_acquire_invocation_id(u);
+ if (r < 0)
+ return r;
+@@ -1059,21 +1065,6 @@ static bool automount_supported(void) {
+ return supported;
+ }
+
+-static int automount_test_start_limit(Unit *u) {
+- Automount *a = AUTOMOUNT(u);
+- int r;
+-
+- assert(a);
+-
+- r = unit_test_start_limit(u);
+- if (r < 0) {
+- automount_enter_dead(a, AUTOMOUNT_FAILURE_START_LIMIT_HIT);
+- return r;
+- }
+-
+- return 0;
+-}
+-
+ static const char* const automount_result_table[_AUTOMOUNT_RESULT_MAX] = {
+ [AUTOMOUNT_SUCCESS] = "success",
+ [AUTOMOUNT_FAILURE_RESOURCES] = "resources",
+@@ -1136,6 +1127,4 @@ const UnitVTable automount_vtable = {
+ [JOB_FAILED] = "Failed to unset automount %s.",
+ },
+ },
+-
+- .test_start_limit = automount_test_start_limit,
+ };
+diff --git a/src/core/mount.c b/src/core/mount.c
+index 9bec190cb6..af39db214b 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -1168,6 +1168,12 @@ static int mount_start(Unit *u) {
+
+ assert(IN_SET(m->state, MOUNT_DEAD, MOUNT_FAILED));
+
++ r = unit_test_start_limit(u);
++ if (r < 0) {
++ mount_enter_dead(m, MOUNT_FAILURE_START_LIMIT_HIT);
++ return r;
++ }
++
+ r = unit_acquire_invocation_id(u);
+ if (r < 0)
+ return r;
+@@ -2137,21 +2143,6 @@ static int mount_can_clean(Unit *u, ExecCleanMask *ret) {
+ return exec_context_get_clean_mask(&m->exec_context, ret);
+ }
+
+-static int mount_test_start_limit(Unit *u) {
+- Mount *m = MOUNT(u);
+- int r;
+-
+- assert(m);
+-
+- r = unit_test_start_limit(u);
+- if (r < 0) {
+- mount_enter_dead(m, MOUNT_FAILURE_START_LIMIT_HIT);
+- return r;
+- }
+-
+- return 0;
+-}
+-
+ static const char* const mount_exec_command_table[_MOUNT_EXEC_COMMAND_MAX] = {
+ [MOUNT_EXEC_MOUNT] = "ExecMount",
+ [MOUNT_EXEC_UNMOUNT] = "ExecUnmount",
+@@ -2249,6 +2240,4 @@ const UnitVTable mount_vtable = {
+ [JOB_TIMEOUT] = "Timed out unmounting %s.",
+ },
+ },
+-
+- .test_start_limit = mount_test_start_limit,
+ };
+diff --git a/src/core/path.c b/src/core/path.c
+index 2b659696a4..e098e83a31 100644
+--- a/src/core/path.c
++++ b/src/core/path.c
+@@ -590,6 +590,12 @@ static int path_start(Unit *u) {
+ if (r < 0)
+ return r;
+
++ r = unit_test_start_limit(u);
++ if (r < 0) {
++ path_enter_dead(p, PATH_FAILURE_START_LIMIT_HIT);
++ return r;
++ }
++
+ r = unit_acquire_invocation_id(u);
+ if (r < 0)
+ return r;
+@@ -805,21 +811,6 @@ static void path_reset_failed(Unit *u) {
+ p->result = PATH_SUCCESS;
+ }
+
+-static int path_test_start_limit(Unit *u) {
+- Path *p = PATH(u);
+- int r;
+-
+- assert(p);
+-
+- r = unit_test_start_limit(u);
+- if (r < 0) {
+- path_enter_dead(p, PATH_FAILURE_START_LIMIT_HIT);
+- return r;
+- }
+-
+- return 0;
+-}
+-
+ static const char* const path_type_table[_PATH_TYPE_MAX] = {
+ [PATH_EXISTS] = "PathExists",
+ [PATH_EXISTS_GLOB] = "PathExistsGlob",
+@@ -874,6 +865,4 @@ const UnitVTable path_vtable = {
+ .reset_failed = path_reset_failed,
+
+ .bus_set_property = bus_path_set_property,
+-
+- .test_start_limit = path_test_start_limit,
+ };
+diff --git a/src/core/service.c b/src/core/service.c
+index 701c145565..7b90822f68 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -2456,6 +2456,13 @@ static int service_start(Unit *u) {
+
+ assert(IN_SET(s->state, SERVICE_DEAD, SERVICE_FAILED));
+
++ /* Make sure we don't enter a busy loop of some kind. */
++ r = unit_test_start_limit(u);
++ if (r < 0) {
++ service_enter_dead(s, SERVICE_FAILURE_START_LIMIT_HIT, false);
++ return r;
++ }
++
+ r = unit_acquire_invocation_id(u);
+ if (r < 0)
+ return r;
+@@ -4451,22 +4458,6 @@ static const char *service_finished_job(Unit *u, JobType t, JobResult result) {
+ return NULL;
+ }
+
+-static int service_test_start_limit(Unit *u) {
+- Service *s = SERVICE(u);
+- int r;
+-
+- assert(s);
+-
+- /* Make sure we don't enter a busy loop of some kind. */
+- r = unit_test_start_limit(u);
+- if (r < 0) {
+- service_enter_dead(s, SERVICE_FAILURE_START_LIMIT_HIT, false);
+- return r;
+- }
+-
+- return 0;
+-}
+-
+ static const char* const service_restart_table[_SERVICE_RESTART_MAX] = {
+ [SERVICE_RESTART_NO] = "no",
+ [SERVICE_RESTART_ON_SUCCESS] = "on-success",
+@@ -4629,6 +4620,4 @@ const UnitVTable service_vtable = {
+ },
+ .finished_job = service_finished_job,
+ },
+-
+- .test_start_limit = service_test_start_limit,
+ };
+diff --git a/src/core/socket.c b/src/core/socket.c
+index 31d88b71ff..f362a5baa8 100644
+--- a/src/core/socket.c
++++ b/src/core/socket.c
+@@ -2515,6 +2515,12 @@ static int socket_start(Unit *u) {
+
+ assert(IN_SET(s->state, SOCKET_DEAD, SOCKET_FAILED));
+
++ r = unit_test_start_limit(u);
++ if (r < 0) {
++ socket_enter_dead(s, SOCKET_FAILURE_START_LIMIT_HIT);
++ return r;
++ }
++
+ r = unit_acquire_invocation_id(u);
+ if (r < 0)
+ return r;
+@@ -3423,21 +3429,6 @@ static int socket_can_clean(Unit *u, ExecCleanMask *ret) {
+ return exec_context_get_clean_mask(&s->exec_context, ret);
+ }
+
+-static int socket_test_start_limit(Unit *u) {
+- Socket *s = SOCKET(u);
+- int r;
+-
+- assert(s);
+-
+- r = unit_test_start_limit(u);
+- if (r < 0) {
+- socket_enter_dead(s, SOCKET_FAILURE_START_LIMIT_HIT);
+- return r;
+- }
+-
+- return 0;
+-}
+-
+ static const char* const socket_exec_command_table[_SOCKET_EXEC_COMMAND_MAX] = {
+ [SOCKET_EXEC_START_PRE] = "ExecStartPre",
+ [SOCKET_EXEC_START_CHOWN] = "ExecStartChown",
+@@ -3564,6 +3555,4 @@ const UnitVTable socket_vtable = {
+ [JOB_TIMEOUT] = "Timed out stopping %s.",
+ },
+ },
+-
+- .test_start_limit = socket_test_start_limit,
+ };
+diff --git a/src/core/swap.c b/src/core/swap.c
+index b25f68fb7d..3843b19500 100644
+--- a/src/core/swap.c
++++ b/src/core/swap.c
+@@ -933,6 +933,12 @@ static int swap_start(Unit *u) {
+ if (UNIT(other)->job && UNIT(other)->job->state == JOB_RUNNING)
+ return -EAGAIN;
+
++ r = unit_test_start_limit(u);
++ if (r < 0) {
++ swap_enter_dead(s, SWAP_FAILURE_START_LIMIT_HIT);
++ return r;
++ }
++
+ r = unit_acquire_invocation_id(u);
+ if (r < 0)
+ return r;
+@@ -1582,21 +1588,6 @@ static int swap_can_clean(Unit *u, ExecCleanMask *ret) {
+ return exec_context_get_clean_mask(&s->exec_context, ret);
+ }
+
+-static int swap_test_start_limit(Unit *u) {
+- Swap *s = SWAP(u);
+- int r;
+-
+- assert(s);
+-
+- r = unit_test_start_limit(u);
+- if (r < 0) {
+- swap_enter_dead(s, SWAP_FAILURE_START_LIMIT_HIT);
+- return r;
+- }
+-
+- return 0;
+-}
+-
+ static const char* const swap_exec_command_table[_SWAP_EXEC_COMMAND_MAX] = {
+ [SWAP_EXEC_ACTIVATE] = "ExecActivate",
+ [SWAP_EXEC_DEACTIVATE] = "ExecDeactivate",
+@@ -1692,6 +1683,4 @@ const UnitVTable swap_vtable = {
+ [JOB_TIMEOUT] = "Timed out deactivating swap %s.",
+ },
+ },
+-
+- .test_start_limit = swap_test_start_limit,
+ };
+diff --git a/src/core/timer.c b/src/core/timer.c
+index 5ecc9f35cf..e064ad9a2d 100644
+--- a/src/core/timer.c
++++ b/src/core/timer.c
+@@ -635,6 +635,12 @@ static int timer_start(Unit *u) {
+ if (r < 0)
+ return r;
+
++ r = unit_test_start_limit(u);
++ if (r < 0) {
++ timer_enter_dead(t, TIMER_FAILURE_START_LIMIT_HIT);
++ return r;
++ }
++
+ r = unit_acquire_invocation_id(u);
+ if (r < 0)
+ return r;
+@@ -895,21 +901,6 @@ static int timer_can_clean(Unit *u, ExecCleanMask *ret) {
+ return 0;
+ }
+
+-static int timer_test_start_limit(Unit *u) {
+- Timer *t = TIMER(u);
+- int r;
+-
+- assert(t);
+-
+- r = unit_test_start_limit(u);
+- if (r < 0) {
+- timer_enter_dead(t, TIMER_FAILURE_START_LIMIT_HIT);
+- return r;
+- }
+-
+- return 0;
+-}
+-
+ static const char* const timer_base_table[_TIMER_BASE_MAX] = {
+ [TIMER_ACTIVE] = "OnActiveSec",
+ [TIMER_BOOT] = "OnBootSec",
+@@ -969,6 +960,4 @@ const UnitVTable timer_vtable = {
+ .timezone_change = timer_timezone_change,
+
+ .bus_set_property = bus_timer_set_property,
+-
+- .test_start_limit = timer_test_start_limit,
+ };
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 69ed43578e..38d3eb703f 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -1851,13 +1851,6 @@ int unit_start(Unit *u) {
+
+ assert(u);
+
+- /* Check start rate limiting early so that failure conditions don't cause us to enter a busy loop. */
+- if (UNIT_VTABLE(u)->test_start_limit) {
+- int r = UNIT_VTABLE(u)->test_start_limit(u);
+- if (r < 0)
+- return r;
+- }
+-
+ /* If this is already started, then this will succeed. Note that this will even succeed if this unit
+ * is not startable by the user. This is relied on to detect when we need to wait for units and when
+ * waiting is finished. */
+diff --git a/src/core/unit.h b/src/core/unit.h
+index 9babd07188..759104ffa7 100644
+--- a/src/core/unit.h
++++ b/src/core/unit.h
+@@ -649,10 +649,6 @@ typedef struct UnitVTable {
+ * of this type will immediately fail. */
+ bool (*supported)(void);
+
+- /* If this function is set, it's invoked first as part of starting a unit to allow start rate
+- * limiting checks to occur before we do anything else. */
+- int (*test_start_limit)(Unit *u);
+-
+ /* The strings to print in status messages */
+ UnitStatusMessageFormats status_message_formats;
+
+diff --git a/test/TEST-63-ISSUE-17433/Makefile b/test/TEST-63-ISSUE-17433/Makefile
+deleted file mode 120000
+index e9f93b1104..0000000000
+--- a/test/TEST-63-ISSUE-17433/Makefile
++++ /dev/null
+@@ -1 +0,0 @@
+-../TEST-01-BASIC/Makefile
+\ No newline at end of file
+diff --git a/test/TEST-63-ISSUE-17433/test.sh b/test/TEST-63-ISSUE-17433/test.sh
+deleted file mode 100755
+index c595a9f2de..0000000000
+--- a/test/TEST-63-ISSUE-17433/test.sh
++++ /dev/null
+@@ -1,9 +0,0 @@
+-#!/usr/bin/env bash
+-set -e
+-
+-TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/17433"
+-
+-# shellcheck source=test/test-functions
+-. "${TEST_BASE_DIR:?}/test-functions"
+-
+-do_test "$@"
+diff --git a/test/meson.build b/test/meson.build
+index 6f8f257c2d..47c7f4d49a 100644
+--- a/test/meson.build
++++ b/test/meson.build
+@@ -33,8 +33,6 @@ if install_tests
+ install_dir : testdata_dir)
+ install_subdir('testsuite-52.units',
+ install_dir : testdata_dir)
+- install_subdir('testsuite-63.units',
+- install_dir : testdata_dir)
+
+ testsuite08_dir = testdata_dir + '/testsuite-08.units'
+ install_data('testsuite-08.units/-.mount',
+diff --git a/test/testsuite-10.units/test10.service b/test/testsuite-10.units/test10.service
+index 2fb476b986..d0be786b01 100644
+--- a/test/testsuite-10.units/test10.service
++++ b/test/testsuite-10.units/test10.service
+@@ -1,9 +1,6 @@
+ [Unit]
+ Requires=test10.socket
+ ConditionPathExistsGlob=/tmp/nonexistent
+-# Make sure we hit the socket trigger limit in the test and not the service start limit.
+-StartLimitInterval=1000
+-StartLimitBurst=1000
+
+ [Service]
+ ExecStart=true
+diff --git a/test/testsuite-63.units/test63.path b/test/testsuite-63.units/test63.path
+deleted file mode 100644
+index a6573bda0a..0000000000
+--- a/test/testsuite-63.units/test63.path
++++ /dev/null
+@@ -1,2 +0,0 @@
+-[Path]
+-PathExists=/tmp/test63
+diff --git a/test/testsuite-63.units/test63.service b/test/testsuite-63.units/test63.service
+deleted file mode 100644
+index c83801874d..0000000000
+--- a/test/testsuite-63.units/test63.service
++++ /dev/null
+@@ -1,5 +0,0 @@
+-[Unit]
+-ConditionPathExists=!/tmp/nonexistent
+-
+-[Service]
+-ExecStart=true
+diff --git a/test/units/testsuite-63.service b/test/units/testsuite-63.service
+deleted file mode 100644
+index 04122723d4..0000000000
+--- a/test/units/testsuite-63.service
++++ /dev/null
+@@ -1,16 +0,0 @@
+-[Unit]
+-Description=TEST-63-ISSUE-17433
+-
+-[Service]
+-ExecStartPre=rm -f /failed /testok
+-Type=oneshot
+-ExecStart=rm -f /tmp/nonexistent
+-ExecStart=systemctl start test63.path
+-ExecStart=touch /tmp/test63
+-# Make sure systemd has sufficient time to hit the start limit for test63.service.
+-ExecStart=sleep 2
+-ExecStart=sh -x -c 'test "$(systemctl show test63.service -P ActiveState)" = failed'
+-ExecStart=sh -x -c 'test "$(systemctl show test63.service -P Result)" = start-limit-hit'
+-ExecStart=sh -x -c 'test "$(systemctl show test63.path -P ActiveState)" = failed'
+-ExecStart=sh -x -c 'test "$(systemctl show test63.path -P Result)" = unit-start-limit-hit'
+-ExecStart=sh -x -c 'echo OK >/testok'
diff --git a/sys-apps/systemd/systemd-249.5.ebuild b/sys-apps/systemd/systemd-249.5-r1.ebuild
similarity index 99%
rename from sys-apps/systemd/systemd-249.5.ebuild
rename to sys-apps/systemd/systemd-249.5-r1.ebuild
index 03f729a43a8..e47a7beaa3d 100644
--- a/sys-apps/systemd/systemd-249.5.ebuild
+++ b/sys-apps/systemd/systemd-249.5-r1.ebuild
@@ -227,6 +227,8 @@ src_prepare() {
# Add local patches here
PATCHES+=(
"${FILESDIR}/249-libudev-static.patch"
+ "${FILESDIR}/249.5-coredumpctl.patch"
+ "${FILESDIR}/249.5-revert-unit-start-rate-limiting.patch"
)
if ! use vanilla; then
next reply other threads:[~2021-10-26 15:00 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-26 15:00 Mike Gilbert [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-09-26 19:15 [gentoo-commits] repo/gentoo:master commit in: sys-apps/systemd/files/, sys-apps/systemd/ Mike Gilbert
2024-04-29 17:27 Sam James
2023-12-28 3:53 Sam James
2023-07-06 8:15 Sam James
2023-05-05 4:13 Sam James
2023-04-29 3:50 Mike Gilbert
2023-01-30 2:14 Mike Gilbert
2023-01-13 20:06 Mike Gilbert
2023-01-13 5:33 Sam James
2023-01-11 7:50 Sam James
2022-10-15 18:57 Mike Gilbert
2022-10-14 21:18 Sam James
2022-09-18 15:52 Mike Gilbert
2022-08-02 23:40 Sam James
2022-05-24 22:35 Sam James
2022-05-23 18:35 Mike Gilbert
2022-05-21 22:22 Mike Gilbert
2022-05-07 18:32 Mike Gilbert
2022-04-30 0:30 Sam James
2022-04-28 1:26 Sam James
2022-01-15 15:41 Mike Gilbert
2022-01-13 16:29 Mike Gilbert
2021-07-20 19:19 Mike Gilbert
2021-07-11 14:41 Mike Gilbert
2021-06-20 17:33 Mike Gilbert
2021-04-27 18:16 Mike Gilbert
2021-03-17 14:19 Mike Gilbert
2020-11-03 15:48 Mike Gilbert
2020-10-14 19:15 Mike Gilbert
2020-09-24 14:51 Mike Gilbert
2020-08-22 1:56 Mike Gilbert
2020-07-06 14:05 Mike Gilbert
2020-06-11 2:29 Mike Gilbert
2020-03-09 21:22 Mike Gilbert
2020-01-26 17:19 Mike Gilbert
2020-01-07 7:19 Mike Gilbert
2019-09-03 15:27 Mike Gilbert
2019-07-31 14:06 Mike Gilbert
2019-06-17 16:19 Mike Gilbert
2019-05-23 12:26 Louis Sautier
2019-05-09 13:41 Mike Gilbert
2019-05-08 17:29 Mike Gilbert
2019-04-05 20:56 Mike Gilbert
2018-10-30 14:34 Mike Gilbert
2018-09-29 15:27 Mike Gilbert
2018-03-26 21:14 Pacho Ramos
2017-12-31 1:40 Mike Gilbert
2017-12-28 16:01 Mike Gilbert
2017-10-28 18:58 Mike Gilbert
2017-10-08 17:11 Mike Gilbert
2017-09-08 21:16 Mike Gilbert
2017-08-13 23:32 Mike Gilbert
2017-07-12 20:23 Mike Gilbert
2017-06-28 17:01 Mike Gilbert
2017-03-12 17:59 Mike Gilbert
2017-01-03 18:15 Mike Gilbert
2016-12-18 23:08 Mike Gilbert
2016-04-16 20:32 Mike Gilbert
2015-12-12 15:17 Mike Gilbert
2015-11-24 16:28 Mike Gilbert
2015-10-25 9:11 Michał Górny
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1635260414.52fa44e7f51d4a4d23f8929a789ab391360e2833.floppym@gentoo \
--to=floppym@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox