public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Andreas Sturmlechner" <asturm@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-util/clazy/files/, dev-util/clazy/
Date: Sat, 21 Sep 2024 13:34:22 +0000 (UTC)	[thread overview]
Message-ID: <1726925637.a1fcee35f62bad34abe7da2be9856645fbce8af6.asturm@gentoo> (raw)

commit:     a1fcee35f62bad34abe7da2be9856645fbce8af6
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 21 13:15:24 2024 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Sep 21 13:33:57 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a1fcee35

dev-util/clazy: add 1.12 w/o KEYWORDS, enable py3.13, LLVM-18

Reason: 7% tests passed, 92 tests failed out of 99

Most of them fail with:
cstddef:50:10: fatal error: 'stddef.h' file not found

Bug: https://bugs.gentoo.org/811723
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 dev-util/clazy/Manifest                            |   1 +
 dev-util/clazy/clazy-1.12.ebuild                   |  57 ++++++++++
 .../files/clazy-1.12-clang-16-no-src-root.patch    |  60 +++++++++++
 .../files/clazy-1.12-fix-tests-Qt-detect-1.patch   |  78 ++++++++++++++
 .../files/clazy-1.12-fix-tests-Qt-detect-2.patch   | 115 +++++++++++++++++++++
 dev-util/clazy/files/clazy-1.12-llvm-18.patch      |  36 +++++++
 6 files changed, 347 insertions(+)

diff --git a/dev-util/clazy/Manifest b/dev-util/clazy/Manifest
index a764da1ab127..9cb5a135f2f6 100644
--- a/dev-util/clazy/Manifest
+++ b/dev-util/clazy/Manifest
@@ -1 +1,2 @@
 DIST clazy-1.11.tar.xz 404088 BLAKE2B 1a69fe07ef81a0efe3c9db9129083247d60943592967f705d62d3859039cec250673eecc06184f70d134cbab85708d957b0a085beff8b3e46325a69547e005b7 SHA512 6a7c162392dd30aea29669275cea814d6daccf7931b8cdb20997f9bbff5619832d5461a6d0f854ecbc4726e52b6937c4f9cb8651087ffe73676c04239a38ca2b
+DIST clazy-1.12.tar.xz 427740 BLAKE2B ad2c78a506132b5fd6b3c22a7e9794c38ddd71242cde6f760e48d0250f6215629007d45303f4b35fdc7717865b8221ab1c2f3c6889a44ea1809e112845f16463 SHA512 7a2b4a753098f15936a4731c82c660c1cd4d81949279435e87f00f7f72bef3e32cb574c8991c0707798581278e9fbcae34d354c1e6b77a15a5e26166d658fa9e

diff --git a/dev-util/clazy/clazy-1.12.ebuild b/dev-util/clazy/clazy-1.12.ebuild
new file mode 100644
index 000000000000..b5e819706f76
--- /dev/null
+++ b/dev-util/clazy/clazy-1.12.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( 15 16 17 18 )
+PYTHON_COMPAT=( python3_{10..13} )
+inherit cmake llvm-r1 python-any-r1
+
+DESCRIPTION="Compiler plugin which allows clang to understand Qt semantics"
+HOMEPAGE="https://apps.kde.org/clazy"
+SRC_URI="mirror://kde/stable/${PN}/${PV}/src/${P}.tar.xz"
+
+LICENSE="LGPL-2+"
+SLOT="0"
+# KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+	$(llvm_gen_dep 'sys-devel/clang:${LLVM_SLOT}')
+	$(llvm_gen_dep 'sys-devel/llvm:${LLVM_SLOT}')
+"
+DEPEND="${RDEPEND}"
+BDEPEND="test? ( ${PYTHON_DEPS} )"
+
+PATCHES=(
+	# git master
+	"${FILESDIR}"/${P}-fix-tests-Qt-detect-{1,2}.patch
+	"${FILESDIR}"/${P}-llvm-18.patch
+	# Pending: https://invent.kde.org/sdk/clazy/-/merge_requests/131
+	"${FILESDIR}"/${P}-clang-16-no-src-root.patch
+)
+
+pkg_setup() {
+	use test && python-any-r1_pkg_setup
+	llvm-r1_pkg_setup
+}
+
+src_prepare() {
+	cmake_src_prepare
+
+	sed -e '/install(FILES README.md COPYING-LGPL2.txt checks.json DESTINATION/d' \
+		-i CMakeLists.txt || die
+}
+
+src_configure() {
+	export LLVM_ROOT="$(get_llvm_prefix -d)"
+
+	cmake_src_configure
+}
+
+src_test() {
+	# Run tests against built copy, not installed
+	# bug #811723
+	PATH="${BUILD_DIR}/bin:${PATH}" LD_LIBRARY_PATH="${BUILD_DIR}/lib" cmake_src_test
+}

