[{"id":34476,"web_url":"https://patchwork.libcamera.org/comment/34476/","msgid":"<5e2f2ca2-29fa-42ac-9065-4aee6af9f67e@ideasonboard.com>","date":"2025-06-16T14:30:31","subject":"Re: [PATCH v1] utils: gen-version: Fix dirty tree detection with\n\tout-of-source build","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"Hi\n\n2025. 06. 16. 16:24 keltezéssel, Julien Vuillaumier írta:\n> Libcamera, when built for the Yocto distribution, has a spurious\n> `-dirty` suffix in the git version associated to the library.\n> \n> Git version and dirty tree detection are generated at compilation time\n> by the script gen-version.h, that eventually appends the `-dirty`\n> suffix. Dirty detection is done using the `git diff-index` command\n> that requires a prior `git update-index --refresh` to avoid false\n> positive. However the index refresh is currently done only for\n> in-source build.\n> \n> Yocto builder (bitbake) uses out-of-source build. In that context, the\n> false positives come from file timestamp change and hard link creation\n> in the source tree, done by some of the builder tasks.\n> \n> This changes is to have `git update-index --refresh` command executed\n> also in case of out-of-source build, to fix the false dirty\n> detections.\n\nThis is essentially a revert of https://gitlab.freedesktop.org/camera/libcamera/-/commit/10ec09025d6f52f2c1d0ba6b7e6943a603a386d9\n(\"libcamera: skip auto version generation when building for Chromium OS\")\nWhat remains to be seen is how the two can be reconciled.\n\n\nRegards,\nBarnabás Pőcze\n\n\n> \n> Issue can be reproduced with commands:\n> git clone https://git.libcamera.org/libcamera/libcamera.git -b v0.5.1\n> cd libcamera\n> build_dir=$(realpath ../build)\n> src_dir=$(realpath .)\n> ./utils/gen-version.sh \"$build_dir\" \"src_dir\"\n> (0.5.1)\n> touch README.rst\n> ./utils/gen-version.sh \"$build_dir\" \"src_dir\"\n> (0.5.1+dirty (2025-06-06T15:38:15CEST))\n> \n> Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n> ---\n>   utils/gen-version.sh | 5 +----\n>   1 file changed, 1 insertion(+), 4 deletions(-)\n> \n> diff --git a/utils/gen-version.sh b/utils/gen-version.sh\n> index 1b818e9e..3f917ee8 100755\n> --- a/utils/gen-version.sh\n> +++ b/utils/gen-version.sh\n> @@ -38,10 +38,7 @@ fi\n>   \n>   # Append a '-dirty' suffix if the working tree is dirty. Prevent false\n>   # positives due to changed timestamps by running git update-index.\n> -if [ -z \"$build_dir\" ] || (echo \"$build_dir\" | grep -q \"$src_dir\")\n> -then\n> -\tgit update-index --refresh > /dev/null 2>&1\n> -fi\n> +git update-index --refresh > /dev/null 2>&1\n>   git diff-index --quiet HEAD || version=\"$version-dirty ($(date +%Y-%m-%dT%H:%M:%S%Z))\"\n>   \n>   # If a project version is provided, use it to replace the version number.","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 AB6D9C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 16 Jun 2025 14:30:36 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D5CD668DC7;\n\tMon, 16 Jun 2025 16:30:35 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 13B2F68DC0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Jun 2025 16:30:34 +0200 (CEST)","from [192.168.33.16] (185.221.143.107.nat.pool.zt.hu\n\t[185.221.143.107])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 714DB346\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Jun 2025 16:30:22 +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=\"f4O54+Kx\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1750084222;\n\tbh=a64LjUAg1k7uNXVPMBU2QyO8ri5kP479rMNUu5C1ELg=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=f4O54+KxNyELJsW+rTLAvOgo5Xaq0jn9bkkJ9ntOiZ1LmzrOCqDV0aCKG1g/9BvGK\n\tZh8WN9AYHuZ374cmiN0pdXa9BLutqm1AN0UNE12yjJR25r/L5zl7wr+eUJBeLCQuwQ\n\t6uxL9ooKQaPa2CG4IPJOxQt/EN9V4A7JQMuyVDNk=","Message-ID":"<5e2f2ca2-29fa-42ac-9065-4aee6af9f67e@ideasonboard.com>","Date":"Mon, 16 Jun 2025 16:30:31 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v1] utils: gen-version: Fix dirty tree detection with\n\tout-of-source build","To":"libcamera-devel@lists.libcamera.org","References":"<20250616142455.3424226-1-julien.vuillaumier@nxp.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20250616142455.3424226-1-julien.vuillaumier@nxp.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","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":34505,"web_url":"https://patchwork.libcamera.org/comment/34505/","msgid":"<048f65e6-f225-4c1a-91e1-dbbcb346d866@nxp.com>","date":"2025-06-17T09:54:21","subject":"Re: [PATCH v1] utils: gen-version: Fix dirty tree detection with\n\tout-of-source build","submitter":{"id":190,"url":"https://patchwork.libcamera.org/api/people/190/","name":"Julien Vuillaumier","email":"julien.vuillaumier@nxp.com"},"content":"Hi Barnabás,\n\nOn 16/06/2025 16:30, Barnabás Pőcze wrote:\n> 2025. 06. 16. 16:24 keltezéssel, Julien Vuillaumier írta:\n>> Libcamera, when built for the Yocto distribution, has a spurious\n>> `-dirty` suffix in the git version associated to the library.\n>>\n>> Git version and dirty tree detection are generated at compilation time\n>> by the script gen-version.h, that eventually appends the `-dirty`\n>> suffix. Dirty detection is done using the `git diff-index` command\n>> that requires a prior `git update-index --refresh` to avoid false\n>> positive. However the index refresh is currently done only for\n>> in-source build.\n>>\n>> Yocto builder (bitbake) uses out-of-source build. In that context, the\n>> false positives come from file timestamp change and hard link creation\n>> in the source tree, done by some of the builder tasks.\n>>\n>> This changes is to have `git update-index --refresh` command executed\n>> also in case of out-of-source build, to fix the false dirty\n>> detections.\n> \n> This is essentially a revert of \n> https://gitlab.freedesktop.org/camera/libcamera/-/commit/10ec09025d6f52f2c1d0ba6b7e6943a603a386d9\n> (\"libcamera: skip auto version generation when building for Chromium OS\")\n> What remains to be seen is how the two can be reconciled.\n\nThis is correct, that ends up reverting the commit \nhttps://gitlab.freedesktop.org/camera/libcamera/-/commit/10ec09025d6f52f2c1d0ba6b7e6943a603a386d9\n\nIt is unfortunate to have an issue with other distributions to handle \nthat special case. I don't know about Chromium OS build system and if \nthat change is still applicable though. There may also be an option to \ndetect a Chromium OS build by testing an environment variable or such.\n\nThanks,\nJulien\n\n>>\n>> Issue can be reproduced with commands:\n>> git clone \n>> https://git.libcamera.org/libcamera/libcamera.git -b v0.5.1\n>> cd libcamera\n>> build_dir=$(realpath ../build)\n>> src_dir=$(realpath .)\n>> ./utils/gen-version.sh \"$build_dir\" \"src_dir\"\n>> (0.5.1)\n>> touch README.rst\n>> ./utils/gen-version.sh \"$build_dir\" \"src_dir\"\n>> (0.5.1+dirty (2025-06-06T15:38:15CEST))\n>>\n>> Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n>> ---\n>>   utils/gen-version.sh | 5 +----\n>>   1 file changed, 1 insertion(+), 4 deletions(-)\n>>\n>> diff --git a/utils/gen-version.sh b/utils/gen-version.sh\n>> index 1b818e9e..3f917ee8 100755\n>> --- a/utils/gen-version.sh\n>> +++ b/utils/gen-version.sh\n>> @@ -38,10 +38,7 @@ fi\n>>\n>>   # Append a '-dirty' suffix if the working tree is dirty. Prevent false\n>>   # positives due to changed timestamps by running git update-index.\n>> -if [ -z \"$build_dir\" ] || (echo \"$build_dir\" | grep -q \"$src_dir\")\n>> -then\n>> -     git update-index --refresh > /dev/null 2>&1\n>> -fi\n>> +git update-index --refresh > /dev/null 2>&1\n>>   git diff-index --quiet HEAD || version=\"$version-dirty ($(date \n>> +%Y-%m-%dT%H:%M:%S%Z))\"\n>>\n>>   # If a project version is provided, use it to replace the version \n>> number.\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 CB9C8C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 17 Jun 2025 09:54:28 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EFBAA68DC9;\n\tTue, 17 Jun 2025 11:54:27 +0200 (CEST)","from AS8PR03CU001.outbound.protection.outlook.com\n\t(mail-westeuropeazlp170120005.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:c201::5])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0A18B68DB4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 17 Jun 2025 11:54:25 +0200 (CEST)","from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)\n\tby PA4PR04MB7774.eurprd04.prod.outlook.com (2603:10a6:102:cc::18)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.29;\n\tTue, 17 Jun 2025 09:54:24 +0000","from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::eace:e980:28a4:ef8a]) by\n\tAM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::eace:e980:28a4:ef8a%5]) with mapi id 15.20.8835.027;\n\tTue, 17 Jun 2025 09:54:24 +0000"],"Authentication-Results":["lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"IyKwg+oK\";\n\tdkim-atps=neutral","dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=nxp.com;"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n\tb=nzOGySdgypWxo89oNvjY+stHB5zI5Fzv1oedVTX1DuQGkv26koL2CGp8F/3Z8jM4Bltuc8vX80D/kXXnNM1JXPZDPA4juxMnUBUSgj+qYcSd4/k2wTfoOj1z8e5LVfU1QQZvbl0emgqvLLX+P+EXKUfeBJOdMHgOWkzXQC5BwC7sFunxYXg7nX21a7dsRRc2x8D2RMy8KuEGJVKVvYCF16IoHGhoEeLmhVEKYB4d93HIXK4ciDPxyv0UEyaNtUxjdErFRtcdtM9cYgIhw5OOwC/4F2W57uUbYVw/PntsN1e2kdqTsDWYAA6AsVcD6sgPl0ZWjOXZwzOin19LKQI+7w==","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=ui+bo6nC8essE3twOnD11uBi9A6gDg5tSehdCWN+arg=;\n\tb=oqRxz3QP7EbUnBhrh+ULDDgfANQMff2bjvVxuUAAH7zoIeNv5f2Z/qZhfB8mDrIheygL9dMxa8K8BHxJhSsATL482PZOKBCCtRyilIaPGEU6P7syY5uwxDmeUGzU5ZTvs8aZ/7wdQX9Dlry/iAdCYrcB98zFflgiZVFtOTsgb+xQ7ho5SJr3+1GVEUUIo/Xc3PihV7uDdTbsTY3NJ1C98hvgZzaGTjU+R+exBIoMt5eOJ7GBkYLkkVVCbGvJk+7UVHYsYc3TADDsAZSGMnVGu4N+KUnvgOlHCLjquEjSDEiPX94m36ZCwV8kq5YibTMIOHoXp2OC/ujfmeOVAiRymw==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n\tsmtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com;\n\tdkim=pass header.d=nxp.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=ui+bo6nC8essE3twOnD11uBi9A6gDg5tSehdCWN+arg=;\n\tb=IyKwg+oKgGKxCHjDaxpIteRHPfecPhFf/nwvd7GuvWX8finIaBhAtRnmQAt/HgZPAXzQ9BkHpMQaORUcmyn5kXS110VoOHtx6hHcFtcZG7CsamRUi8lwnl2p4H7jHNMMWl/ybG0vamgPnMeNDx6n/SpRDMpphzHTPvl8+n3StQ54YpwKQtn7wEiicPRt0COg5VfnJTjgq6Uji/zxjbFZRJ5X5tpyMMIR4EpZgj6sENKdR6dL6910SDgdTdqLnaxiPwResAJ6u13jUGG8GHxfVxwHXL0zsvtqzAzkq9SjW6ggc2N3CiYEgMFFf47niA3ylyT4K6qkx7EC56AIWH5bYQ==","Message-ID":"<048f65e6-f225-4c1a-91e1-dbbcb346d866@nxp.com>","Date":"Tue, 17 Jun 2025 11:54:21 +0200","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v1] utils: gen-version: Fix dirty tree detection with\n\tout-of-source build","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20250616142455.3424226-1-julien.vuillaumier@nxp.com>\n\t<5e2f2ca2-29fa-42ac-9065-4aee6af9f67e@ideasonboard.com>","Content-Language":"en-US","Cc":"paul.elder@ideasonboard.com","From":"Julien Vuillaumier <julien.vuillaumier@nxp.com>","In-Reply-To":"<5e2f2ca2-29fa-42ac-9065-4aee6af9f67e@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-ClientProxiedBy":"AM0PR02CA0090.eurprd02.prod.outlook.com\n\t(2603:10a6:208:154::31) To AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"AM9PR04MB8147:EE_|PA4PR04MB7774:EE_","X-MS-Office365-Filtering-Correlation-Id":"3711ce88-ca7b-4e09-a373-08ddad84f072","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n\tARA:13230040|366016|1800799024|376014|13003099007; ","X-Microsoft-Antispam-Message-Info":"=?utf-8?q?WUNEODmrFMLPOH9I9yo6wKiFuW17?=\n\t=?utf-8?q?TOedyR0OYnKxiHimJRbYATfgQL9sh1hnJLx4EQKsUMZ7V4PxAZM/txe5?=\n\t=?utf-8?q?7OQwRzUM+h7PTx/wXPXCTconEFU1CZq6aiX25KquGkAUMiQ5rFqWqjNA?=\n\t=?utf-8?q?Z4YEbUYg7S91Lll+uLarTio/WbB1OkCauwsG3D7MdZemahYif4EnKTG+?=\n\t=?utf-8?q?S3ADkuljbsX470pHrEZ8xep5FMAisbE63JubWuGHDYBjQ6r7tVvrhOZ9?=\n\t=?utf-8?q?OIVJgBYr14Nv9G5Bk7VI31ysKLNI3m9E2EmDr7V2V8kirnqglu5BznIS?=\n\t=?utf-8?q?hwpxqxZ2nDceIqkUEhex44VohnzZQCLTNzYwVo5+9hOC+wpj/1p3qNA2?=\n\t=?utf-8?q?lkQmXKjB49waQLyNvBVy2W43XZt8GUIItWLImbIxC3DyE1KeTgFgwBH3?=\n\t=?utf-8?q?1416MFAisMx6/VPWUM1bg/bsyCMeDajOkNSvkFnFr+BCR8nNOVVWcMBY?=\n\t=?utf-8?q?2BSletJRHroH3CDOPXsUz5rSHZbBKfhXdffmSlQ1Ysa77Ruw+Nqw9C4/?=\n\t=?utf-8?q?fz/JPYMM+jpycx6hOSGBFTCy9n+WF07P1OgZJ6iPuoY0fSR2nb1u8Ku/?=\n\t=?utf-8?q?SsiVLHxc8XxLT2hky9gHshpJlL4xQGOGrfB3eP5oP/VDR4Ga/SHp/52O?=\n\t=?utf-8?q?Vs8PrHNy9jnR/AgEeLOyunjINKQRB4r+lVLq0FPHqJ1ZRtsHfFQsLj8p?=\n\t=?utf-8?q?xzGnab1xXhNT1w3Lonfg2nQqjCxVfkcOO4h6gb86bC5uZwwI3w+8sdqV?=\n\t=?utf-8?q?HzdvwKviHndM2kfMGTSIvz+1Ux8cj/mHvGMFl4S6OBzob2xkALevPn94?=\n\t=?utf-8?q?v7o7gQAI5SsMEdONxwzABX4zFyX0WiTrVCpvVyspK2so6aB2MJGXvATm?=\n\t=?utf-8?q?5TIiB1zj/8RFxLpIgxiaS9Cr2wD9qtxYzMJ5K7eAsfKZ5GdnpUi1nOld?=\n\t=?utf-8?q?N3Qh9susuUsoipCyim4VZcvwFvSqNfkYCwoSILe+0CbOM5fTpFF01G8s?=\n\t=?utf-8?q?JAH5W6xoTJepnldb0gpi4RpCETptVyrOTba9eZQoSsbVgroQ1HvPuorE?=\n\t=?utf-8?q?aO32zS7XsY4TGNU7lPJ23/5mFUGuJibRMayCyalWIifjb/jUz5f2nGZC?=\n\t=?utf-8?q?kHvvY8Hag0WiRtzeSXDKTsca3MPCv/gbaZVkby02NGzof69wqNVktbx2?=\n\t=?utf-8?q?ZPTEIDJ5SQNQyTt3ONSAUPVsB7hoa6mGUlOCGoygg7/mzcVoFy27vdtA?=\n\t=?utf-8?q?DbZ7/MiaDOoHzFQeEadgB4KdxcVwSbPqgyVob8LmoVRIxlH73VSXG1VH?=\n\t=?utf-8?q?pJjVD9XgCkfV6FNF415Z1PxBnfWvnLAgCvf3B20QNhvP3tsfjd/js4tp?=\n\t=?utf-8?q?2XBYIq0hGAF2pVWo95cjHV4YBw3W83e/AcNYt+WRlOLxg+/oho7uG1dj?=\n\t=?utf-8?q?2McRNPG0u9Bk0H8=3D?=","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:AM9PR04MB8147.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230040)(366016)(1800799024)(376014)(13003099007); DIR:OUT;\n\tSFP:1101; ","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?anvhFpDeMRgcHPTj3m267MO8+?=\n\t=?utf-8?q?zv6xtdMa1HSloyXR9mTS2KC5ULKWqVkoxbBLXYmrvlMmcdyyVOg2PsyR?=\n\t=?utf-8?q?TBX32K3HbmSOeXu8kZ6lcEXVpzzsANybAqcOLKnp5xN7DyvNn4RIFerr?=\n\t=?utf-8?q?kThhT9HvkFx1EkMHPjnLA+k7ltop6+sQVR0pJZTe5wHr5AGe6LY8wgeN?=\n\t=?utf-8?q?J6sucYaCcBKN3foz8Loq2ZnPkWabpGQw6UshygmBcvwR7i65kdJmdNGw?=\n\t=?utf-8?q?KGic1hPJl0HF/StMR60q3614qAuwCpcDs+E1y/qvlK5gL3FZI6VHHwwE?=\n\t=?utf-8?q?BmA8amNdcZPTL5zwaFBa9JZoRxqJqQ+IwBeDeDbUe8ycMVOvn872lqxZ?=\n\t=?utf-8?q?E7UYbpfBjmZ3QZd8+f1GmHx/0Iza8lyMB1SZREXpvYr7GxBTLu3yi/Fc?=\n\t=?utf-8?q?adlOygbRCGCK9FKDgeCm9iOBxOY98piaOywg6o0q3+VxwODt08dhmPa8?=\n\t=?utf-8?q?GGAFpvBwEvFcpY9j/mAkWF7Lq6GW8I4mGp3VCl67QLZv6EeOIxJ3G2xI?=\n\t=?utf-8?q?B/EDFh90ZI/o/Alt46W0XlbS7dPAXqqTc5D6yV+7FLLxAkZyB34U1Yn1?=\n\t=?utf-8?q?wzcbBne3VBTkY2VXjH7WIIpHsLtKwiT8Oo6ELM9tMlUwUiQ39E7KwZV3?=\n\t=?utf-8?q?bY+qGmoeOhD4rucKAygFjSUsUjLL0k98/REh378zuQCr18WqSWsb2E3o?=\n\t=?utf-8?q?7LDCiFg+i6BoAlJlwcimYkQz9UlQlwg0Uj4krb3XVOLYZzICFq9dOXja?=\n\t=?utf-8?q?lcV29OUlhWZkGFfiC49WIOBRHQm0R2lHKp9XEzdOG+il1D0qVp0Z1Fgm?=\n\t=?utf-8?q?rrgQwrT8GnvFcoqrxtMa4Wio2LnU4ciZKpRmNM/Za2dBxrY1BIvjIzgE?=\n\t=?utf-8?q?mNGet5sot9UEr5D8oGEv++qdz+8EVppxyqcsgvZw+MVQBYGi7jO1TH2x?=\n\t=?utf-8?q?2fwG504U4weOYKLxB3aeeHtejM9L7VFtR0XlOzitQV3XKjWpAiW8wnDj?=\n\t=?utf-8?q?J4EcQpsYVJLCli0FyhfH4TWl8+G8uSNxJMsvhNA2EOaKq0ihfZLAXd8G?=\n\t=?utf-8?q?oFXabo4FeiQcgjMLuuHxMD2q86Ihhf/HkM5ueG15wkWUmP3dTSF3eLDp?=\n\t=?utf-8?q?J+FxwRSksXgyg8/C5e6Os2h4n5+pDUDXH4PHpCv9tbhPU2AiW2WNIevB?=\n\t=?utf-8?q?KdH7eTDx0Jz6dR4uB/yJsDDb+V6RUc3IPL4D5GWJR12Mr78XqHSjhQ7s?=\n\t=?utf-8?q?uLOuxHgRwKxgM1PvmTKFX9FUqjrj55aQPdhe+PB6+Eiuq70SzBuTXubJ?=\n\t=?utf-8?q?tJ2OMeuk3inOuG5GUi2UCfhjdPIRLOYwlz13/+E8arj8hqWx6Y/lEJfu?=\n\t=?utf-8?q?nMAYcwL5VBJeIwVcoB7Wr5iNkUX1JquJhgyme2XkoK6LMGm/SnsqqsaU?=\n\t=?utf-8?q?UGOWgVxYQG1+6793jAd9un1Gv9YxV6PQG4Fi4uV7l53q5kfdx7sZj3LC?=\n\t=?utf-8?q?4+yfeWQ3lleehkuF8w35bpnADHC+Z2NX18aoD3vvV+3x4qBEQGwZEiC7?=\n\t=?utf-8?q?8dPxEOs+b0+k4f5Nztn91vMDe4NrJPk48zy4zo4N6OI4ciwEQrOQ/u4r?=\n\t=?utf-8?q?ezlscsRl8TvAz3BSHG2Z4B0zEWEqXP/+GQmDgCRwg3C4ltb1WStwomey?=\n\t=?utf-8?q?wZywF4w0VmO3zRH4YLJkG5ao2MY6w=3D=3D?=","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"3711ce88-ca7b-4e09-a373-08ddad84f072","X-MS-Exchange-CrossTenant-AuthSource":"AM9PR04MB8147.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"17 Jun 2025 09:54:24.5998\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"D+iqGDZgIxC9CG5E+KBKiwxa0tDZIgxj0X59D4LBv9fOi+ivoLM7rv2gb2G25CxuVyVqBBrK98ItNZ8Q47XyBfQE+I1yoOG9WSsKPQk3RIk=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"PA4PR04MB7774","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":34531,"web_url":"https://patchwork.libcamera.org/comment/34531/","msgid":"<20250618000932.GD22102@pendragon.ideasonboard.com>","date":"2025-06-18T00:09:32","subject":"Re: [PATCH v1] utils: gen-version: Fix dirty tree detection with\n\tout-of-source build","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Julien,\n\nOn Tue, Jun 17, 2025 at 11:54:21AM +0200, Julien Vuillaumier wrote:\n> On 16/06/2025 16:30, Barnabás Pőcze wrote:\n> > 2025. 06. 16. 16:24 keltezéssel, Julien Vuillaumier írta:\n> >> Libcamera, when built for the Yocto distribution, has a spurious\n> >> `-dirty` suffix in the git version associated to the library.\n> >>\n> >> Git version and dirty tree detection are generated at compilation time\n> >> by the script gen-version.h, that eventually appends the `-dirty`\n> >> suffix. Dirty detection is done using the `git diff-index` command\n> >> that requires a prior `git update-index --refresh` to avoid false\n> >> positive. However the index refresh is currently done only for\n> >> in-source build.\n> >>\n> >> Yocto builder (bitbake) uses out-of-source build. In that context, the\n> >> false positives come from file timestamp change and hard link creation\n> >> in the source tree, done by some of the builder tasks.\n\nWhat do you mean by out-of-source builds here ? meson never builds in\nthe source tree, so I'm a bit curious. I'm also curious if anyone else\nhas run into this issue before, as there are quite a few people\ncompiling libcamera in Yocto, and as far as I know the problem has never\nbeen reported.\n\nKieran, is this something you've noticed ?\n\n> >> This changes is to have `git update-index --refresh` command executed\n> >> also in case of out-of-source build, to fix the false dirty\n> >> detections.\n> > \n> > This is essentially a revert of \n> > https://gitlab.freedesktop.org/camera/libcamera/-/commit/10ec09025d6f52f2c1d0ba6b7e6943a603a386d9\n> > (\"libcamera: skip auto version generation when building for Chromium OS\")\n> > What remains to be seen is how the two can be reconciled.\n> \n> This is correct, that ends up reverting the commit \n> https://gitlab.freedesktop.org/camera/libcamera/-/commit/10ec09025d6f52f2c1d0ba6b7e6943a603a386d9\n> \n> It is unfortunate to have an issue with other distributions to handle \n> that special case. I don't know about Chromium OS build system and if \n> that change is still applicable though. There may also be an option to \n> detect a Chromium OS build by testing an environment variable or such.\n> \n> >> Issue can be reproduced with commands:\n> >> git clone \n> >> https://git.libcamera.org/libcamera/libcamera.git -b v0.5.1\n> >> cd libcamera\n> >> build_dir=$(realpath ../build)\n> >> src_dir=$(realpath .)\n> >> ./utils/gen-version.sh \"$build_dir\" \"src_dir\"\n> >> (0.5.1)\n> >> touch README.rst\n> >> ./utils/gen-version.sh \"$build_dir\" \"src_dir\"\n> >> (0.5.1+dirty (2025-06-06T15:38:15CEST))\n> >>\n> >> Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n> >> ---\n> >>   utils/gen-version.sh | 5 +----\n> >>   1 file changed, 1 insertion(+), 4 deletions(-)\n> >>\n> >> diff --git a/utils/gen-version.sh b/utils/gen-version.sh\n> >> index 1b818e9e..3f917ee8 100755\n> >> --- a/utils/gen-version.sh\n> >> +++ b/utils/gen-version.sh\n> >> @@ -38,10 +38,7 @@ fi\n> >>\n> >>   # Append a '-dirty' suffix if the working tree is dirty. Prevent false\n> >>   # positives due to changed timestamps by running git update-index.\n> >> -if [ -z \"$build_dir\" ] || (echo \"$build_dir\" | grep -q \"$src_dir\")\n> >> -then\n> >> -     git update-index --refresh > /dev/null 2>&1\n> >> -fi\n> >> +git update-index --refresh > /dev/null 2>&1\n> >>   git diff-index --quiet HEAD || version=\"$version-dirty ($(date \n> >> +%Y-%m-%dT%H:%M:%S%Z))\"\n> >>\n> >>   # If a project version is provided, use it to replace the version \n> >> number.","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 44E18C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 18 Jun 2025 00:09:51 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6609D68DC7;\n\tWed, 18 Jun 2025 02:09:50 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 886D6614E1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Jun 2025 02:09:48 +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 825A4666;\n\tWed, 18 Jun 2025 02:09:35 +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=\"LOpKh0Ya\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1750205375;\n\tbh=EeVKzMAXCdJSmCQoS29t7OT4tC4ILtroLhOSkANpcEU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=LOpKh0YagOhPuvIoB7R4LMJmZ8DMsQ72HYyi396bJ+3EBcOgTLiqWxCZSMrbmAngm\n\tcW9+mNwcsBvg6HWEaT4ztgmFcy0XvYn93a7f/CG8TJK5rKPacDRaiPzh3zfmPr9vky\n\tVMf+XPBAkPK1K9n4mUqV7LfMZC3aeQcdWVPSHLDQ=","Date":"Wed, 18 Jun 2025 03:09:32 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Julien Vuillaumier <julien.vuillaumier@nxp.com>","Cc":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org, paul.elder@ideasonboard.com, \n\tKieran Bingham <kieran.bingham@ideasonboard.com>","Subject":"Re: [PATCH v1] utils: gen-version: Fix dirty tree detection with\n\tout-of-source build","Message-ID":"<20250618000932.GD22102@pendragon.ideasonboard.com>","References":"<20250616142455.3424226-1-julien.vuillaumier@nxp.com>\n\t<5e2f2ca2-29fa-42ac-9065-4aee6af9f67e@ideasonboard.com>\n\t<048f65e6-f225-4c1a-91e1-dbbcb346d866@nxp.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<048f65e6-f225-4c1a-91e1-dbbcb346d866@nxp.com>","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":34537,"web_url":"https://patchwork.libcamera.org/comment/34537/","msgid":"<e6897558-10a8-42cb-b539-aed805123ac4@nxp.com>","date":"2025-06-18T08:51:06","subject":"Re: [PATCH v1] utils: gen-version: Fix dirty tree detection with\n\tout-of-source build","submitter":{"id":190,"url":"https://patchwork.libcamera.org/api/people/190/","name":"Julien Vuillaumier","email":"julien.vuillaumier@nxp.com"},"content":"Hi Laurent,\n\nOn 18/06/2025 02:09, Laurent Pinchart wrote:\n> Hi Julien,\n> \n> On Tue, Jun 17, 2025 at 11:54:21AM +0200, Julien Vuillaumier wrote:\n>> On 16/06/2025 16:30, Barnabás Pőcze wrote:\n>>> 2025. 06. 16. 16:24 keltezéssel, Julien Vuillaumier írta:\n>>>> Libcamera, when built for the Yocto distribution, has a spurious\n>>>> `-dirty` suffix in the git version associated to the library.\n>>>>\n>>>> Git version and dirty tree detection are generated at compilation time\n>>>> by the script gen-version.h, that eventually appends the `-dirty`\n>>>> suffix. Dirty detection is done using the `git diff-index` command\n>>>> that requires a prior `git update-index --refresh` to avoid false\n>>>> positive. However the index refresh is currently done only for\n>>>> in-source build.\n>>>>\n>>>> Yocto builder (bitbake) uses out-of-source build. In that context, the\n>>>> false positives come from file timestamp change and hard link creation\n>>>> in the source tree, done by some of the builder tasks.\n> \n> What do you mean by out-of-source builds here ? meson never builds in\n> the source tree, so I'm a bit curious. I'm also curious if anyone else\n> has run into this issue before, as there are quite a few people\n> compiling libcamera in Yocto, and as far as I know the problem has never\n> been reported.\n\nBy out-of-source build, I meant the case where the meson build directory \nis not located in the source tree. But I understand that the wording is \nmisleading in that context.\n\nThen `gen-version.sh` script executes the `git update-index --refresh` \ncommand only when the meson build directory is within the source tree.\nThat is not the case with a Yocto build, so that command is not executed.\n\nAs of Yocto 5.2 (Walnascar), 2 kind of operation executed by the builder \nleave the tree out-of-sync, though unchanged:\n- unmatched in-place sed (no replacement done)\n- hard links creation\n\n> \n> Kieran, is this something you've noticed ?\n> \n>>>> This changes is to have `git update-index --refresh` command executed\n>>>> also in case of out-of-source build, to fix the false dirty\n>>>> detections.\n>>>\n>>> This is essentially a revert of\n>>> https://gitlab.freedesktop.org/camera/libcamera/-/commit/10ec09025d6f52f2c1d0ba6b7e6943a603a386d9\n>>> (\"libcamera: skip auto version generation when building for Chromium OS\")\n>>> What remains to be seen is how the two can be reconciled.\n>>\n>> This is correct, that ends up reverting the commit\n>> https://gitlab.freedesktop.org/camera/libcamera/-/commit/10ec09025d6f52f2c1d0ba6b7e6943a603a386d9\n>>\n>> It is unfortunate to have an issue with other distributions to handle\n>> that special case. I don't know about Chromium OS build system and if\n>> that change is still applicable though. There may also be an option to\n>> detect a Chromium OS build by testing an environment variable or such.\n>>\n>>>> Issue can be reproduced with commands:\n>>>> git clone\n>>>> https://git.libcamera.org/libcamera/libcamera.git -b v0.5.1\n>>>> cd libcamera\n>>>> build_dir=$(realpath ../build)\n>>>> src_dir=$(realpath .)\n>>>> ./utils/gen-version.sh \"$build_dir\" \"src_dir\"\n>>>> (0.5.1)\n>>>> touch README.rst\n>>>> ./utils/gen-version.sh \"$build_dir\" \"src_dir\"\n>>>> (0.5.1+dirty (2025-06-06T15:38:15CEST))\n>>>>\n>>>> Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n>>>> ---\n>>>>    utils/gen-version.sh | 5 +----\n>>>>    1 file changed, 1 insertion(+), 4 deletions(-)\n>>>>\n>>>> diff --git a/utils/gen-version.sh b/utils/gen-version.sh\n>>>> index 1b818e9e..3f917ee8 100755\n>>>> --- a/utils/gen-version.sh\n>>>> +++ b/utils/gen-version.sh\n>>>> @@ -38,10 +38,7 @@ fi\n>>>>\n>>>>    # Append a '-dirty' suffix if the working tree is dirty. Prevent false\n>>>>    # positives due to changed timestamps by running git update-index.\n>>>> -if [ -z \"$build_dir\" ] || (echo \"$build_dir\" | grep -q \"$src_dir\")\n>>>> -then\n>>>> -     git update-index --refresh > /dev/null 2>&1\n>>>> -fi\n>>>> +git update-index --refresh > /dev/null 2>&1\n>>>>    git diff-index --quiet HEAD || version=\"$version-dirty ($(date\n>>>> +%Y-%m-%dT%H:%M:%S%Z))\"\n>>>>\n>>>>    # If a project version is provided, use it to replace the version\n>>>> number.\n> \n> --\n> Regards,\n> \n> Laurent Pinchart\n\nThanks,\nJulien","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 B8EC0C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 18 Jun 2025 08:51:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8568E68DC1;\n\tWed, 18 Jun 2025 10:51:13 +0200 (CEST)","from PA4PR04CU001.outbound.protection.outlook.com\n\t(mail-francecentralazlp170130007.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:c20a::7])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E5C6F614E2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Jun 2025 10:51:11 +0200 (CEST)","from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)\n\tby DU2PR04MB8520.eurprd04.prod.outlook.com (2603:10a6:10:2d3::23)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.20;\n\tWed, 18 Jun 2025 08:51:08 +0000","from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::eace:e980:28a4:ef8a]) by\n\tAM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::eace:e980:28a4:ef8a%5]) with mapi id 15.20.8857.016;\n\tWed, 18 Jun 2025 08:51:08 +0000"],"Authentication-Results":["lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"bmxd+MRO\";\n\tdkim-atps=neutral","dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=nxp.com;"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n\tb=Po4xU2SmCSJ7VZNPMQOhRBlha9WBd29DAE9G8N5wxIm/WJxgKUZaTPW4XnFVgWChXy2d/Og00BRUxNicMz0LUZz5mZ1ovRqumoWjBCbC9Wr/XDZEPGcYsJ8KI4XTbe9hvY8hbBEQCR3lSvnCgTZuI4KOLCGQmcZboLhBsQ0pA0g9lsVFytaDqEfB7frdp5nvj+Am+w69h8bRaI72h29h4TLiCe5ZdHDap4ywZxJV1hcPB3ZJogjddM1BOuGanMJNa9AC47H6vwY9baOKTjvlXTqUMDpm7dlT5xhhGCtHeDC7+XWX0gqS4f4p044S0NgUGKfZUIYG0D0/S7utBDMGqA==","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=/Vsjee5CS2HR2f/JVu33pvqsT7Mto6PVIHDG0HB82b8=;\n\tb=XqE7G8jvB62OI0mx1DgUc8cWMLOg2fTbmVrclQQoEcV+9di6Sv+L0AP0gARrIx52B8ZMLGEeZYGm/nzxZNfBUoOhiGEjUSnPYruY/C243szvgMHGkJ762f8wdvzo8l1Mt0oMjgBu1IehOzQKn9RvNk+14lbMZR4iDcXuvkqsHvtS3Y4m+kDZXXLowQUZ3D/mxYB6bcPq2A/K+xX5+h1YSsa7Vip/EY8vPLyn1sCf2IxFz7D/UdL/bn2/+J38TQyKZ5+Qh6PNctrI/iuG1XmcPTxhZhQDe9ovGn1kMh3YEXf/7+4bIMjwDnjZoWe+RbIkScTxPPCiBmS9WVEs/JX+/g==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n\tsmtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com;\n\tdkim=pass header.d=nxp.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=/Vsjee5CS2HR2f/JVu33pvqsT7Mto6PVIHDG0HB82b8=;\n\tb=bmxd+MROjzzXjghN74WVKah/0KsJOkf0PRzm8WkTNmNP2FxYLbKIT8IprH8e59thuZlt+ZZ1q4w93EUXiIr86hxmwzaqi7v0MJyuhpd2aqHS5ByWjvxHiSXxejeS2sIrR6O/xWnDc/f0n70JZ86M0QoizYrN5zhfj6uQG89N6XuoUFpyL9qRFbD7P/3bXNSYjRWg1umbWo63ETvG44QPg6W36Z0U7kfxX7GF/H3Gw1wrpu0r6/ZI8lSegjq5Uo10jGkVrpCb7xFt9f/SqL8n3kvWHqr5QhdLiRgoZJ3Waf09jIUfRxktBYqCaC1MOSHKlFNwzL9Uaa5jvKjFwh4Jdw==","Message-ID":"<e6897558-10a8-42cb-b539-aed805123ac4@nxp.com>","Date":"Wed, 18 Jun 2025 10:51:06 +0200","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v1] utils: gen-version: Fix dirty tree detection with\n\tout-of-source build","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org, paul.elder@ideasonboard.com, \n\tKieran Bingham <kieran.bingham@ideasonboard.com>","References":"<20250616142455.3424226-1-julien.vuillaumier@nxp.com>\n\t<5e2f2ca2-29fa-42ac-9065-4aee6af9f67e@ideasonboard.com>\n\t<048f65e6-f225-4c1a-91e1-dbbcb346d866@nxp.com>\n\t<20250618000932.GD22102@pendragon.ideasonboard.com>","Content-Language":"en-US","From":"Julien Vuillaumier <julien.vuillaumier@nxp.com>","In-Reply-To":"<20250618000932.GD22102@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-ClientProxiedBy":"AS4P189CA0048.EURP189.PROD.OUTLOOK.COM\n\t(2603:10a6:20b:659::12) To AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"AM9PR04MB8147:EE_|DU2PR04MB8520:EE_","X-MS-Office365-Filtering-Correlation-Id":"0c3fd049-6f88-4e8f-fa6d-08ddae454494","X-LD-Processed":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n\tARA:13230040|376014|366016|1800799024|13003099007; ","X-Microsoft-Antispam-Message-Info":"=?utf-8?q?lVgqN1EPV5pN1vn7ES/FQsQFnuRW?=\n\t=?utf-8?q?EQ4qXXIXiSVG2SJNFoLtRGotYXKVC86gRYq6YRQbIHGtLwwIOTtSI1kr?=\n\t=?utf-8?q?ENg8ieX7SecalCDamkGgQPgYS3FQ0tVdDaGf8o9ep+Xo1iqjo1rmlSG6?=\n\t=?utf-8?q?n/ZtUbMbYve7WxUf3utjwqHeXE3HRHrv6vmcqNSCOaCU9i3XYDilClXm?=\n\t=?utf-8?q?V1IyOlygHsO51yPiOBbO8xlei1N3kRaAfDiAPZ3LnRSuCQl4un8OiVmh?=\n\t=?utf-8?q?XqYnvvYW9T6HfMeYFjJEvDY8X7kC0jT4eAOXjl+fp+zehZwlPPIeV1ce?=\n\t=?utf-8?q?Ui0+TDugKAYMCo4yzWD3wT8O+wlRg+GSmNSnQTbXngn4xi7rHLGvR8pX?=\n\t=?utf-8?q?RIo0I8uj5x42zvZRxCRttxvJ7wZhG3dC/3yt8BDzSRcqp6+eEoUik1v1?=\n\t=?utf-8?q?mh6FKwUour3KMCLG+PcubP+cxAfC3PsN2g0I4SxHVJ/9LQmQVnG3Np0/?=\n\t=?utf-8?q?szvPdbA3sGdkk5t9I+WUmilxjyuBuc/UoWtD7nc4BBOMSs1DNhvGr+Dl?=\n\t=?utf-8?q?pq2+4FkGiDutaVFpb1KueISTj9SL7MaMoJ3xAVXH0siEsM0S0df8BNOM?=\n\t=?utf-8?q?mEFJTo+zNjN3DkLLnmX6ZNxgR/4oSyd3KekVxz09SzflbbAAPgWNgEZn?=\n\t=?utf-8?q?M6+eksP0jEjaRXLbJ3i3nvR+TDT3BjrI3IyJXak8s4zpsqr827y/BRZa?=\n\t=?utf-8?q?K8RNNHjqDl/R+zqOrJmM/Ie0mn5gPUzzxUmQ3NJpbswwjYJtxM7TmY14?=\n\t=?utf-8?q?isOhCHr1CXA28E8l4XbDoPe7S6QXrvEU0j/BDlMltAQJhGeQYRwGJnC0?=\n\t=?utf-8?q?/ebqAMg2hGWxy4pgfbsJsgZ6QzJOhH7zoBRwTong/QLaK9ZTMgorAvIt?=\n\t=?utf-8?q?1xvRTsn8QbDs9MFxONmsGjsEY2cJsG9UcrEU9R0Ga1XTz28ZiGm4TK4n?=\n\t=?utf-8?q?iik9b4AX6GY8WIilcjoKVzYNAsz/ZUM5eTtzJs3pzpOFAGA/JyUGQSRN?=\n\t=?utf-8?q?I+DBeOY9UkyCn3uGayIKqyUGXsKWK7kgroyUA6Bs+JOUObYe3hsImVdL?=\n\t=?utf-8?q?wwNoMpEzZSO8cLzo9qtS2TL9nUB5w1Loql4sUsQgklfhNvayRUFa08sP?=\n\t=?utf-8?q?t7bF7Am2z25OI27Nkw1jYnm8Gbx1vJlMCkbYYt6vQYbrCqwMzc0mjAlk?=\n\t=?utf-8?q?1bYxYUBwcYVlIacAw2qd6318MQFh994S3i593ZRgpOMnT9b49oMgbLgG?=\n\t=?utf-8?q?bOXH1UJYLHmRiaQsy+9Z5pHsh2URz6CZBkRWHfpkQg9wrKc0P2Ji94yY?=\n\t=?utf-8?q?AaG9630+fCQ0ondpxOVdXG2fIRhHler1JZfT9NF/pPmK6Y3VFp5d2av+?=\n\t=?utf-8?q?LeVxs5zPCexCSPnu2kBZRVlL9ycsLp7znUJ03mMBN55pFOdu7XJavsac?=\n\t=?utf-8?q?L3E1R1G2kKooHCA=3D?=","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:AM9PR04MB8147.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230040)(376014)(366016)(1800799024)(13003099007); DIR:OUT;\n\tSFP:1101; ","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?xHphQq/0DAwAgbRCT7PQjMzry?=\n\t=?utf-8?q?mMICO5Kv78ZXTN2Zq2aBrWr+vtlqkjeEvcTExy8f63ZZ8JSAR9TZwbmT?=\n\t=?utf-8?q?Gsyw4dbVroE9WzHQZW/EHaWw3VEyNV/HYj6aRtXlvtWjPXvsCtBJ2YeZ?=\n\t=?utf-8?q?b9Vbzd8xCnSoCHquQlA7UvUfvN/Q/sdGcQZAVUxLrkRLp0eI91+yFucM?=\n\t=?utf-8?q?/G2jRq2tb2J2DN9F/AyX3d09OEXtVqaBOz2QVp73g+1DSvJ6V2rxKviM?=\n\t=?utf-8?q?+tW0lv8L9U8ICgArKdhP9bOGwod6BMWWIxq9q2riajH4DODkGzvrUHsP?=\n\t=?utf-8?q?Z0QOCHurDNQTnzKravZqcNU6DoYmBBMCpuX2b/JFzri60Wm5dGMw5zOe?=\n\t=?utf-8?q?JvghLcFu6HuQGqJhqfkJO3QPt1+JaR4/25pKAOuihxto79B8xI4AVjcP?=\n\t=?utf-8?q?CkCdW4LIdEz9EedigMLWGUWv0gK8m1B2Fs8PO+FijekU3nMYofhthhsZ?=\n\t=?utf-8?q?v93+8GDk7MpjrFWyUaJ3WwoEJXinJTAMv5HwGGNar2UTa7ohOFgDQnvq?=\n\t=?utf-8?q?HFCmIANt6pYMiOolezR+I5MrJgEYZ8ldtS/rFZI+UxLLRRF3fU6ZmKLL?=\n\t=?utf-8?q?NtWWYNzeflAEEMJwliLHGBDcddMZ2z9MYtCfQu2RrVHsXex0wmNAxZzS?=\n\t=?utf-8?q?NyzJbaQ/75RwZTvYD4QzUwUCXr61OxNSuQA8Ao+46wgECHJF+qtFAxv9?=\n\t=?utf-8?q?VV7nO2UWef0vi22J6QzVZoTtHr67aukn1zsYn4n+0n1wcY7V2yxq5x2a?=\n\t=?utf-8?q?uup1LMhqcPmm44DknLm/mFGBOeRasH05PnTC8gpIQPGKJ2wT+sPOE0q+?=\n\t=?utf-8?q?XKauj2tnDo5b1WNThLZSTlrqZ4RWuGwmSk/fX4MBUNpLHX2rFJbUObqI?=\n\t=?utf-8?q?nJu5/SWpvWhOYgxj8/cWx1OZXeAn8n30sZPR2VHais8vPjujjRF9dXaO?=\n\t=?utf-8?q?q0ubP+/OBKjhfoQ9AIhp5GdH4vAFok4NPYmqGyvBLxKfrgemONrvdUsh?=\n\t=?utf-8?q?Z2QjDjompSX91Xx9kqYedLIYQiBadjBBxm6JzqEhb2I3UlrdOUYBmn3R?=\n\t=?utf-8?q?m5hIaEs1iQo2qAssCDRznQxGSGnfy5ciJkuBNPgP9k40CDWxOIMQO6Tx?=\n\t=?utf-8?q?DaE9xGJxB5axTs7P68oH9y3tW+f26KQVfCiLc8841ETjIS8prQiCBv3+?=\n\t=?utf-8?q?HBN0JT0hDowJXct34vC/CgZFsWcDkfxOIiHMchXM1fuj8dzBOJvFQm1b?=\n\t=?utf-8?q?QiHkFAr9RpOc6O0jFBnOQp/E+VuMU+SqBk4W0a6dw3d9tsFSxJ919y+z?=\n\t=?utf-8?q?13elGvZSK8p5P/rGeqjuc7JZ1xMBTOxNdLP6JFxoSzh/QHj5CmvdFgf0?=\n\t=?utf-8?q?/AunvNNx1HuHw4UzktPReFb3mXC0gPWl5tWxgMORpcv/pYY6h9DhC3g0?=\n\t=?utf-8?q?QWti1NkzlBOtKCYyXWNP+ph12T0nKTv2w8RKj273YYZrEIb6SxetTTWe?=\n\t=?utf-8?q?7AsJ3BpQD8astgGyy3yBP/Q27YjWuHsee9fC7DZ0Cn9P/ZizsN6INe8W?=\n\t=?utf-8?q?d9u1HQQoPFzv86gCC52bo6JYTW2iAExHph5CvVVUk53jjO1cws8g9o2M?=\n\t=?utf-8?q?1NGp7u4YPJen2pQLf9DuT13Uc+suAjbVH3Y9b3q6tIYaU9mUk+bR5iO/?=\n\t=?utf-8?q?Q4njeF0iJH1Vl6YIqr+6AG6tScuwQ=3D=3D?=","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"0c3fd049-6f88-4e8f-fa6d-08ddae454494","X-MS-Exchange-CrossTenant-AuthSource":"AM9PR04MB8147.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"18 Jun 2025 08:51:08.5550\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"ikpu1IHFawRicqeQPpj1oxZxDTyo7Zxg2v/tGccTWfnCthDqYPY7hixxZ+1CLBFpddts4IB0mDAC3sbwVkoLifwV+D5WOueJwOrDvlkCZUI=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DU2PR04MB8520","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":34538,"web_url":"https://patchwork.libcamera.org/comment/34538/","msgid":"<175023790783.3871677.15975117228438842972@ping.linuxembedded.co.uk>","date":"2025-06-18T09:11:47","subject":"Re: [PATCH v1] utils: gen-version: Fix dirty tree detection with\n\tout-of-source build","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Julien Vuillaumier (2025-06-18 09:51:06)\n> Hi Laurent,\n> \n> On 18/06/2025 02:09, Laurent Pinchart wrote:\n> > Hi Julien,\n> > \n> > On Tue, Jun 17, 2025 at 11:54:21AM +0200, Julien Vuillaumier wrote:\n> >> On 16/06/2025 16:30, Barnabás Pőcze wrote:\n> >>> 2025. 06. 16. 16:24 keltezéssel, Julien Vuillaumier írta:\n> >>>> Libcamera, when built for the Yocto distribution, has a spurious\n> >>>> `-dirty` suffix in the git version associated to the library.\n> >>>>\n> >>>> Git version and dirty tree detection are generated at compilation time\n> >>>> by the script gen-version.h, that eventually appends the `-dirty`\n> >>>> suffix. Dirty detection is done using the `git diff-index` command\n> >>>> that requires a prior `git update-index --refresh` to avoid false\n> >>>> positive. However the index refresh is currently done only for\n> >>>> in-source build.\n> >>>>\n> >>>> Yocto builder (bitbake) uses out-of-source build. In that context, the\n> >>>> false positives come from file timestamp change and hard link creation\n> >>>> in the source tree, done by some of the builder tasks.\n> > \n> > What do you mean by out-of-source builds here ? meson never builds in\n> > the source tree, so I'm a bit curious. I'm also curious if anyone else\n> > has run into this issue before, as there are quite a few people\n> > compiling libcamera in Yocto, and as far as I know the problem has never\n> > been reported.\n> \n> By out-of-source build, I meant the case where the meson build directory \n> is not located in the source tree. But I understand that the wording is \n> misleading in that context.\n> \n> Then `gen-version.sh` script executes the `git update-index --refresh` \n> command only when the meson build directory is within the source tree.\n> That is not the case with a Yocto build, so that command is not executed.\n> \n> As of Yocto 5.2 (Walnascar), 2 kind of operation executed by the builder \n> leave the tree out-of-sync, though unchanged:\n> - unmatched in-place sed (no replacement done)\n> - hard links creation\n\nWe've just updated to Walnascar on our current project - but I haven't\n\"looked\" to see if there's an impact here (and my tree is always dirty\nanyway while I'm developing :D)\n\nI'll see if I can reproduce anything.\n\n--\nKieran\n\n\n> \n> > \n> > Kieran, is this something you've noticed ?\n> > \n> >>>> This changes is to have `git update-index --refresh` command executed\n> >>>> also in case of out-of-source build, to fix the false dirty\n> >>>> detections.\n> >>>\n> >>> This is essentially a revert of\n> >>> https://gitlab.freedesktop.org/camera/libcamera/-/commit/10ec09025d6f52f2c1d0ba6b7e6943a603a386d9\n> >>> (\"libcamera: skip auto version generation when building for Chromium OS\")\n> >>> What remains to be seen is how the two can be reconciled.\n> >>\n> >> This is correct, that ends up reverting the commit\n> >> https://gitlab.freedesktop.org/camera/libcamera/-/commit/10ec09025d6f52f2c1d0ba6b7e6943a603a386d9\n> >>\n> >> It is unfortunate to have an issue with other distributions to handle\n> >> that special case. I don't know about Chromium OS build system and if\n> >> that change is still applicable though. There may also be an option to\n> >> detect a Chromium OS build by testing an environment variable or such.\n> >>\n> >>>> Issue can be reproduced with commands:\n> >>>> git clone\n> >>>> https://git.libcamera.org/libcamera/libcamera.git -b v0.5.1\n> >>>> cd libcamera\n> >>>> build_dir=$(realpath ../build)\n> >>>> src_dir=$(realpath .)\n> >>>> ./utils/gen-version.sh \"$build_dir\" \"src_dir\"\n> >>>> (0.5.1)\n> >>>> touch README.rst\n> >>>> ./utils/gen-version.sh \"$build_dir\" \"src_dir\"\n> >>>> (0.5.1+dirty (2025-06-06T15:38:15CEST))\n> >>>>\n> >>>> Signed-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n> >>>> ---\n> >>>>    utils/gen-version.sh | 5 +----\n> >>>>    1 file changed, 1 insertion(+), 4 deletions(-)\n> >>>>\n> >>>> diff --git a/utils/gen-version.sh b/utils/gen-version.sh\n> >>>> index 1b818e9e..3f917ee8 100755\n> >>>> --- a/utils/gen-version.sh\n> >>>> +++ b/utils/gen-version.sh\n> >>>> @@ -38,10 +38,7 @@ fi\n> >>>>\n> >>>>    # Append a '-dirty' suffix if the working tree is dirty. Prevent false\n> >>>>    # positives due to changed timestamps by running git update-index.\n> >>>> -if [ -z \"$build_dir\" ] || (echo \"$build_dir\" | grep -q \"$src_dir\")\n> >>>> -then\n> >>>> -     git update-index --refresh > /dev/null 2>&1\n> >>>> -fi\n> >>>> +git update-index --refresh > /dev/null 2>&1\n> >>>>    git diff-index --quiet HEAD || version=\"$version-dirty ($(date\n> >>>> +%Y-%m-%dT%H:%M:%S%Z))\"\n> >>>>\n> >>>>    # If a project version is provided, use it to replace the version\n> >>>> number.\n> > \n> > --\n> > Regards,\n> > \n> > Laurent Pinchart\n> \n> Thanks,\n> Julien\n> \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 EB42EBDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 18 Jun 2025 09:11:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D33FD68DCD;\n\tWed, 18 Jun 2025 11:11:52 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 17C24614E2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Jun 2025 11:11:51 +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 CBA97752;\n\tWed, 18 Jun 2025 11:11:37 +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=\"bONZf77i\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1750237897;\n\tbh=9IG5IP0Mw9YK3wQrGHEHzq9VYlrR4V6kgJSAeuDF4kk=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=bONZf77iN6//N749JRu+ZasFNp8ZMgmBnKqD+5VxKUvNtRY5btnq7EL9Dj5EG16VX\n\tbsUPzpeaKU5AdNnm7DO8xL1zOiZQe20jJBIsdOvuZPo7XWvh0bS4WfW4oY3yRsA2pU\n\tMZBz9P/aj4EoC6aFWbrzEIHvnokuzX92h7C0BwWw=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<e6897558-10a8-42cb-b539-aed805123ac4@nxp.com>","References":"<20250616142455.3424226-1-julien.vuillaumier@nxp.com>\n\t<5e2f2ca2-29fa-42ac-9065-4aee6af9f67e@ideasonboard.com>\n\t<048f65e6-f225-4c1a-91e1-dbbcb346d866@nxp.com>\n\t<20250618000932.GD22102@pendragon.ideasonboard.com>\n\t<e6897558-10a8-42cb-b539-aed805123ac4@nxp.com>","Subject":"Re: [PATCH v1] utils: gen-version: Fix dirty tree detection with\n\tout-of-source build","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org, paul.elder@ideasonboard.com","To":"Julien Vuillaumier <julien.vuillaumier@nxp.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>","Date":"Wed, 18 Jun 2025 10:11:47 +0100","Message-ID":"<175023790783.3871677.15975117228438842972@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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>"}}]