[{"id":27052,"web_url":"https://patchwork.libcamera.org/comment/27052/","msgid":"<20230504151017.GL4551@pendragon.ideasonboard.com>","date":"2023-05-04T15:10:17","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nThank you for the patch.\n\nOn Thu, May 04, 2023 at 03:48:00PM +0100, Kieran Bingham via libcamera-devel wrote:\n> Ensure that when we iterate the libcamera libdir we only select shared\n> objects which are expected to be IPA modules, with an ipa_ prefix.\n> \n> Any shared object not matching this filter is ignored and not processed\n> by the IPA Manager.\n> \n> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>\n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nI wonder what this protects against, as there shouldn't be other files\nin this directory, especially if we move IPA modules to an ipa/\nsubdirectory. I don't mind much, as this isn't a hot path, so I have no\nobjection if you want to merge this, but is it useful ?\n\n> ---\n>  src/libcamera/ipa_manager.cpp | 4 ++++\n>  1 file changed, 4 insertions(+)\n> \n> diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp\n> index 030ef43fb994..c0c2f027e902 100644\n> --- a/src/libcamera/ipa_manager.cpp\n> +++ b/src/libcamera/ipa_manager.cpp\n> @@ -206,6 +206,10 @@ void IPAManager::parseDir(const char *libDir, unsigned int maxDepth,\n>  \t\tif (strcmp(&ent->d_name[offset], \".so\"))\n>  \t\t\tcontinue;\n>  \n> +\t\t/* Ignore any modules which are not IPAs. */\n> +\t\tif (strncmp(ent->d_name, \"ipa_\", 4) != 0)\n> +\t\t\tcontinue;\n> +\n>  \t\tfiles.push_back(std::string(libDir) + \"/\" + ent->d_name);\n>  \t}\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 22AD2C0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  4 May 2023 15:10:08 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8A777633B5;\n\tThu,  4 May 2023 17:10:07 +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 BAD11633B1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  4 May 2023 17:10:05 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(133-32-181-51.west.xps.vectant.ne.jp [133.32.181.51])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 6963B6E0;\n\tThu,  4 May 2023 17:10:01 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1683213007;\n\tbh=hw4r7QIKyVaQoRJt1JY5SKuGAd3Yz73PbOh6y04Pqjc=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=lDDT8r9g3xkuqTICM8yrYllKBkX2rVkKvUId8dsUNRNZgN8VWZv2qPEIWj4I4hoAV\n\tFbv9GE/u5HTFlX/McuE9G4wk5pJhJo7z6IrRBTvJS/O06RfvrWrZTCiIIRj5IkTSE1\n\tFtlaHDj7LjK/9hq9X4i2a7X90ZA7LKAUbTxNhrXeEq6I9HtKBC+JklUTXcOnOt+y6n\n\tIYWdTGvNtnJY6NphBuo/3F/Wf2Jj2tk2CJxmTSKKAuuaJP8qRZdSU8aidEwR7Yw4Dl\n\ttUcG6b4j7s1EsNb3SNU9QX+O20xCASJyH7WYfNK8inAoqu10XQPi6vYpYIzqrPnwcX\n\trsMquCWR1IzRQ==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1683213002;\n\tbh=hw4r7QIKyVaQoRJt1JY5SKuGAd3Yz73PbOh6y04Pqjc=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=NqEAEx4PvZLQcPFD5c1AUDMOWtDDMIME74K21dxC5ZXKZuEQXWThrAtz8WikMb4ZG\n\tnMgspZaG1jw48pxG3UsUFtpjnEW3rauvs7EKzQFJgkMVqRf0RGI+D4L7o7ZmckdFsw\n\t/cuoKuEPQxiEJ8Mgsuce8rLeTAYh4tN0/bws7tN8="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"NqEAEx4P\"; dkim-atps=neutral","Date":"Thu, 4 May 2023 18:10:17 +0300","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<20230504151017.GL4551@pendragon.ideasonboard.com>","References":"<20230504144801.2590668-1-kieran.bingham@ideasonboard.com>\n\t<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27063,"web_url":"https://patchwork.libcamera.org/comment/27063/","msgid":"<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>","date":"2023-05-04T19:03:56","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"On 04/05/2023 16:10, Laurent Pinchart wrote:\n> Hi Kieran,\n> \n> Thank you for the patch.\n> \n> On Thu, May 04, 2023 at 03:48:00PM +0100, Kieran Bingham via libcamera-devel wrote:\n>> Ensure that when we iterate the libcamera libdir we only select shared\n>> objects which are expected to be IPA modules, with an ipa_ prefix.\n>>\n>> Any shared object not matching this filter is ignored and not processed\n>> by the IPA Manager.\n>>\n>> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>\n>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> I wonder what this protects against, as there shouldn't be other files\n> in this directory, especially if we move IPA modules to an ipa/\n> subdirectory. I don't mind much, as this isn't a hot path, so I have no\n> objection if you want to merge this, but is it useful ?\n\nOnly that it prevents us trying to load any files that might be there \notherwise.\n\n\n\n[76:32:31.897778214] [2776180] ERROR IPAModule ipa_module.cpp:286 \nfake.so: IPA module is not an ELF file\n[76:32:31.899112311] [2776180] ERROR IPAModule ipa_module.cpp:172 Symbol \nipaModuleInfo not found\n[76:32:31.899119975] [2776180] ERROR IPAModule ipa_module.cpp:292 \nv4l2-compat.so: IPA module has no valid info\n\n\nWe already filter on .so objects, and we do other checks so it's not \ncrucial, and it's not going to prevent any attempt to get \n'non-libcamera' code parsed as anyone dropping a file here could equally \ncall it 'ipa_fake.so' ... so no not really.\n\nI'll drop this and collect 2/2\n\n--\nKieran\n\n\n\n> \n>> ---\n>>   src/libcamera/ipa_manager.cpp | 4 ++++\n>>   1 file changed, 4 insertions(+)\n>>\n>> diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp\n>> index 030ef43fb994..c0c2f027e902 100644\n>> --- a/src/libcamera/ipa_manager.cpp\n>> +++ b/src/libcamera/ipa_manager.cpp\n>> @@ -206,6 +206,10 @@ void IPAManager::parseDir(const char *libDir, unsigned int maxDepth,\n>>   \t\tif (strcmp(&ent->d_name[offset], \".so\"))\n>>   \t\t\tcontinue;\n>>   \n>> +\t\t/* Ignore any modules which are not IPAs. */\n>> +\t\tif (strncmp(ent->d_name, \"ipa_\", 4) != 0)\n>> +\t\t\tcontinue;\n>> +\n>>   \t\tfiles.push_back(std::string(libDir) + \"/\" + ent->d_name);\n>>   \t}\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 719BDBD16B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  4 May 2023 19:03:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BD59D61EAE;\n\tThu,  4 May 2023 21:03:58 +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 7A8AB61EAE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  4 May 2023 21:03:57 +0200 (CEST)","from [192.168.0.32]\n\t(aztw-30-b2-v4wan-166917-cust845.vm26.cable.virginm.net\n\t[82.37.23.78])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CE1E66E0;\n\tThu,  4 May 2023 21:03:53 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1683227038;\n\tbh=62S4AO03WoRDLSWtLmbVuHmkkGoTXSZnnd+kk3oSLmw=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=RQuVVhNrs5j0cPSdqOmc0KDBNq8cJtXQ9hj4gYrItsRfNd5C81igSKM2djqrLvyU+\n\tVpF2pGWZvACDobC6KwtP2g3WwmN5yhok3rWF8UZTwI0bN1/ZA24i/89ZPa+/pp4fg6\n\tijmQO/eCLg9Nxma80xuHEw9yr0gKhzaPLeG8ehjmdqTKGj5NbsfiUfTL69hDr5/Hi5\n\tRId4r9oV4IjIXoeh2c7mNqDslAgpOMbe3pNzm8KfYcPEtCGkvQ2M4RvpLXw+whXISI\n\tMzPBLVWQPyO0IJSylmR7PFjIC+aB84NtrJdCGJM91QK7/Z4wfS0NJiW8xQ3fYvvoXD\n\tEhe2YUzUC7uiw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1683227033;\n\tbh=62S4AO03WoRDLSWtLmbVuHmkkGoTXSZnnd+kk3oSLmw=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=l9v6MXtg5gB+qXePGg4jxxpKQ227DmcfKJOG8TC3D9ak4bU3gFI/sPv3GFEfp+yCa\n\toq+HGkOWEV13M3K436rtOIq5wrPnpc7gD+Ay7bV2wzffp7r9WkR9etdYqZarzMFJOn\n\tgRBa2yWMPQlXFPNGAIEoPjG6wW311wcsyUPzw/ng="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"l9v6MXtg\"; dkim-atps=neutral","Message-ID":"<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>","Date":"Thu, 4 May 2023 20:03:56 +0100","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101\n\tThunderbird/102.10.0","Content-Language":"en-US","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","References":"<20230504144801.2590668-1-kieran.bingham@ideasonboard.com>\n\t<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<20230504151017.GL4551@pendragon.ideasonboard.com>","In-Reply-To":"<20230504151017.GL4551@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","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>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27697,"web_url":"https://patchwork.libcamera.org/comment/27697/","msgid":"<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>","date":"2023-08-28T12:28:37","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Kieran Bingham (2023-05-04 20:03:56)\n> On 04/05/2023 16:10, Laurent Pinchart wrote:\n> > Hi Kieran,\n> > \n> > Thank you for the patch.\n> > \n> > On Thu, May 04, 2023 at 03:48:00PM +0100, Kieran Bingham via libcamera-devel wrote:\n> >> Ensure that when we iterate the libcamera libdir we only select shared\n> >> objects which are expected to be IPA modules, with an ipa_ prefix.\n> >>\n> >> Any shared object not matching this filter is ignored and not processed\n> >> by the IPA Manager.\n> >>\n> >> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>\n> >> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > \n> > I wonder what this protects against, as there shouldn't be other files\n> > in this directory, especially if we move IPA modules to an ipa/\n> > subdirectory. I don't mind much, as this isn't a hot path, so I have no\n> > objection if you want to merge this, but is it useful ?\n> \n> Only that it prevents us trying to load any files that might be there \n> otherwise.\n> \n> \n> \n> [76:32:31.897778214] [2776180] ERROR IPAModule ipa_module.cpp:286 \n> fake.so: IPA module is not an ELF file\n> [76:32:31.899112311] [2776180] ERROR IPAModule ipa_module.cpp:172 Symbol \n> ipaModuleInfo not found\n> [76:32:31.899119975] [2776180] ERROR IPAModule ipa_module.cpp:292 \n> v4l2-compat.so: IPA module has no valid info\n> \n> \n> We already filter on .so objects, and we do other checks so it's not \n> crucial, and it's not going to prevent any attempt to get \n> 'non-libcamera' code parsed as anyone dropping a file here could equally \n> call it 'ipa_fake.so' ... so no not really.\n> \n> I'll drop this and collect 2/2\n\nI've started seeing various logs that report similar to:\n```\n$ wireplumber \n[12:34:30.015061894] [206341] ERROR IPAModule ipa_module.cpp:172 Symbol ipaModuleInfo not found\n[12:34:30.015085339] [206341] ERROR IPAModule ipa_module.cpp:292 v4l2-compat.so: IPA module has no valid info\n[12:34:30.015125806] [206341]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0\n```\n\nI believe this is because some distributions are probably overriding the\ninstallation path of the v4l2-compat.so.\n\nAnyway, that makes me think that we /should/ ignore files that are not\nprefixed by ipa_ ...\n\n\n--\nKieran\n\n\n> \n> --\n> Kieran\n> \n> \n> \n> > \n> >> ---\n> >>   src/libcamera/ipa_manager.cpp | 4 ++++\n> >>   1 file changed, 4 insertions(+)\n> >>\n> >> diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp\n> >> index 030ef43fb994..c0c2f027e902 100644\n> >> --- a/src/libcamera/ipa_manager.cpp\n> >> +++ b/src/libcamera/ipa_manager.cpp\n> >> @@ -206,6 +206,10 @@ void IPAManager::parseDir(const char *libDir, unsigned int maxDepth,\n> >>              if (strcmp(&ent->d_name[offset], \".so\"))\n> >>                      continue;\n> >>   \n> >> +            /* Ignore any modules which are not IPAs. */\n> >> +            if (strncmp(ent->d_name, \"ipa_\", 4) != 0)\n> >> +                    continue;\n> >> +\n> >>              files.push_back(std::string(libDir) + \"/\" + ent->d_name);\n> >>      }\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 88E29BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 28 Aug 2023 12:28:42 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B163C627E0;\n\tMon, 28 Aug 2023 14:28:41 +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 C23A360375\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 28 Aug 2023 14:28:39 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(aztw-30-b2-v4wan-166917-cust845.vm26.cable.virginm.net\n\t[82.37.23.78])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 745C9814;\n\tMon, 28 Aug 2023 14:27:18 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1693225721;\n\tbh=YZdpYFKa0Z+KwT6WjVboW0BqT+FF9PW7I8gVV2gSLAs=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=R1u2xhng+pOHL+ex31u1JiOCxgzb9uMVpouz2DtXAtm+EHj62pSslE4rlM3BBdCX5\n\ttdAjnQeP9zihEsj1WaNLjp0rwQpjE6VaWTSC170kch49kETx3ju9qGXDFIQVH2BVLL\n\t48PjFEsNcrhn7bx4Z2a2gTlAqsSGBiGxY4Y8FNJb6gvylqddJsIoMTNjjimdBSlBsG\n\th8t7H0Uzf5BCZTM+OO3vZJ2/3cAvuVWlbE8TVn8imN1EI8xBKwE0L8FRwQgHY4jcdh\n\tEbEwIbzf509YRAqlBijhhKThwopdclziTjFJIVAo1NfvNuJwUAYM8Ezf3isUJl+dzZ\n\tSMsS21n6IoOXw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1693225638;\n\tbh=YZdpYFKa0Z+KwT6WjVboW0BqT+FF9PW7I8gVV2gSLAs=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=MRAmJQh0Vfj1JBbnn+UoPJEXvFTY69zVsrIySvOLD3ce78lLD2D2E9IpJXa+wnF8w\n\t1kiIpPmpyKNbHFiKfYWsG6caUCw/IktyQhYgDEp0oXmSJA5I/DLQxCQJHeXR9IIJR8\n\tucyq5p0W5U4aW7Uj3UmR6NZBP8nzhdt2yj0ZiBGs="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"MRAmJQh0\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>","References":"<20230504144801.2590668-1-kieran.bingham@ideasonboard.com>\n\t<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<20230504151017.GL4551@pendragon.ideasonboard.com>\n\t<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Date":"Mon, 28 Aug 2023 13:28:37 +0100","Message-ID":"<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","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>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27699,"web_url":"https://patchwork.libcamera.org/comment/27699/","msgid":"<20230828191313.GS14596@pendragon.ideasonboard.com>","date":"2023-08-28T19:13:13","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Mon, Aug 28, 2023 at 01:28:37PM +0100, Kieran Bingham wrote:\n> Quoting Kieran Bingham (2023-05-04 20:03:56)\n> > On 04/05/2023 16:10, Laurent Pinchart wrote:\n> > > On Thu, May 04, 2023 at 03:48:00PM +0100, Kieran Bingham via libcamera-devel wrote:\n> > >> Ensure that when we iterate the libcamera libdir we only select shared\n> > >> objects which are expected to be IPA modules, with an ipa_ prefix.\n> > >>\n> > >> Any shared object not matching this filter is ignored and not processed\n> > >> by the IPA Manager.\n> > >>\n> > >> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>\n> > >> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > \n> > > I wonder what this protects against, as there shouldn't be other files\n> > > in this directory, especially if we move IPA modules to an ipa/\n> > > subdirectory. I don't mind much, as this isn't a hot path, so I have no\n> > > objection if you want to merge this, but is it useful ?\n> > \n> > Only that it prevents us trying to load any files that might be there \n> > otherwise.\n> > \n> > \n> > [76:32:31.897778214] [2776180] ERROR IPAModule ipa_module.cpp:286 \n> > fake.so: IPA module is not an ELF file\n> > [76:32:31.899112311] [2776180] ERROR IPAModule ipa_module.cpp:172 Symbol \n> > ipaModuleInfo not found\n> > [76:32:31.899119975] [2776180] ERROR IPAModule ipa_module.cpp:292 \n> > v4l2-compat.so: IPA module has no valid info\n> > \n> > \n> > We already filter on .so objects, and we do other checks so it's not \n> > crucial, and it's not going to prevent any attempt to get \n> > 'non-libcamera' code parsed as anyone dropping a file here could equally \n> > call it 'ipa_fake.so' ... so no not really.\n> > \n> > I'll drop this and collect 2/2\n> \n> I've started seeing various logs that report similar to:\n> ```\n> $ wireplumber \n> [12:34:30.015061894] [206341] ERROR IPAModule ipa_module.cpp:172 Symbol ipaModuleInfo not found\n> [12:34:30.015085339] [206341] ERROR IPAModule ipa_module.cpp:292 v4l2-compat.so: IPA module has no valid info\n> [12:34:30.015125806] [206341]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0\n> ```\n> \n> I believe this is because some distributions are probably overriding the\n> installation path of the v4l2-compat.so.\n> \n> Anyway, that makes me think that we /should/ ignore files that are not\n> prefixed by ipa_ ...\n\nOr move IPA modules to an ipa/ subdirectory ?\n\n> > >> ---\n> > >>   src/libcamera/ipa_manager.cpp | 4 ++++\n> > >>   1 file changed, 4 insertions(+)\n> > >>\n> > >> diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp\n> > >> index 030ef43fb994..c0c2f027e902 100644\n> > >> --- a/src/libcamera/ipa_manager.cpp\n> > >> +++ b/src/libcamera/ipa_manager.cpp\n> > >> @@ -206,6 +206,10 @@ void IPAManager::parseDir(const char *libDir, unsigned int maxDepth,\n> > >>              if (strcmp(&ent->d_name[offset], \".so\"))\n> > >>                      continue;\n> > >>   \n> > >> +            /* Ignore any modules which are not IPAs. */\n> > >> +            if (strncmp(ent->d_name, \"ipa_\", 4) != 0)\n> > >> +                    continue;\n> > >> +\n> > >>              files.push_back(std::string(libDir) + \"/\" + ent->d_name);\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 99831C0F1B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 28 Aug 2023 19:13:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D07B0627E0;\n\tMon, 28 Aug 2023 21:13:05 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1164160375\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 28 Aug 2023 21:13:04 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(117.145-247-81.adsl-dyn.isp.belgacom.be [81.247.145.117])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8609FE51;\n\tMon, 28 Aug 2023 21:11:42 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1693249985;\n\tbh=n6EZrGGb+vPHLHNsQQCWFqVCZ2ztJ05LcBKz3hsZL7E=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=nLn2e8/ShkXXGUpYu0SUJg8F0hDVhEEB/Hf9DHdD6/wEO8sH/Sehwkaqj+50HFMkM\n\ttqLi1u+ZuTLDEEBG6Yww9Q8Fw2/+RNyAivP6hL/Yyx01ZQLGBLx2j4aDWAmIQtWNiQ\n\tSYaa80J2EWJTOux1n/MVrGoVUVdvHvkj72CTKtHLiqTnBF1h6rwJ439LLjrsfOSaSB\n\tUML52+6DTt2aBcRah6ZNxqy/aA3d3XixdjiQh0TtoJs/ZetsD0nBj138u/G/bFe3So\n\tU3NXBuaGpOYCgbFtng7DuNaTTuZfrN/JCEyI4WvyUjJu7Jf8KVRnx3DdE6wt2Q0/PR\n\tKWgry5JO4ra9w==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1693249902;\n\tbh=n6EZrGGb+vPHLHNsQQCWFqVCZ2ztJ05LcBKz3hsZL7E=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=A/fnzuMBF5V53G1/9jwSi2nGnhs9sOw5fWY7IHG81m6eKjQkcF/XS0kxeeybgT2O/\n\tY28Jxv49cYs4CLmvwTBxZ1Yv4x+Mda/x1Nmea0v3CE9Oyamv+fug7IWpEeIAzQtoSj\n\tN/eik1/WqCowi3BG7qViK+bBSHUkjzSFGi68JG/E="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"A/fnzuMB\"; dkim-atps=neutral","Date":"Mon, 28 Aug 2023 22:13:13 +0300","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<20230828191313.GS14596@pendragon.ideasonboard.com>","References":"<20230504144801.2590668-1-kieran.bingham@ideasonboard.com>\n\t<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<20230504151017.GL4551@pendragon.ideasonboard.com>\n\t<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>\n\t<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":33337,"web_url":"https://patchwork.libcamera.org/comment/33337/","msgid":"<173935332755.2010433.4474690746700393191@ping.linuxembedded.co.uk>","date":"2025-02-12T09:42:07","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Laurent Pinchart (2023-08-28 20:13:13)\n> On Mon, Aug 28, 2023 at 01:28:37PM +0100, Kieran Bingham wrote:\n> > Quoting Kieran Bingham (2023-05-04 20:03:56)\n> > > On 04/05/2023 16:10, Laurent Pinchart wrote:\n> > > > On Thu, May 04, 2023 at 03:48:00PM +0100, Kieran Bingham via libcamera-devel wrote:\n> > > >> Ensure that when we iterate the libcamera libdir we only select shared\n> > > >> objects which are expected to be IPA modules, with an ipa_ prefix.\n> > > >>\n> > > >> Any shared object not matching this filter is ignored and not processed\n> > > >> by the IPA Manager.\n> > > >>\n> > > >> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>\n> > > >> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > > \n> > > > I wonder what this protects against, as there shouldn't be other files\n> > > > in this directory, especially if we move IPA modules to an ipa/\n> > > > subdirectory. I don't mind much, as this isn't a hot path, so I have no\n> > > > objection if you want to merge this, but is it useful ?\n> > > \n> > > Only that it prevents us trying to load any files that might be there \n> > > otherwise.\n> > > \n> > > \n> > > [76:32:31.897778214] [2776180] ERROR IPAModule ipa_module.cpp:286 \n> > > fake.so: IPA module is not an ELF file\n> > > [76:32:31.899112311] [2776180] ERROR IPAModule ipa_module.cpp:172 Symbol \n> > > ipaModuleInfo not found\n> > > [76:32:31.899119975] [2776180] ERROR IPAModule ipa_module.cpp:292 \n> > > v4l2-compat.so: IPA module has no valid info\n> > > \n> > > \n> > > We already filter on .so objects, and we do other checks so it's not \n> > > crucial, and it's not going to prevent any attempt to get \n> > > 'non-libcamera' code parsed as anyone dropping a file here could equally \n> > > call it 'ipa_fake.so' ... so no not really.\n> > > \n> > > I'll drop this and collect 2/2\n> > \n> > I've started seeing various logs that report similar to:\n> > ```\n> > $ wireplumber \n> > [12:34:30.015061894] [206341] ERROR IPAModule ipa_module.cpp:172 Symbol ipaModuleInfo not found\n> > [12:34:30.015085339] [206341] ERROR IPAModule ipa_module.cpp:292 v4l2-compat.so: IPA module has no valid info\n> > [12:34:30.015125806] [206341]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0\n> > ```\n> > \n> > I believe this is because some distributions are probably overriding the\n> > installation path of the v4l2-compat.so.\n> > \n> > Anyway, that makes me think that we /should/ ignore files that are not\n> > prefixed by ipa_ ...\n> \n> Or move IPA modules to an ipa/ subdirectory ?\n\nAnd I've just seen this in some logs from a raspberry pi issue:\n\n```\n  (AGS_311_venv) @AGS-RPI-0004:~$ libcamera-hello\n  [0:01:23.242753930] [811] ERROR IPAModule ipa_module.cpp:171 Symbol ipaModuleInfo not found\n  [0:01:23.242802797] [811] ERROR IPAModule ipa_module.cpp:291 v4l2-compat.so: IPA module has\n  no valid info\n  [0:01:23.242827435] [811]  INFO Camera camera_manager.cpp:327 libcamera v0.4.0+51-ca36c77f\n```\n\nSo I think it's time to move the IPA modules to a subdirectory. I like\nthat better than arbitrary filtering of the name.\n--\nKieran\n\n> \n> > > >> ---\n> > > >>   src/libcamera/ipa_manager.cpp | 4 ++++\n> > > >>   1 file changed, 4 insertions(+)\n> > > >>\n> > > >> diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp\n> > > >> index 030ef43fb994..c0c2f027e902 100644\n> > > >> --- a/src/libcamera/ipa_manager.cpp\n> > > >> +++ b/src/libcamera/ipa_manager.cpp\n> > > >> @@ -206,6 +206,10 @@ void IPAManager::parseDir(const char *libDir, unsigned int maxDepth,\n> > > >>              if (strcmp(&ent->d_name[offset], \".so\"))\n> > > >>                      continue;\n> > > >>   \n> > > >> +            /* Ignore any modules which are not IPAs. */\n> > > >> +            if (strncmp(ent->d_name, \"ipa_\", 4) != 0)\n> > > >> +                    continue;\n> > > >> +\n> > > >>              files.push_back(std::string(libDir) + \"/\" + ent->d_name);\n> > > >>      }\n> > > >>   \n> \n> -- \n> Regards,\n> \n> Laurent Pinchart","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 979F5C3301\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 12 Feb 2025 09:42:13 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9C54C6862C;\n\tWed, 12 Feb 2025 10:42:12 +0100 (CET)","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 7572861864\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 12 Feb 2025 10:42:10 +0100 (CET)","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 969E6455;\n\tWed, 12 Feb 2025 10:40:52 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"oWAlGo5y\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1739353252;\n\tbh=Y3QHH++rA3vrEfFpLlAbcKAJnnWCCbaXIUo1bu7Ymd4=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=oWAlGo5ySRfd2O4ESAmhJnQ29etFY+nWZi7zjOXRqYAnWaJhtu6JDu8ynwPg6z9Fe\n\tFLKtsv47JbmrEGfXBD0FtpYTl1QCxH3oGOk+zm/BS3pwYgnKNa1JUMBHTw71qu63PA\n\t/EP/ro58AxmcbDEc/xcfgMYfIKA5eEZ3b4o3zBiQ=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20230828191313.GS14596@pendragon.ideasonboard.com>","References":"<20230504144801.2590668-1-kieran.bingham@ideasonboard.com>\n\t<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<20230504151017.GL4551@pendragon.ideasonboard.com>\n\t<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>\n\t<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>\n\t<20230828191313.GS14596@pendragon.ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Date":"Wed, 12 Feb 2025 09:42:07 +0000","Message-ID":"<173935332755.2010433.4474690746700393191@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":33345,"web_url":"https://patchwork.libcamera.org/comment/33345/","msgid":"<20250213170126.GA1980@pendragon.ideasonboard.com>","date":"2025-02-13T17:01:26","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Wed, Feb 12, 2025 at 09:42:07AM +0000, Kieran Bingham wrote:\n> Quoting Laurent Pinchart (2023-08-28 20:13:13)\n> > On Mon, Aug 28, 2023 at 01:28:37PM +0100, Kieran Bingham wrote:\n> > > Quoting Kieran Bingham (2023-05-04 20:03:56)\n> > > > On 04/05/2023 16:10, Laurent Pinchart wrote:\n> > > > > On Thu, May 04, 2023 at 03:48:00PM +0100, Kieran Bingham via libcamera-devel wrote:\n> > > > >> Ensure that when we iterate the libcamera libdir we only select shared\n> > > > >> objects which are expected to be IPA modules, with an ipa_ prefix.\n> > > > >>\n> > > > >> Any shared object not matching this filter is ignored and not processed\n> > > > >> by the IPA Manager.\n> > > > >>\n> > > > >> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>\n> > > > >> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > > > \n> > > > > I wonder what this protects against, as there shouldn't be other files\n> > > > > in this directory, especially if we move IPA modules to an ipa/\n> > > > > subdirectory. I don't mind much, as this isn't a hot path, so I have no\n> > > > > objection if you want to merge this, but is it useful ?\n> > > > \n> > > > Only that it prevents us trying to load any files that might be there \n> > > > otherwise.\n> > > > \n> > > > \n> > > > [76:32:31.897778214] [2776180] ERROR IPAModule ipa_module.cpp:286 \n> > > > fake.so: IPA module is not an ELF file\n> > > > [76:32:31.899112311] [2776180] ERROR IPAModule ipa_module.cpp:172 Symbol \n> > > > ipaModuleInfo not found\n> > > > [76:32:31.899119975] [2776180] ERROR IPAModule ipa_module.cpp:292 \n> > > > v4l2-compat.so: IPA module has no valid info\n> > > > \n> > > > \n> > > > We already filter on .so objects, and we do other checks so it's not \n> > > > crucial, and it's not going to prevent any attempt to get \n> > > > 'non-libcamera' code parsed as anyone dropping a file here could equally \n> > > > call it 'ipa_fake.so' ... so no not really.\n> > > > \n> > > > I'll drop this and collect 2/2\n> > > \n> > > I've started seeing various logs that report similar to:\n> > > ```\n> > > $ wireplumber \n> > > [12:34:30.015061894] [206341] ERROR IPAModule ipa_module.cpp:172 Symbol ipaModuleInfo not found\n> > > [12:34:30.015085339] [206341] ERROR IPAModule ipa_module.cpp:292 v4l2-compat.so: IPA module has no valid info\n> > > [12:34:30.015125806] [206341]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0\n> > > ```\n> > > \n> > > I believe this is because some distributions are probably overriding the\n> > > installation path of the v4l2-compat.so.\n> > > \n> > > Anyway, that makes me think that we /should/ ignore files that are not\n> > > prefixed by ipa_ ...\n> > \n> > Or move IPA modules to an ipa/ subdirectory ?\n> \n> And I've just seen this in some logs from a raspberry pi issue:\n> \n> ```\n>   (AGS_311_venv) @AGS-RPI-0004:~$ libcamera-hello\n>   [0:01:23.242753930] [811] ERROR IPAModule ipa_module.cpp:171 Symbol ipaModuleInfo not found\n>   [0:01:23.242802797] [811] ERROR IPAModule ipa_module.cpp:291 v4l2-compat.so: IPA module has\n>   no valid info\n>   [0:01:23.242827435] [811]  INFO Camera camera_manager.cpp:327 libcamera v0.4.0+51-ca36c77f\n> ```\n> \n> So I think it's time to move the IPA modules to a subdirectory. I like\n> that better than arbitrary filtering of the name.\n\nIt's really a distribution issue, by default IPA modules go to (on an\nArm64 system) /usr/local/lib64 (and only IPA modules are installed\nthere), and v4l2-compat.so go to /usr/local/libexec/libcamera/. We can\ncreate a subdirectory for IPA modules, but will distributions then\ndecide to install v4l2-compat.so there ? :-)\n\n> > > > >> ---\n> > > > >>   src/libcamera/ipa_manager.cpp | 4 ++++\n> > > > >>   1 file changed, 4 insertions(+)\n> > > > >>\n> > > > >> diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp\n> > > > >> index 030ef43fb994..c0c2f027e902 100644\n> > > > >> --- a/src/libcamera/ipa_manager.cpp\n> > > > >> +++ b/src/libcamera/ipa_manager.cpp\n> > > > >> @@ -206,6 +206,10 @@ void IPAManager::parseDir(const char *libDir, unsigned int maxDepth,\n> > > > >>              if (strcmp(&ent->d_name[offset], \".so\"))\n> > > > >>                      continue;\n> > > > >>   \n> > > > >> +            /* Ignore any modules which are not IPAs. */\n> > > > >> +            if (strncmp(ent->d_name, \"ipa_\", 4) != 0)\n> > > > >> +                    continue;\n> > > > >> +\n> > > > >>              files.push_back(std::string(libDir) + \"/\" + ent->d_name);\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 B94BCBD7D8\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 13 Feb 2025 17:01:39 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6B0E068638;\n\tThu, 13 Feb 2025 18:01:39 +0100 (CET)","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 776356185F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 13 Feb 2025 18:01:37 +0100 (CET)","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 BE97F594;\n\tThu, 13 Feb 2025 18:00:18 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"ffA2ODYq\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1739466019;\n\tbh=QMaGeENYMweJwGo5gCh4qFKxYU3uH63CxpUlCz0aVzI=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=ffA2ODYqB8iNKZUBXPEBfkr40D0U82jZm1703gBJr1GcTR995Z3efa62YOsEyItbU\n\tA7mV7qTiVKUJky4hrU592LrOQmb1w1JwSdcj1mpMV6Gwqu4K4Tn8zJetnqsHMc/LmZ\n\t3OsaitFXXbkQkZg1UDpkyMEx61mHGA0ealr7E6JY=","Date":"Thu, 13 Feb 2025 19:01:26 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","Message-ID":"<20250213170126.GA1980@pendragon.ideasonboard.com>","References":"<20230504144801.2590668-1-kieran.bingham@ideasonboard.com>\n\t<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<20230504151017.GL4551@pendragon.ideasonboard.com>\n\t<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>\n\t<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>\n\t<20230828191313.GS14596@pendragon.ideasonboard.com>\n\t<173935332755.2010433.4474690746700393191@ping.linuxembedded.co.uk>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<173935332755.2010433.4474690746700393191@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":33346,"web_url":"https://patchwork.libcamera.org/comment/33346/","msgid":"<173946818308.1238111.2085672783417487732@ping.linuxembedded.co.uk>","date":"2025-02-13T17:36:23","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Dylan, Javier,\n\nI've got some questions for you both at the bottom of this mail\nregarding libcamera packaging.\n\nQuoting Laurent Pinchart (2025-02-13 17:01:26)\n> On Wed, Feb 12, 2025 at 09:42:07AM +0000, Kieran Bingham wrote:\n> > Quoting Laurent Pinchart (2023-08-28 20:13:13)\n> > > On Mon, Aug 28, 2023 at 01:28:37PM +0100, Kieran Bingham wrote:\n> > > > Quoting Kieran Bingham (2023-05-04 20:03:56)\n> > > > > On 04/05/2023 16:10, Laurent Pinchart wrote:\n> > > > > > On Thu, May 04, 2023 at 03:48:00PM +0100, Kieran Bingham via libcamera-devel wrote:\n> > > > > >> Ensure that when we iterate the libcamera libdir we only select shared\n> > > > > >> objects which are expected to be IPA modules, with an ipa_ prefix.\n> > > > > >>\n> > > > > >> Any shared object not matching this filter is ignored and not processed\n> > > > > >> by the IPA Manager.\n> > > > > >>\n> > > > > >> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>\n> > > > > >> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > > > > \n> > > > > > I wonder what this protects against, as there shouldn't be other files\n> > > > > > in this directory, especially if we move IPA modules to an ipa/\n> > > > > > subdirectory. I don't mind much, as this isn't a hot path, so I have no\n> > > > > > objection if you want to merge this, but is it useful ?\n> > > > > \n> > > > > Only that it prevents us trying to load any files that might be there \n> > > > > otherwise.\n> > > > > \n> > > > > \n> > > > > [76:32:31.897778214] [2776180] ERROR IPAModule ipa_module.cpp:286 \n> > > > > fake.so: IPA module is not an ELF file\n> > > > > [76:32:31.899112311] [2776180] ERROR IPAModule ipa_module.cpp:172 Symbol \n> > > > > ipaModuleInfo not found\n> > > > > [76:32:31.899119975] [2776180] ERROR IPAModule ipa_module.cpp:292 \n> > > > > v4l2-compat.so: IPA module has no valid info\n> > > > > \n> > > > > \n> > > > > We already filter on .so objects, and we do other checks so it's not \n> > > > > crucial, and it's not going to prevent any attempt to get \n> > > > > 'non-libcamera' code parsed as anyone dropping a file here could equally \n> > > > > call it 'ipa_fake.so' ... so no not really.\n> > > > > \n> > > > > I'll drop this and collect 2/2\n> > > > \n> > > > I've started seeing various logs that report similar to:\n> > > > ```\n> > > > $ wireplumber \n> > > > [12:34:30.015061894] [206341] ERROR IPAModule ipa_module.cpp:172 Symbol ipaModuleInfo not found\n> > > > [12:34:30.015085339] [206341] ERROR IPAModule ipa_module.cpp:292 v4l2-compat.so: IPA module has no valid info\n> > > > [12:34:30.015125806] [206341]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0\n> > > > ```\n> > > > \n> > > > I believe this is because some distributions are probably overriding the\n> > > > installation path of the v4l2-compat.so.\n> > > > \n> > > > Anyway, that makes me think that we /should/ ignore files that are not\n> > > > prefixed by ipa_ ...\n> > > \n> > > Or move IPA modules to an ipa/ subdirectory ?\n> > \n> > And I've just seen this in some logs from a raspberry pi issue:\n> > \n> > ```\n> >   (AGS_311_venv) @AGS-RPI-0004:~$ libcamera-hello\n> >   [0:01:23.242753930] [811] ERROR IPAModule ipa_module.cpp:171 Symbol ipaModuleInfo not found\n> >   [0:01:23.242802797] [811] ERROR IPAModule ipa_module.cpp:291 v4l2-compat.so: IPA module has\n> >   no valid info\n> >   [0:01:23.242827435] [811]  INFO Camera camera_manager.cpp:327 libcamera v0.4.0+51-ca36c77f\n> > ```\n> > \n> > So I think it's time to move the IPA modules to a subdirectory. I like\n> > that better than arbitrary filtering of the name.\n> \n> It's really a distribution issue, by default IPA modules go to (on an\n> Arm64 system) /usr/local/lib64 (and only IPA modules are installed\n> there), and v4l2-compat.so go to /usr/local/libexec/libcamera/. We can\n> create a subdirectory for IPA modules, but will distributions then\n> decide to install v4l2-compat.so there ? :-)\n\nA distribution issue that's impacting multiple distributions ...\n\nSo the question is /why/ ?\n\n\nhttps://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/libcamera-ipa.install?ref_type=heads\nshows:\n\n\nusr/lib/*/libcamera/ipa_*.so\nusr/lib/*/libcamera/ipa_*.so.sign\nusr/lib/*/libcamera/*_ipa_proxy\nusr/share/libcamera\n\nso it's capturing the ipa files into a package based on where they get\ninstalled.\n\nhttps://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/libcamera-v4l2.install?ref_type=heads\n\nshows\n\nusr/lib/*/libcamera/v4l2-compat.so\n\nfor the V4L2 side.\n\n\nAnd finally:\n\nhttps://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/rules?ref_type=heads\n\nShows:\n\noverride_dh_auto_configure:\n\tdh_auto_configure -- \\\n\t\t--libexecdir=lib/${DEB_HOST_MULTIARCH} \\\n\n\nWhich is overridding the libexecdir for multiarch. \n\n\nTrying to search for debian guidance on this I hit:\n\nhttps://linux.debian.devel.mentors.narkive.com/hkilz1si/using-usr-libexec-directory\nwhich is a mentor on the debian lists giving the following guidance:\n\n> Move the files to use \"usr/lib\" instead. Nothing on debian uses libexec.\n>\n> Usually there is a configure option one can pass, e.g. --libexecdir=/usr/lib\n\nand\nhttps://lists.debian.org/debian-devel/2005/05/msg00404.html\n> > Should we change some of these to /usr/libexec?\n> \n> well, it would be against the FHS, I think.\n> \n> The BSDs use libexec but I don't really see a good reason why it exists.\n> \n\nAnd this one:\nhttps://lists.debian.org/debian-devel/2005/05/msg00565.html\n> The BSDs use libexec but I don't really see a good reason why it exists.\n> \n> The only reason we don't have it is because of petty bickering and\n> politics between the FHS folks (several years ago).  There were few\n> technical objections to it on the FHS list, but it was dropped for\n> non-technical reasons.  Given that the FHS is supposed to codify\n> existing practice, it should be in there on that count alone.  Every\n> libexec-using package in Debian has been reconfigured not to use it;\n> upstreams do use it, and I'd like to use it myself.\n> \n> I'd personally be very glad to have it, and would support using it in\n> Debian.\n\n\nBut so far I haven't found any documentation to 'specify' this.\n\nDylan, Do you know /why/ the v4l2-compat.so is moved out of libexec and\ninto lib/libcamera ? (Noting that it causes a spurious error to be\nreported to users who have libcamera-v4l2 installed).\n\nI know this same issue is occuring on Alpine and Arch systems too. So it\nseems like \"all the major distributions\" are doing roughly the same\nthing here.\n\nJavier, Do you know if this is happening on Fedora or if there is any\nrequirements regarding /usr/libexec ?\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 AC86FC3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 13 Feb 2025 17:36:28 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D332F68639;\n\tThu, 13 Feb 2025 18:36:27 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3D9F56185F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 13 Feb 2025 18:36:26 +0100 (CET)","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 743F66AF;\n\tThu, 13 Feb 2025 18:35:07 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"E+bkloLb\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1739468107;\n\tbh=Q8XTgK7pZutqrjiGZjQlFo2UtRUrVDxMM+LK5QKY3cI=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=E+bkloLb1PMLX2YQHr30Z0tyILlquAVX3IUhbwkDX882C/ZGPosR71I0yM++/gc8k\n\tb67Vt8D6gzQM4+56YeUDT1cIv64yETFWKlZ0D6qNCr8Jp6mkSXr2vMJj+CxX37MJfV\n\trTTFYJ6Qf8vnd08okx5arjC3mS7xRIzTV44bESRo=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250213170126.GA1980@pendragon.ideasonboard.com>","References":"<20230504144801.2590668-1-kieran.bingham@ideasonboard.com>\n\t<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<20230504151017.GL4551@pendragon.ideasonboard.com>\n\t<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>\n\t<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>\n\t<20230828191313.GS14596@pendragon.ideasonboard.com>\n\t<173935332755.2010433.4474690746700393191@ping.linuxembedded.co.uk>\n\t<20250213170126.GA1980@pendragon.ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>,","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>, Dylan\n\t=?utf-8?b?QcOvc3Np?= <dylan.aissi@collabora.com>,\n\tJavier Martinez Canillas <javierm@redhat.com>, ","Date":"Thu, 13 Feb 2025 17:36:23 +0000","Message-ID":"<173946818308.1238111.2085672783417487732@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":33351,"web_url":"https://patchwork.libcamera.org/comment/33351/","msgid":"<67cb7fa2-f01f-46b5-8dfd-54105fc9c96f@collabora.com>","date":"2025-02-13T22:17:45","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":191,"url":"https://patchwork.libcamera.org/api/people/191/","name":"Dylan Aïssi","email":"dylan.aissi@collabora.com"},"content":"Hi Kieran,\n\nOn 2/13/25 18:36, Kieran Bingham wrote:\n> Hi Dylan, Javier,\n> \n> I've got some questions for you both at the bottom of this mail\n> regarding libcamera packaging.\n> \n> Quoting Laurent Pinchart (2025-02-13 17:01:26)\n>> On Wed, Feb 12, 2025 at 09:42:07AM +0000, Kieran Bingham wrote:\n>>> Quoting Laurent Pinchart (2023-08-28 20:13:13)\n>>>> On Mon, Aug 28, 2023 at 01:28:37PM +0100, Kieran Bingham wrote:\n>>>>> Quoting Kieran Bingham (2023-05-04 20:03:56)\n>>>>>> On 04/05/2023 16:10, Laurent Pinchart wrote:\n>>>>>>> On Thu, May 04, 2023 at 03:48:00PM +0100, Kieran Bingham via libcamera-devel wrote:\n>>>>>>>> Ensure that when we iterate the libcamera libdir we only select shared\n>>>>>>>> objects which are expected to be IPA modules, with an ipa_ prefix.\n>>>>>>>>\n>>>>>>>> Any shared object not matching this filter is ignored and not processed\n>>>>>>>> by the IPA Manager.\n>>>>>>>>\n>>>>>>>> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>\n>>>>>>>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>>>>>>>\n>>>>>>> I wonder what this protects against, as there shouldn't be other files\n>>>>>>> in this directory, especially if we move IPA modules to an ipa/\n>>>>>>> subdirectory. I don't mind much, as this isn't a hot path, so I have no\n>>>>>>> objection if you want to merge this, but is it useful ?\n>>>>>>\n>>>>>> Only that it prevents us trying to load any files that might be there\n>>>>>> otherwise.\n>>>>>>\n>>>>>>\n>>>>>> [76:32:31.897778214] [2776180] ERROR IPAModule ipa_module.cpp:286\n>>>>>> fake.so: IPA module is not an ELF file\n>>>>>> [76:32:31.899112311] [2776180] ERROR IPAModule ipa_module.cpp:172 Symbol\n>>>>>> ipaModuleInfo not found\n>>>>>> [76:32:31.899119975] [2776180] ERROR IPAModule ipa_module.cpp:292\n>>>>>> v4l2-compat.so: IPA module has no valid info\n>>>>>>\n>>>>>>\n>>>>>> We already filter on .so objects, and we do other checks so it's not\n>>>>>> crucial, and it's not going to prevent any attempt to get\n>>>>>> 'non-libcamera' code parsed as anyone dropping a file here could equally\n>>>>>> call it 'ipa_fake.so' ... so no not really.\n>>>>>>\n>>>>>> I'll drop this and collect 2/2\n>>>>>\n>>>>> I've started seeing various logs that report similar to:\n>>>>> ```\n>>>>> $ wireplumber\n>>>>> [12:34:30.015061894] [206341] ERROR IPAModule ipa_module.cpp:172 Symbol ipaModuleInfo not found\n>>>>> [12:34:30.015085339] [206341] ERROR IPAModule ipa_module.cpp:292 v4l2-compat.so: IPA module has no valid info\n>>>>> [12:34:30.015125806] [206341]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0\n>>>>> ```\n>>>>>\n>>>>> I believe this is because some distributions are probably overriding the\n>>>>> installation path of the v4l2-compat.so.\n>>>>>\n>>>>> Anyway, that makes me think that we /should/ ignore files that are not\n>>>>> prefixed by ipa_ ...\n>>>>\n>>>> Or move IPA modules to an ipa/ subdirectory ?\n>>>\n>>> And I've just seen this in some logs from a raspberry pi issue:\n>>>\n>>> ```\n>>>    (AGS_311_venv) @AGS-RPI-0004:~$ libcamera-hello\n>>>    [0:01:23.242753930] [811] ERROR IPAModule ipa_module.cpp:171 Symbol ipaModuleInfo not found\n>>>    [0:01:23.242802797] [811] ERROR IPAModule ipa_module.cpp:291 v4l2-compat.so: IPA module has\n>>>    no valid info\n>>>    [0:01:23.242827435] [811]  INFO Camera camera_manager.cpp:327 libcamera v0.4.0+51-ca36c77f\n>>> ```\n>>>\n>>> So I think it's time to move the IPA modules to a subdirectory. I like\n>>> that better than arbitrary filtering of the name.\n>>\n>> It's really a distribution issue, by default IPA modules go to (on an\n>> Arm64 system) /usr/local/lib64 (and only IPA modules are installed\n>> there), and v4l2-compat.so go to /usr/local/libexec/libcamera/. We can\n>> create a subdirectory for IPA modules, but will distributions then\n>> decide to install v4l2-compat.so there ? :-)\n> \n> A distribution issue that's impacting multiple distributions ...\n> \n> So the question is /why/ ?\n> \n> \n> https://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/libcamera-ipa.install?ref_type=heads\n> shows:\n> \n> \n> usr/lib/*/libcamera/ipa_*.so\n> usr/lib/*/libcamera/ipa_*.so.sign\n> usr/lib/*/libcamera/*_ipa_proxy\n> usr/share/libcamera\n> \n> so it's capturing the ipa files into a package based on where they get\n> installed.\n> \n> https://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/libcamera-v4l2.install?ref_type=heads\n> \n> shows\n> \n> usr/lib/*/libcamera/v4l2-compat.so\n> \n> for the V4L2 side.\n> \n> \n> And finally:\n> \n> https://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/rules?ref_type=heads\n> \n> Shows:\n> \n> override_dh_auto_configure:\n> \tdh_auto_configure -- \\\n> \t\t--libexecdir=lib/${DEB_HOST_MULTIARCH} \\\n> \n> \n> Which is overridding the libexecdir for multiarch.\n> \n> \n> Trying to search for debian guidance on this I hit:\n> \n> https://linux.debian.devel.mentors.narkive.com/hkilz1si/using-usr-libexec-directory\n> which is a mentor on the debian lists giving the following guidance:\n> \n>> Move the files to use \"usr/lib\" instead. Nothing on debian uses libexec.\n>>\n>> Usually there is a configure option one can pass, e.g. --libexecdir=/usr/lib\n> \n> and\n> https://lists.debian.org/debian-devel/2005/05/msg00404.html\n>>> Should we change some of these to /usr/libexec?\n>>\n>> well, it would be against the FHS, I think.\n>>\n>> The BSDs use libexec but I don't really see a good reason why it exists.\n>>\n> \n> And this one:\n> https://lists.debian.org/debian-devel/2005/05/msg00565.html\n>> The BSDs use libexec but I don't really see a good reason why it exists.\n>>\n>> The only reason we don't have it is because of petty bickering and\n>> politics between the FHS folks (several years ago).  There were few\n>> technical objections to it on the FHS list, but it was dropped for\n>> non-technical reasons.  Given that the FHS is supposed to codify\n>> existing practice, it should be in there on that count alone.  Every\n>> libexec-using package in Debian has been reconfigured not to use it;\n>> upstreams do use it, and I'd like to use it myself.\n>>\n>> I'd personally be very glad to have it, and would support using it in\n>> Debian.\n> \n> \n> But so far I haven't found any documentation to 'specify' this.\n> \n> Dylan, Do you know /why/ the v4l2-compat.so is moved out of libexec and\n> into lib/libcamera ? (Noting that it causes a spurious error to be\n> reported to users who have libcamera-v4l2 installed).\n\nI think the answer is just \"bad sequence of events\" and there is no real \nreason.\nLet's do some git archeology to understand what happened:\n[1] In 2020, libexecdir was overridden to make the package multiarch \ncompatible.\n[2] ~ 10 days later, v4l2 compat was enabled, so with libexecdir already \noverridden.\n[3] In 2022, I moved v4l2 into its own binary package, but unrelated \nwith our current issue.\n[4] In 2023, v4l2 was moved upstream from libexec to libexec/libcamera.\n[5] This was reflected in the debian package but with the override of \nlibexecdir, v4l2 has landed into usr/lib/*/libcamera/ which is the same \ndirectory than ipa modules.\n\nI don't see a good reason other than trying to make v4l2 and *_ipa_proxy \nmultiarch co-installable.\nNow the question is, does this make sense? I don't know. I can drop the \nlibexecdir override, both v4l2 and *_ipa_proxy will go back in \nusr/libexec/libcamera/\nand both binary packages libcamera-v4l2 and libcamera-ipa will no longer \nbe multiarch co-installable, but I am not sure there was a real use case \nanyway.\n\n[1] \nhttps://salsa.debian.org/multimedia-team/libcamera/-/commit/04fda66ee27bfacd07a39acb86bbaba376bcc050\n[2] \nhttps://salsa.debian.org/multimedia-team/libcamera/-/commit/89ab628d6d9605547423c7696f4dbc8b10ce7708\n[3] \nhttps://salsa.debian.org/multimedia-team/libcamera/-/commit/7bfebf853bb18004ed26c822a0b8a1cb3fb1f0d7\n[4] \nhttps://gitlab.freedesktop.org/camera/libcamera/-/commit/1c512d406536d72a393c38c3f6a75fe0fdb9ecb2\n[5] \nhttps://salsa.debian.org/multimedia-team/libcamera/-/commit/a991999c4c935d150c04a88f401cf2dcf5314c71\n\n\n> I know this same issue is occuring on Alpine and Arch systems too. So it\n> seems like \"all the major distributions\" are doing roughly the same\n> thing here.\n\nMaybe for the same reason, or maybe they just copied our mistakes.\n\n> Javier, Do you know if this is happening on Fedora or if there is any\n> requirements regarding /usr/libexec ?\n> \n> --\n> Kieran\n\nBest regards,\nDylan","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 B1A6AC3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 13 Feb 2025 22:17:49 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A06A768641;\n\tThu, 13 Feb 2025 23:17:48 +0100 (CET)","from bali.collaboradmins.com (bali.collaboradmins.com\n\t[IPv6:2a01:4f8:201:9162::2])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 87CB26185F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 13 Feb 2025 23:17:47 +0100 (CET)","from [192.168.1.14] (aputeaux-656-1-8-156.w83-204.abo.wanadoo.fr\n\t[83.204.202.156])\n\t(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (4096 bits)\n\tserver-digest SHA256)\n\t(No client certificate requested) (Authenticated sender: daissi)\n\tby bali.collaboradmins.com (Postfix) with ESMTPSA id B463D17E1522;\n\tThu, 13 Feb 2025 23:17:46 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=collabora.com header.i=@collabora.com\n\theader.b=\"oxZJMSuK\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;\n\ts=mail; t=1739485067;\n\tbh=YCZs/5vR/pNl11dGO7n6TfBR5xbHoNPfKwvaOraVTaE=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=oxZJMSuKTTNxjEx1j7t9fsFiXD1FFpJMu4ErnXix18oIdBv77tv5AuqwUAgRs1hLY\n\tx6ywlTAieqlvlq43M2oKqTc7f2iekRQdd4aS7wE7ca9LuRF+k5yHF9cU7+jS8hDptv\n\ttD18JHeOk6NIsRAUj9daXL3rxqJDJSIKuJxgp5Gv/89AWq4C9S4AMPXNW/6CHGha1k\n\tnhfC1kvdBiYrl7scedX1Sa6g7kcxBglNPmrq1WcGWXSEh/e9mFn9XRCUaSgsIZpnhR\n\tLURszdILYizGAxpYJyDBOy0wSPxzJM8ZVHXRikm2PN0y2zjENd5TLGxGJmJkl1QuMY\n\t9IkkUUu6JqQPw==","Message-ID":"<67cb7fa2-f01f-46b5-8dfd-54105fc9c96f@collabora.com>","Date":"Thu, 13 Feb 2025 23:17:45 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tJavier Martinez Canillas <javierm@redhat.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","References":"<20230504144801.2590668-1-kieran.bingham@ideasonboard.com>\n\t<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<20230504151017.GL4551@pendragon.ideasonboard.com>\n\t<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>\n\t<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>\n\t<20230828191313.GS14596@pendragon.ideasonboard.com>\n\t<173935332755.2010433.4474690746700393191@ping.linuxembedded.co.uk>\n\t<20250213170126.GA1980@pendragon.ideasonboard.com>\n\t<173946818308.1238111.2085672783417487732@ping.linuxembedded.co.uk>","Content-Language":"en-US","From":"Dylan Aissi <dylan.aissi@collabora.com>","In-Reply-To":"<173946818308.1238111.2085672783417487732@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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":33356,"web_url":"https://patchwork.libcamera.org/comment/33356/","msgid":"<173952947483.1238111.3161724493432130863@ping.linuxembedded.co.uk>","date":"2025-02-14T10:37:54","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Dylan,\n\nQuoting Dylan Aissi (2025-02-13 22:17:45)\n> Hi Kieran,\n> \n> On 2/13/25 18:36, Kieran Bingham wrote:\n> > Hi Dylan, Javier,\n> > \n> > I've got some questions for you both at the bottom of this mail\n> > regarding libcamera packaging.\n> > \n> > Quoting Laurent Pinchart (2025-02-13 17:01:26)\n> >> On Wed, Feb 12, 2025 at 09:42:07AM +0000, Kieran Bingham wrote:\n> >>> Quoting Laurent Pinchart (2023-08-28 20:13:13)\n> >>>> On Mon, Aug 28, 2023 at 01:28:37PM +0100, Kieran Bingham wrote:\n> >>>>> Quoting Kieran Bingham (2023-05-04 20:03:56)\n> >>>>>> On 04/05/2023 16:10, Laurent Pinchart wrote:\n> >>>>>>> On Thu, May 04, 2023 at 03:48:00PM +0100, Kieran Bingham via libcamera-devel wrote:\n> >>>>>>>> Ensure that when we iterate the libcamera libdir we only select shared\n> >>>>>>>> objects which are expected to be IPA modules, with an ipa_ prefix.\n> >>>>>>>>\n> >>>>>>>> Any shared object not matching this filter is ignored and not processed\n> >>>>>>>> by the IPA Manager.\n> >>>>>>>>\n> >>>>>>>> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>\n> >>>>>>>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> >>>>>>>\n> >>>>>>> I wonder what this protects against, as there shouldn't be other files\n> >>>>>>> in this directory, especially if we move IPA modules to an ipa/\n> >>>>>>> subdirectory. I don't mind much, as this isn't a hot path, so I have no\n> >>>>>>> objection if you want to merge this, but is it useful ?\n> >>>>>>\n> >>>>>> Only that it prevents us trying to load any files that might be there\n> >>>>>> otherwise.\n> >>>>>>\n> >>>>>>\n> >>>>>> [76:32:31.897778214] [2776180] ERROR IPAModule ipa_module.cpp:286\n> >>>>>> fake.so: IPA module is not an ELF file\n> >>>>>> [76:32:31.899112311] [2776180] ERROR IPAModule ipa_module.cpp:172 Symbol\n> >>>>>> ipaModuleInfo not found\n> >>>>>> [76:32:31.899119975] [2776180] ERROR IPAModule ipa_module.cpp:292\n> >>>>>> v4l2-compat.so: IPA module has no valid info\n> >>>>>>\n> >>>>>>\n> >>>>>> We already filter on .so objects, and we do other checks so it's not\n> >>>>>> crucial, and it's not going to prevent any attempt to get\n> >>>>>> 'non-libcamera' code parsed as anyone dropping a file here could equally\n> >>>>>> call it 'ipa_fake.so' ... so no not really.\n> >>>>>>\n> >>>>>> I'll drop this and collect 2/2\n> >>>>>\n> >>>>> I've started seeing various logs that report similar to:\n> >>>>> ```\n> >>>>> $ wireplumber\n> >>>>> [12:34:30.015061894] [206341] ERROR IPAModule ipa_module.cpp:172 Symbol ipaModuleInfo not found\n> >>>>> [12:34:30.015085339] [206341] ERROR IPAModule ipa_module.cpp:292 v4l2-compat.so: IPA module has no valid info\n> >>>>> [12:34:30.015125806] [206341]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0\n> >>>>> ```\n> >>>>>\n> >>>>> I believe this is because some distributions are probably overriding the\n> >>>>> installation path of the v4l2-compat.so.\n> >>>>>\n> >>>>> Anyway, that makes me think that we /should/ ignore files that are not\n> >>>>> prefixed by ipa_ ...\n> >>>>\n> >>>> Or move IPA modules to an ipa/ subdirectory ?\n> >>>\n> >>> And I've just seen this in some logs from a raspberry pi issue:\n> >>>\n> >>> ```\n> >>>    (AGS_311_venv) @AGS-RPI-0004:~$ libcamera-hello\n> >>>    [0:01:23.242753930] [811] ERROR IPAModule ipa_module.cpp:171 Symbol ipaModuleInfo not found\n> >>>    [0:01:23.242802797] [811] ERROR IPAModule ipa_module.cpp:291 v4l2-compat.so: IPA module has\n> >>>    no valid info\n> >>>    [0:01:23.242827435] [811]  INFO Camera camera_manager.cpp:327 libcamera v0.4.0+51-ca36c77f\n> >>> ```\n> >>>\n> >>> So I think it's time to move the IPA modules to a subdirectory. I like\n> >>> that better than arbitrary filtering of the name.\n> >>\n> >> It's really a distribution issue, by default IPA modules go to (on an\n> >> Arm64 system) /usr/local/lib64 (and only IPA modules are installed\n> >> there), and v4l2-compat.so go to /usr/local/libexec/libcamera/. We can\n> >> create a subdirectory for IPA modules, but will distributions then\n> >> decide to install v4l2-compat.so there ? :-)\n> > \n> > A distribution issue that's impacting multiple distributions ...\n> > \n> > So the question is /why/ ?\n> > \n> > \n> > https://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/libcamera-ipa.install?ref_type=heads\n> > shows:\n> > \n> > \n> > usr/lib/*/libcamera/ipa_*.so\n> > usr/lib/*/libcamera/ipa_*.so.sign\n> > usr/lib/*/libcamera/*_ipa_proxy\n> > usr/share/libcamera\n> > \n> > so it's capturing the ipa files into a package based on where they get\n> > installed.\n> > \n> > https://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/libcamera-v4l2.install?ref_type=heads\n> > \n> > shows\n> > \n> > usr/lib/*/libcamera/v4l2-compat.so\n> > \n> > for the V4L2 side.\n> > \n> > \n> > And finally:\n> > \n> > https://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/rules?ref_type=heads\n> > \n> > Shows:\n> > \n> > override_dh_auto_configure:\n> >       dh_auto_configure -- \\\n> >               --libexecdir=lib/${DEB_HOST_MULTIARCH} \\\n> > \n> > \n> > Which is overridding the libexecdir for multiarch.\n> > \n> > \n> > Trying to search for debian guidance on this I hit:\n> > \n> > https://linux.debian.devel.mentors.narkive.com/hkilz1si/using-usr-libexec-directory\n> > which is a mentor on the debian lists giving the following guidance:\n> > \n> >> Move the files to use \"usr/lib\" instead. Nothing on debian uses libexec.\n> >>\n> >> Usually there is a configure option one can pass, e.g. --libexecdir=/usr/lib\n> > \n> > and\n> > https://lists.debian.org/debian-devel/2005/05/msg00404.html\n> >>> Should we change some of these to /usr/libexec?\n> >>\n> >> well, it would be against the FHS, I think.\n> >>\n> >> The BSDs use libexec but I don't really see a good reason why it exists.\n> >>\n> > \n> > And this one:\n> > https://lists.debian.org/debian-devel/2005/05/msg00565.html\n> >> The BSDs use libexec but I don't really see a good reason why it exists.\n> >>\n> >> The only reason we don't have it is because of petty bickering and\n> >> politics between the FHS folks (several years ago).  There were few\n> >> technical objections to it on the FHS list, but it was dropped for\n> >> non-technical reasons.  Given that the FHS is supposed to codify\n> >> existing practice, it should be in there on that count alone.  Every\n> >> libexec-using package in Debian has been reconfigured not to use it;\n> >> upstreams do use it, and I'd like to use it myself.\n> >>\n> >> I'd personally be very glad to have it, and would support using it in\n> >> Debian.\n> > \n> > \n> > But so far I haven't found any documentation to 'specify' this.\n> > \n> > Dylan, Do you know /why/ the v4l2-compat.so is moved out of libexec and\n> > into lib/libcamera ? (Noting that it causes a spurious error to be\n> > reported to users who have libcamera-v4l2 installed).\n> \n> I think the answer is just \"bad sequence of events\" and there is no real \n> reason.\n> Let's do some git archeology to understand what happened:\n> [1] In 2020, libexecdir was overridden to make the package multiarch \n> compatible.\n> [2] ~ 10 days later, v4l2 compat was enabled, so with libexecdir already \n> overridden.\n> [3] In 2022, I moved v4l2 into its own binary package, but unrelated \n> with our current issue.\n> [4] In 2023, v4l2 was moved upstream from libexec to libexec/libcamera.\n> [5] This was reflected in the debian package but with the override of \n> libexecdir, v4l2 has landed into usr/lib/*/libcamera/ which is the same \n> directory than ipa modules.\n\nThank you - that is incredibly helpful! And now it's much clearer what\nwas going on.\n\n\n\n> I don't see a good reason other than trying to make v4l2 and *_ipa_proxy \n> multiarch co-installable.\n> Now the question is, does this make sense? I don't know. I can drop the \n> libexecdir override, both v4l2 and *_ipa_proxy will go back in \n> usr/libexec/libcamera/\n> and both binary packages libcamera-v4l2 and libcamera-ipa will no longer \n> be multiarch co-installable, but I am not sure there was a real use case \n> anyway.\n\nThe tricky part here will likely be the IPA proxies. I think that's part\nof 'libcamera' but could be handled as part of libcamera-ipa indeed, and\nthen that component shouldn't be multiarch - the package itself would be\narchitecture specific. Same for the libcamera-v4l2.\n\nHaving libcamera core multi-arch facilitates cross compiling which is\ngreat. libcamera-v4l2 and libcamera-ipa are not required for that.\n\nAre there other use-cases for having multi-arch libcamera?\n\n> \n> [1] \n> https://salsa.debian.org/multimedia-team/libcamera/-/commit/04fda66ee27bfacd07a39acb86bbaba376bcc050\n> [2] \n> https://salsa.debian.org/multimedia-team/libcamera/-/commit/89ab628d6d9605547423c7696f4dbc8b10ce7708\n> [3] \n> https://salsa.debian.org/multimedia-team/libcamera/-/commit/7bfebf853bb18004ed26c822a0b8a1cb3fb1f0d7\n> [4] \n> https://gitlab.freedesktop.org/camera/libcamera/-/commit/1c512d406536d72a393c38c3f6a75fe0fdb9ecb2\n> [5] \n> https://salsa.debian.org/multimedia-team/libcamera/-/commit/a991999c4c935d150c04a88f401cf2dcf5314c71\n> \n> \n> > I know this same issue is occuring on Alpine and Arch systems too. So it\n> > seems like \"all the major distributions\" are doing roughly the same\n> > thing here.\n> \n> Maybe for the same reason, or maybe they just copied our mistakes.\n\nIndeed, I'll chase those distributions with the same rationale now that\nwe understand it though.\n\nThank you very much for helping get this clear.\n\nWill you make an update to the debian packages?\n\n--\nKieran\n\n\n> > Javier, Do you know if this is happening on Fedora or if there is any\n> > requirements regarding /usr/libexec ?\n> > \n> > --\n> > Kieran\n> \n> Best regards,\n> Dylan","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 665A8C3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 14 Feb 2025 10:38:00 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6761F68648;\n\tFri, 14 Feb 2025 11:37:59 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D935060337\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 14 Feb 2025 11:37:57 +0100 (CET)","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 83B6773B;\n\tFri, 14 Feb 2025 11:36:38 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"kn6+9jIa\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1739529398;\n\tbh=nzzyQgth/iDTJC0DZU9h7jgNGs/3w+a2Gg6u3LyZakA=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=kn6+9jIatpW0lXuva9TFynXUQTr6ydMGxXPOCohpS0YMGOFrKoY6RVuijEvrb4TlT\n\tHsImI7cXuYM59XLVGoL0WqAGxE3xZKgd0cy5EqIdzJkqfmw3BelThWeoQDQeoKKvZB\n\tN7O5OIhWrIeH/tdyuKlNOHUGhA1Fqh9+o1qxNDy8=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<67cb7fa2-f01f-46b5-8dfd-54105fc9c96f@collabora.com>","References":"<20230504144801.2590668-1-kieran.bingham@ideasonboard.com>\n\t<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<20230504151017.GL4551@pendragon.ideasonboard.com>\n\t<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>\n\t<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>\n\t<20230828191313.GS14596@pendragon.ideasonboard.com>\n\t<173935332755.2010433.4474690746700393191@ping.linuxembedded.co.uk>\n\t<20250213170126.GA1980@pendragon.ideasonboard.com>\n\t<173946818308.1238111.2085672783417487732@ping.linuxembedded.co.uk>\n\t<67cb7fa2-f01f-46b5-8dfd-54105fc9c96f@collabora.com>","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","To":"Dylan Aissi <dylan.aissi@collabora.com>,\n\tJavier Martinez Canillas <javierm@redhat.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>","Date":"Fri, 14 Feb 2025 10:37:54 +0000","Message-ID":"<173952947483.1238111.3161724493432130863@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":33357,"web_url":"https://patchwork.libcamera.org/comment/33357/","msgid":"<87ed00rav8.fsf@minerva.mail-host-address-is-not-set>","date":"2025-02-14T12:04:11","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":95,"url":"https://patchwork.libcamera.org/api/people/95/","name":"Javier Martinez Canillas","email":"javierm@redhat.com"},"content":"Kieran Bingham <kieran.bingham@ideasonboard.com> writes:\n\nHello Kieran,\n\n[...]\n\n>> > ```\n>> > \n>> > So I think it's time to move the IPA modules to a subdirectory. I like\n>> > that better than arbitrary filtering of the name.\n>> \n>> It's really a distribution issue, by default IPA modules go to (on an\n>> Arm64 system) /usr/local/lib64 (and only IPA modules are installed\n>> there), and v4l2-compat.so go to /usr/local/libexec/libcamera/. We can\n>> create a subdirectory for IPA modules, but will distributions then\n>> decide to install v4l2-compat.so there ? :-)\n>\n> A distribution issue that's impacting multiple distributions ...\n>\n> So the question is /why/ ?\n>\n\nMaybe I'm misunderstanding what is the question but in Fedora at least\nmost packages don't have multi{lib,arch} support.\n\nIf the question is only about the IPA modules being moved to a ipa sub\ndirectory then I think that it makes sense and shouldn't be an issue.\n\n>\n> https://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/libcamera-ipa.install?ref_type=heads\n> shows:\n>\n>\n> usr/lib/*/libcamera/ipa_*.so\n> usr/lib/*/libcamera/ipa_*.so.sign\n> usr/lib/*/libcamera/*_ipa_proxy\n> usr/share/libcamera\n>\n> so it's capturing the ipa files into a package based on where they get\n> installed.\n>\n> https://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/libcamera-v4l2.install?ref_type=heads\n>\n> shows\n>\n> usr/lib/*/libcamera/v4l2-compat.so\n>\n> for the V4L2 side.\n>\n\nIn Fedora we have:\n\nrpm -ql libcamera-ipa.x86_64 | grep \"\\.so\"\n/usr/lib64/libcamera/ipa_ipu3.so\n/usr/lib64/libcamera/ipa_ipu3.so.sign\n/usr/lib64/libcamera/ipa_soft_simple.so\n/usr/lib64/libcamera/ipa_soft_simple.so.sign\n\nrpm -ql libcamera-v4l2.x86_64 | grep \"\\.so\"\n/usr/libexec/libcamera/v4l2-compat.so\n\n>\n> And finally:\n>\n> https://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/rules?ref_type=heads\n>\n> Shows:\n>\n> override_dh_auto_configure:\n> \tdh_auto_configure -- \\\n> \t\t--libexecdir=lib/${DEB_HOST_MULTIARCH} \\\n>\n>\n> Which is overridding the libexecdir for multiarch. \n>\n\n[...]\n\n>\n> Javier, Do you know if this is happening on Fedora or if there is any\n> requirements regarding /usr/libexec ?\n>\n\nIn Fedora we don't override libexecdir, just use the distro default that\nis /usr/libexec/. There are no requirements about libexec in this regard,\nin fact libexec is used mostly for binaries and only have a few libraries.\n\nThe only requirement that Fedora has in its packaging guidelines is that\nunversioned shared objects (which the v4l2-compact.so is IIRC) must not be\nvisible to the dynamic linker:\n\nhttps://docs.fedoraproject.org/en-US/packaging-guidelines/Unversioned_shared_objects/\n\nWhich I think was the reason why it was moved to libexecdir to start with?","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 42223C32A3\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 14 Feb 2025 12:04:27 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F1CD268649;\n\tFri, 14 Feb 2025 13:04:25 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3742C6862A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 14 Feb 2025 13:04:24 +0100 (CET)","from mail-wr1-f72.google.com (mail-wr1-f72.google.com\n\t[209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-168-UGTSKsmGOT2zKkbwdji09g-1; Fri, 14 Feb 2025 07:04:16 -0500","by mail-wr1-f72.google.com with SMTP id\n\tffacd0b85a97d-38de0201961so2077470f8f.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 14 Feb 2025 04:04:15 -0800 (PST)","from localhost (62-151-111-63.jazzfree.ya.com. [62.151.111.63])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-4395a06da56sm74117025e9.23.2025.02.14.04.04.11\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 14 Feb 2025 04:04:12 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"NiAv0Xi3\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1739534661;\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=3cuFL9wWZlJvvRxSojR6544toyX4hQdKmHzcghOI0cI=;\n\tb=NiAv0Xi3czGSyF6+K3YvxWc7jFcuA5LrKg9T04ood+Vkhr4UV+e4NiOdjcm9m5eywR+Zf8\n\tVb8enlsubqGJLtAcect+R4Aps78kF1Tne+QKgf4c04l1c7gGsf/4lHCvM7pgorF7b6/ZP+\n\t2xZJrR9eZbfEgKemaZt4GLmvfXsQ088=","X-MC-Unique":"UGTSKsmGOT2zKkbwdji09g-1","X-Mimecast-MFC-AGG-ID":"UGTSKsmGOT2zKkbwdji09g_1739534653","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1739534653; x=1740139453;\n\th=mime-version:message-id:date:references:in-reply-to:subject:cc:to\n\t:from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; \n\tbh=3cuFL9wWZlJvvRxSojR6544toyX4hQdKmHzcghOI0cI=;\n\tb=uGol9KR8Kh9D5glCE2h7xACy62B66YfxRLrz+BJZ1hzkhDm9dDB8eycDjZBa6FdZyj\n\txO/JP5isNjsqooQ33ulFxG8G7RMcsyRVTi+nC9eVLBkA/roCC8Q18jNCZurHw7cCLTCQ\n\ttwZ7ixIDsEOeHvKPOcBuFpz/TFvKlo7SRn2R1UOWQdUJFRJZiooFvFyXsdcNdQxqkhHP\n\tg2m7wwB3V8ye5L0RXhFnYrH17mDnFCqBDLChHbsLRdy1qhh/ACC37UpEr1stEa/HwlRf\n\tf5ul4MB8vZNZYNVs/QUgnNo2u2TLjyl2YjXtDNpCKeoMj2XK2j67FkLd8Z/LaMN8GFw9\n\tEMag==","X-Gm-Message-State":"AOJu0YyzVQTiSCFA73oGahQvENZrr4b47FGsFzxliz2nQVcmuCa6uyyO\n\tQeoTbFUXZsbDQpeys9VQ24Rr7OrpW9HT6kqKSGmQHFlIB3o5DZY4MaBsTzcAPA9jOVqUEtalVbR\n\tOnf65icjx9DmrWdFZStNPZBO7ej0a4ZaeU5ZHqY7Hb6EVwtpn0ccwCas+sx9C5rYxsYx5uCE=","X-Gm-Gg":"ASbGncu1qM3ZwRlMeiWel1RpjX9bVWadfC84jESYTQnyHPReWdCvq5OwFkiV17JEkZJ\n\tC+VK4YQ8PuZXpnnFexdxHq8RJAIhflCWDAKF7ax9ZaIs/LUD81DRqKzkYRYoyp9eX2SquHpHESs\n\tyPAKt/KjVif7PpCrdP2nfWxg8UTGQpcpfxg4FzPh8ggYioC1dIleQ9NCXeDcil4lkZkBMqiIxLs\n\tM4grpDmqi43Qg86c6BC+js7RQXaw5pzoEFpbwr5C9ECuVTBmzgTk7MImhu45Rm3mZVioRayvPtJ\n\tk821db5+wQv6VZtqPIUc/G7iTxcM6GC0g0FMBsq+FXOvoOML9JQXZLM8GYCMyr8=","X-Received":["by 2002:a05:6000:2ce:b0:38f:27bd:daeb with SMTP id\n\tffacd0b85a97d-38f27bde03emr8710065f8f.10.1739534653210; \n\tFri, 14 Feb 2025 04:04:13 -0800 (PST)","by 2002:a05:6000:2ce:b0:38f:27bd:daeb with SMTP id\n\tffacd0b85a97d-38f27bde03emr8710012f8f.10.1739534652791; \n\tFri, 14 Feb 2025 04:04:12 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IE1fwtKvzrpUG3nj7psRr3kiD1ZogJpd/77PD8GKRe0URM6kOljx9zBPg3JsTeR+REjVB5obw==","From":"Javier Martinez Canillas <javierm@redhat.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>, Dylan\n\t=?utf-8?b?QcOvc3Np?=  <dylan.aissi@collabora.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","In-Reply-To":"<173946818308.1238111.2085672783417487732@ping.linuxembedded.co.uk>","References":"<20230504144801.2590668-1-kieran.bingham@ideasonboard.com>\n\t<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<20230504151017.GL4551@pendragon.ideasonboard.com>\n\t<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>\n\t<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>\n\t<20230828191313.GS14596@pendragon.ideasonboard.com>\n\t<173935332755.2010433.4474690746700393191@ping.linuxembedded.co.uk>\n\t<20250213170126.GA1980@pendragon.ideasonboard.com>\n\t<173946818308.1238111.2085672783417487732@ping.linuxembedded.co.uk>","Date":"Fri, 14 Feb 2025 13:04:11 +0100","Message-ID":"<87ed00rav8.fsf@minerva.mail-host-address-is-not-set>","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"VJSbnHgrDdBwldbdoC13X6OI4n6ZuKfCO2YvJ5y3g2s_1739534653","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":33360,"web_url":"https://patchwork.libcamera.org/comment/33360/","msgid":"<20250214163209.GD12632@pendragon.ideasonboard.com>","date":"2025-02-14T16:32:09","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Fri, Feb 14, 2025 at 10:37:54AM +0000, Kieran Bingham wrote:\n> Hi Dylan,\n> \n> Quoting Dylan Aissi (2025-02-13 22:17:45)\n> > Hi Kieran,\n> > \n> > On 2/13/25 18:36, Kieran Bingham wrote:\n> > > Hi Dylan, Javier,\n> > > \n> > > I've got some questions for you both at the bottom of this mail\n> > > regarding libcamera packaging.\n> > > \n> > > Quoting Laurent Pinchart (2025-02-13 17:01:26)\n> > >> On Wed, Feb 12, 2025 at 09:42:07AM +0000, Kieran Bingham wrote:\n> > >>> Quoting Laurent Pinchart (2023-08-28 20:13:13)\n> > >>>> On Mon, Aug 28, 2023 at 01:28:37PM +0100, Kieran Bingham wrote:\n> > >>>>> Quoting Kieran Bingham (2023-05-04 20:03:56)\n> > >>>>>> On 04/05/2023 16:10, Laurent Pinchart wrote:\n> > >>>>>>> On Thu, May 04, 2023 at 03:48:00PM +0100, Kieran Bingham via libcamera-devel wrote:\n> > >>>>>>>> Ensure that when we iterate the libcamera libdir we only select shared\n> > >>>>>>>> objects which are expected to be IPA modules, with an ipa_ prefix.\n> > >>>>>>>>\n> > >>>>>>>> Any shared object not matching this filter is ignored and not processed\n> > >>>>>>>> by the IPA Manager.\n> > >>>>>>>>\n> > >>>>>>>> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>\n> > >>>>>>>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > >>>>>>>\n> > >>>>>>> I wonder what this protects against, as there shouldn't be other files\n> > >>>>>>> in this directory, especially if we move IPA modules to an ipa/\n> > >>>>>>> subdirectory. I don't mind much, as this isn't a hot path, so I have no\n> > >>>>>>> objection if you want to merge this, but is it useful ?\n> > >>>>>>\n> > >>>>>> Only that it prevents us trying to load any files that might be there\n> > >>>>>> otherwise.\n> > >>>>>>\n> > >>>>>>\n> > >>>>>> [76:32:31.897778214] [2776180] ERROR IPAModule ipa_module.cpp:286\n> > >>>>>> fake.so: IPA module is not an ELF file\n> > >>>>>> [76:32:31.899112311] [2776180] ERROR IPAModule ipa_module.cpp:172 Symbol\n> > >>>>>> ipaModuleInfo not found\n> > >>>>>> [76:32:31.899119975] [2776180] ERROR IPAModule ipa_module.cpp:292\n> > >>>>>> v4l2-compat.so: IPA module has no valid info\n> > >>>>>>\n> > >>>>>>\n> > >>>>>> We already filter on .so objects, and we do other checks so it's not\n> > >>>>>> crucial, and it's not going to prevent any attempt to get\n> > >>>>>> 'non-libcamera' code parsed as anyone dropping a file here could equally\n> > >>>>>> call it 'ipa_fake.so' ... so no not really.\n> > >>>>>>\n> > >>>>>> I'll drop this and collect 2/2\n> > >>>>>\n> > >>>>> I've started seeing various logs that report similar to:\n> > >>>>> ```\n> > >>>>> $ wireplumber\n> > >>>>> [12:34:30.015061894] [206341] ERROR IPAModule ipa_module.cpp:172 Symbol ipaModuleInfo not found\n> > >>>>> [12:34:30.015085339] [206341] ERROR IPAModule ipa_module.cpp:292 v4l2-compat.so: IPA module has no valid info\n> > >>>>> [12:34:30.015125806] [206341]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0\n> > >>>>> ```\n> > >>>>>\n> > >>>>> I believe this is because some distributions are probably overriding the\n> > >>>>> installation path of the v4l2-compat.so.\n> > >>>>>\n> > >>>>> Anyway, that makes me think that we /should/ ignore files that are not\n> > >>>>> prefixed by ipa_ ...\n> > >>>>\n> > >>>> Or move IPA modules to an ipa/ subdirectory ?\n> > >>>\n> > >>> And I've just seen this in some logs from a raspberry pi issue:\n> > >>>\n> > >>> ```\n> > >>>    (AGS_311_venv) @AGS-RPI-0004:~$ libcamera-hello\n> > >>>    [0:01:23.242753930] [811] ERROR IPAModule ipa_module.cpp:171 Symbol ipaModuleInfo not found\n> > >>>    [0:01:23.242802797] [811] ERROR IPAModule ipa_module.cpp:291 v4l2-compat.so: IPA module has\n> > >>>    no valid info\n> > >>>    [0:01:23.242827435] [811]  INFO Camera camera_manager.cpp:327 libcamera v0.4.0+51-ca36c77f\n> > >>> ```\n> > >>>\n> > >>> So I think it's time to move the IPA modules to a subdirectory. I like\n> > >>> that better than arbitrary filtering of the name.\n> > >>\n> > >> It's really a distribution issue, by default IPA modules go to (on an\n> > >> Arm64 system) /usr/local/lib64 (and only IPA modules are installed\n> > >> there), and v4l2-compat.so go to /usr/local/libexec/libcamera/. We can\n> > >> create a subdirectory for IPA modules, but will distributions then\n> > >> decide to install v4l2-compat.so there ? :-)\n> > > \n> > > A distribution issue that's impacting multiple distributions ...\n> > > \n> > > So the question is /why/ ?\n> > > \n> > > \n> > > https://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/libcamera-ipa.install?ref_type=heads\n> > > shows:\n> > > \n> > > \n> > > usr/lib/*/libcamera/ipa_*.so\n> > > usr/lib/*/libcamera/ipa_*.so.sign\n> > > usr/lib/*/libcamera/*_ipa_proxy\n> > > usr/share/libcamera\n> > > \n> > > so it's capturing the ipa files into a package based on where they get\n> > > installed.\n> > > \n> > > https://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/libcamera-v4l2.install?ref_type=heads\n> > > \n> > > shows\n> > > \n> > > usr/lib/*/libcamera/v4l2-compat.so\n> > > \n> > > for the V4L2 side.\n> > > \n> > > \n> > > And finally:\n> > > \n> > > https://salsa.debian.org/multimedia-team/libcamera/-/blob/debian/unstable/debian/rules?ref_type=heads\n> > > \n> > > Shows:\n> > > \n> > > override_dh_auto_configure:\n> > >       dh_auto_configure -- \\\n> > >               --libexecdir=lib/${DEB_HOST_MULTIARCH} \\\n> > > \n> > > \n> > > Which is overridding the libexecdir for multiarch.\n> > > \n> > > \n> > > Trying to search for debian guidance on this I hit:\n> > > \n> > > https://linux.debian.devel.mentors.narkive.com/hkilz1si/using-usr-libexec-directory\n> > > which is a mentor on the debian lists giving the following guidance:\n> > > \n> > >> Move the files to use \"usr/lib\" instead. Nothing on debian uses libexec.\n> > >>\n> > >> Usually there is a configure option one can pass, e.g. --libexecdir=/usr/lib\n> > > \n> > > and\n> > > https://lists.debian.org/debian-devel/2005/05/msg00404.html\n> > >>> Should we change some of these to /usr/libexec?\n> > >>\n> > >> well, it would be against the FHS, I think.\n> > >>\n> > >> The BSDs use libexec but I don't really see a good reason why it exists.\n> > >>\n> > > \n> > > And this one:\n> > > https://lists.debian.org/debian-devel/2005/05/msg00565.html\n> > >> The BSDs use libexec but I don't really see a good reason why it exists.\n> > >>\n> > >> The only reason we don't have it is because of petty bickering and\n> > >> politics between the FHS folks (several years ago).  There were few\n> > >> technical objections to it on the FHS list, but it was dropped for\n> > >> non-technical reasons.  Given that the FHS is supposed to codify\n> > >> existing practice, it should be in there on that count alone.  Every\n> > >> libexec-using package in Debian has been reconfigured not to use it;\n> > >> upstreams do use it, and I'd like to use it myself.\n> > >>\n> > >> I'd personally be very glad to have it, and would support using it in\n> > >> Debian.\n> > > \n> > > \n> > > But so far I haven't found any documentation to 'specify' this.\n> > > \n> > > Dylan, Do you know /why/ the v4l2-compat.so is moved out of libexec and\n> > > into lib/libcamera ? (Noting that it causes a spurious error to be\n> > > reported to users who have libcamera-v4l2 installed).\n> > \n> > I think the answer is just \"bad sequence of events\" and there is no real \n> > reason.\n> > Let's do some git archeology to understand what happened:\n> > [1] In 2020, libexecdir was overridden to make the package multiarch \n> > compatible.\n> > [2] ~ 10 days later, v4l2 compat was enabled, so with libexecdir already \n> > overridden.\n> > [3] In 2022, I moved v4l2 into its own binary package, but unrelated \n> > with our current issue.\n> > [4] In 2023, v4l2 was moved upstream from libexec to libexec/libcamera.\n> > [5] This was reflected in the debian package but with the override of \n> > libexecdir, v4l2 has landed into usr/lib/*/libcamera/ which is the same \n> > directory than ipa modules.\n> \n> Thank you - that is incredibly helpful! And now it's much clearer what\n> was going on.\n> \n> > I don't see a good reason other than trying to make v4l2 and *_ipa_proxy \n> > multiarch co-installable.\n> > Now the question is, does this make sense? I don't know. I can drop the \n> > libexecdir override, both v4l2 and *_ipa_proxy will go back in \n> > usr/libexec/libcamera/\n> > and both binary packages libcamera-v4l2 and libcamera-ipa will no longer \n> > be multiarch co-installable, but I am not sure there was a real use case \n> > anyway.\n> \n> The tricky part here will likely be the IPA proxies. I think that's part\n> of 'libcamera' but could be handled as part of libcamera-ipa indeed, and\n> then that component shouldn't be multiarch - the package itself would be\n> architecture specific. Same for the libcamera-v4l2.\n> \n> Having libcamera core multi-arch facilitates cross compiling which is\n> great. libcamera-v4l2 and libcamera-ipa are not required for that.\n> \n> Are there other use-cases for having multi-arch libcamera?\n\nI agree with the reasoning. All components needed at build time should\ncome from multiarch packages. Components needed at runtime only (IPA\nmodules, IPA proxies, and v4l2-compat.so) don't need to be\nmultiarch-compatible as far as I can tell.\n\n> > [1] https://salsa.debian.org/multimedia-team/libcamera/-/commit/04fda66ee27bfacd07a39acb86bbaba376bcc050\n> > [2] https://salsa.debian.org/multimedia-team/libcamera/-/commit/89ab628d6d9605547423c7696f4dbc8b10ce7708\n> > [3] https://salsa.debian.org/multimedia-team/libcamera/-/commit/7bfebf853bb18004ed26c822a0b8a1cb3fb1f0d7\n> > [4] https://gitlab.freedesktop.org/camera/libcamera/-/commit/1c512d406536d72a393c38c3f6a75fe0fdb9ecb2\n> > [5] https://salsa.debian.org/multimedia-team/libcamera/-/commit/a991999c4c935d150c04a88f401cf2dcf5314c71\n> > \n> > > I know this same issue is occuring on Alpine and Arch systems too. So it\n> > > seems like \"all the major distributions\" are doing roughly the same\n> > > thing here.\n> > \n> > Maybe for the same reason, or maybe they just copied our mistakes.\n> \n> Indeed, I'll chase those distributions with the same rationale now that\n> we understand it though.\n> \n> Thank you very much for helping get this clear.\n> \n> Will you make an update to the debian packages?\n> \n> > > Javier, Do you know if this is happening on Fedora or if there is any\n> > > requirements regarding /usr/libexec ?","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 15F20C32A3\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 14 Feb 2025 16:32:24 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1B4AB68653;\n\tFri, 14 Feb 2025 17:32:23 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 826226862A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 14 Feb 2025 17:32:21 +0100 (CET)","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 E4057F88;\n\tFri, 14 Feb 2025 17:31:01 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"TS2jnnDE\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1739550662;\n\tbh=5oMMNYPfjBntwgjX3GzRlN+AosJPeEgjlJ0amAJ0UMw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=TS2jnnDEyiGRCqKX0GpycGZ50R+WCCnyRwz+vY/BLAJ467oXGIMcB0Iwy4/650Zxl\n\tMPLhtTsihf+MWY95fscI3WkcwjIH+aqVTZStHuZcQvm0ldfzCcZX7K9PSP2Nahiv0Z\n\t/r1c3kOG3QSNuPekTzmLkpREOBrbiNP4xxtLWuhU=","Date":"Fri, 14 Feb 2025 18:32:09 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Dylan Aissi <dylan.aissi@collabora.com>,\n\tJavier Martinez Canillas <javierm@redhat.com>,\n\tlibcamera devel <libcamera-devel@lists.libcamera.org>","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","Message-ID":"<20250214163209.GD12632@pendragon.ideasonboard.com>","References":"<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<20230504151017.GL4551@pendragon.ideasonboard.com>\n\t<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>\n\t<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>\n\t<20230828191313.GS14596@pendragon.ideasonboard.com>\n\t<173935332755.2010433.4474690746700393191@ping.linuxembedded.co.uk>\n\t<20250213170126.GA1980@pendragon.ideasonboard.com>\n\t<173946818308.1238111.2085672783417487732@ping.linuxembedded.co.uk>\n\t<67cb7fa2-f01f-46b5-8dfd-54105fc9c96f@collabora.com>\n\t<173952947483.1238111.3161724493432130863@ping.linuxembedded.co.uk>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<173952947483.1238111.3161724493432130863@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":33398,"web_url":"https://patchwork.libcamera.org/comment/33398/","msgid":"<01211a4b-e178-4922-adbd-2f44fb8e658c@collabora.com>","date":"2025-02-19T16:13:28","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":191,"url":"https://patchwork.libcamera.org/api/people/191/","name":"Dylan Aïssi","email":"dylan.aissi@collabora.com"},"content":"Hi Kieran and Laurent,\n\nOn 2/14/25 17:32, Laurent Pinchart wrote:\n> On Fri, Feb 14, 2025 at 10:37:54AM +0000, Kieran Bingham wrote:\n>> Hi Dylan,\n>>\n>>> I don't see a good reason other than trying to make v4l2 and *_ipa_proxy\n>>> multiarch co-installable.\n>>> Now the question is, does this make sense? I don't know. I can drop the\n>>> libexecdir override, both v4l2 and *_ipa_proxy will go back in\n>>> usr/libexec/libcamera/\n>>> and both binary packages libcamera-v4l2 and libcamera-ipa will no longer\n>>> be multiarch co-installable, but I am not sure there was a real use case\n>>> anyway.\n>>\n>> The tricky part here will likely be the IPA proxies. I think that's part\n>> of 'libcamera' but could be handled as part of libcamera-ipa indeed, and\n>> then that component shouldn't be multiarch - the package itself would be\n>> architecture specific. Same for the libcamera-v4l2.\n>>\n>> Having libcamera core multi-arch facilitates cross compiling which is\n>> great. libcamera-v4l2 and libcamera-ipa are not required for that.\n>>\n>> Are there other use-cases for having multi-arch libcamera?\n\nYes, for instance if someone wants to install both the arm64 *and* the \narmhf (or any other architecture) variant of the libcamera-ipa package \non the same system, then it would no longer be possible. Why would \nsomeone want to do that? For instance, to have a single image that works \non two different architectures. I've already had to deal with this kind \nof request, but not with libcamera from what I know.\n\nWhat do you think about using \nusr/libexec/$(DEB_HOST_MULTIARCH)/libcamera/ instead of \nusr/libexec/libcamera/ ? That would keep these packages multi-arch \nco-installable.\n\n> I agree with the reasoning. All components needed at build time should\n> come from multiarch packages. Components needed at runtime only (IPA\n> modules, IPA proxies, and v4l2-compat.so) don't need to be\n> multiarch-compatible as far as I can tell.\n> \n\n>> Will you make an update to the debian packages?\n\nOf course! Especially because the freeze of Debian Trixie is coming [1] \nand I don't want to provide a package of libcamera with bugs in the \nfuture Debian stable :-)\n\nI have created two merge requests to fix the debian packaging, one \ndropping the override of --libexecdir [2] and the other using \nlibexec/$(DEB_HOST_MULTIARCH) to override it [3].\n\n\nBest regards,\nDylan\n\n[1] https://lists.debian.org/debian-devel-announce/2025/01/msg00004.html\n[2] https://salsa.debian.org/multimedia-team/libcamera/-/merge_requests/15\n[3] https://salsa.debian.org/multimedia-team/libcamera/-/merge_requests/16","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 A9D1CBE175\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 19 Feb 2025 16:13:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C399F6868E;\n\tWed, 19 Feb 2025 17:13:31 +0100 (CET)","from bali.collaboradmins.com (bali.collaboradmins.com\n\t[148.251.105.195])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4D40061861\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 19 Feb 2025 17:13:30 +0100 (CET)","from [192.168.1.14] (aputeaux-656-1-8-156.w83-204.abo.wanadoo.fr\n\t[83.204.202.156])\n\t(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (4096 bits)\n\tserver-digest SHA256)\n\t(No client certificate requested) (Authenticated sender: daissi)\n\tby bali.collaboradmins.com (Postfix) with ESMTPSA id 9444617E14E7;\n\tWed, 19 Feb 2025 17:13:29 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=collabora.com header.i=@collabora.com\n\theader.b=\"TVWD91Fi\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;\n\ts=mail; t=1739981609;\n\tbh=nBk2u0ImCZ36GXd8tbqLET8ceaPUD9XsevejwPMdeYs=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=TVWD91Fi3aiTNJu81ORVPe+QCRA6GWvHgz6OMnSvYdsSilyr25cnerFusi1YaBS2G\n\tcEhNCHcFMBvxE8TNkGewMpevuoNkEafTpswBr29/9McRQv0jguWVtajmvw0v7KLaM5\n\tnk/F9wkkdHwncQMCbOtCZMQCfpsW++b9eXntrkCiBNtq1JvJaVKz/Md0RkK3HyCEHC\n\tf+8HVf5G8rA/8O4M18MjJmBmoM7jWTa/At0n7YYcz41XPnYEYU6Y1XaeBovX+qyAmW\n\tJKaVbEAvZ4yETinLEir+QdzlSGvD8Oi4KyaRD3DD7WDQe/3RoF04Pc7A04JJ1a4Flh\n\tPZUYCvqCb5ZVg==","Message-ID":"<01211a4b-e178-4922-adbd-2f44fb8e658c@collabora.com>","Date":"Wed, 19 Feb 2025 17:13:28 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Javier Martinez Canillas <javierm@redhat.com>,\n\tlibcamera devel <libcamera-devel@lists.libcamera.org>","References":"<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<20230504151017.GL4551@pendragon.ideasonboard.com>\n\t<db21a45c-a52f-8e5a-8ca9-d8904a6077cb@ideasonboard.com>\n\t<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>\n\t<20230828191313.GS14596@pendragon.ideasonboard.com>\n\t<173935332755.2010433.4474690746700393191@ping.linuxembedded.co.uk>\n\t<20250213170126.GA1980@pendragon.ideasonboard.com>\n\t<173946818308.1238111.2085672783417487732@ping.linuxembedded.co.uk>\n\t<67cb7fa2-f01f-46b5-8dfd-54105fc9c96f@collabora.com>\n\t<173952947483.1238111.3161724493432130863@ping.linuxembedded.co.uk>\n\t<20250214163209.GD12632@pendragon.ideasonboard.com>","Content-Language":"en-US","From":"Dylan Aissi <dylan.aissi@collabora.com>","In-Reply-To":"<20250214163209.GD12632@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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":33399,"web_url":"https://patchwork.libcamera.org/comment/33399/","msgid":"<173998463676.3771432.15587398187153015876@ping.linuxembedded.co.uk>","date":"2025-02-19T17:03:56","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Dylan Aissi (2025-02-19 16:13:28)\n> Hi Kieran and Laurent,\n> \n> On 2/14/25 17:32, Laurent Pinchart wrote:\n> > On Fri, Feb 14, 2025 at 10:37:54AM +0000, Kieran Bingham wrote:\n> >> Hi Dylan,\n> >>\n> >>> I don't see a good reason other than trying to make v4l2 and *_ipa_proxy\n> >>> multiarch co-installable.\n> >>> Now the question is, does this make sense? I don't know. I can drop the\n> >>> libexecdir override, both v4l2 and *_ipa_proxy will go back in\n> >>> usr/libexec/libcamera/\n> >>> and both binary packages libcamera-v4l2 and libcamera-ipa will no longer\n> >>> be multiarch co-installable, but I am not sure there was a real use case\n> >>> anyway.\n> >>\n> >> The tricky part here will likely be the IPA proxies. I think that's part\n> >> of 'libcamera' but could be handled as part of libcamera-ipa indeed, and\n> >> then that component shouldn't be multiarch - the package itself would be\n> >> architecture specific. Same for the libcamera-v4l2.\n> >>\n> >> Having libcamera core multi-arch facilitates cross compiling which is\n> >> great. libcamera-v4l2 and libcamera-ipa are not required for that.\n> >>\n> >> Are there other use-cases for having multi-arch libcamera?\n> \n> Yes, for instance if someone wants to install both the arm64 *and* the \n> armhf (or any other architecture) variant of the libcamera-ipa package \n> on the same system, then it would no longer be possible. Why would \n> someone want to do that? For instance, to have a single image that works \n> on two different architectures. I've already had to deal with this kind \n> of request, but not with libcamera from what I know.\n\nI guess I could imagine a rootfs with both 32 and 64 bit support but\neeep. Dragons a-plenty... ;-D\n\n\n> What do you think about using \n> usr/libexec/$(DEB_HOST_MULTIARCH)/libcamera/ instead of \n> usr/libexec/libcamera/ ? That would keep these packages multi-arch \n> co-installable.\n\nI think that's fine. As long as the IPA components are distinctly\nseparated from the normal system libraries.\n\n \n> > I agree with the reasoning. All components needed at build time should\n> > come from multiarch packages. Components needed at runtime only (IPA\n> > modules, IPA proxies, and v4l2-compat.so) don't need to be\n> > multiarch-compatible as far as I can tell.\n> > \n> \n> >> Will you make an update to the debian packages?\n> \n> Of course! Especially because the freeze of Debian Trixie is coming [1] \n> and I don't want to provide a package of libcamera with bugs in the \n> future Debian stable :-)\n\nAwesome, thanks. out of interest,\nhttps://lists.debian.org/debian-devel-announce/2025/01/msg00004.html\nlists:\n\n2025-03-15      - Milestone 1 - Transition and toolchain freeze\n2025-04-15      - Milestone 2 - Soft Freeze\n2025-05-15      - Milestone 3 - Hard Freeze - for key packages and\n                                packages without autopkgtests\nTo be announced - Milestone 4 - Full Freeze\n\nWhich of those milestones is the last time a new version of libcamera\nwill be updated in debian trixie?\n\n> I have created two merge requests to fix the debian packaging, one \n> dropping the override of --libexecdir [2] and the other using \n> libexec/$(DEB_HOST_MULTIARCH) to override it [3].\n> \n\n[3] looks pretty reasonable to me.\n\n--\nKieran\n\n\n> \n> Best regards,\n> Dylan\n> \n> [1] https://lists.debian.org/debian-devel-announce/2025/01/msg00004.html\n> [2] https://salsa.debian.org/multimedia-team/libcamera/-/merge_requests/15\n> [3] https://salsa.debian.org/multimedia-team/libcamera/-/merge_requests/16","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 CFC52BDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 19 Feb 2025 17:04:02 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7D3536868E;\n\tWed, 19 Feb 2025 18:04:01 +0100 (CET)","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 A0CED61861\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 19 Feb 2025 18:03:59 +0100 (CET)","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 95A2E3E;\n\tWed, 19 Feb 2025 18:02:36 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"njmYHlrq\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1739984556;\n\tbh=ZT2liAlrjs4Ht0Kp+ilFKjQw5QWe68PJK2Oj1kp2gsQ=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=njmYHlrqJz7uZAD+qdz/3eYJZBo1/KPBtf1rKKNLq3z9COaT+PkKCXpkYTHoAbdO5\n\t5Z76XbkN3u2U0W9ttDzI2dPrDq6z0gS5iGUWy20Rn7X1/WTRCoduDEx/GEvgMbyUWH\n\tTyrGzhvWBUQC8DfhPB504foXYqzKStOa3visAYsc=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<01211a4b-e178-4922-adbd-2f44fb8e658c@collabora.com>","References":"<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>\n\t<20230828191313.GS14596@pendragon.ideasonboard.com>\n\t<173935332755.2010433.4474690746700393191@ping.linuxembedded.co.uk>\n\t<20250213170126.GA1980@pendragon.ideasonboard.com>\n\t<173946818308.1238111.2085672783417487732@ping.linuxembedded.co.uk>\n\t<67cb7fa2-f01f-46b5-8dfd-54105fc9c96f@collabora.com>\n\t<173952947483.1238111.3161724493432130863@ping.linuxembedded.co.uk>\n\t<20250214163209.GD12632@pendragon.ideasonboard.com>\n\t<01211a4b-e178-4922-adbd-2f44fb8e658c@collabora.com>","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Javier Martinez Canillas <javierm@redhat.com>,\n\tlibcamera devel <libcamera-devel@lists.libcamera.org>","To":"Dylan Aissi <dylan.aissi@collabora.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>","Date":"Wed, 19 Feb 2025 17:03:56 +0000","Message-ID":"<173998463676.3771432.15587398187153015876@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":33413,"web_url":"https://patchwork.libcamera.org/comment/33413/","msgid":"<3ee36a8d-e605-4817-a322-bedb0ff8ebf7@collabora.com>","date":"2025-02-20T13:47:18","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","submitter":{"id":191,"url":"https://patchwork.libcamera.org/api/people/191/","name":"Dylan Aïssi","email":"dylan.aissi@collabora.com"},"content":"Hi,\n\nOn 2/19/25 18:03, Kieran Bingham wrote:\n> Quoting Dylan Aissi (2025-02-19 16:13:28)\n> \n>> What do you think about using\n>> usr/libexec/$(DEB_HOST_MULTIARCH)/libcamera/ instead of\n>> usr/libexec/libcamera/ ? That would keep these packages multi-arch\n>> co-installable.\n> \n> I think that's fine. As long as the IPA components are distinctly\n> separated from the normal system libraries.\n> \n>   \n>>> I agree with the reasoning. All components needed at build time should\n>>> come from multiarch packages. Components needed at runtime only (IPA\n>>> modules, IPA proxies, and v4l2-compat.so) don't need to be\n>>> multiarch-compatible as far as I can tell.\n>>>\n>>\n>>>> Will you make an update to the debian packages?\n>>\n>> Of course! Especially because the freeze of Debian Trixie is coming [1]\n>> and I don't want to provide a package of libcamera with bugs in the\n>> future Debian stable :-)\n> \n> Awesome, thanks. out of interest,\n> https://lists.debian.org/debian-devel-announce/2025/01/msg00004.html\n> lists:\n> \n> 2025-03-15      - Milestone 1 - Transition and toolchain freeze\n> 2025-04-15      - Milestone 2 - Soft Freeze\n> 2025-05-15      - Milestone 3 - Hard Freeze - for key packages and\n>                                  packages without autopkgtests\n> To be announced - Milestone 4 - Full Freeze\n> \n> Which of those milestones is the last time a new version of libcamera\n> will be updated in debian trixie?\n\nIt depends! :-)\n\nIf the next version of libcamera introduces a soname change, then the\ndeadline to get it in Trixie is 2025-03-15 (transition freeze). Because \nit will require a transition, that means I will have to update the \npackage, upload it to debian/experimental, then wait for builders to \nbuild the package on all architectures (at least the official ones [1]).\nOnce built, I will have to ping the Debian release team to get their \napproval to start the transition [2]. Which is to upload the package to \ndebian/unstable and wait the rebuild of libcamera and other packages \ndepending on it. Ideally, this hypothetical version should be released \nsome days before to give enough time to all parties involved.\n\nOn the other hand, if there is no soname change, we can easily upload a \nnew version until 2025-04-15 (Soft freeze). After this date, it's still \npossible to cherry-pick some commits to fix targeted bugs. And after the \n2025-05-15 (Hard freeze), fixes will have to be manually approved by the \nrelease team (libcamera is now part of the key packages [3]). For more \ndetails see [4].\n\nThis applies only for new upstream releases, it will be much easier to \napply packaging fixes during freezes.\n\n[1] https://www.debian.org/ports/\n[2] https://wiki.debian.org/Teams/ReleaseTeam/Transitions\n[3] https://udd.debian.org/cgi-bin/key_packages.yaml.cgi\n[4] https://release.debian.org/testing/freeze_policy.html\n\n>> I have created two merge requests to fix the debian packaging, one\n>> dropping the override of --libexecdir [2] and the other using\n>> libexec/$(DEB_HOST_MULTIARCH) to override it [3].\n>>\n> \n> [3] looks pretty reasonable to me.\n\nI will finalize the package early next week, just in case of last minute \nfeedback. :-)\n\n> --\n> Kieran\n> \n> \n>>\n>> Best regards,\n>> Dylan\n>>\n>> [1] https://lists.debian.org/debian-devel-announce/2025/01/msg00004.html\n>> [2] https://salsa.debian.org/multimedia-team/libcamera/-/merge_requests/15\n>> [3] https://salsa.debian.org/multimedia-team/libcamera/-/merge_requests/16","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 65E7ABEFBE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 20 Feb 2025 13:47:23 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7C9C76032B;\n\tThu, 20 Feb 2025 14:47:22 +0100 (CET)","from bali.collaboradmins.com (bali.collaboradmins.com\n\t[148.251.105.195])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CE3216032B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 20 Feb 2025 14:47:19 +0100 (CET)","from [192.168.1.14] (aputeaux-656-1-8-156.w83-204.abo.wanadoo.fr\n\t[83.204.202.156])\n\t(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (4096 bits)\n\tserver-digest SHA256)\n\t(No client certificate requested) (Authenticated sender: daissi)\n\tby bali.collaboradmins.com (Postfix) with ESMTPSA id 2A19F17E0E95;\n\tThu, 20 Feb 2025 14:47:19 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=collabora.com header.i=@collabora.com\n\theader.b=\"Qc6ZjCOd\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;\n\ts=mail; t=1740059239;\n\tbh=AXKxafdT/iMw1BIoMcqFVxLdYL+sd96fjZwBzHdpFx4=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=Qc6ZjCOduVlDxnhUp/v4sf8HufmkfD3IqvPld8YQH3cwEehUh1lMxcS7iZJGfULjF\n\tCVIa8HMHKJyQbQLcRDhC8XF6F+UZhjLSBSdaJcPVncHysY0oLGHA+Qj4WOjbHsTbaf\n\tSN6sZJdV1xbziwXRXJgWWiLkkBzvMGo7vsO76ueT6ZdeI/7t5FwvBZ+K7tUH3Je3LL\n\tLy49M0XAb0WSi9EDdhiX9nQfWgO/A5bSZbQ70HDKluM4Z4ba2I9SElog5XK9TZL65g\n\tEB2YJRoS19wdUcIKWxV26rFo8XjXRel1O/PPTUemmYbBgE84JbTqTEbdZi9NvH/bxa\n\tASYZbq1WlJ+Mg==","Message-ID":"<3ee36a8d-e605-4817-a322-bedb0ff8ebf7@collabora.com>","Date":"Thu, 20 Feb 2025 14:47:18 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only\n\tparse IPA modules","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"Javier Martinez Canillas <javierm@redhat.com>,\n\tlibcamera devel <libcamera-devel@lists.libcamera.org>","References":"<20230504144801.2590668-2-kieran.bingham@ideasonboard.com>\n\t<169322571726.137962.8940459225362747172@ping.linuxembedded.co.uk>\n\t<20230828191313.GS14596@pendragon.ideasonboard.com>\n\t<173935332755.2010433.4474690746700393191@ping.linuxembedded.co.uk>\n\t<20250213170126.GA1980@pendragon.ideasonboard.com>\n\t<173946818308.1238111.2085672783417487732@ping.linuxembedded.co.uk>\n\t<67cb7fa2-f01f-46b5-8dfd-54105fc9c96f@collabora.com>\n\t<173952947483.1238111.3161724493432130863@ping.linuxembedded.co.uk>\n\t<20250214163209.GD12632@pendragon.ideasonboard.com>\n\t<01211a4b-e178-4922-adbd-2f44fb8e658c@collabora.com>\n\t<173998463676.3771432.15587398187153015876@ping.linuxembedded.co.uk>","Content-Language":"en-US","From":"Dylan Aissi <dylan.aissi@collabora.com>","In-Reply-To":"<173998463676.3771432.15587398187153015876@ping.linuxembedded.co.uk>","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>"}}]