diff --git a/dev-util/clazy/files/clazy-1.12-clang-16-no-src-root.patch b/dev-util/clazy/files/clazy-1.12-clang-16-no-src-root.patch
new file mode 100644
index 000000000000..ca88efeaf6cd
--- /dev/null
+++ b/dev-util/clazy/files/clazy-1.12-clang-16-no-src-root.patch
@@ -0,0 +1,60 @@
+From 4fa1ded456626f9c13f1f77212754d6349d12a8a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christoph=20Gr=C3=BCninger?= <foss@grueninger.de>
+Date: Tue, 27 Feb 2024 21:14:19 +0100
+Subject: [PATCH] [cmake] Adjust for non-installed LLVM
+
+In LLVM 16 llvm-config got --src-root removed.
+Adjust include path for Clang include
+---
+ cmake/FindClang.cmake | 8 ++++++--
+ cmake/FindLLVM.cmake  | 6 +++++-
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/cmake/FindClang.cmake b/cmake/FindClang.cmake
+index e438ea5c..b4f0b0a1 100644
+--- a/cmake/FindClang.cmake
++++ b/cmake/FindClang.cmake
+@@ -86,8 +86,12 @@ if(CLANG_FOUND)
+   set(CLANG_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS})
+ 
+   # check whether llvm-config comes from an install prefix
++  set(LLVM_CONFIG_INCLUDE_FLAG "--src-root")
++  if (${LLVM_VERSION} VERSION_GREATER_EQUAL 16)
++    set(LLVM_CONFIG_INCLUDE_FLAG "--includedir")
++  endif()
+   execute_process(
+-    COMMAND ${LLVM_CONFIG_EXECUTABLE} --src-root
++    COMMAND ${LLVM_CONFIG_EXECUTABLE} ${LLVM_CONFIG_INCLUDE_FLAG}
+     OUTPUT_VARIABLE _llvmSourceRoot
+     OUTPUT_STRIP_TRAILING_WHITESPACE
+   )
+@@ -96,7 +100,7 @@ if(CLANG_FOUND)
+     message(STATUS "Detected that llvm-config comes from a build-tree, adding more include directories for Clang")
+     list(APPEND CLANG_INCLUDE_DIRS
+          "${LLVM_INSTALL_PREFIX}/tools/clang/include" # build dir
+-         "${_llvmSourceRoot}/tools/clang/include"     # source dir
++         "${_llvmSourceRoot}/../../clang/include"     # source dir
+     )
+   endif()
+ 
+diff --git a/cmake/FindLLVM.cmake b/cmake/FindLLVM.cmake
+index da02e006..c625eeb5 100644
+--- a/cmake/FindLLVM.cmake
++++ b/cmake/FindLLVM.cmake
+@@ -131,8 +131,12 @@ if (LLVM_FOUND)
+   endif()
+ 
+   # potentially add include dir from binary dir for non-installed LLVM
++  set(LLVM_CONFIG_INCLUDE_FLAG "--src-root")
++  if (${LLVM_VERSION} VERSION_GREATER_EQUAL 16)
++    set(LLVM_CONFIG_INCLUDE_FLAG "--includedir")
++  endif()
+   execute_process(
+-    COMMAND ${LLVM_CONFIG_EXECUTABLE} --src-root
++    COMMAND ${LLVM_CONFIG_EXECUTABLE} ${LLVM_CONFIG_INCLUDE_FLAG}
+     OUTPUT_VARIABLE _llvmSourceRoot
+     OUTPUT_STRIP_TRAILING_WHITESPACE
+   )
+-- 
+GitLab
+

