[{"id":27954,"web_url":"https://patchwork.libcamera.org/comment/27954/","msgid":"<aug744ullgjr7t7wyscmbt6yxdiocgn43gh73dczrptzzogm3p@bek2nikmkkpq>","date":"2023-10-12T10:03:42","subject":"Re: [libcamera-devel] [PATCH 13/20] build: ipa: Fix bug in building\n\tmultiple IPA interfaces with the same mojom file","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Naush\n\nOn Fri, Oct 06, 2023 at 02:19:53PM +0100, Naushir Patuck via libcamera-devel wrote:\n> In the existing meson scripts, an IPA mojom interface file may not be\n> built if:\n>\n> - There are duplicate entries for the mojom file shared by different\n>   pipeline handlers in pipeline_ipa_mojom_mapping, and\n> - The IPA is not listed first in pipeline_ipa_mojom_mapping, and\n> - The first listed IPA for the given mojom file is not selected in the\n>   build.\n\nSo this basically means that building with\n        -Dpipelines=rpi/vc4 -Dipas=rpi/vc4\nbreaks\n\n../src/libcamera/pipeline/rpi/vc4/../common/pipeline_base.h:30:10: fatal error: libcamera/ipa/raspberrypi_ipa_interface.h: No such file or directory\n   30 | #include <libcamera/ipa/raspberrypi_ipa_interface.h>\n      |          ^~~~~~~~\n>\n> Fix this by using a separate list of already built mojom files\n> (mojoms_built) instead of overloading use of the existing\n> ipa_mojom_files list. Now, ipa_mojom_files gets filled in outside of\n> the IPA list enumeration loop.\n>\n> Fixes: 312e9910ba2e (\"meson: ipa: Add mapping for pipeline handler to mojom interface file\")\n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n\nI recall we have discussed in the past why\n\n--- a/include/libcamera/ipa/meson.build\n+++ b/include/libcamera/ipa/meson.build\n@@ -86,12 +86,12 @@ foreach pipeline, file : pipeline_ipa_mojom_mapping\n         continue\n     endif\n\n-    ipa_mojom_files += file\n-\n     if pipeline not in pipelines\n         continue\n     endif\n\n+    ipa_mojom_files += file\n+\n     # {interface}.mojom-module\n     mojom = custom_target(name + '_mojom_module',\n                           input : file,\n\nwas not enough, but I can't find traces of that conversation anymore.\n\nWith the above snippet applied only I've been able to build with\n\n-Dpipelines=rpi/pips, -Dipas=rpi/pisp\n-Dpipelines=rpi/vc4, -Dipas=rpi/vc4\n-Dpipelines=rpi/pips,rpi/vc4, -Dipas=rpi/pisp,rpi/vc4\n\nWhat am I missing ?\n\n> ---\n>  include/libcamera/ipa/meson.build | 19 ++++++++++++-------\n>  1 file changed, 12 insertions(+), 7 deletions(-)\n>\n> diff --git a/include/libcamera/ipa/meson.build b/include/libcamera/ipa/meson.build\n> index e72803b4e243..f3b4881c9c91 100644\n> --- a/include/libcamera/ipa/meson.build\n> +++ b/include/libcamera/ipa/meson.build\n> @@ -68,29 +68,28 @@ pipeline_ipa_mojom_mapping = {\n>      'vimc': 'vimc.mojom',\n>  }\n>\n> -ipa_mojom_files = []\n> -ipa_mojoms = []\n> -\n>  #\n>  # Generate headers from templates.\n>  #\n>\n>  # TODO Define per-pipeline ControlInfoMap with yaml?\n>\n> +ipa_mojoms = []\n> +mojoms_built = []\n>  foreach pipeline, file : pipeline_ipa_mojom_mapping\n>      name = file.split('.')[0]\n>\n> -    # Ensure we do not build duplicate mojom modules\n> -    if file in ipa_mojom_files\n> +    # Avoid building duplicate mojom interfaces with the same interface file\n> +    if name in mojoms_built\n>          continue\n>      endif\n>\n> -    ipa_mojom_files += file\n> -\n>      if pipeline not in pipelines\n>          continue\n>      endif\n>\n> +    mojoms_built += name\n> +\n>      # {interface}.mojom-module\n>      mojom = custom_target(name + '_mojom_module',\n>                            input : file,\n> @@ -155,6 +154,12 @@ foreach pipeline, file : pipeline_ipa_mojom_mapping\n>      libcamera_generated_ipa_headers += [header, serializer, proxy_header]\n>  endforeach\n>\n> +ipa_mojom_files = []\n> +foreach pipeline, file : pipeline_ipa_mojom_mapping\n> +    if file not in ipa_mojom_files\n> +        ipa_mojom_files += file\n> +    endif\n> +endforeach\n>  ipa_mojom_files = files(ipa_mojom_files)\n>\n>  # Pass this to the documentation generator in src/libcamera/ipa\n> --\n> 2.34.1\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 8AA81BD808\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 12 Oct 2023 10:03:48 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E71D36297C;\n\tThu, 12 Oct 2023 12:03:47 +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 C964B6296D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 12 Oct 2023 12:03:45 +0200 (CEST)","from ideasonboard.com (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 948E87FC;\n\tThu, 12 Oct 2023 12:03:42 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1697105027;\n\tbh=F83GN3jmo7a8oKsjoqp4EjoNtdGPsvGArRzkaO9o/GY=;\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=FdyJAcwNStfVFIYrp6abDThWfdM+dacBSVpJXw1O0qilq3k1V8XeJn9bk31JD5470\n\tkggzraqgzP9B35q86eEME9cQLEcmn95HNxBss9y2UpqlhLnd1CbaDZiIp3XuTiKI8K\n\twH3cJ+Pe436lK8iHX68kGtOEQNglQsLo6OE43NzQKmW+O9dM9FRrKlw53L1v5ZZ2BJ\n\tTq7mb6DMbjBe/cjEAvnnXKfuq48emINgGbtHvhocrlTBec4JszWu8QwBxbM3ceobsH\n\t9IVpoT2fywukTXlEpmL1zm+eUjB3PPemjPe6Vz+PZnk3jzO61p/4ysZ5AiQydVlxes\n\ttgs8AbRugs+XA==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1697105022;\n\tbh=F83GN3jmo7a8oKsjoqp4EjoNtdGPsvGArRzkaO9o/GY=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=cLK8ftq8iuik+n4AB8gWNXn7ORBJo2SHA9Q7ktIFFpiEM079KLzA0v1jTA9+RPDaX\n\tJrQp7utull5gaVSK+TISuHtUG6E+N75gW7UdWLAwoAxyhQRzLxFVMbQpZkkyIBRAPt\n\tvTC2tameiVjFpg++CMG1QYBFspedKfpAgqrKbE4o="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"cLK8ftq8\"; dkim-atps=neutral","Date":"Thu, 12 Oct 2023 12:03:42 +0200","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<aug744ullgjr7t7wyscmbt6yxdiocgn43gh73dczrptzzogm3p@bek2nikmkkpq>","References":"<20231006132000.23504-1-naush@raspberrypi.com>\n\t<20231006132000.23504-14-naush@raspberrypi.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20231006132000.23504-14-naush@raspberrypi.com>","Subject":"Re: [libcamera-devel] [PATCH 13/20] build: ipa: Fix bug in building\n\tmultiple IPA interfaces with the same mojom file","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":"Jacopo Mondi via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27958,"web_url":"https://patchwork.libcamera.org/comment/27958/","msgid":"<CAEmqJPoHKsa2HuKGyrujwN9McnjSYqyDJyXCg7ca4DatfBb2AQ@mail.gmail.com>","date":"2023-10-12T10:46:04","subject":"Re: [libcamera-devel] [PATCH 13/20] build: ipa: Fix bug in building\n\tmultiple IPA interfaces with the same mojom file","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Jacopo,\n\nOn Thu, 12 Oct 2023 at 11:03, Jacopo Mondi\n<jacopo.mondi@ideasonboard.com> wrote:\n>\n> Hi Naush\n>\n> On Fri, Oct 06, 2023 at 02:19:53PM +0100, Naushir Patuck via libcamera-devel wrote:\n> > In the existing meson scripts, an IPA mojom interface file may not be\n> > built if:\n> >\n> > - There are duplicate entries for the mojom file shared by different\n> >   pipeline handlers in pipeline_ipa_mojom_mapping, and\n> > - The IPA is not listed first in pipeline_ipa_mojom_mapping, and\n> > - The first listed IPA for the given mojom file is not selected in the\n> >   build.\n>\n> So this basically means that building with\n>         -Dpipelines=rpi/vc4 -Dipas=rpi/vc4\n> breaks\n>\n> ../src/libcamera/pipeline/rpi/vc4/../common/pipeline_base.h:30:10: fatal error: libcamera/ipa/raspberrypi_ipa_interface.h: No such file or directory\n>    30 | #include <libcamera/ipa/raspberrypi_ipa_interface.h>\n>       |          ^~~~~~~~\n> >\n> > Fix this by using a separate list of already built mojom files\n> > (mojoms_built) instead of overloading use of the existing\n> > ipa_mojom_files list. Now, ipa_mojom_files gets filled in outside of\n> > the IPA list enumeration loop.\n> >\n> > Fixes: 312e9910ba2e (\"meson: ipa: Add mapping for pipeline handler to mojom interface file\")\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n>\n> I recall we have discussed in the past why\n>\n> --- a/include/libcamera/ipa/meson.build\n> +++ b/include/libcamera/ipa/meson.build\n> @@ -86,12 +86,12 @@ foreach pipeline, file : pipeline_ipa_mojom_mapping\n>          continue\n>      endif\n>\n> -    ipa_mojom_files += file\n> -\n>      if pipeline not in pipelines\n>          continue\n>      endif\n>\n> +    ipa_mojom_files += file\n> +\n>      # {interface}.mojom-module\n>      mojom = custom_target(name + '_mojom_module',\n>                            input : file,\n>\n> was not enough, but I can't find traces of that conversation anymore.\n>\n> With the above snippet applied only I've been able to build with\n>\n> -Dpipelines=rpi/pips, -Dipas=rpi/pisp\n> -Dpipelines=rpi/vc4, -Dipas=rpi/vc4\n> -Dpipelines=rpi/pips,rpi/vc4, -Dipas=rpi/pisp,rpi/vc4\n>\n> What am I missing ?\n\nThe above snippet will build the files correctly, but crucially it\nwill fail to build the interface documentation files for ipas that are\nnot enabled.  I think the following files must unconditionally be\ngenerated for documentation purposes:\n\nbuild/src/libcamera/ipa/ipu3_ipa_interface.cpp\nbuild/src/libcamera/ipa/raspberrypi_ipa_interface.cpp\nbuild/src/libcamera/ipa/rkisp1_ipa_interface.cpp\nbuild/src/libcamera/ipa/core_ipa_interface.cpp\nbuild/src/libcamera/ipa/vimc_ipa_interface.cpp\n\nRegards,\nNaush\n\n>\n> > ---\n> >  include/libcamera/ipa/meson.build | 19 ++++++++++++-------\n> >  1 file changed, 12 insertions(+), 7 deletions(-)\n> >\n> > diff --git a/include/libcamera/ipa/meson.build b/include/libcamera/ipa/meson.build\n> > index e72803b4e243..f3b4881c9c91 100644\n> > --- a/include/libcamera/ipa/meson.build\n> > +++ b/include/libcamera/ipa/meson.build\n> > @@ -68,29 +68,28 @@ pipeline_ipa_mojom_mapping = {\n> >      'vimc': 'vimc.mojom',\n> >  }\n> >\n> > -ipa_mojom_files = []\n> > -ipa_mojoms = []\n> > -\n> >  #\n> >  # Generate headers from templates.\n> >  #\n> >\n> >  # TODO Define per-pipeline ControlInfoMap with yaml?\n> >\n> > +ipa_mojoms = []\n> > +mojoms_built = []\n> >  foreach pipeline, file : pipeline_ipa_mojom_mapping\n> >      name = file.split('.')[0]\n> >\n> > -    # Ensure we do not build duplicate mojom modules\n> > -    if file in ipa_mojom_files\n> > +    # Avoid building duplicate mojom interfaces with the same interface file\n> > +    if name in mojoms_built\n> >          continue\n> >      endif\n> >\n> > -    ipa_mojom_files += file\n> > -\n> >      if pipeline not in pipelines\n> >          continue\n> >      endif\n> >\n> > +    mojoms_built += name\n> > +\n> >      # {interface}.mojom-module\n> >      mojom = custom_target(name + '_mojom_module',\n> >                            input : file,\n> > @@ -155,6 +154,12 @@ foreach pipeline, file : pipeline_ipa_mojom_mapping\n> >      libcamera_generated_ipa_headers += [header, serializer, proxy_header]\n> >  endforeach\n> >\n> > +ipa_mojom_files = []\n> > +foreach pipeline, file : pipeline_ipa_mojom_mapping\n> > +    if file not in ipa_mojom_files\n> > +        ipa_mojom_files += file\n> > +    endif\n> > +endforeach\n> >  ipa_mojom_files = files(ipa_mojom_files)\n> >\n> >  # Pass this to the documentation generator in src/libcamera/ipa\n> > --\n> > 2.34.1\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 8624FBD808\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 12 Oct 2023 10:46:35 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4A0F46297E;\n\tThu, 12 Oct 2023 12:46:34 +0200 (CEST)","from mail-yw1-x1131.google.com (mail-yw1-x1131.google.com\n\t[IPv6:2607:f8b0:4864:20::1131])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B2C156296D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 12 Oct 2023 12:46:32 +0200 (CEST)","by mail-yw1-x1131.google.com with SMTP id\n\t00721157ae682-59e88a28b98so6498137b3.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 12 Oct 2023 03:46:32 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1697107594;\n\tbh=qCrVoVz/t8I1dVnIweGC9gnznLD4kJzeQGvdXOCJqmg=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=FdGnRNSTVd6iYuMp4PtrhAyhxaSt26zke2w6Tfzoriju3zJYeJVUk3r0A0BFR9XSM\n\tkQ/+01WaKY/Lw5pV6XD2pm64OVQsDmIyCjJV4/UKP4m2mfSu3I9R5SHH0cMS6DsaDl\n\tHuxhAFRBJSwXNzA9gjDIGPp9N6xu3CsMzRj7V/ixuYUm4+rie29iHubZhQLMUuXssC\n\tfYUHR+cXWo68nIRiPJhuhtJVnpiSGRO9j+NS0zlOfSApdOGBJ60LCO8TuvmMLLEBOD\n\tFeZsJ4Fo8SZoNaH27Y5k7r+fB/YqgxLAcWPNLX3g4+t0AwjIPRbYmk6CpAJ5+A39k7\n\tzQwCdGUyd0VhA==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1697107591; x=1697712391;\n\tdarn=lists.libcamera.org; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=GP9y0SdETcT7gF8hhDrj6Gu0E1tCtlzSXuyduqZ5OBQ=;\n\tb=XH22YGZsgDsXBAI/AQp9b8oiCX5L2cxD+eUOcMvceAGi1A6LKdOcd8CITxXpfhuh93\n\tMCGU8oXYKDUu7sm9LSSHSeNMxLWQDzR2jpcTg2XwHvpuG2I+iKe8rfnpZhHvenSxkA3k\n\tlLLxeJHo4JzY6gAbs6T7qsh8/dWkabwEgtSN/vhq4qjYj2JGWswmH38twA7XUTCsbPQq\n\txqBtOy/l++yYtTCRXfhMf862vDGB7TzcvAhSngGiaqq8jmKd+OnhX5WfFAUwiFXsfSHt\n\tFLz7Nllb9uu9LT95xQBgC+AE7PimUyinp09dAGNl7pt8YMIrW3QAQJ5/Fu1k0QFB96Kr\n\tls8A=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"XH22YGZs\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1697107591; x=1697712391;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=GP9y0SdETcT7gF8hhDrj6Gu0E1tCtlzSXuyduqZ5OBQ=;\n\tb=Sl5E2RN2YfA5TyxlJ9jHZoQHQSSRUnMvinc6BVAZ5SzhbTLpntH3iZsOm3oGNT5JR6\n\tarLtH1gcWYdZS126gf1kD+IA5/WigNFF+08TUJRwxp7ZD6zwrZC3Xk/EwfwUd6+QEMrC\n\tCWU5j7Wvw0t7fzJaGuIAaG+Om90QxYT8ZvmnbhgfvYgsw+WaOwhoDMAcQZ6sDSrhtmqa\n\trOq7/OqI2zFVsA6X5wkVzA64Vj30h+OJZb7dBZkn+VVGvIxcy/y9SmN2Myjh0UM3lJYx\n\t/nvPP64X/gbbNmDjAG/PD4q8VYMWJlH7zu3FSqS27bAKDTH78I6XHmh937eYJrUvzx/K\n\t69sg==","X-Gm-Message-State":"AOJu0YxVzgqrzY4E42SNiDYA0sYTn0mCAVGjHg+0K0+F5BFN6/7LA+ZL\n\ttKTiIkulMAzMop8fp/cN+0deUnvpOGFyoxPcBU7hgB57Lo/ksoMu5T6UIQ==","X-Google-Smtp-Source":"AGHT+IF7ghyABO3I9ZqY2oDY/EqtIwbAwfedQ5bRpP4T2h71DLkWcgcvaCS9z7Jur7O8ei9IG/S01ioNBhpnpmhqHuE=","X-Received":"by 2002:a05:690c:88c:b0:570:2542:cc9b with SMTP id\n\tcd12-20020a05690c088c00b005702542cc9bmr14185184ywb.18.1697107591454;\n\tThu, 12 Oct 2023 03:46:31 -0700 (PDT)","MIME-Version":"1.0","References":"<20231006132000.23504-1-naush@raspberrypi.com>\n\t<20231006132000.23504-14-naush@raspberrypi.com>\n\t<aug744ullgjr7t7wyscmbt6yxdiocgn43gh73dczrptzzogm3p@bek2nikmkkpq>","In-Reply-To":"<aug744ullgjr7t7wyscmbt6yxdiocgn43gh73dczrptzzogm3p@bek2nikmkkpq>","Date":"Thu, 12 Oct 2023 11:46:04 +0100","Message-ID":"<CAEmqJPoHKsa2HuKGyrujwN9McnjSYqyDJyXCg7ca4DatfBb2AQ@mail.gmail.com>","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH 13/20] build: ipa: Fix bug in building\n\tmultiple IPA interfaces with the same mojom file","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":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27963,"web_url":"https://patchwork.libcamera.org/comment/27963/","msgid":"<i6uyiwaqdbx77yygtszutoqvgczk6gtnlle745t2m7e5z47362@ylizltjuaia7>","date":"2023-10-12T11:31:31","subject":"Re: [libcamera-devel] [PATCH 13/20] build: ipa: Fix bug in building\n\tmultiple IPA interfaces with the same mojom file","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Naush\n\nOn Thu, Oct 12, 2023 at 11:46:04AM +0100, Naushir Patuck wrote:\n> Hi Jacopo,\n>\n> On Thu, 12 Oct 2023 at 11:03, Jacopo Mondi\n> <jacopo.mondi@ideasonboard.com> wrote:\n> >\n> > Hi Naush\n> >\n> > On Fri, Oct 06, 2023 at 02:19:53PM +0100, Naushir Patuck via libcamera-devel wrote:\n> > > In the existing meson scripts, an IPA mojom interface file may not be\n> > > built if:\n> > >\n> > > - There are duplicate entries for the mojom file shared by different\n> > >   pipeline handlers in pipeline_ipa_mojom_mapping, and\n> > > - The IPA is not listed first in pipeline_ipa_mojom_mapping, and\n> > > - The first listed IPA for the given mojom file is not selected in the\n> > >   build.\n> >\n> > So this basically means that building with\n> >         -Dpipelines=rpi/vc4 -Dipas=rpi/vc4\n> > breaks\n> >\n> > ../src/libcamera/pipeline/rpi/vc4/../common/pipeline_base.h:30:10: fatal error: libcamera/ipa/raspberrypi_ipa_interface.h: No such file or directory\n> >    30 | #include <libcamera/ipa/raspberrypi_ipa_interface.h>\n> >       |          ^~~~~~~~\n> > >\n> > > Fix this by using a separate list of already built mojom files\n> > > (mojoms_built) instead of overloading use of the existing\n> > > ipa_mojom_files list. Now, ipa_mojom_files gets filled in outside of\n> > > the IPA list enumeration loop.\n> > >\n> > > Fixes: 312e9910ba2e (\"meson: ipa: Add mapping for pipeline handler to mojom interface file\")\n> > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > > Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n> >\n> > I recall we have discussed in the past why\n> >\n> > --- a/include/libcamera/ipa/meson.build\n> > +++ b/include/libcamera/ipa/meson.build\n> > @@ -86,12 +86,12 @@ foreach pipeline, file : pipeline_ipa_mojom_mapping\n> >          continue\n> >      endif\n> >\n> > -    ipa_mojom_files += file\n> > -\n> >      if pipeline not in pipelines\n> >          continue\n> >      endif\n> >\n> > +    ipa_mojom_files += file\n> > +\n> >      # {interface}.mojom-module\n> >      mojom = custom_target(name + '_mojom_module',\n> >                            input : file,\n> >\n> > was not enough, but I can't find traces of that conversation anymore.\n> >\n> > With the above snippet applied only I've been able to build with\n> >\n> > -Dpipelines=rpi/pips, -Dipas=rpi/pisp\n> > -Dpipelines=rpi/vc4, -Dipas=rpi/vc4\n> > -Dpipelines=rpi/pips,rpi/vc4, -Dipas=rpi/pisp,rpi/vc4\n> >\n> > What am I missing ?\n>\n> The above snippet will build the files correctly, but crucially it\n> will fail to build the interface documentation files for ipas that are\n> not enabled.  I think the following files must unconditionally be\n> generated for documentation purposes:\n>\n> build/src/libcamera/ipa/ipu3_ipa_interface.cpp\n> build/src/libcamera/ipa/raspberrypi_ipa_interface.cpp\n> build/src/libcamera/ipa/rkisp1_ipa_interface.cpp\n> build/src/libcamera/ipa/core_ipa_interface.cpp\n> build/src/libcamera/ipa/vimc_ipa_interface.cpp\n>\n\nOh! right!\n\nCan I add a line to the commit message to record that ?\n\nFix this by using a separate list of already built mojom files\n(mojoms_built) instead of overloading use of the existing\nipa_mojom_files list. Now, ipa_mojom_files gets filled in outside of\nthe IPA list enumeration loop, this also guarantees the IPA\ndocumentation gets built even if the pipeline is not selected.\n\n\n\n> Regards,\n> Naush\n>\n> >\n> > > ---\n> > >  include/libcamera/ipa/meson.build | 19 ++++++++++++-------\n> > >  1 file changed, 12 insertions(+), 7 deletions(-)\n> > >\n> > > diff --git a/include/libcamera/ipa/meson.build b/include/libcamera/ipa/meson.build\n> > > index e72803b4e243..f3b4881c9c91 100644\n> > > --- a/include/libcamera/ipa/meson.build\n> > > +++ b/include/libcamera/ipa/meson.build\n> > > @@ -68,29 +68,28 @@ pipeline_ipa_mojom_mapping = {\n> > >      'vimc': 'vimc.mojom',\n> > >  }\n> > >\n> > > -ipa_mojom_files = []\n> > > -ipa_mojoms = []\n> > > -\n> > >  #\n> > >  # Generate headers from templates.\n> > >  #\n> > >\n> > >  # TODO Define per-pipeline ControlInfoMap with yaml?\n> > >\n> > > +ipa_mojoms = []\n> > > +mojoms_built = []\n> > >  foreach pipeline, file : pipeline_ipa_mojom_mapping\n> > >      name = file.split('.')[0]\n> > >\n> > > -    # Ensure we do not build duplicate mojom modules\n> > > -    if file in ipa_mojom_files\n> > > +    # Avoid building duplicate mojom interfaces with the same interface file\n> > > +    if name in mojoms_built\n> > >          continue\n> > >      endif\n> > >\n> > > -    ipa_mojom_files += file\n> > > -\n> > >      if pipeline not in pipelines\n> > >          continue\n> > >      endif\n> > >\n> > > +    mojoms_built += name\n> > > +\n> > >      # {interface}.mojom-module\n> > >      mojom = custom_target(name + '_mojom_module',\n> > >                            input : file,\n> > > @@ -155,6 +154,12 @@ foreach pipeline, file : pipeline_ipa_mojom_mapping\n> > >      libcamera_generated_ipa_headers += [header, serializer, proxy_header]\n> > >  endforeach\n> > >\n> > > +ipa_mojom_files = []\n> > > +foreach pipeline, file : pipeline_ipa_mojom_mapping\n> > > +    if file not in ipa_mojom_files\n> > > +        ipa_mojom_files += file\n> > > +    endif\n> > > +endforeach\n> > >  ipa_mojom_files = files(ipa_mojom_files)\n> > >\n> > >  # Pass this to the documentation generator in src/libcamera/ipa\n> > > --\n> > > 2.34.1\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 6435DC3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 12 Oct 2023 11:31:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BC20A6297E;\n\tThu, 12 Oct 2023 13:31:36 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9E8EC6296D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 12 Oct 2023 13:31:34 +0200 (CEST)","from ideasonboard.com (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 41D0F8C2;\n\tThu, 12 Oct 2023 13:31:31 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1697110296;\n\tbh=71FbqV9Ikp2MqqTOa75Os5tVKLlNNshQoZt2C9cZhtU=;\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=osMk6FNVFAX3oN8IGTczYWw3j5a4qX1Kc8uwjqMKA9LlJq8IBIepiFXszZLhrTdzh\n\tw1nL83jqdqhKUVUzmm7INObdZDBT/IGkxYDNwPNZHU+dZNsbsfoaB7fOu1bfcYmOe5\n\tPEYV6I2C0g0IOgHk6It9uyy2QP8TJZEhnb9HwjF2Do4MbWJCisu/hxKf0bnwV8Kria\n\tUXx+eEx3mzT/BVL8bI87HVHLqJVxmVSQK79IAk3RbSWC50o82w/FP8by3iKPBOC6Rt\n\tDlccPICq0PgNzxTdMT/z+dJp6Atss+XYenLfD/RAu5Rsg+q4a98Gsx2UnetIAUZhEW\n\tk3yOoax23Ka6g==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1697110291;\n\tbh=71FbqV9Ikp2MqqTOa75Os5tVKLlNNshQoZt2C9cZhtU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=H55fHxc6611KO9TsIfdPEItAlr7vxcYRcFS82I7NCm2rCJ0/Em2WDkDNb2pODL/An\n\tZk5rLZr7sHfdelP/0WJ2dM5LmYP0pwxoUyydFU9FklOASwOIx7/TZ9rjdTPN0x5btI\n\t8jcbGN6l1UO8BVY9ZaloB/pkwTMt2jzEJvbYZh1M="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"H55fHxc6\"; dkim-atps=neutral","Date":"Thu, 12 Oct 2023 13:31:31 +0200","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<i6uyiwaqdbx77yygtszutoqvgczk6gtnlle745t2m7e5z47362@ylizltjuaia7>","References":"<20231006132000.23504-1-naush@raspberrypi.com>\n\t<20231006132000.23504-14-naush@raspberrypi.com>\n\t<aug744ullgjr7t7wyscmbt6yxdiocgn43gh73dczrptzzogm3p@bek2nikmkkpq>\n\t<CAEmqJPoHKsa2HuKGyrujwN9McnjSYqyDJyXCg7ca4DatfBb2AQ@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<CAEmqJPoHKsa2HuKGyrujwN9McnjSYqyDJyXCg7ca4DatfBb2AQ@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH 13/20] build: ipa: Fix bug in building\n\tmultiple IPA interfaces with the same mojom file","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":"Jacopo Mondi via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Cc":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27964,"web_url":"https://patchwork.libcamera.org/comment/27964/","msgid":"<CAEmqJPojqdCMOxMC8XN7wciq0xpE7q9gYqqY-NfKPZjyNQaPGw@mail.gmail.com>","date":"2023-10-12T11:44:07","subject":"Re: [libcamera-devel] [PATCH 13/20] build: ipa: Fix bug in building\n\tmultiple IPA interfaces with the same mojom file","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"On Thu, 12 Oct 2023 at 12:31, Jacopo Mondi\n<jacopo.mondi@ideasonboard.com> wrote:\n>\n> Hi Naush\n>\n> On Thu, Oct 12, 2023 at 11:46:04AM +0100, Naushir Patuck wrote:\n> > Hi Jacopo,\n> >\n> > On Thu, 12 Oct 2023 at 11:03, Jacopo Mondi\n> > <jacopo.mondi@ideasonboard.com> wrote:\n> > >\n> > > Hi Naush\n> > >\n> > > On Fri, Oct 06, 2023 at 02:19:53PM +0100, Naushir Patuck via libcamera-devel wrote:\n> > > > In the existing meson scripts, an IPA mojom interface file may not be\n> > > > built if:\n> > > >\n> > > > - There are duplicate entries for the mojom file shared by different\n> > > >   pipeline handlers in pipeline_ipa_mojom_mapping, and\n> > > > - The IPA is not listed first in pipeline_ipa_mojom_mapping, and\n> > > > - The first listed IPA for the given mojom file is not selected in the\n> > > >   build.\n> > >\n> > > So this basically means that building with\n> > >         -Dpipelines=rpi/vc4 -Dipas=rpi/vc4\n> > > breaks\n> > >\n> > > ../src/libcamera/pipeline/rpi/vc4/../common/pipeline_base.h:30:10: fatal error: libcamera/ipa/raspberrypi_ipa_interface.h: No such file or directory\n> > >    30 | #include <libcamera/ipa/raspberrypi_ipa_interface.h>\n> > >       |          ^~~~~~~~\n> > > >\n> > > > Fix this by using a separate list of already built mojom files\n> > > > (mojoms_built) instead of overloading use of the existing\n> > > > ipa_mojom_files list. Now, ipa_mojom_files gets filled in outside of\n> > > > the IPA list enumeration loop.\n> > > >\n> > > > Fixes: 312e9910ba2e (\"meson: ipa: Add mapping for pipeline handler to mojom interface file\")\n> > > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > > > Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n> > >\n> > > I recall we have discussed in the past why\n> > >\n> > > --- a/include/libcamera/ipa/meson.build\n> > > +++ b/include/libcamera/ipa/meson.build\n> > > @@ -86,12 +86,12 @@ foreach pipeline, file : pipeline_ipa_mojom_mapping\n> > >          continue\n> > >      endif\n> > >\n> > > -    ipa_mojom_files += file\n> > > -\n> > >      if pipeline not in pipelines\n> > >          continue\n> > >      endif\n> > >\n> > > +    ipa_mojom_files += file\n> > > +\n> > >      # {interface}.mojom-module\n> > >      mojom = custom_target(name + '_mojom_module',\n> > >                            input : file,\n> > >\n> > > was not enough, but I can't find traces of that conversation anymore.\n> > >\n> > > With the above snippet applied only I've been able to build with\n> > >\n> > > -Dpipelines=rpi/pips, -Dipas=rpi/pisp\n> > > -Dpipelines=rpi/vc4, -Dipas=rpi/vc4\n> > > -Dpipelines=rpi/pips,rpi/vc4, -Dipas=rpi/pisp,rpi/vc4\n> > >\n> > > What am I missing ?\n> >\n> > The above snippet will build the files correctly, but crucially it\n> > will fail to build the interface documentation files for ipas that are\n> > not enabled.  I think the following files must unconditionally be\n> > generated for documentation purposes:\n> >\n> > build/src/libcamera/ipa/ipu3_ipa_interface.cpp\n> > build/src/libcamera/ipa/raspberrypi_ipa_interface.cpp\n> > build/src/libcamera/ipa/rkisp1_ipa_interface.cpp\n> > build/src/libcamera/ipa/core_ipa_interface.cpp\n> > build/src/libcamera/ipa/vimc_ipa_interface.cpp\n> >\n>\n> Oh! right!\n>\n> Can I add a line to the commit message to record that ?\n>\n> Fix this by using a separate list of already built mojom files\n> (mojoms_built) instead of overloading use of the existing\n> ipa_mojom_files list. Now, ipa_mojom_files gets filled in outside of\n> the IPA list enumeration loop, this also guarantees the IPA\n> documentation gets built even if the pipeline is not selected.\n\nSounds good to me!\n\n>\n>\n>\n> > Regards,\n> > Naush\n> >\n> > >\n> > > > ---\n> > > >  include/libcamera/ipa/meson.build | 19 ++++++++++++-------\n> > > >  1 file changed, 12 insertions(+), 7 deletions(-)\n> > > >\n> > > > diff --git a/include/libcamera/ipa/meson.build b/include/libcamera/ipa/meson.build\n> > > > index e72803b4e243..f3b4881c9c91 100644\n> > > > --- a/include/libcamera/ipa/meson.build\n> > > > +++ b/include/libcamera/ipa/meson.build\n> > > > @@ -68,29 +68,28 @@ pipeline_ipa_mojom_mapping = {\n> > > >      'vimc': 'vimc.mojom',\n> > > >  }\n> > > >\n> > > > -ipa_mojom_files = []\n> > > > -ipa_mojoms = []\n> > > > -\n> > > >  #\n> > > >  # Generate headers from templates.\n> > > >  #\n> > > >\n> > > >  # TODO Define per-pipeline ControlInfoMap with yaml?\n> > > >\n> > > > +ipa_mojoms = []\n> > > > +mojoms_built = []\n> > > >  foreach pipeline, file : pipeline_ipa_mojom_mapping\n> > > >      name = file.split('.')[0]\n> > > >\n> > > > -    # Ensure we do not build duplicate mojom modules\n> > > > -    if file in ipa_mojom_files\n> > > > +    # Avoid building duplicate mojom interfaces with the same interface file\n> > > > +    if name in mojoms_built\n> > > >          continue\n> > > >      endif\n> > > >\n> > > > -    ipa_mojom_files += file\n> > > > -\n> > > >      if pipeline not in pipelines\n> > > >          continue\n> > > >      endif\n> > > >\n> > > > +    mojoms_built += name\n> > > > +\n> > > >      # {interface}.mojom-module\n> > > >      mojom = custom_target(name + '_mojom_module',\n> > > >                            input : file,\n> > > > @@ -155,6 +154,12 @@ foreach pipeline, file : pipeline_ipa_mojom_mapping\n> > > >      libcamera_generated_ipa_headers += [header, serializer, proxy_header]\n> > > >  endforeach\n> > > >\n> > > > +ipa_mojom_files = []\n> > > > +foreach pipeline, file : pipeline_ipa_mojom_mapping\n> > > > +    if file not in ipa_mojom_files\n> > > > +        ipa_mojom_files += file\n> > > > +    endif\n> > > > +endforeach\n> > > >  ipa_mojom_files = files(ipa_mojom_files)\n> > > >\n> > > >  # Pass this to the documentation generator in src/libcamera/ipa\n> > > > --\n> > > > 2.34.1\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 93664BD808\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 12 Oct 2023 11:44:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EC2B86297C;\n\tThu, 12 Oct 2023 13:44:37 +0200 (CEST)","from mail-yw1-x112b.google.com (mail-yw1-x112b.google.com\n\t[IPv6:2607:f8b0:4864:20::112b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9ED6F6296D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 12 Oct 2023 13:44:35 +0200 (CEST)","by mail-yw1-x112b.google.com with SMTP id\n\t00721157ae682-5a7dafb659cso10871327b3.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 12 Oct 2023 04:44:35 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1697111078;\n\tbh=AJoagVaMhMrysBTh8VMWivh5GNr0TxSXM14Ls3rHs5U=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=ldA+IpWl5rQ56oSmunvGNlCGc6yUXklnNXV1DKY/XJ3kwiHE1YWqylQWMKflCXIJ+\n\tZ6JUd14gvJifBMtzmk0ty/zz7XdQ7CnEzVX4GquyvmC4cet/TSQCVMwVdKVJwZkq3k\n\tRqdDuFvaLRoKbn7JwuyGLgnbhRv8EVQJH7bh+efZL2ydiYXm4uNj4O6lJMhr6cZPUC\n\tRPJtNNTc8K3lrioSDQd/7djSPKh5BY9bc9TmDK10nrmqYLtDThhaqdPt/n+ShkPnkM\n\tfdSGml0j2Xqdi0xdHCWv3cR6pBBEQ9Wntkmo4aNI7dqgzDMKK26F6KsE8jk9U+Nrey\n\tahCDz75eXkTRQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1697111074; x=1697715874;\n\tdarn=lists.libcamera.org; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=WKC/HGSc9eRJM4ybu1jV2Mx3PlFEXnZHTCxBzoPXHxg=;\n\tb=AzziNLL8TDONT9KG9t8c5h5tzFmnTW5ZAXWf7OyMqiC00tKHKaXIsiVA5DEusDv8aw\n\tA7v3e2wZ+nIMDstgWZbbjWGsWHfgvr9KYJLEO1cbubSwi+pnFFB8+UsK31SNzbvzcnlm\n\tqZOjy80fRCXfwkOpj1BdDM5Jj2Q7qnjw2S0z+Qh+/0Jn9AxNTODzVU86b2VxRB0ZxinI\n\t5WWPajmpS8pB4bxY72hU8zFSbHm8srf+x4l+R3yxxtn3F+oJ3pamFsjK08aBCQzF3Wxe\n\t/XQkgvOFQ8TRrvVfmfYTe7jEZh37kcgNvy2z8H4+TdyS2x1sqxiOBVegh49nkcpmggyq\n\tXAEw=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"AzziNLL8\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1697111074; x=1697715874;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=WKC/HGSc9eRJM4ybu1jV2Mx3PlFEXnZHTCxBzoPXHxg=;\n\tb=YLqdOxaqMa5qw2kGRdcLiM/3BSBlbgxFL1SISnS74wGM+bGfKML2b2BfpOVkZem3F0\n\tIf1/TsKcwhvCft0SYlTzzOQ5pNwRRdMprXgA39SD6lo1IZLiWpwcZ4aBtAVga9HIlu/h\n\tt6vGkabMVob6e0Cy53ajyFLh5yhUH1xHIYtDX9WNl2EoUkeIBoGp4TV0Ri9eVkj+bRRp\n\t7Ax5ulap4oWSOoKjuucH7ZxTKY07tUS+9wuhlcjSN+OwM7dLhQjkB9cQv2gSWsOxcoZB\n\tBQFNjTko1RZq7ZPEUfbJ7f7J/BVScoU5orS2IsNgFOck49oEQwNKKB8PRlxp4ZNeLlID\n\t2C3g==","X-Gm-Message-State":"AOJu0YxlwBpo0x9Y4aKOPqH6mMVFYtu4fN7TNRKI1IKYaEYvaIMeyEnX\n\tFXJV+Ow/F8FRZSMBqsJeKDZMY4+Hj7/dDVC3og4cVp1Xu3KPHrNN4PY=","X-Google-Smtp-Source":"AGHT+IHvwSE/1YUAIvTije0bM91Ds2H1tauazSgvyh1OUav7QjfN9HI+McBb5PFoIIz/OjrmXLfCYBxtmuVCUsXx26s=","X-Received":"by 2002:a0d:d990:0:b0:5a7:bfbf:691d with SMTP id\n\tb138-20020a0dd990000000b005a7bfbf691dmr8917348ywe.42.1697111074123;\n\tThu, 12 Oct 2023 04:44:34 -0700 (PDT)","MIME-Version":"1.0","References":"<20231006132000.23504-1-naush@raspberrypi.com>\n\t<20231006132000.23504-14-naush@raspberrypi.com>\n\t<aug744ullgjr7t7wyscmbt6yxdiocgn43gh73dczrptzzogm3p@bek2nikmkkpq>\n\t<CAEmqJPoHKsa2HuKGyrujwN9McnjSYqyDJyXCg7ca4DatfBb2AQ@mail.gmail.com>\n\t<i6uyiwaqdbx77yygtszutoqvgczk6gtnlle745t2m7e5z47362@ylizltjuaia7>","In-Reply-To":"<i6uyiwaqdbx77yygtszutoqvgczk6gtnlle745t2m7e5z47362@ylizltjuaia7>","Date":"Thu, 12 Oct 2023 12:44:07 +0100","Message-ID":"<CAEmqJPojqdCMOxMC8XN7wciq0xpE7q9gYqqY-NfKPZjyNQaPGw@mail.gmail.com>","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH 13/20] build: ipa: Fix bug in building\n\tmultiple IPA interfaces with the same mojom file","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":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]