[{"id":30584,"web_url":"https://patchwork.libcamera.org/comment/30584/","msgid":"<87y15bntcb.fsf@redhat.com>","date":"2024-08-05T10:43:00","subject":"Re: [PATCH] utils: checkstyle.py: Warn when no valid Signed-off-by\n\tline is found","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Laurent Pinchart <laurent.pinchart@ideasonboard.com> writes:\n\n> All commits to libcamera must include a Signed-off-by line, and that\n> rule is enforced through git hooks and CI. This however doesn't prevent\n> patches from being submitted without an SoB tag, as noticed multiple\n> times in the past. Extend the checkstyle.py trailer checker to issue a\n> warning when the SoB line is missing to try and improve the situation.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Milan Zamazal <mzamazal@redhat.com>\n\nNow how to check that checkstyle.py has been run before a patch is\nsubmitted. ;-)\n\n> ---\n>  utils/checkstyle.py | 8 ++++++++\n>  1 file changed, 8 insertions(+)\n>\n> diff --git a/utils/checkstyle.py b/utils/checkstyle.py\n> index 4185c39ac811..7d480bdf4a2f 100755\n> --- a/utils/checkstyle.py\n> +++ b/utils/checkstyle.py\n> @@ -493,6 +493,8 @@ class TrailersChecker(CommitChecker):\n>      def check(cls, commit, top_level):\n>          issues = []\n>  \n> +        sob_found = False\n> +\n>          for trailer in commit.trailers:\n>              match = TrailersChecker.trailer_regex.fullmatch(trailer)\n>              if not match:\n> @@ -515,6 +517,12 @@ class TrailersChecker(CommitChecker):\n>                  issues.append(CommitIssue(f\"Malformed value '{value}' for commit trailer '{key}'\"))\n>                  continue\n>  \n> +            if key == 'Signed-off-by':\n> +                sob_found = True\n> +\n> +        if not sob_found:\n> +            issues.append(CommitIssue(f\"No valid 'Signed-off-by' trailer found, see Documentation/contributing.rst\"))\n> +\n>          return issues\n>  \n>  \n>\n> base-commit: 19bbca3c0b376ba0183f5db53472c8c46cd402b5","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 3517DC323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  5 Aug 2024 10:43:09 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5463963381;\n\tMon,  5 Aug 2024 12:43:08 +0200 (CEST)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4161E6195D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  5 Aug 2024 12:43:06 +0200 (CEST)","from mail-ej1-f69.google.com (mail-ej1-f69.google.com\n\t[209.85.218.69]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-655-tsFGv2tTNGC84-R6Q9-C2g-1; Mon, 05 Aug 2024 06:43:03 -0400","by mail-ej1-f69.google.com with SMTP id\n\ta640c23a62f3a-a77e044ff17so668498466b.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 05 Aug 2024 03:43:03 -0700 (PDT)","from nuthatch (ip-77-48-47-2.net.vodafone.cz. [77.48.47.2])\n\tby smtp.gmail.com with ESMTPSA id\n\ta640c23a62f3a-a7dc9ec8899sm434901566b.207.2024.08.05.03.43.00\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tMon, 05 Aug 2024 03:43:00 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"S9btW5Ot\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1722854584;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=kCxGfsO1aqCL6FLpvXwtLoblSXIzzBE8RhjoQ4aSZQE=;\n\tb=S9btW5Otiv6NiT20vjzFCU9C/+uMu5BtRgXgt0zOM4wRwhQV4HzdCrM9zbylbpRstLRSg2\n\tyTYllUbR9fdWJDSLXNI8stOCSevozhERYhdKe3nVOjjqPQjgHFeyin4F/bjo7bF5Z2zu0j\n\tFRw96uxsCEZ/ne8dwQ4KXOSTRWylr2I=","X-MC-Unique":"tsFGv2tTNGC84-R6Q9-C2g-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1722854582; x=1723459382;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=kCxGfsO1aqCL6FLpvXwtLoblSXIzzBE8RhjoQ4aSZQE=;\n\tb=PIM5/klBzAbbuAR5jFSxVfqEC3f1GKPX3HtaXkC2mUNNi7Cp5WCejUy+2zU8XFShkz\n\tFktXoHE3nYyW9zpsd5Nliqn1wriUGsmGU5/66EREHfsuXbia0c1GCVBIuX6ZZTu6+ilW\n\tM2M1AybWdwb9UwQiX/kXJkdn0FZwpHVgWX2MgttMGsF/KmBDzG99CFHNKJl8m2ybMD8M\n\tY6jXxiKIc/ICsH1z9HBE22oMztbgFsE1iSDUl9pC+wpVWQ/DELUfTrhG5FNLOil0qn2F\n\tN4AjfiIzW9iLP75HDRa2vIOMYFg1VBdxk9DoZ1e+ene+CAuZQ2C/vROmKeoAc4xcygmr\n\t9WCw==","X-Gm-Message-State":"AOJu0YyDL8KB9dm7M4h5XmXJ1JjCwOS9GzGbXmWLQXzm9vn8J8RofLPY\n\t2KrN3Q7Dtpr4ds9mZh12MXhMnFAzGmwvvxsSeu4qoJQ8q2Fqp1YHaj4A1DdN71SqwyUytZFDlQa\n\t7l0hBcLP9iJvvYMT6Dl0ZVAFiJl7Dj09xBnD50omcOZbhVLffsdYeUNTe4MpCRI/Vg6ucFwAq++\n\t2SLLe14fz+BUdh+ogo0uz9ku4vZSUm4xY2qhfDK0Lg6iYwOVprb+Gbg7U=","X-Received":["by 2002:a17:906:794d:b0:a7d:2429:dc16 with SMTP id\n\ta640c23a62f3a-a7dc5107ce6mr705843566b.65.1722854581814; \n\tMon, 05 Aug 2024 03:43:01 -0700 (PDT)","by 2002:a17:906:794d:b0:a7d:2429:dc16 with SMTP id\n\ta640c23a62f3a-a7dc5107ce6mr705841666b.65.1722854581233; \n\tMon, 05 Aug 2024 03:43:01 -0700 (PDT)"],"X-Google-Smtp-Source":"AGHT+IGYIVEX+isc8FcUtzzzWTvbHM7Fdh5+o0eO9eJ/V2kF4OPhx5gjFdK9z7TMmvCdLVr/f3RkJw==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH] utils: checkstyle.py: Warn when no valid Signed-off-by\n\tline is found","In-Reply-To":"<20240804120656.29935-1-laurent.pinchart@ideasonboard.com>\n\t(Laurent Pinchart's message of \"Sun, 4 Aug 2024 15:06:56 +0300\")","References":"<20240804120656.29935-1-laurent.pinchart@ideasonboard.com>","Date":"Mon, 05 Aug 2024 12:43:00 +0200","Message-ID":"<87y15bntcb.fsf@redhat.com>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":30585,"web_url":"https://patchwork.libcamera.org/comment/30585/","msgid":"<db1d9c6f-6a8a-49d5-9b76-b107fbcd60cd@cherry.de>","date":"2024-08-05T10:46:24","subject":"Re: [PATCH] utils: checkstyle.py: Warn when no valid Signed-off-by\n\tline is found","submitter":{"id":202,"url":"https://patchwork.libcamera.org/api/people/202/","name":"Quentin Schulz","email":"quentin.schulz@cherry.de"},"content":"Hi Milan,\n\nOn 8/5/24 12:43 PM, Milan Zamazal wrote:\n> Laurent Pinchart <laurent.pinchart@ideasonboard.com> writes:\n> \n>> All commits to libcamera must include a Signed-off-by line, and that\n>> rule is enforced through git hooks and CI. This however doesn't prevent\n>> patches from being submitted without an SoB tag, as noticed multiple\n>> times in the past. Extend the checkstyle.py trailer checker to issue a\n>> warning when the SoB line is missing to try and improve the situation.\n>>\n>> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n> Reviewed-by: Milan Zamazal <mzamazal@redhat.com>\n> \n> Now how to check that checkstyle.py has been run before a patch is\n> submitted. ;-)\n> \n\nb4 can do this (though still on client side).\n\nb4 prep --check\n\nif you don't run it once before b4 send is called, it'll complain (but \nnot force you to run it).\n\nc.f. b4.prep-perpatch-check-cmd in \nhttps://b4.docs.kernel.org/en/latest/config.html#contributor-oriented-settings\n\nCheers,\nQuentin","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 5D1C0BE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  5 Aug 2024 10:46:40 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 595E86337E;\n\tMon,  5 Aug 2024 12:46:39 +0200 (CEST)","from DU2PR03CU002.outbound.protection.outlook.com\n\t(mail-northeuropeazlp170120003.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:c200::3])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B2B5F6195D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  5 Aug 2024 12:46:36 +0200 (CEST)","from AS8PR04MB8897.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:42c::20)\n\tby VE1PR04MB7406.eurprd04.prod.outlook.com (2603:10a6:800:1ae::13)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7828.26;\n\tMon, 5 Aug 2024 10:46:32 +0000","from AS8PR04MB8897.eurprd04.prod.outlook.com\n\t([fe80::35f6:bc7d:633:369a]) by\n\tAS8PR04MB8897.eurprd04.prod.outlook.com\n\t([fe80::35f6:bc7d:633:369a%5]) with mapi id 15.20.7784.020;\n\tMon, 5 Aug 2024 10:46:32 +0000"],"Authentication-Results":["lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=cherry.de header.i=@cherry.de\n\theader.b=\"P0ekGSZj\"; dkim-atps=neutral","dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=cherry.de;"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n\tb=WgoeXe1f/SwEugNTDY6DzKlyhz2nw1TRJ6+T3mQ/tuhN+It1Vkr45zPdqjdIojagmmRQdjIlU7GNI9HRwrOHSPBceXO7M7C93oBO7PnnvIEgDpsDrSqOsmz2GYWP/dIo8q9sjFhfqOBTd9sUxe6EHt9nx64R2CO0e3cOk5JlOwqBeC95LTjC95+/MzvhM2ZyvekK2FyEZy3EJr0C9sU7taP9bu5Ccc/qcN4TJ+/NuZGvzTRYExJ48nNOq4Lbvof0F3qG8Vs/ybiePeSA9ZT4j+f4Rmy4lxqADwy2X7xX4RkmZJA52i+yKhPDzvORxV8uhjMor2RcbhCv2Llf2Fd8pw==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n\ts=arcselector10001;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n\tbh=bfUEidNJqDOLw8EsedCIqa9JHmpMovoNwmz9v4IPc6Y=;\n\tb=aXk5ENOx3C8/yL0BKLsKu0xYAslp7zbF2JS8A9m8+BiSL/noYcsI7/P/7sDso/psjEJqL4Gd6WLLhuK+qPFh0LhErUld/7ofQVYUYaj1nMKDW4byamlBe2Ug6P+gf1GFwjvDGgxA8cFBWEP5RaL1FJzePty6zk/HziCuGVpibK1h9ouofzMTMgrsghBoT/4G4RzlZAeXGzGq+68EmEk2eqZARy53PPwelXPrjsuLH+4BZK73YvrUFpq1DU3G6IDJYBuQkc2cfJr3Cyw360KD2rI+w0yDN04pLjpij9R5tjfmRQ76po/0o8g4FwkVSjyKK53xRJKsen+WK247NRueGQ==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n\tsmtp.mailfrom=cherry.de; dmarc=pass action=none header.from=cherry.de;\n\tdkim=pass header.d=cherry.de; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=cherry.de;\n\ts=selector1; \n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=bfUEidNJqDOLw8EsedCIqa9JHmpMovoNwmz9v4IPc6Y=;\n\tb=P0ekGSZjaKwIM0d325QOgMeHia8MtAq/k2C/4jim3oKR0K9rBtavesjdUJee5wXJV5x5T43gVYcBWIJtjc2ohMwMhHPzobpPL5eO7wAIeAW/ZPQLSR//x3YMgl9koYOTLuXrYSVENc5hiwYF7PfRHZEu3limdtwaxaP1jrSoFiM=","Message-ID":"<db1d9c6f-6a8a-49d5-9b76-b107fbcd60cd@cherry.de>","Date":"Mon, 5 Aug 2024 12:46:24 +0200","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH] utils: checkstyle.py: Warn when no valid Signed-off-by\n\tline is found","To":"Milan Zamazal <mzamazal@redhat.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20240804120656.29935-1-laurent.pinchart@ideasonboard.com>\n\t<87y15bntcb.fsf@redhat.com>","Content-Language":"en-US","From":"Quentin Schulz <quentin.schulz@cherry.de>","In-Reply-To":"<87y15bntcb.fsf@redhat.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-ClientProxiedBy":"BE1P281CA0498.DEUP281.PROD.OUTLOOK.COM\n\t(2603:10a6:b10:7e::28) To AS8PR04MB8897.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:42c::20)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"AS8PR04MB8897:EE_|VE1PR04MB7406:EE_","X-MS-Office365-Filtering-Correlation-Id":"50142d71-dbf0-46dc-a179-08dcb53bdea7","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;ARA:13230040|376014|1800799024|366016;","X-Microsoft-Antispam-Message-Info":"=?utf-8?q?eGhmH/WE8DS1b//1wL01nlb/xBra?=\n\t=?utf-8?q?RGzbxYE+GAoc49g1W0pvW91HSRr+KA95vZ/osXBlq19QOyEi/0gWA0g1?=\n\t=?utf-8?q?yOBlyChafED6zYBPlF++anlb/OWZ+BMwMWmIGprKomJjnv6npLutwd5V?=\n\t=?utf-8?q?aOQMpAshUCTXOjw5WbAx3MNN8/P+tUdos5i41OQ5bhggc5scIyWpwvDg?=\n\t=?utf-8?q?hqe9t4hp5g1kSwbCccfFoGa+heyZFfK8XA6MDpQTqft88IQHAn7mpqUx?=\n\t=?utf-8?q?ssfHA0ZjQqc4JaMxMoBgS17NNC/3QLKVT+BjxIkEugudP09PNEMCLKLO?=\n\t=?utf-8?q?TSqPRVRDnHnPoJmudP5OcAZ9jitWnF1F1HU45/95Dl/3qSl3tG+zgneV?=\n\t=?utf-8?q?roTfGoZVtp7SmU88gqfFmWA4EPPCblR9zsq3MeOXS7LIFOnCPv3gXenv?=\n\t=?utf-8?q?EQpdRcXn0XqhCbF/h8jVx+q+PFkvoDnTbkdTInG0rQo/hz77Q5V4HfWD?=\n\t=?utf-8?q?XpI0ilsEzWlA7hIh96Ip+aIwXYBB/rMMx6u2nseUPyg8oEJPyfLrffZ1?=\n\t=?utf-8?q?YXIbTjgXrBTnMCgm2WhBYA5TbECAIgoA/3+MczHKdbXKZ5gkD9iQjs4S?=\n\t=?utf-8?q?mqzj4ROJ1CRAE/31iM5BwGhUkW9mFgGArFxSA+XXF4ffQsw6hND9zj9h?=\n\t=?utf-8?q?rRdhgvi0LbyxROg/oBi+xlsFXEa4MlXpR+iIPPMIT0qeIvXLk2G2sPb5?=\n\t=?utf-8?q?ijbzYTXS+hR7Rtm2oVcgLGqQD0jYB4f0/eEIqlmLSKOXml9E7TfLYLoa?=\n\t=?utf-8?q?MU+peGYdzNBe+AYgishHZAiPGfE8I498OEZ9qNxjLGxnHNCwMGLVRfrf?=\n\t=?utf-8?q?CRejEtsF6sT2SUkAHe0AAz1PNGeYRBzb6VmG9BtRfIpCdGGZk/o6QMNI?=\n\t=?utf-8?q?7zqTsuFFPIXPLcuKb0ec6XsKYQ01/TVLknwANru9MulYIPTm534DjiQQ?=\n\t=?utf-8?q?6DpkGw4dzIEq9jVhguWw2CFIg6uTcusKuFK7UOgRBS/RfrewxgPK/I1B?=\n\t=?utf-8?q?9ESjkQkTTLIcYcE0rMdgrN33nWhEMB9j5sJhl1fhR+7hS/pRBRcStWli?=\n\t=?utf-8?q?26RzRxcVTO0rBKAkKntesBm4nkBABjtoFfv2h8P3woYJj1vQxRqkyR9+?=\n\t=?utf-8?q?liCnJhT9x8nGtYS7gdjEKhpaelS1aRg6eV+U1aKdd53Ue6iEhO+xzeMJ?=\n\t=?utf-8?q?+xqt8aOJ/+TsDvCHxnTMLecnIAqOKdTTDutf+Me1hykriNk+Pm5Vv17y?=\n\t=?utf-8?q?pPI0YLJEUWGXd+Ce5wZ+sRI9bc1OtQDJ1eBnK4DGOj7Ad8vNI2Jznfxt?=\n\t=?utf-8?q?F5nnmIqLO7lbDudbjRTUYadTYHroRBRdoN5D1mI0KtIFAALSOMOn0+2g?=\n\t=?utf-8?q?W+sJg1Q=3D?=","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:AS8PR04MB8897.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230040)(376014)(1800799024)(366016); DIR:OUT; SFP:1101; ","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?p1gM2ztg2c5RztpV2X0otAvfM?=\n\t=?utf-8?q?bw/ETY2BukoviUdoCYhyIdpYHpUwVW9pc4ZN7gdC1MFwKeTJo0fcr4m+?=\n\t=?utf-8?q?HPykNS6FyzoF8vzSv2cP5Pv5bzr4Wm6hvKqwhUgbPpPHbN98b/8/IRhm?=\n\t=?utf-8?q?HpMNhbVcj7vPwPu6402naa9U8q/PfRKuHCjUBXPHTMzSukgHD4mYaBfU?=\n\t=?utf-8?q?x8sCZAEMj47GkKW6CacO2n0+cTWnQcgwfFv/RaTOsNjd7doxCZ87grWQ?=\n\t=?utf-8?q?CXi+0r35IEcBzC852g7SDfdIfbFzcb33cYMBUUyExv3ukBA7aAR7UvnM?=\n\t=?utf-8?q?XvWerepIMw5zRMrIVc8eTFgz9kzpQo4yzPg/cbLByHtXjxnZmcQ1ILGV?=\n\t=?utf-8?q?r5vTx1ncdrUYYnQy7X09GUXE5cjB0N0E4k/cRz/lThIhJVe9PMMO6U9p?=\n\t=?utf-8?q?0xy7S2dS5H6KSRqbqiA0nBN66bBN7tcZe1L0CN1K2Ngh8QpkCP0M9hGl?=\n\t=?utf-8?q?mob+urz6cMjNKgVjR62li09+s0SGT2EiKGXdgnQBsfXelTcBI/fLNlgK?=\n\t=?utf-8?q?LGQguDp325zyfcretZuhkIVo6ra9daz8QL8KfqUQ5V7kv267EewHyvfJ?=\n\t=?utf-8?q?9oXPR1fdipYeEVBTK72PMkj0Tj506gsKdq/f9uH5GNb6GwblUhejAKtu?=\n\t=?utf-8?q?LQ+z6f29immibIjI53eoqfMSJUesliohqKd90BmyrNRmb79yoSeNG7X9?=\n\t=?utf-8?q?1CGB4CxoWm0FLmlzetHdrv3nXsA9L7p9W4kdGn1Fb/h2G5CUIgrQJMul?=\n\t=?utf-8?q?selbBw6cK5mtdUolyMkdebyKA66uapIG0/5xAxE0cBsNuPZbS8EH2Pro?=\n\t=?utf-8?q?fNB10J59/HxJZfJbL4M91foE9PlswsdUiR+YAmy/VFIUMYoOWSjT9xb5?=\n\t=?utf-8?q?AcFiYamabEpjfLxjTOOkvKnMni/jvsY2VtUKujpXVm7IHvp7sD8N4fUt?=\n\t=?utf-8?q?+zEmMjQRVHPVb2HkDE/px9ZB1J9k4k2Di12THEPnx5ZY6NFhAlm9Rib+?=\n\t=?utf-8?q?v3q7tzkN7tJtL5vUk+I9qsjnC0KWp/LzK7vWNUvoS3OErJJDEpHXKbgJ?=\n\t=?utf-8?q?COUC30j8LMYuhu8ompPguICgNEqi+uMqWwtuNRixEW7zTSMewuuzJzhe?=\n\t=?utf-8?q?P3yOZWIJ3xRWzA7JUkv4nepGNxKBrt1BiNnJY+xkQw7I8UughXGLSeEB?=\n\t=?utf-8?q?rZ3ib+omMA2f55v2pfVliLUQxJzCcGH53+gqDEN9NeM9FM0zjBZvoWT2?=\n\t=?utf-8?q?O+v/vpAT1RYzWLzTU3oCcpH9bl2OZNVON8W/phDXkhrLhT+RaBFg8xTL?=\n\t=?utf-8?q?rnjZJ9I7fyP6g3RhXnzyG8LWSAS3K7rTeaAVRQZJNQGmsS3i6U5zj18o?=\n\t=?utf-8?q?anfvDAbuG7z6lQyjzOpviCkqIUb38X6+3XTdyWQiIJoWtzecuF3MS8Da?=\n\t=?utf-8?q?qgLDWEeSenOI8w4oxbhGnlFcaZVZmENCw0IYYDpbd9l3W8kPNLYQH92Q?=\n\t=?utf-8?q?3PmErvt+Iap4BNSyqJcs8wvxY5SpDSHewT/1s24oiPI8EFNSkwlOnFAo?=\n\t=?utf-8?q?EUbqxkBgcp8nv7gVjuoExD1z2nZ/LB1tIeRGlxpyoyv2yNqw7LqMlZE1?=\n\t=?utf-8?q?1pE9SSOgeKT22Na9+C9CbeWpaGDgf7HeGM040lCmyCJpRwjCzcgHEC29?=\n\t=?utf-8?q?/puZFWMB/yZMBQKUZVRPaQolnANcvVCRd0W9vM0TMaRj7BYn3c=3D?=","X-OriginatorOrg":"cherry.de","X-MS-Exchange-CrossTenant-Network-Message-Id":"50142d71-dbf0-46dc-a179-08dcb53bdea7","X-MS-Exchange-CrossTenant-AuthSource":"AS8PR04MB8897.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"05 Aug 2024 10:46:32.4302\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"5e0e1b52-21b5-4e7b-83bb-514ec460677e","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"UfiA3u8Ub7kFgJMNW7nANreiGZdK8BNiDRayNqBy52cHSTsCQSJqBpujmH0NHGUWNclk0KSJH5wjgL/6JJZptLVce5gUtAhQEJJnoxJMX/U=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"VE1PR04MB7406","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":30587,"web_url":"https://patchwork.libcamera.org/comment/30587/","msgid":"<172285715667.372468.3880469348703575758@ping.linuxembedded.co.uk>","date":"2024-08-05T11:25:56","subject":"Re: [PATCH] utils: checkstyle.py: Warn when no valid Signed-off-by\n\tline is found","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Quentin Schulz (2024-08-05 11:46:24)\n> Hi Milan,\n> \n> On 8/5/24 12:43 PM, Milan Zamazal wrote:\n> > Laurent Pinchart <laurent.pinchart@ideasonboard.com> writes:\n> > \n> >> All commits to libcamera must include a Signed-off-by line, and that\n> >> rule is enforced through git hooks and CI. This however doesn't prevent\n> >> patches from being submitted without an SoB tag, as noticed multiple\n> >> times in the past. Extend the checkstyle.py trailer checker to issue a\n> >> warning when the SoB line is missing to try and improve the situation.\n> >>\n> >> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > \n> > Reviewed-by: Milan Zamazal <mzamazal@redhat.com>\n> > \n> > Now how to check that checkstyle.py has been run before a patch is\n> > submitted. ;-)\n> > \n> \n> b4 can do this (though still on client side).\n> \n> b4 prep --check\n> \n> if you don't run it once before b4 send is called, it'll complain (but \n> not force you to run it).\n> \n> c.f. b4.prep-perpatch-check-cmd in \n> https://b4.docs.kernel.org/en/latest/config.html#contributor-oriented-settings\n\nI always keep the checkstyle hooks as a post-commit hook. I find this the\nbest way (for me) as it will always run while developing, and provide me\nwith fast feedback - but not prevent me from continuing in my work.\n\n'cp ./utils/hooks/post-commit .git/hooks/'\n\nAlways running, all of the time is a great way IMO to know it's been run\nbefore submitting ;-)\n\n--\nKieran","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 24202BE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  5 Aug 2024 11:26:03 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 24F0563369;\n\tMon,  5 Aug 2024 13:26:02 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 647146195D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  5 Aug 2024 13:26:00 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id BA7B21A2;\n\tMon,  5 Aug 2024 13:25:08 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Xjk9aauh\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1722857108;\n\tbh=OXAW9SHGgeY1HVQ1w/gllc3EkH4ye2k8aeQW/lgNoxk=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=Xjk9aauh/5DxnV1e7ABsgRHJCXxOTZA4rxcKnpMn3gXSBkbp8/9iNqkMK/goMYcsh\n\t3TZeRtI1NZc/0wtYRLFhpBXFUB9cEMMwhNy8hJlt1lgFJ/ftEMs4YY9E1d18pNKmFB\n\tRg+fYzwKFXNpkjA4ZYHAvzxCi1+v1zJ/STpxxeLM=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<db1d9c6f-6a8a-49d5-9b76-b107fbcd60cd@cherry.de>","References":"<20240804120656.29935-1-laurent.pinchart@ideasonboard.com>\n\t<87y15bntcb.fsf@redhat.com>\n\t<db1d9c6f-6a8a-49d5-9b76-b107fbcd60cd@cherry.de>","Subject":"Re: [PATCH] utils: checkstyle.py: Warn when no valid Signed-off-by\n\tline is found","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tMilan Zamazal <mzamazal@redhat.com>,\n\tQuentin Schulz <quentin.schulz@cherry.de>","Date":"Mon, 05 Aug 2024 12:25:56 +0100","Message-ID":"<172285715667.372468.3880469348703575758@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":30599,"web_url":"https://patchwork.libcamera.org/comment/30599/","msgid":"<20240805153353.GA2753@pendragon.ideasonboard.com>","date":"2024-08-05T15:33:53","subject":"Re: [PATCH] utils: checkstyle.py: Warn when no valid Signed-off-by\n\tline is found","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Mon, Aug 05, 2024 at 12:25:56PM +0100, Kieran Bingham wrote:\n> Quoting Quentin Schulz (2024-08-05 11:46:24)\n> > On 8/5/24 12:43 PM, Milan Zamazal wrote:\n> > > Laurent Pinchart <laurent.pinchart@ideasonboard.com> writes:\n> > > \n> > >> All commits to libcamera must include a Signed-off-by line, and that\n> > >> rule is enforced through git hooks and CI. This however doesn't prevent\n> > >> patches from being submitted without an SoB tag, as noticed multiple\n> > >> times in the past. Extend the checkstyle.py trailer checker to issue a\n> > >> warning when the SoB line is missing to try and improve the situation.\n> > >>\n> > >> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > > \n> > > Reviewed-by: Milan Zamazal <mzamazal@redhat.com>\n> > > \n> > > Now how to check that checkstyle.py has been run before a patch is\n> > > submitted. ;-)\n> > \n> > b4 can do this (though still on client side).\n> > \n> > b4 prep --check\n> > \n> > if you don't run it once before b4 send is called, it'll complain (but \n> > not force you to run it).\n> > \n> > c.f. b4.prep-perpatch-check-cmd in \n> > https://b4.docs.kernel.org/en/latest/config.html#contributor-oriented-settings\n\nI don't think there are easy ways to enforce client-side tests before\npatches get submitted, without taking over control of the client\nmachine. Making sure the tests can be run easily is my favourite\napproach. checkstyle.py is easy to use, and when set up as a post-commit\nhook, it gets even easier. That's why I try to ensure checkstyle.py will\ncatch most common issues. If a developer submits a patch with an issue\nthat checkstyle.py would have caught, we can tell them to install the\ngit hook.\n\n> I always keep the checkstyle hooks as a post-commit hook. I find this the\n> best way (for me) as it will always run while developing, and provide me\n> with fast feedback - but not prevent me from continuing in my work.\n> \n> 'cp ./utils/hooks/post-commit .git/hooks/'\n> \n> Always running, all of the time is a great way IMO to know it's been run\n> before submitting ;-)","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 8447AC323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  5 Aug 2024 15:34:18 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3853C63381;\n\tMon,  5 Aug 2024 17:34:17 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A57F46195D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  5 Aug 2024 17:34:15 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id D6A7418D;\n\tMon,  5 Aug 2024 17:33:23 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"DAlI1kAO\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1722872004;\n\tbh=j1KHlHQ52Td/CATukV8N4raW7k/cE4nWq3Vm/2tU91Y=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=DAlI1kAOVfPz5Lckb6ljEZdMVQnM35hCgXPk3FncX4zREP+9fxCOWHh/uQL/hJoFR\n\te48b4hqf0iNbCDQ926mabzLqQXdAffVckJgsulA4XiPsSjAGg0zwfwexJKT7CLYWFA\n\tjjU6MLSJt1r8cOD0V1KmMzc8GOD1IVQaztVqLzVY=","Date":"Mon, 5 Aug 2024 18:33:53 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Milan Zamazal <mzamazal@redhat.com>,\n\tQuentin Schulz <quentin.schulz@cherry.de>,\n\tlibcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH] utils: checkstyle.py: Warn when no valid Signed-off-by\n\tline is found","Message-ID":"<20240805153353.GA2753@pendragon.ideasonboard.com>","References":"<20240804120656.29935-1-laurent.pinchart@ideasonboard.com>\n\t<87y15bntcb.fsf@redhat.com>\n\t<db1d9c6f-6a8a-49d5-9b76-b107fbcd60cd@cherry.de>\n\t<172285715667.372468.3880469348703575758@ping.linuxembedded.co.uk>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<172285715667.372468.3880469348703575758@ping.linuxembedded.co.uk>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":30601,"web_url":"https://patchwork.libcamera.org/comment/30601/","msgid":"<172287572520.1687952.8896061255396749798@ping.linuxembedded.co.uk>","date":"2024-08-05T16:35:25","subject":"Re: [PATCH] utils: checkstyle.py: Warn when no valid Signed-off-by\n\tline is found","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Laurent Pinchart (2024-08-04 13:06:56)\n> All commits to libcamera must include a Signed-off-by line, and that\n> rule is enforced through git hooks and CI. This however doesn't prevent\n> patches from being submitted without an SoB tag, as noticed multiple\n> times in the past. Extend the checkstyle.py trailer checker to issue a\n> warning when the SoB line is missing to try and improve the situation.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  utils/checkstyle.py | 8 ++++++++\n>  1 file changed, 8 insertions(+)\n> \n> diff --git a/utils/checkstyle.py b/utils/checkstyle.py\n> index 4185c39ac811..7d480bdf4a2f 100755\n> --- a/utils/checkstyle.py\n> +++ b/utils/checkstyle.py\n> @@ -493,6 +493,8 @@ class TrailersChecker(CommitChecker):\n>      def check(cls, commit, top_level):\n>          issues = []\n>  \n> +        sob_found = False\n> +\n>          for trailer in commit.trailers:\n>              match = TrailersChecker.trailer_regex.fullmatch(trailer)\n>              if not match:\n> @@ -515,6 +517,12 @@ class TrailersChecker(CommitChecker):\n>                  issues.append(CommitIssue(f\"Malformed value '{value}' for commit trailer '{key}'\"))\n>                  continue\n>  \n> +            if key == 'Signed-off-by':\n> +                sob_found = True\n> +\n> +        if not sob_found:\n> +            issues.append(CommitIssue(f\"No valid 'Signed-off-by' trailer found, see Documentation/contributing.rst\"))\n> +\n\nI guess it doesn't make sense to verify that the commiter also has the\nsignoff in this case as it's the development phase rather than the merge\nphase?\n\nBut I guess it does catch / help patch submitters know they have to sign\noff.\n\nI fear that anyone who /would/ be caught by this warning - wouldn't have\nrun checkstyle though.\n\nStill, fine with me if you want to add it:\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n>          return issues\n>  \n>  \n> \n> base-commit: 19bbca3c0b376ba0183f5db53472c8c46cd402b5\n> -- \n> Regards,\n> \n> Laurent Pinchart\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 1233FC323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  5 Aug 2024 16:35:31 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D7F0A63381;\n\tMon,  5 Aug 2024 18:35:29 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1347D6195D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  5 Aug 2024 18:35:28 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 7D71418D;\n\tMon,  5 Aug 2024 18:34:36 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"mU21wW1O\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1722875676;\n\tbh=wnIG0oDgPmSsTrvLUdQ7nGxMEI6EJxc+wDDPC0ybQH4=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=mU21wW1Oyi78NeAYbXG2EcRVreP4j76jbKgnMU77y27Can0CI37hQpWlTJsfJYTsh\n\tQB1D7FQCETtGho42Z6Ad2IlGUBCQ+J4eawaSI2KQcIRbqQarFzdlQLCCEXopLHA46L\n\t77DqGbUiapuM9lkA8SFHsB9N5Q9j+8IPZRXPmXpc=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20240804120656.29935-1-laurent.pinchart@ideasonboard.com>","References":"<20240804120656.29935-1-laurent.pinchart@ideasonboard.com>","Subject":"Re: [PATCH] utils: checkstyle.py: Warn when no valid Signed-off-by\n\tline is found","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 05 Aug 2024 17:35:25 +0100","Message-ID":"<172287572520.1687952.8896061255396749798@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":30602,"web_url":"https://patchwork.libcamera.org/comment/30602/","msgid":"<20240805165327.GA8166@pendragon.ideasonboard.com>","date":"2024-08-05T16:53:27","subject":"Re: [PATCH] utils: checkstyle.py: Warn when no valid Signed-off-by\n\tline is found","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Mon, Aug 05, 2024 at 05:35:25PM +0100, Kieran Bingham wrote:\n> Quoting Laurent Pinchart (2024-08-04 13:06:56)\n> > All commits to libcamera must include a Signed-off-by line, and that\n> > rule is enforced through git hooks and CI. This however doesn't prevent\n> > patches from being submitted without an SoB tag, as noticed multiple\n> > times in the past. Extend the checkstyle.py trailer checker to issue a\n> > warning when the SoB line is missing to try and improve the situation.\n> > \n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> >  utils/checkstyle.py | 8 ++++++++\n> >  1 file changed, 8 insertions(+)\n> > \n> > diff --git a/utils/checkstyle.py b/utils/checkstyle.py\n> > index 4185c39ac811..7d480bdf4a2f 100755\n> > --- a/utils/checkstyle.py\n> > +++ b/utils/checkstyle.py\n> > @@ -493,6 +493,8 @@ class TrailersChecker(CommitChecker):\n> >      def check(cls, commit, top_level):\n> >          issues = []\n> >  \n> > +        sob_found = False\n> > +\n> >          for trailer in commit.trailers:\n> >              match = TrailersChecker.trailer_regex.fullmatch(trailer)\n> >              if not match:\n> > @@ -515,6 +517,12 @@ class TrailersChecker(CommitChecker):\n> >                  issues.append(CommitIssue(f\"Malformed value '{value}' for commit trailer '{key}'\"))\n> >                  continue\n> >  \n> > +            if key == 'Signed-off-by':\n> > +                sob_found = True\n> > +\n> > +        if not sob_found:\n> > +            issues.append(CommitIssue(f\"No valid 'Signed-off-by' trailer found, see Documentation/contributing.rst\"))\n> > +\n> \n> I guess it doesn't make sense to verify that the commiter also has the\n> signoff in this case as it's the development phase rather than the merge\n> phase?\n\nIt's a good point. I'll see if I can submit patches, likely on top.\n\n> But I guess it does catch / help patch submitters know they have to sign\n> off.\n> \n> I fear that anyone who /would/ be caught by this warning - wouldn't have\n> run checkstyle though.\n\nProbably, but at least with this we'l have a proof they haven't, and we\ncan tell them to use checkstyle.py :-)\n\n> Still, fine with me if you want to add it:\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> >          return issues\n> >  \n> >  \n> > \n> > base-commit: 19bbca3c0b376ba0183f5db53472c8c46cd402b5","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 1DCFDBE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  5 Aug 2024 16:53:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 15FA363369;\n\tMon,  5 Aug 2024 18:53:52 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BCE986195D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  5 Aug 2024 18:53:49 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id F3BE718D;\n\tMon,  5 Aug 2024 18:52:57 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"HWdegFAS\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1722876778;\n\tbh=pKj235CIuD0eckBWoDK9ifXdPb5LpGaDBAVEIbzm8Zs=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=HWdegFASpNiWMvzzylX4xAPXEY1HEJgF9qVscAjbyyJmx+xyNdwOvrANW5l67MLW3\n\tHQpWGGvb2+pC9IU3uyd2M9E0s9N4QbE01UTyzhpfWWoEVctdaqorrSCJ+Nvi3K/bd+\n\tKS5IEeAi6CwZvdeYDCacpqLyIxPXSc/B/VZI+EpY=","Date":"Mon, 5 Aug 2024 19:53:27 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH] utils: checkstyle.py: Warn when no valid Signed-off-by\n\tline is found","Message-ID":"<20240805165327.GA8166@pendragon.ideasonboard.com>","References":"<20240804120656.29935-1-laurent.pinchart@ideasonboard.com>\n\t<172287572520.1687952.8896061255396749798@ping.linuxembedded.co.uk>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<172287572520.1687952.8896061255396749798@ping.linuxembedded.co.uk>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]