diff --git a/dev-util/clazy/files/clazy-1.12-fix-tests-Qt-detect-1.patch b/dev-util/clazy/files/clazy-1.12-fix-tests-Qt-detect-1.patch
new file mode 100644
index 000000000000..bca03b24dff4
--- /dev/null
+++ b/dev-util/clazy/files/clazy-1.12-fix-tests-Qt-detect-1.patch
@@ -0,0 +1,78 @@
+From 61b03a0d9cb319173766383216deee74fd6d800e Mon Sep 17 00:00:00 2001
+From: Alexander Lohnau <alexander.lohnau@gmx.de>
+Date: Sat, 7 Sep 2024 11:31:22 +0200
+Subject: [PATCH] Make tests work when clang library is different from system
+ default
+
+If we have found the clang folder, we can resolve the executable from there.
+In my case, I was compiling against clang16, but my system default was clang 14.
+The stacktrace is really confusing and hard to understand. Using the
+absolute path makes the log also better to understand and to reproduce
+the test results.
+---
+ ClazyTests.generated.cmake |  5 ++++-
+ cmake/FindLLVM.cmake       | 13 +++++++++++++
+ dev-scripts/generate.py    |  5 ++++-
+ 3 files changed, 21 insertions(+), 2 deletions(-)
+
+diff --git a/ClazyTests.generated.cmake b/ClazyTests.generated.cmake
+index 204f0e5b..49b0f69e 100644
+--- a/ClazyTests.generated.cmake
++++ b/ClazyTests.generated.cmake
+@@ -2,8 +2,11 @@
+ 
+ macro(add_clazy_test name)
+   add_test(NAME ${name} COMMAND python3 run_tests.py ${name} --verbose WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/)
++  if (CLANG_EXECUTABLE_PATH)
++    set(CLANG_CXX_TEST "CLANGXX=${CLANG_EXECUTABLE_PATH};")
++  endif()
+   set_property(TEST ${name} PROPERTY
+-    ENVIRONMENT "CLAZYPLUGIN_CXX=$<TARGET_FILE:ClazyPlugin>;CLAZYSTANDALONE_CXX=$<TARGET_FILE:clazy-standalone>;$<$<BOOL:${HAS_STD_FILESYSTEM}>:CLAZY_HAS_FILESYSTEM=>"
++    ENVIRONMENT "${CLANG_CXX_TEST}CLAZYPLUGIN_CXX=$<TARGET_FILE:ClazyPlugin>;CLAZYSTANDALONE_CXX=$<TARGET_FILE:clazy-standalone>;$<$<BOOL:${HAS_STD_FILESYSTEM}>:CLAZY_HAS_FILESYSTEM=>"
+   )
+ endmacro()
+ 
+diff --git a/cmake/FindLLVM.cmake b/cmake/FindLLVM.cmake
+index a1fd9e3f..da02e006 100644
+--- a/cmake/FindLLVM.cmake
++++ b/cmake/FindLLVM.cmake
+@@ -117,6 +117,19 @@ if (LLVM_FOUND)
+     OUTPUT_STRIP_TRAILING_WHITESPACE
+   )
+ 
++  execute_process(
++    COMMAND ${LLVM_CONFIG_EXECUTABLE} --bindir
++    OUTPUT_VARIABLE LLVM_BIN_DIR
++    OUTPUT_STRIP_TRAILING_WHITESPACE
++  )
++  set(CLANG_EXECUTABLE_PATH "${LLVM_BIN_DIR}/clang")
++  if(EXISTS ${CLANG_EXECUTABLE_PATH})
++    message(STATUS "Clang found: ${CLANG_EXECUTABLE_PATH}")
++    set(CLANG_EXECUTABLE ${CLANG_EXECUTABLE_PATH})
++  else()
++    message(WARNING "Clang not found in LLVM bin directory: ${LLVM_BIN_DIR}")
++  endif()
++
+   # potentially add include dir from binary dir for non-installed LLVM
+   execute_process(
+     COMMAND ${LLVM_CONFIG_EXECUTABLE} --src-root
+diff --git a/dev-scripts/generate.py b/dev-scripts/generate.py
+index 2678aaba..11fc5bfc 100755
+--- a/dev-scripts/generate.py
++++ b/dev-scripts/generate.py
+@@ -468,8 +468,11 @@ def generate_ctest(checks):
+     contents = """# This file was autogenerated by running: ./dev-scripts/generate.py --generate\n
+ macro(add_clazy_test name)
+   add_test(NAME ${name} COMMAND python3 run_tests.py ${name} --verbose WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/)
++  if (CLANG_EXECUTABLE_PATH)
++    set(CLANG_CXX_TEST "CLANGXX=${CLANG_EXECUTABLE_PATH};")
++  endif()
+   set_property(TEST ${name} PROPERTY
+-    ENVIRONMENT "CLAZYPLUGIN_CXX=$<TARGET_FILE:ClazyPlugin>;CLAZYSTANDALONE_CXX=$<TARGET_FILE:clazy-standalone>;$<$<BOOL:${HAS_STD_FILESYSTEM}>:CLAZY_HAS_FILESYSTEM=>"
++    ENVIRONMENT "${CLANG_CXX_TEST}CLAZYPLUGIN_CXX=$<TARGET_FILE:ClazyPlugin>;CLAZYSTANDALONE_CXX=$<TARGET_FILE:clazy-standalone>;$<$<BOOL:${HAS_STD_FILESYSTEM}>:CLAZY_HAS_FILESYSTEM=>"
+   )
+ endmacro()\n
+ """
+-- 
+GitLab
+

diff --git a/dev-util/clazy/files/clazy-1.12-fix-tests-Qt-detect-2.patch b/dev-util/clazy/files/clazy-1.12-fix-tests-Qt-detect-2.patch
new file mode 100644
index 000000000000..9e5276644ad7
--- /dev/null
+++ b/dev-util/clazy/files/clazy-1.12-fix-tests-Qt-detect-2.patch
@@ -0,0 +1,115 @@
+From fc058479b1d0ab8498b23a68dcbb56be1b38c793 Mon Sep 17 00:00:00 2001
+From: Alexander Lohnau <alexander.lohnau@gmx.de>
+Date: Sat, 7 Sep 2024 14:25:45 +0200
+Subject: [PATCH] Only look for Qt5/Qt6 installs if respective CI job is
+ running
+
+We may have a qt6 installation even on a Qt5 image
+
+But in any case, we should only run them on the dedicated im age and not waste CI time otherwise
+---
+ ClazyTests.generated.cmake |  8 +++++++-
+ dev-scripts/generate.py    |  8 +++++++-
+ tests/run_tests.py         | 22 ++++++++++++++--------
+ 3 files changed, 28 insertions(+), 10 deletions(-)
+
+diff --git a/ClazyTests.generated.cmake b/ClazyTests.generated.cmake
+index 49b0f69e..9babc7c5 100644
+--- a/ClazyTests.generated.cmake
++++ b/ClazyTests.generated.cmake
+@@ -1,7 +1,13 @@
+ # This file was autogenerated by running: ./dev-scripts/generate.py --generate
+ 
++if ($ENV{CI_JOB_NAME_SLUG} MATCHES "qt5")
++    set(TEST_VERSION_OPTION "--qt-versions=5")
++elseif($ENV{CI_JOB_NAME_SLUG} MATCHES "qt6")
++    set(TEST_VERSION_OPTION "--qt-versions=6")
++endif()
++
+ macro(add_clazy_test name)
+-  add_test(NAME ${name} COMMAND python3 run_tests.py ${name} --verbose WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/)
++  add_test(NAME ${name} COMMAND python3 run_tests.py ${name} --verbose ${TEST_VERSION_OPTION} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/)
+   if (CLANG_EXECUTABLE_PATH)
+     set(CLANG_CXX_TEST "CLANGXX=${CLANG_EXECUTABLE_PATH};")
+   endif()
+diff --git a/dev-scripts/generate.py b/dev-scripts/generate.py
+index 11fc5bfc..a1233698 100755
+--- a/dev-scripts/generate.py
++++ b/dev-scripts/generate.py
+@@ -466,8 +466,14 @@ def generate_ctest(checks):
+     filename = clazy_source_path() + 'ClazyTests.generated.cmake'
+ 
+     contents = """# This file was autogenerated by running: ./dev-scripts/generate.py --generate\n
++if ($ENV{CI_JOB_NAME_SLUG} MATCHES "qt5")
++    set(TEST_VERSION_OPTION "--qt-versions=5")
++elseif($ENV{CI_JOB_NAME_SLUG} MATCHES "qt6")
++    set(TEST_VERSION_OPTION "--qt-versions=6")
++endif()
++
+ macro(add_clazy_test name)
+-  add_test(NAME ${name} COMMAND python3 run_tests.py ${name} --verbose WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/)
++  add_test(NAME ${name} COMMAND python3 run_tests.py ${name} --verbose ${TEST_VERSION_OPTION} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/)
+   if (CLANG_EXECUTABLE_PATH)
+     set(CLANG_CXX_TEST "CLANGXX=${CLANG_EXECUTABLE_PATH};")
+   endif()
+diff --git a/tests/run_tests.py b/tests/run_tests.py
+index 9fb9d5dc..da54e45a 100755
+--- a/tests/run_tests.py
++++ b/tests/run_tests.py
+@@ -457,6 +457,8 @@ parser.add_argument("--only-standalone", action='store_true',
+                     help='Only run clazy-standalone')
+ parser.add_argument("--dump-ast", action='store_true',
+                     help='Dump a unit-test AST to file')
++parser.add_argument("--qt-versions", type=int, choices=[5, 6], nargs='+', default=[5, 6],
++                    help='Specify one or more Qt versions to use (default: 5 and 6)')
+ parser.add_argument(
+     "--exclude", help='Comma separated list of checks to ignore')
+ parser.add_argument("-j", "--jobs", type=int, default=multiprocessing.cpu_count(),
+@@ -481,10 +483,14 @@ _only_standalone = args.only_standalone
+ _num_threads = args.jobs
+ _lock = threading.Lock()
+ _was_successful = True
+-_qt6_installation = find_qt_installation(
+-    6, ["QT_SELECT=6 qmake", "qmake-qt6", "qmake", "qmake6"])
+-_qt5_installation = find_qt_installation(
+-    5, ["QT_SELECT=5 qmake", "qmake-qt5", "qmake", "qmake5"])
++if 6 in args.qt_versions:
++    _qt6_installation = find_qt_installation(6, ["QT_SELECT=6 qmake", "qmake-qt6", "qmake", "qmake6"])
++else:
++    _qt6_installation = None
++if 5 in args.qt_versions:
++    _qt5_installation = find_qt_installation(5, ["QT_SELECT=5 qmake", "qmake-qt5", "qmake", "qmake5"])
++else:
++    _qt5_installation = None
+ _excluded_checks = args.exclude.split(',') if args.exclude is not None else []
+ 
+ # -------------------------------------------------------------------------------
+@@ -697,6 +703,8 @@ def run_unit_test(test, is_standalone, cppStandard, qt_major_version):
+         return True
+ 
+     qt = qt_installation(qt_major_version)
++    if qt == None:
++        return True # silently skip
+ 
+     if _verbose:
+         print("Qt major versions required by the test: " + str(test.qt_major_versions))
+@@ -709,14 +717,12 @@ def run_unit_test(test, is_standalone, cppStandard, qt_major_version):
+ 
+     if qt.int_version < test.minimum_qt_version or qt.int_version > test.maximum_qt_version or CLANG_VERSION < test.minimum_clang_version:
+         if (_verbose):
+-            print("Skipping " + printableName +
+-                  " because required version is not available")
++            print("Skipping " + printableName + " because required version is not available")
+         return True
+ 
+     if test.requires_std_filesystem and not _hasStdFileSystem:
+         if (_verbose):
+-            print("Skipping " + printableName +
+-                  " because it requires std::filesystem")
++            print("Skipping " + printableName + " because it requires std::filesystem")
+         return True
+ 
+     if _platform in test.blacklist_platforms:
+-- 
+GitLab
+

diff --git a/dev-util/clazy/files/clazy-1.12-llvm-18.patch b/dev-util/clazy/files/clazy-1.12-llvm-18.patch
new file mode 100644
index 000000000000..d1f2bea9ffbf
--- /dev/null
+++ b/dev-util/clazy/files/clazy-1.12-llvm-18.patch
@@ -0,0 +1,36 @@
+From 0d87de91457c3bf2338b997555694953d45e17a4 Mon Sep 17 00:00:00 2001
+From: Alexander Lohnau <alexander.lohnau@gmx.de>
+Date: Tue, 10 Sep 2024 13:50:56 +0200
+Subject: [PATCH] rule-of-three: Fix destructor not being found and thus
+ causing false positive
+
+This works fine in clang 14, but apparently not in later versions
+
+The false positive caused a CI failure in https://invent.kde.org/libraries/qca/-/merge_requests/116
+---
+ src/checks/level2/rule-of-three.cpp | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/checks/level2/rule-of-three.cpp b/src/checks/level2/rule-of-three.cpp
+index 6996ee1e..f18ff999 100644
+--- a/src/checks/level2/rule-of-three.cpp
++++ b/src/checks/level2/rule-of-three.cpp
+@@ -56,7 +56,14 @@ void RuleOfThree::VisitDecl(clang::Decl *decl)
+ 
+     CXXConstructorDecl *copyCtor = Utils::copyCtor(record);
+     CXXMethodDecl *copyAssign = Utils::copyAssign(record);
+-    CXXDestructorDecl *destructor = record->getDestructor();
++    CXXDestructorDecl *destructor = nullptr;
++    // Getting the destructor using record->getDestructor() does not work for later clang versions, e.g. clang 16
++    for (auto *decl : record->decls()) {
++        if (auto *destructorDecl = dyn_cast<CXXDestructorDecl>(decl)) {
++            destructor = destructorDecl;
++            break;
++        }
++    }
+     const bool dtorDefaultedByUser = destructor && destructor->isDefaulted() && !destructor->isImplicit();
+ 
+     const bool hasUserCopyCtor = copyCtor && copyCtor->isUserProvided();
+-- 
+GitLab
+


             reply	other threads:[~2024-09-21 13:34 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-21 13:34 Andreas Sturmlechner [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-01-27 22:29 [gentoo-commits] repo/gentoo:master commit in: dev-util/clazy/files/, dev-util/clazy/ Andreas Sturmlechner
2024-12-11 21:41 Andreas Sturmlechner
2022-01-19 13:54 Andreas Sturmlechner
2021-05-01 21:24 Andreas Sturmlechner
2020-10-26 13:56 Andreas Sturmlechner
2020-08-22 16:06 Andreas Sturmlechner
2020-04-09 21:37 Andreas Sturmlechner

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=1726925637.a1fcee35f62bad34abe7da2be9856645fbce8af6.asturm@gentoo \
    --to=asturm@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