[{"id":12719,"web_url":"https://patchwork.libcamera.org/comment/12719/","msgid":"<20200924102735.ektko2q3krozlib7@uno.localdomain>","date":"2020-09-24T10:27:35","subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Kieran\n\nOn Thu, Sep 24, 2020 at 11:02:01AM +0100, Kieran Bingham wrote:\n> By default the Raspberry Pi pipeline handler is enabled when\n> configuring the build.\n>\n> The Raspberry Pi IPA currently depends upon 'boost' which is a large\n> dependency to bring in.\n>\n> Make the IPA compilation dependant upon the availabilty of the boost\n> library, but display a warning when the pipeline is enabled and the\n> dependency is not found.\n>\n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> ---\n>\n> This is mostly posted to promote discussion on this topic.\n>\n> The requirement for boost is really heavy (+100MB package for a few\n> headers), and is only used for the RPi IPA.\n>\n> This patch automatically disables the IPA while printing a message if it\n> was selected if the boost library is not available.\n>\n> Doing all of this in a clean way seems quite difficult because of the\n> way the meson options works ... so ...\n>\n> 3 ... 2 ... 1 ....\n>\n>    Discuss...\n\nI really like the idea of depending on boost only if RPi is enabled.\n\n>\n>\n>  src/ipa/raspberrypi/meson.build | 40 +++++++++++++++++++--------------\n>  1 file changed, 23 insertions(+), 17 deletions(-)\n>\n> diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build\n> index 9445cd097df5..b284378c9621 100644\n> --- a/src/ipa/raspberrypi/meson.build\n> +++ b/src/ipa/raspberrypi/meson.build\n> @@ -2,9 +2,11 @@\n>\n>  ipa_name = 'ipa_rpi'\n>\n> +boost = dependency('boost', required : false)\n> +\n>  rpi_ipa_deps = [\n>      libcamera_dep,\n> -    dependency('boost'),\n> +    boost,\n>      libatomic,\n>  ]\n>\n> @@ -41,22 +43,26 @@ rpi_ipa_sources = files([\n>      'controller/pwl.cpp',\n>  ])\n>\n> -mod = shared_module(ipa_name,\n> -                    rpi_ipa_sources,\n> -                    name_prefix : '',\n> -                    include_directories : rpi_ipa_includes,\n> -                    dependencies : rpi_ipa_deps,\n> -                    link_with : libipa,\n> -                    install : true,\n> -                    install_dir : ipa_install_dir)\n> -\n> -if ipa_sign_module\n> -    custom_target(ipa_name + '.so.sign',\n> -                  input : mod,\n> -                  output : ipa_name + '.so.sign',\n> -                  command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n> -                  install : false,\n> -                  build_by_default : true)\n> +if boost.found()\n> +    mod = shared_module(ipa_name,\n> +                        rpi_ipa_sources,\n> +                        name_prefix : '',\n> +                        include_directories : rpi_ipa_includes,\n> +                        dependencies : rpi_ipa_deps,\n> +                        link_with : libipa,\n> +                        install : true,\n> +                        install_dir : ipa_install_dir)\n> +\n> +    if ipa_sign_module\n> +        custom_target(ipa_name + '.so.sign',\n> +                      input : mod,\n> +                      output : ipa_name + '.so.sign',\n> +                      command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n> +                      install : false,\n> +                      build_by_default : true)\n> +    endif\n> +else\n> +    warning('The Raspberry Pi pipeline is enabled, but dependency \"boost\" was not found')\n\n\nI know nothing about meson, but can we have a contruct that\n        if !boost.found\n                error \"...\"\n\nand the build fails ?\n\n>  endif\n>\n>  subdir('data')\n> --\n> 2.25.1\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 A60D8C3B5C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 24 Sep 2020 10:23:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3AE2160363;\n\tThu, 24 Sep 2020 12:23:45 +0200 (CEST)","from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net\n\t[217.70.183.195])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3A96F60362\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Sep 2020 12:23:43 +0200 (CEST)","from uno.localdomain (93-34-118-233.ip49.fastwebnet.it\n\t[93.34.118.233]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay3-d.mail.gandi.net (Postfix) with ESMTPSA id ABDC060004;\n\tThu, 24 Sep 2020 10:23:42 +0000 (UTC)"],"X-Originating-IP":"93.34.118.233","Date":"Thu, 24 Sep 2020 12:27:35 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<20200924102735.ektko2q3krozlib7@uno.localdomain>","References":"<20200924100201.353624-1-kieran.bingham@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200924100201.353624-1-kieran.bingham@ideasonboard.com>","Subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","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>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12720,"web_url":"https://patchwork.libcamera.org/comment/12720/","msgid":"<6763f9bb-ca92-a31e-ecc9-29c601fa4580@ideasonboard.com>","date":"2020-09-24T10:27:44","subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn 24/09/2020 11:27, Jacopo Mondi wrote:\n> Hi Kieran\n> \n> On Thu, Sep 24, 2020 at 11:02:01AM +0100, Kieran Bingham wrote:\n>> By default the Raspberry Pi pipeline handler is enabled when\n>> configuring the build.\n>>\n>> The Raspberry Pi IPA currently depends upon 'boost' which is a large\n>> dependency to bring in.\n>>\n>> Make the IPA compilation dependant upon the availabilty of the boost\n>> library, but display a warning when the pipeline is enabled and the\n>> dependency is not found.\n>>\n>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>> ---\n>>\n>> This is mostly posted to promote discussion on this topic.\n>>\n>> The requirement for boost is really heavy (+100MB package for a few\n>> headers), and is only used for the RPi IPA.\n>>\n>> This patch automatically disables the IPA while printing a message if it\n>> was selected if the boost library is not available.\n>>\n>> Doing all of this in a clean way seems quite difficult because of the\n>> way the meson options works ... so ...\n>>\n>> 3 ... 2 ... 1 ....\n>>\n>>    Discuss...\n> \n> I really like the idea of depending on boost only if RPi is enabled.\n> \n>>\n>>\n>>  src/ipa/raspberrypi/meson.build | 40 +++++++++++++++++++--------------\n>>  1 file changed, 23 insertions(+), 17 deletions(-)\n>>\n>> diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build\n>> index 9445cd097df5..b284378c9621 100644\n>> --- a/src/ipa/raspberrypi/meson.build\n>> +++ b/src/ipa/raspberrypi/meson.build\n>> @@ -2,9 +2,11 @@\n>>\n>>  ipa_name = 'ipa_rpi'\n>>\n>> +boost = dependency('boost', required : false)\n>> +\n>>  rpi_ipa_deps = [\n>>      libcamera_dep,\n>> -    dependency('boost'),\n>> +    boost,\n>>      libatomic,\n>>  ]\n>>\n>> @@ -41,22 +43,26 @@ rpi_ipa_sources = files([\n>>      'controller/pwl.cpp',\n>>  ])\n>>\n>> -mod = shared_module(ipa_name,\n>> -                    rpi_ipa_sources,\n>> -                    name_prefix : '',\n>> -                    include_directories : rpi_ipa_includes,\n>> -                    dependencies : rpi_ipa_deps,\n>> -                    link_with : libipa,\n>> -                    install : true,\n>> -                    install_dir : ipa_install_dir)\n>> -\n>> -if ipa_sign_module\n>> -    custom_target(ipa_name + '.so.sign',\n>> -                  input : mod,\n>> -                  output : ipa_name + '.so.sign',\n>> -                  command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n>> -                  install : false,\n>> -                  build_by_default : true)\n>> +if boost.found()\n>> +    mod = shared_module(ipa_name,\n>> +                        rpi_ipa_sources,\n>> +                        name_prefix : '',\n>> +                        include_directories : rpi_ipa_includes,\n>> +                        dependencies : rpi_ipa_deps,\n>> +                        link_with : libipa,\n>> +                        install : true,\n>> +                        install_dir : ipa_install_dir)\n>> +\n>> +    if ipa_sign_module\n>> +        custom_target(ipa_name + '.so.sign',\n>> +                      input : mod,\n>> +                      output : ipa_name + '.so.sign',\n>> +                      command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n>> +                      install : false,\n>> +                      build_by_default : true)\n>> +    endif\n>> +else\n>> +    warning('The Raspberry Pi pipeline is enabled, but dependency \"boost\" was not found')\n> \n> \n> I know nothing about meson, but can we have a contruct that\n>         if !boost.found\n>                 error \"...\"\n> \n> and the build fails ?\n\nWe can of course have the build fail if the RPi pipeline is enabled, and\nboost is not found, but that's not what this patch does.\n\nIn fact, I think you're describing the current behaviour of libcamera ;-)\n\nThis patch disables the RPi IPA *only* even if the RPi Pipeline is\nenabled, but boost is not found, (because it is enabled, by default).\n--\nKieran\n\n\n>>  endif\n>>\n>>  subdir('data')\n>> --\n>> 2.25.1\n>>\n>> _______________________________________________\n>> libcamera-devel mailing list\n>> libcamera-devel@lists.libcamera.org\n>> https://lists.libcamera.org/listinfo/libcamera-devel","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 32EB5C3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 24 Sep 2020 10:27:49 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B5A5862FDE;\n\tThu, 24 Sep 2020 12:27:48 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0AF6B60362\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Sep 2020 12:27:48 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 85F912FD;\n\tThu, 24 Sep 2020 12:27:47 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"XG+B8WrM\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1600943267;\n\tbh=5X53QWOrusieCXqfDXn2l1auiYH+5GMcnXxdO1m0tfA=;\n\th=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=XG+B8WrMHI7sKIpVbbBhITemQrpWwkvG9SvKGdFVRuDisHlwoh8qBjcvOsVFEz2o7\n\toSzeO4Ew53f/yosBBxz+iKCTUyTWJesFHiJtftaSBXnJMzz7i03A+UzEywW9pD0qfg\n\tWglLlfyM7gs9aXU/vMKvjzd6y5BnKG0f459Qn9Dw=","To":"Jacopo Mondi <jacopo@jmondi.org>","References":"<20200924100201.353624-1-kieran.bingham@ideasonboard.com>\n\t<20200924102735.ektko2q3krozlib7@uno.localdomain>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<6763f9bb-ca92-a31e-ecc9-29c601fa4580@ideasonboard.com>","Date":"Thu, 24 Sep 2020 11:27:44 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.10.0","MIME-Version":"1.0","In-Reply-To":"<20200924102735.ektko2q3krozlib7@uno.localdomain>","Content-Language":"en-GB","Subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","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>","Reply-To":"kieran.bingham@ideasonboard.com","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12726,"web_url":"https://patchwork.libcamera.org/comment/12726/","msgid":"<20200924123545.GE502216@oden.dyn.berto.se>","date":"2020-09-24T12:35:45","subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Kieran,\n\nOn 2020-09-24 12:27:35 +0200, Jacopo Mondi wrote:\n> Hi Kieran\n> \n> On Thu, Sep 24, 2020 at 11:02:01AM +0100, Kieran Bingham wrote:\n> > By default the Raspberry Pi pipeline handler is enabled when\n> > configuring the build.\n> >\n> > The Raspberry Pi IPA currently depends upon 'boost' which is a large\n> > dependency to bring in.\n> >\n> > Make the IPA compilation dependant upon the availabilty of the boost\n> > library, but display a warning when the pipeline is enabled and the\n> > dependency is not found.\n> >\n> > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > ---\n> >\n> > This is mostly posted to promote discussion on this topic.\n> >\n> > The requirement for boost is really heavy (+100MB package for a few\n> > headers), and is only used for the RPi IPA.\n> >\n> > This patch automatically disables the IPA while printing a message if it\n> > was selected if the boost library is not available.\n> >\n> > Doing all of this in a clean way seems quite difficult because of the\n> > way the meson options works ... so ...\n> >\n> > 3 ... 2 ... 1 ....\n> >\n> >    Discuss...\n> \n> I really like the idea of depending on boost only if RPi is enabled.\n\n+1\n \n> \n> >\n> >\n> >  src/ipa/raspberrypi/meson.build | 40 +++++++++++++++++++--------------\n> >  1 file changed, 23 insertions(+), 17 deletions(-)\n> >\n> > diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build\n> > index 9445cd097df5..b284378c9621 100644\n> > --- a/src/ipa/raspberrypi/meson.build\n> > +++ b/src/ipa/raspberrypi/meson.build\n> > @@ -2,9 +2,11 @@\n> >\n> >  ipa_name = 'ipa_rpi'\n> >\n> > +boost = dependency('boost', required : false)\n> > +\n> >  rpi_ipa_deps = [\n> >      libcamera_dep,\n> > -    dependency('boost'),\n> > +    boost,\n> >      libatomic,\n> >  ]\n> >\n> > @@ -41,22 +43,26 @@ rpi_ipa_sources = files([\n> >      'controller/pwl.cpp',\n> >  ])\n> >\n> > -mod = shared_module(ipa_name,\n> > -                    rpi_ipa_sources,\n> > -                    name_prefix : '',\n> > -                    include_directories : rpi_ipa_includes,\n> > -                    dependencies : rpi_ipa_deps,\n> > -                    link_with : libipa,\n> > -                    install : true,\n> > -                    install_dir : ipa_install_dir)\n> > -\n> > -if ipa_sign_module\n> > -    custom_target(ipa_name + '.so.sign',\n> > -                  input : mod,\n> > -                  output : ipa_name + '.so.sign',\n> > -                  command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n> > -                  install : false,\n> > -                  build_by_default : true)\n> > +if boost.found()\n> > +    mod = shared_module(ipa_name,\n> > +                        rpi_ipa_sources,\n> > +                        name_prefix : '',\n> > +                        include_directories : rpi_ipa_includes,\n> > +                        dependencies : rpi_ipa_deps,\n> > +                        link_with : libipa,\n> > +                        install : true,\n> > +                        install_dir : ipa_install_dir)\n> > +\n> > +    if ipa_sign_module\n> > +        custom_target(ipa_name + '.so.sign',\n> > +                      input : mod,\n> > +                      output : ipa_name + '.so.sign',\n> > +                      command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n> > +                      install : false,\n> > +                      build_by_default : true)\n> > +    endif\n> > +else\n> > +    warning('The Raspberry Pi pipeline is enabled, but dependency \"boost\" was not found')\n> \n> \n> I know nothing about meson, but can we have a contruct that\n>         if !boost.found\n>                 error \"...\"\n> \n> and the build fails ?\n\nI agree with Jacopo here. I think the build should fail if the RPi \npipeline is enabled and the dependencies for it can not be found. I \nthink fail early is good, otherwise someone may enable the RPi pipeline \nhave the compilation and installation succeed only to later find out \ntheir $APP won't work as it can't find the IPA module.\n\nHaving it fail with an error(Friendly message) is also nicer then having \nthe compilation fail. So with s/warning(/error(/ above,\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> \n> >  endif\n> >\n> >  subdir('data')\n> > --\n> > 2.25.1\n> >\n> > _______________________________________________\n> > libcamera-devel mailing list\n> > libcamera-devel@lists.libcamera.org\n> > https://lists.libcamera.org/listinfo/libcamera-devel\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 5D488C3B5C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 24 Sep 2020 12:35:50 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C09E862FDA;\n\tThu, 24 Sep 2020 14:35:49 +0200 (CEST)","from mail-lf1-x144.google.com (mail-lf1-x144.google.com\n\t[IPv6:2a00:1450:4864:20::144])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9BCB760362\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Sep 2020 14:35:48 +0200 (CEST)","by mail-lf1-x144.google.com with SMTP id z17so3673397lfi.12\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Sep 2020 05:35:48 -0700 (PDT)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\td1sm1958066lfq.225.2020.09.24.05.35.46\n\tfor <libcamera-devel@lists.libcamera.org>\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 24 Sep 2020 05:35:47 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"r1yPGOMF\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=0xbwLnFXp2oeBjz2+Tmm4aluDfkBE2eDeU7IKtNX9C0=;\n\tb=r1yPGOMFGiGpwYCv5Gx27Q7sx847yLUIfXLoZgu1PPqnw7QTm6AF5diOqDrUm3JkPN\n\t9ll4+FcnPpSJYOIeJ+AGUiAHfGQyNszUAjr/qrkMAR+hoLzQGcOQFTIhxX2dGDdvX0pz\n\tWpY+/TDcSbhj9Fum2gaky3lBbKCKMKA15pwakPQOXZ56j/QtKaax8aTRAsk3LlESa/2w\n\tc2Yd2kCfIzPHNvC7JduiUNaT1bQxhzCzZe6dOWmOR1gqQToCTMVm4CtcmiZbdWiISsq4\n\tQ6etskmoqE0smH7B4Rsaj6IKAmog7rWamMR8ojWa7klz0ZxCNy5Hvlok2fi6+uJ1NFLx\n\tMvqQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=0xbwLnFXp2oeBjz2+Tmm4aluDfkBE2eDeU7IKtNX9C0=;\n\tb=tiK8A+Raom6Gaje7skFyw4PI4Yr5pKk1gfcjrfDXeFXvF1MLkax/1GIxjkaA76+l6P\n\tJc9RdXqVXGeVZmK1cgIuF89/dFO6Xqs7lEXgEn3osIfvrAMIZR479QOTA73OAl0Ymt2f\n\tbaRCmz/bGsqSJHY2gWINg93CJdNaC0YuQiNYjHt3Lhj7y+IJFE2IkuHUk3G39SjBkqg+\n\tLNdR+gwSBVYGN6YFtfDciAkq9T9guLMFGGWYVY8cIAIPHSiTl2i1eUbqZS6YWKOA50nj\n\tCpaZonHnrH1Sx6Sm72jBmPKzl3Br98LaeIXfNdf43kYBVTuC7pOn4XzSluIWGF8TIHGO\n\tb9Sw==","X-Gm-Message-State":"AOAM532A8F6lPTh4QuLTbqHh6zSzUXpcKVYWAtXYPwwSMTxIU5AwWZGH\n\t0Z4v1NPZ+wSq3tGlyQtDA4yHNJcHGBoUSQ==","X-Google-Smtp-Source":"ABdhPJzHF9g35/G5y4oWuZhg+e6ulkj7oPombv5oZvB0t/ijfw2HCsTjqx2JU3Z/kDpFkWYIfXCVTA==","X-Received":"by 2002:ac2:4a6a:: with SMTP id q10mr214894lfp.534.1600950947686;\n\tThu, 24 Sep 2020 05:35:47 -0700 (PDT)","Date":"Thu, 24 Sep 2020 14:35:45 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"libcamera-devel@lists.libcamera.org","Message-ID":"<20200924123545.GE502216@oden.dyn.berto.se>","References":"<20200924100201.353624-1-kieran.bingham@ideasonboard.com>\n\t<20200924102735.ektko2q3krozlib7@uno.localdomain>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200924102735.ektko2q3krozlib7@uno.localdomain>","Subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","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>","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12728,"web_url":"https://patchwork.libcamera.org/comment/12728/","msgid":"<20200924131230.GF3968@pendragon.ideasonboard.com>","date":"2020-09-24T13:12:30","subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Thu, Sep 24, 2020 at 02:35:45PM +0200, Niklas Söderlund wrote:\n> On 2020-09-24 12:27:35 +0200, Jacopo Mondi wrote:\n> > On Thu, Sep 24, 2020 at 11:02:01AM +0100, Kieran Bingham wrote:\n> > > By default the Raspberry Pi pipeline handler is enabled when\n> > > configuring the build.\n> > >\n> > > The Raspberry Pi IPA currently depends upon 'boost' which is a large\n> > > dependency to bring in.\n> > >\n> > > Make the IPA compilation dependant upon the availabilty of the boost\n> > > library, but display a warning when the pipeline is enabled and the\n> > > dependency is not found.\n> > >\n> > > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > ---\n> > >\n> > > This is mostly posted to promote discussion on this topic.\n> > >\n> > > The requirement for boost is really heavy (+100MB package for a few\n> > > headers), and is only used for the RPi IPA.\n> > >\n> > > This patch automatically disables the IPA while printing a message if it\n> > > was selected if the boost library is not available.\n> > >\n> > > Doing all of this in a clean way seems quite difficult because of the\n> > > way the meson options works ... so ...\n> > >\n> > > 3 ... 2 ... 1 ....\n> > >\n> > >    Discuss...\n> > \n> > I really like the idea of depending on boost only if RPi is enabled.\n> \n> +1\n>  \n> > >  src/ipa/raspberrypi/meson.build | 40 +++++++++++++++++++--------------\n> > >  1 file changed, 23 insertions(+), 17 deletions(-)\n> > >\n> > > diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build\n> > > index 9445cd097df5..b284378c9621 100644\n> > > --- a/src/ipa/raspberrypi/meson.build\n> > > +++ b/src/ipa/raspberrypi/meson.build\n> > > @@ -2,9 +2,11 @@\n> > >\n> > >  ipa_name = 'ipa_rpi'\n> > >\n> > > +boost = dependency('boost', required : false)\n> > > +\n> > >  rpi_ipa_deps = [\n> > >      libcamera_dep,\n> > > -    dependency('boost'),\n> > > +    boost,\n> > >      libatomic,\n> > >  ]\n> > >\n> > > @@ -41,22 +43,26 @@ rpi_ipa_sources = files([\n> > >      'controller/pwl.cpp',\n> > >  ])\n> > >\n> > > -mod = shared_module(ipa_name,\n> > > -                    rpi_ipa_sources,\n> > > -                    name_prefix : '',\n> > > -                    include_directories : rpi_ipa_includes,\n> > > -                    dependencies : rpi_ipa_deps,\n> > > -                    link_with : libipa,\n> > > -                    install : true,\n> > > -                    install_dir : ipa_install_dir)\n> > > -\n> > > -if ipa_sign_module\n> > > -    custom_target(ipa_name + '.so.sign',\n> > > -                  input : mod,\n> > > -                  output : ipa_name + '.so.sign',\n> > > -                  command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n> > > -                  install : false,\n> > > -                  build_by_default : true)\n> > > +if boost.found()\n> > > +    mod = shared_module(ipa_name,\n> > > +                        rpi_ipa_sources,\n> > > +                        name_prefix : '',\n> > > +                        include_directories : rpi_ipa_includes,\n> > > +                        dependencies : rpi_ipa_deps,\n> > > +                        link_with : libipa,\n> > > +                        install : true,\n> > > +                        install_dir : ipa_install_dir)\n> > > +\n> > > +    if ipa_sign_module\n> > > +        custom_target(ipa_name + '.so.sign',\n> > > +                      input : mod,\n> > > +                      output : ipa_name + '.so.sign',\n> > > +                      command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n> > > +                      install : false,\n> > > +                      build_by_default : true)\n> > > +    endif\n> > > +else\n> > > +    warning('The Raspberry Pi pipeline is enabled, but dependency \"boost\" was not found')\n> > \n> > \n> > I know nothing about meson, but can we have a contruct that\n> >         if !boost.found\n> >                 error \"...\"\n> > \n> > and the build fails ?\n> \n> I agree with Jacopo here. I think the build should fail if the RPi \n> pipeline is enabled and the dependencies for it can not be found. I \n> think fail early is good, otherwise someone may enable the RPi pipeline \n> have the compilation and installation succeed only to later find out \n> their $APP won't work as it can't find the IPA module.\n> \n> Having it fail with an error(Friendly message) is also nicer then having \n> the compilation fail. So with s/warning(/error(/ above,\n\nBefore looking at the implementation, let's agree on the desired\nbehaviour. When a dependency needed by an IPA module isn't found, and\nthe corresponding pipeline handler is enabled, should we\n\n1. Make configuration fail (that's the current behaviour)\n2. Skip the IPA module but keep the pipeline handler enabled (that's\n   what this patch implements)\n3. Disable the pipeline handler automatically (that would be similar to\n   the \"feature\" option type of meson)\n\nFor any of these options, we can add explicit warning or error messages.\n\nThe second option is the one I like the least, as the pipeline handler\nwill be unusable. The first option has the upside of notifying the user\nvery explicitly that something went wrong, but the downside of not\noffering a nice way to only enable pipeline handlers that have their\ndependencies met. The third option is the opposite, it makes\nconfiguration more automatic, but at the expense of possibly confusing\nusers who will wonder why libcamera doesn't work on their platform.\n\nThere's a fourth option too, turning the pipelines option into\nindividual pipeline-* feature options (name subject to bikeshedding),\ndefaulting to auto. A user who wants to ensure support for their\nplatform is enabled can set the corresponding optio to enabled, and the\nbuild will then fail if dependencies are not found.\n\n> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>","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 35A06C3B5C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 24 Sep 2020 13:13:07 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9F7FE60363;\n\tThu, 24 Sep 2020 15:13:06 +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 9136960362\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Sep 2020 15:13:04 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 076A12FD;\n\tThu, 24 Sep 2020 15:13:03 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"kNt5h15q\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1600953184;\n\tbh=A2LwhfFxzERNq94rWS1MqPZGY23lZs2mvwacLMfAXto=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=kNt5h15qXkBlP5jIVUgjsgHTxDSDeIudD7Vm9SmsrIH8NLdOXrrr0n7o67Cahwlti\n\te0VaAF4p/LkS4yGcz3S1yQnwKdTEDr2+cCKVq3bF0fUjUafIqd1E3DODmc63Xu7pme\n\ttdZVdIbsEXdslakv6SsBdZEJdIoht2FExQFLGY6M=","Date":"Thu, 24 Sep 2020 16:12:30 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Message-ID":"<20200924131230.GF3968@pendragon.ideasonboard.com>","References":"<20200924100201.353624-1-kieran.bingham@ideasonboard.com>\n\t<20200924102735.ektko2q3krozlib7@uno.localdomain>\n\t<20200924123545.GE502216@oden.dyn.berto.se>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200924123545.GE502216@oden.dyn.berto.se>","Subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12744,"web_url":"https://patchwork.libcamera.org/comment/12744/","msgid":"<20200924151207.imgqkj27xzgxz5vv@uno.localdomain>","date":"2020-09-24T15:12:07","subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent,\n\nOn Thu, Sep 24, 2020 at 04:12:30PM +0300, Laurent Pinchart wrote:\n> On Thu, Sep 24, 2020 at 02:35:45PM +0200, Niklas Söderlund wrote:\n> > On 2020-09-24 12:27:35 +0200, Jacopo Mondi wrote:\n> > > On Thu, Sep 24, 2020 at 11:02:01AM +0100, Kieran Bingham wrote:\n> > > > By default the Raspberry Pi pipeline handler is enabled when\n> > > > configuring the build.\n> > > >\n> > > > The Raspberry Pi IPA currently depends upon 'boost' which is a large\n> > > > dependency to bring in.\n> > > >\n> > > > Make the IPA compilation dependant upon the availabilty of the boost\n> > > > library, but display a warning when the pipeline is enabled and the\n> > > > dependency is not found.\n> > > >\n> > > > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > > ---\n> > > >\n> > > > This is mostly posted to promote discussion on this topic.\n> > > >\n> > > > The requirement for boost is really heavy (+100MB package for a few\n> > > > headers), and is only used for the RPi IPA.\n> > > >\n> > > > This patch automatically disables the IPA while printing a message if it\n> > > > was selected if the boost library is not available.\n> > > >\n> > > > Doing all of this in a clean way seems quite difficult because of the\n> > > > way the meson options works ... so ...\n> > > >\n> > > > 3 ... 2 ... 1 ....\n> > > >\n> > > >    Discuss...\n> > >\n> > > I really like the idea of depending on boost only if RPi is enabled.\n> >\n> > +1\n> >\n> > > >  src/ipa/raspberrypi/meson.build | 40 +++++++++++++++++++--------------\n> > > >  1 file changed, 23 insertions(+), 17 deletions(-)\n> > > >\n> > > > diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build\n> > > > index 9445cd097df5..b284378c9621 100644\n> > > > --- a/src/ipa/raspberrypi/meson.build\n> > > > +++ b/src/ipa/raspberrypi/meson.build\n> > > > @@ -2,9 +2,11 @@\n> > > >\n> > > >  ipa_name = 'ipa_rpi'\n> > > >\n> > > > +boost = dependency('boost', required : false)\n> > > > +\n> > > >  rpi_ipa_deps = [\n> > > >      libcamera_dep,\n> > > > -    dependency('boost'),\n> > > > +    boost,\n> > > >      libatomic,\n> > > >  ]\n> > > >\n> > > > @@ -41,22 +43,26 @@ rpi_ipa_sources = files([\n> > > >      'controller/pwl.cpp',\n> > > >  ])\n> > > >\n> > > > -mod = shared_module(ipa_name,\n> > > > -                    rpi_ipa_sources,\n> > > > -                    name_prefix : '',\n> > > > -                    include_directories : rpi_ipa_includes,\n> > > > -                    dependencies : rpi_ipa_deps,\n> > > > -                    link_with : libipa,\n> > > > -                    install : true,\n> > > > -                    install_dir : ipa_install_dir)\n> > > > -\n> > > > -if ipa_sign_module\n> > > > -    custom_target(ipa_name + '.so.sign',\n> > > > -                  input : mod,\n> > > > -                  output : ipa_name + '.so.sign',\n> > > > -                  command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n> > > > -                  install : false,\n> > > > -                  build_by_default : true)\n> > > > +if boost.found()\n> > > > +    mod = shared_module(ipa_name,\n> > > > +                        rpi_ipa_sources,\n> > > > +                        name_prefix : '',\n> > > > +                        include_directories : rpi_ipa_includes,\n> > > > +                        dependencies : rpi_ipa_deps,\n> > > > +                        link_with : libipa,\n> > > > +                        install : true,\n> > > > +                        install_dir : ipa_install_dir)\n> > > > +\n> > > > +    if ipa_sign_module\n> > > > +        custom_target(ipa_name + '.so.sign',\n> > > > +                      input : mod,\n> > > > +                      output : ipa_name + '.so.sign',\n> > > > +                      command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n> > > > +                      install : false,\n> > > > +                      build_by_default : true)\n> > > > +    endif\n> > > > +else\n> > > > +    warning('The Raspberry Pi pipeline is enabled, but dependency \"boost\" was not found')\n> > >\n> > >\n> > > I know nothing about meson, but can we have a contruct that\n> > >         if !boost.found\n> > >                 error \"...\"\n> > >\n> > > and the build fails ?\n> >\n> > I agree with Jacopo here. I think the build should fail if the RPi\n> > pipeline is enabled and the dependencies for it can not be found. I\n> > think fail early is good, otherwise someone may enable the RPi pipeline\n> > have the compilation and installation succeed only to later find out\n> > their $APP won't work as it can't find the IPA module.\n> >\n> > Having it fail with an error(Friendly message) is also nicer then having\n> > the compilation fail. So with s/warning(/error(/ above,\n>\n> Before looking at the implementation, let's agree on the desired\n> behaviour. When a dependency needed by an IPA module isn't found, and\n> the corresponding pipeline handler is enabled, should we\n>\n> 1. Make configuration fail (that's the current behaviour)\n\nThat would be my preference as\n\n> 2. Skip the IPA module but keep the pipeline handler enabled (that's\n>    what this patch implements)\n\nBuilding a pipeline without the associated IPA, if any, doesn't make\nmuch sense if not for testing and development\n\n> 3. Disable the pipeline handler automatically (that would be similar to\n>    the \"feature\" option type of meson)\n\nand this would possibly hide problems and puzzle users.\n\nFail early and loudly seems more reasonable to me :)\n\nThanks\n  j\n\n\n>\n> For any of these options, we can add explicit warning or error messages.\n>\n> The second option is the one I like the least, as the pipeline handler\n> will be unusable. The first option has the upside of notifying the user\n> very explicitly that something went wrong, but the downside of not\n> offering a nice way to only enable pipeline handlers that have their\n> dependencies met. The third option is the opposite, it makes\n> configuration more automatic, but at the expense of possibly confusing\n> users who will wonder why libcamera doesn't work on their platform.\n>\n> There's a fourth option too, turning the pipelines option into\n> individual pipeline-* feature options (name subject to bikeshedding),\n> defaulting to auto. A user who wants to ensure support for their\n> platform is enabled can set the corresponding optio to enabled, and the\n> build will then fail if dependencies are not found.\n>\n> > Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 2276EC3B5C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 24 Sep 2020 15:08:16 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id ED7A262FE3;\n\tThu, 24 Sep 2020 17:08:15 +0200 (CEST)","from relay11.mail.gandi.net (relay11.mail.gandi.net\n\t[217.70.178.231])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 91A0960363\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Sep 2020 17:08:15 +0200 (CEST)","from uno.localdomain (93-34-118-233.ip49.fastwebnet.it\n\t[93.34.118.233]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay11.mail.gandi.net (Postfix) with ESMTPSA id B5523100007;\n\tThu, 24 Sep 2020 15:08:14 +0000 (UTC)"],"Date":"Thu, 24 Sep 2020 17:12:07 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20200924151207.imgqkj27xzgxz5vv@uno.localdomain>","References":"<20200924100201.353624-1-kieran.bingham@ideasonboard.com>\n\t<20200924102735.ektko2q3krozlib7@uno.localdomain>\n\t<20200924123545.GE502216@oden.dyn.berto.se>\n\t<20200924131230.GF3968@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200924131230.GF3968@pendragon.ideasonboard.com>","Subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12745,"web_url":"https://patchwork.libcamera.org/comment/12745/","msgid":"<bee240fc-991e-750b-2ef4-37c405171de1@ideasonboard.com>","date":"2020-09-24T15:12:07","subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn 24/09/2020 16:12, Jacopo Mondi wrote:\n> Hi Laurent,\n> \n> On Thu, Sep 24, 2020 at 04:12:30PM +0300, Laurent Pinchart wrote:\n>> On Thu, Sep 24, 2020 at 02:35:45PM +0200, Niklas Söderlund wrote:\n>>> On 2020-09-24 12:27:35 +0200, Jacopo Mondi wrote:\n>>>> On Thu, Sep 24, 2020 at 11:02:01AM +0100, Kieran Bingham wrote:\n>>>>> By default the Raspberry Pi pipeline handler is enabled when\n>>>>> configuring the build.\n>>>>>\n>>>>> The Raspberry Pi IPA currently depends upon 'boost' which is a large\n>>>>> dependency to bring in.\n>>>>>\n>>>>> Make the IPA compilation dependant upon the availabilty of the boost\n>>>>> library, but display a warning when the pipeline is enabled and the\n>>>>> dependency is not found.\n>>>>>\n>>>>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>>>>> ---\n>>>>>\n>>>>> This is mostly posted to promote discussion on this topic.\n>>>>>\n>>>>> The requirement for boost is really heavy (+100MB package for a few\n>>>>> headers), and is only used for the RPi IPA.\n>>>>>\n>>>>> This patch automatically disables the IPA while printing a message if it\n>>>>> was selected if the boost library is not available.\n>>>>>\n>>>>> Doing all of this in a clean way seems quite difficult because of the\n>>>>> way the meson options works ... so ...\n>>>>>\n>>>>> 3 ... 2 ... 1 ....\n>>>>>\n>>>>>    Discuss...\n>>>>\n>>>> I really like the idea of depending on boost only if RPi is enabled.\n>>>\n>>> +1\n>>>\n>>>>>  src/ipa/raspberrypi/meson.build | 40 +++++++++++++++++++--------------\n>>>>>  1 file changed, 23 insertions(+), 17 deletions(-)\n>>>>>\n>>>>> diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build\n>>>>> index 9445cd097df5..b284378c9621 100644\n>>>>> --- a/src/ipa/raspberrypi/meson.build\n>>>>> +++ b/src/ipa/raspberrypi/meson.build\n>>>>> @@ -2,9 +2,11 @@\n>>>>>\n>>>>>  ipa_name = 'ipa_rpi'\n>>>>>\n>>>>> +boost = dependency('boost', required : false)\n>>>>> +\n>>>>>  rpi_ipa_deps = [\n>>>>>      libcamera_dep,\n>>>>> -    dependency('boost'),\n>>>>> +    boost,\n>>>>>      libatomic,\n>>>>>  ]\n>>>>>\n>>>>> @@ -41,22 +43,26 @@ rpi_ipa_sources = files([\n>>>>>      'controller/pwl.cpp',\n>>>>>  ])\n>>>>>\n>>>>> -mod = shared_module(ipa_name,\n>>>>> -                    rpi_ipa_sources,\n>>>>> -                    name_prefix : '',\n>>>>> -                    include_directories : rpi_ipa_includes,\n>>>>> -                    dependencies : rpi_ipa_deps,\n>>>>> -                    link_with : libipa,\n>>>>> -                    install : true,\n>>>>> -                    install_dir : ipa_install_dir)\n>>>>> -\n>>>>> -if ipa_sign_module\n>>>>> -    custom_target(ipa_name + '.so.sign',\n>>>>> -                  input : mod,\n>>>>> -                  output : ipa_name + '.so.sign',\n>>>>> -                  command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n>>>>> -                  install : false,\n>>>>> -                  build_by_default : true)\n>>>>> +if boost.found()\n>>>>> +    mod = shared_module(ipa_name,\n>>>>> +                        rpi_ipa_sources,\n>>>>> +                        name_prefix : '',\n>>>>> +                        include_directories : rpi_ipa_includes,\n>>>>> +                        dependencies : rpi_ipa_deps,\n>>>>> +                        link_with : libipa,\n>>>>> +                        install : true,\n>>>>> +                        install_dir : ipa_install_dir)\n>>>>> +\n>>>>> +    if ipa_sign_module\n>>>>> +        custom_target(ipa_name + '.so.sign',\n>>>>> +                      input : mod,\n>>>>> +                      output : ipa_name + '.so.sign',\n>>>>> +                      command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n>>>>> +                      install : false,\n>>>>> +                      build_by_default : true)\n>>>>> +    endif\n>>>>> +else\n>>>>> +    warning('The Raspberry Pi pipeline is enabled, but dependency \"boost\" was not found')\n>>>>\n>>>>\n>>>> I know nothing about meson, but can we have a contruct that\n>>>>         if !boost.found\n>>>>                 error \"...\"\n>>>>\n>>>> and the build fails ?\n>>>\n>>> I agree with Jacopo here. I think the build should fail if the RPi\n>>> pipeline is enabled and the dependencies for it can not be found. I\n>>> think fail early is good, otherwise someone may enable the RPi pipeline\n>>> have the compilation and installation succeed only to later find out\n>>> their $APP won't work as it can't find the IPA module.\n>>>\n>>> Having it fail with an error(Friendly message) is also nicer then having\n>>> the compilation fail. So with s/warning(/error(/ above,\n>>\n>> Before looking at the implementation, let's agree on the desired\n>> behaviour. When a dependency needed by an IPA module isn't found, and\n>> the corresponding pipeline handler is enabled, should we\n>>\n>> 1. Make configuration fail (that's the current behaviour)\n> \n> That would be my preference as\n\n\nYou're in luck.\nThat's what you currently have ...\n\nMy issue with this is that if I have a system which does not have boost,\nand is not a Raspberry Pi - *by default* libcamera will fail to build -\nbecause RPi is enabled by default.\n\n\n\n>> 2. Skip the IPA module but keep the pipeline handler enabled (that's\n>>    what this patch implements)\n> \n> Building a pipeline without the associated IPA, if any, doesn't make\n> much sense if not for testing and development\n> \n>> 3. Disable the pipeline handler automatically (that would be similar to\n>>    the \"feature\" option type of meson)\n> \n> and this would possibly hide problems and puzzle users.\n> \n> Fail early and loudly seems more reasonable to me :)\n> \n> Thanks\n>   j\n> \n> \n>>\n>> For any of these options, we can add explicit warning or error messages.\n>>\n>> The second option is the one I like the least, as the pipeline handler\n>> will be unusable. The first option has the upside of notifying the user\n>> very explicitly that something went wrong, but the downside of not\n>> offering a nice way to only enable pipeline handlers that have their\n>> dependencies met. The third option is the opposite, it makes\n>> configuration more automatic, but at the expense of possibly confusing\n>> users who will wonder why libcamera doesn't work on their platform.\n>>\n>> There's a fourth option too, turning the pipelines option into\n>> individual pipeline-* feature options (name subject to bikeshedding),\n>> defaulting to auto. A user who wants to ensure support for their\n>> platform is enabled can set the corresponding optio to enabled, and the\n>> build will then fail if dependencies are not found.\n\nI sort of like this, that enables people to explicitly state \"I need\nRPi\", and anything else comes along for the ride as an auto value.\n\n--\nKieran\n\n\n\n>>\n>>> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n>>\n>> --\n>> Regards,\n>>\n>> Laurent Pinchart\n>> _______________________________________________\n>> libcamera-devel mailing list\n>> libcamera-devel@lists.libcamera.org\n>> https://lists.libcamera.org/listinfo/libcamera-devel\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel\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 214A2C3B5C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 24 Sep 2020 15:12:19 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 96E6062FE3;\n\tThu, 24 Sep 2020 17:12:18 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 214D860363\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Sep 2020 17:12:17 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 537AE2FD;\n\tThu, 24 Sep 2020 17:12:10 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"XpCPrRzX\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1600960330;\n\tbh=xv9hAfDeqClAMaXe9txxC/wMQYEIlCexa3JH8fhEEa4=;\n\th=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=XpCPrRzXM8BYEw0BRZke1gqlGyLgfhwSbak46UeITi4IllYIZIwvz0CPhiMGDVV19\n\txh1u1lrpzopmcqmOWLjnUxMdb/dzHEnzz3W5Ancop/XPs9If3u6xPcNfLHFlo1NFpk\n\twQm//GuRXQxABqBmMgaZnXkGeSN6xT+UIa8h96Fg=","To":"Jacopo Mondi <jacopo@jmondi.org>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>","References":"<20200924100201.353624-1-kieran.bingham@ideasonboard.com>\n\t<20200924102735.ektko2q3krozlib7@uno.localdomain>\n\t<20200924123545.GE502216@oden.dyn.berto.se>\n\t<20200924131230.GF3968@pendragon.ideasonboard.com>\n\t<20200924151207.imgqkj27xzgxz5vv@uno.localdomain>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<bee240fc-991e-750b-2ef4-37c405171de1@ideasonboard.com>","Date":"Thu, 24 Sep 2020 16:12:07 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.10.0","MIME-Version":"1.0","In-Reply-To":"<20200924151207.imgqkj27xzgxz5vv@uno.localdomain>","Content-Language":"en-GB","Subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","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>","Reply-To":"kieran.bingham@ideasonboard.com","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12747,"web_url":"https://patchwork.libcamera.org/comment/12747/","msgid":"<20200924160109.7xxbdb2a36iia5hg@uno.localdomain>","date":"2020-09-24T16:01:09","subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Kieran,\n\nOn Thu, Sep 24, 2020 at 04:12:07PM +0100, Kieran Bingham wrote:\n> Hi Jacopo,\n>\n> On 24/09/2020 16:12, Jacopo Mondi wrote:\n> > Hi Laurent,\n> >\n> > On Thu, Sep 24, 2020 at 04:12:30PM +0300, Laurent Pinchart wrote:\n> >> On Thu, Sep 24, 2020 at 02:35:45PM +0200, Niklas Söderlund wrote:\n> >>> On 2020-09-24 12:27:35 +0200, Jacopo Mondi wrote:\n> >>>> On Thu, Sep 24, 2020 at 11:02:01AM +0100, Kieran Bingham wrote:\n> >>>>> By default the Raspberry Pi pipeline handler is enabled when\n> >>>>> configuring the build.\n> >>>>>\n> >>>>> The Raspberry Pi IPA currently depends upon 'boost' which is a large\n> >>>>> dependency to bring in.\n> >>>>>\n> >>>>> Make the IPA compilation dependant upon the availabilty of the boost\n> >>>>> library, but display a warning when the pipeline is enabled and the\n> >>>>> dependency is not found.\n> >>>>>\n> >>>>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> >>>>> ---\n> >>>>>\n> >>>>> This is mostly posted to promote discussion on this topic.\n> >>>>>\n> >>>>> The requirement for boost is really heavy (+100MB package for a few\n> >>>>> headers), and is only used for the RPi IPA.\n> >>>>>\n> >>>>> This patch automatically disables the IPA while printing a message if it\n> >>>>> was selected if the boost library is not available.\n> >>>>>\n> >>>>> Doing all of this in a clean way seems quite difficult because of the\n> >>>>> way the meson options works ... so ...\n> >>>>>\n> >>>>> 3 ... 2 ... 1 ....\n> >>>>>\n> >>>>>    Discuss...\n> >>>>\n> >>>> I really like the idea of depending on boost only if RPi is enabled.\n> >>>\n> >>> +1\n> >>>\n> >>>>>  src/ipa/raspberrypi/meson.build | 40 +++++++++++++++++++--------------\n> >>>>>  1 file changed, 23 insertions(+), 17 deletions(-)\n> >>>>>\n> >>>>> diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build\n> >>>>> index 9445cd097df5..b284378c9621 100644\n> >>>>> --- a/src/ipa/raspberrypi/meson.build\n> >>>>> +++ b/src/ipa/raspberrypi/meson.build\n> >>>>> @@ -2,9 +2,11 @@\n> >>>>>\n> >>>>>  ipa_name = 'ipa_rpi'\n> >>>>>\n> >>>>> +boost = dependency('boost', required : false)\n> >>>>> +\n> >>>>>  rpi_ipa_deps = [\n> >>>>>      libcamera_dep,\n> >>>>> -    dependency('boost'),\n> >>>>> +    boost,\n> >>>>>      libatomic,\n> >>>>>  ]\n> >>>>>\n> >>>>> @@ -41,22 +43,26 @@ rpi_ipa_sources = files([\n> >>>>>      'controller/pwl.cpp',\n> >>>>>  ])\n> >>>>>\n> >>>>> -mod = shared_module(ipa_name,\n> >>>>> -                    rpi_ipa_sources,\n> >>>>> -                    name_prefix : '',\n> >>>>> -                    include_directories : rpi_ipa_includes,\n> >>>>> -                    dependencies : rpi_ipa_deps,\n> >>>>> -                    link_with : libipa,\n> >>>>> -                    install : true,\n> >>>>> -                    install_dir : ipa_install_dir)\n> >>>>> -\n> >>>>> -if ipa_sign_module\n> >>>>> -    custom_target(ipa_name + '.so.sign',\n> >>>>> -                  input : mod,\n> >>>>> -                  output : ipa_name + '.so.sign',\n> >>>>> -                  command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n> >>>>> -                  install : false,\n> >>>>> -                  build_by_default : true)\n> >>>>> +if boost.found()\n> >>>>> +    mod = shared_module(ipa_name,\n> >>>>> +                        rpi_ipa_sources,\n> >>>>> +                        name_prefix : '',\n> >>>>> +                        include_directories : rpi_ipa_includes,\n> >>>>> +                        dependencies : rpi_ipa_deps,\n> >>>>> +                        link_with : libipa,\n> >>>>> +                        install : true,\n> >>>>> +                        install_dir : ipa_install_dir)\n> >>>>> +\n> >>>>> +    if ipa_sign_module\n> >>>>> +        custom_target(ipa_name + '.so.sign',\n> >>>>> +                      input : mod,\n> >>>>> +                      output : ipa_name + '.so.sign',\n> >>>>> +                      command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n> >>>>> +                      install : false,\n> >>>>> +                      build_by_default : true)\n> >>>>> +    endif\n> >>>>> +else\n> >>>>> +    warning('The Raspberry Pi pipeline is enabled, but dependency \"boost\" was not found')\n> >>>>\n> >>>>\n> >>>> I know nothing about meson, but can we have a contruct that\n> >>>>         if !boost.found\n> >>>>                 error \"...\"\n> >>>>\n> >>>> and the build fails ?\n> >>>\n> >>> I agree with Jacopo here. I think the build should fail if the RPi\n> >>> pipeline is enabled and the dependencies for it can not be found. I\n> >>> think fail early is good, otherwise someone may enable the RPi pipeline\n> >>> have the compilation and installation succeed only to later find out\n> >>> their $APP won't work as it can't find the IPA module.\n> >>>\n> >>> Having it fail with an error(Friendly message) is also nicer then having\n> >>> the compilation fail. So with s/warning(/error(/ above,\n> >>\n> >> Before looking at the implementation, let's agree on the desired\n> >> behaviour. When a dependency needed by an IPA module isn't found, and\n> >> the corresponding pipeline handler is enabled, should we\n> >>\n> >> 1. Make configuration fail (that's the current behaviour)\n> >\n> > That would be my preference as\n>\n>\n> You're in luck.\n> That's what you currently have ...\n\nAh sorry, I completely missed that\n\n>\n> My issue with this is that if I have a system which does not have boost,\n> and is not a Raspberry Pi - *by default* libcamera will fail to build -\n> because RPi is enabled by default.\n>\n\nI see, I defer any decision to you build system educated people then.","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 41670C3B5C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 24 Sep 2020 15:57:19 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id ABC8B62FDE;\n\tThu, 24 Sep 2020 17:57:18 +0200 (CEST)","from relay10.mail.gandi.net (relay10.mail.gandi.net\n\t[217.70.178.230])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 58F5860363\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Sep 2020 17:57:17 +0200 (CEST)","from uno.localdomain (93-34-118-233.ip49.fastwebnet.it\n\t[93.34.118.233]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay10.mail.gandi.net (Postfix) with ESMTPSA id A9B37240010;\n\tThu, 24 Sep 2020 15:57:16 +0000 (UTC)"],"Date":"Thu, 24 Sep 2020 18:01:09 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<20200924160109.7xxbdb2a36iia5hg@uno.localdomain>","References":"<20200924100201.353624-1-kieran.bingham@ideasonboard.com>\n\t<20200924102735.ektko2q3krozlib7@uno.localdomain>\n\t<20200924123545.GE502216@oden.dyn.berto.se>\n\t<20200924131230.GF3968@pendragon.ideasonboard.com>\n\t<20200924151207.imgqkj27xzgxz5vv@uno.localdomain>\n\t<bee240fc-991e-750b-2ef4-37c405171de1@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<bee240fc-991e-750b-2ef4-37c405171de1@ideasonboard.com>","Subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12754,"web_url":"https://patchwork.libcamera.org/comment/12754/","msgid":"<20200925012145.GN45948@pyrite.rasen.tech>","date":"2020-09-25T01:21:45","subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"On Thu, Sep 24, 2020 at 05:12:07PM +0200, Jacopo Mondi wrote:\n> Hi Laurent,\n> \n> On Thu, Sep 24, 2020 at 04:12:30PM +0300, Laurent Pinchart wrote:\n> > On Thu, Sep 24, 2020 at 02:35:45PM +0200, Niklas Söderlund wrote:\n> > > On 2020-09-24 12:27:35 +0200, Jacopo Mondi wrote:\n> > > > On Thu, Sep 24, 2020 at 11:02:01AM +0100, Kieran Bingham wrote:\n> > > > > By default the Raspberry Pi pipeline handler is enabled when\n> > > > > configuring the build.\n> > > > >\n> > > > > The Raspberry Pi IPA currently depends upon 'boost' which is a large\n> > > > > dependency to bring in.\n> > > > >\n> > > > > Make the IPA compilation dependant upon the availabilty of the boost\n> > > > > library, but display a warning when the pipeline is enabled and the\n> > > > > dependency is not found.\n> > > > >\n> > > > > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > > > ---\n> > > > >\n> > > > > This is mostly posted to promote discussion on this topic.\n> > > > >\n> > > > > The requirement for boost is really heavy (+100MB package for a few\n> > > > > headers), and is only used for the RPi IPA.\n> > > > >\n> > > > > This patch automatically disables the IPA while printing a message if it\n> > > > > was selected if the boost library is not available.\n> > > > >\n> > > > > Doing all of this in a clean way seems quite difficult because of the\n> > > > > way the meson options works ... so ...\n> > > > >\n> > > > > 3 ... 2 ... 1 ....\n> > > > >\n> > > > >    Discuss...\n> > > >\n> > > > I really like the idea of depending on boost only if RPi is enabled.\n> > >\n> > > +1\n> > >\n> > > > >  src/ipa/raspberrypi/meson.build | 40 +++++++++++++++++++--------------\n> > > > >  1 file changed, 23 insertions(+), 17 deletions(-)\n> > > > >\n> > > > > diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build\n> > > > > index 9445cd097df5..b284378c9621 100644\n> > > > > --- a/src/ipa/raspberrypi/meson.build\n> > > > > +++ b/src/ipa/raspberrypi/meson.build\n> > > > > @@ -2,9 +2,11 @@\n> > > > >\n> > > > >  ipa_name = 'ipa_rpi'\n> > > > >\n> > > > > +boost = dependency('boost', required : false)\n> > > > > +\n> > > > >  rpi_ipa_deps = [\n> > > > >      libcamera_dep,\n> > > > > -    dependency('boost'),\n> > > > > +    boost,\n> > > > >      libatomic,\n> > > > >  ]\n> > > > >\n> > > > > @@ -41,22 +43,26 @@ rpi_ipa_sources = files([\n> > > > >      'controller/pwl.cpp',\n> > > > >  ])\n> > > > >\n> > > > > -mod = shared_module(ipa_name,\n> > > > > -                    rpi_ipa_sources,\n> > > > > -                    name_prefix : '',\n> > > > > -                    include_directories : rpi_ipa_includes,\n> > > > > -                    dependencies : rpi_ipa_deps,\n> > > > > -                    link_with : libipa,\n> > > > > -                    install : true,\n> > > > > -                    install_dir : ipa_install_dir)\n> > > > > -\n> > > > > -if ipa_sign_module\n> > > > > -    custom_target(ipa_name + '.so.sign',\n> > > > > -                  input : mod,\n> > > > > -                  output : ipa_name + '.so.sign',\n> > > > > -                  command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n> > > > > -                  install : false,\n> > > > > -                  build_by_default : true)\n> > > > > +if boost.found()\n> > > > > +    mod = shared_module(ipa_name,\n> > > > > +                        rpi_ipa_sources,\n> > > > > +                        name_prefix : '',\n> > > > > +                        include_directories : rpi_ipa_includes,\n> > > > > +                        dependencies : rpi_ipa_deps,\n> > > > > +                        link_with : libipa,\n> > > > > +                        install : true,\n> > > > > +                        install_dir : ipa_install_dir)\n> > > > > +\n> > > > > +    if ipa_sign_module\n> > > > > +        custom_target(ipa_name + '.so.sign',\n> > > > > +                      input : mod,\n> > > > > +                      output : ipa_name + '.so.sign',\n> > > > > +                      command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n> > > > > +                      install : false,\n> > > > > +                      build_by_default : true)\n> > > > > +    endif\n> > > > > +else\n> > > > > +    warning('The Raspberry Pi pipeline is enabled, but dependency \"boost\" was not found')\n> > > >\n> > > >\n> > > > I know nothing about meson, but can we have a contruct that\n> > > >         if !boost.found\n> > > >                 error \"...\"\n> > > >\n> > > > and the build fails ?\n> > >\n> > > I agree with Jacopo here. I think the build should fail if the RPi\n> > > pipeline is enabled and the dependencies for it can not be found. I\n> > > think fail early is good, otherwise someone may enable the RPi pipeline\n> > > have the compilation and installation succeed only to later find out\n> > > their $APP won't work as it can't find the IPA module.\n> > >\n> > > Having it fail with an error(Friendly message) is also nicer then having\n> > > the compilation fail. So with s/warning(/error(/ above,\n> >\n> > Before looking at the implementation, let's agree on the desired\n> > behaviour. When a dependency needed by an IPA module isn't found, and\n> > the corresponding pipeline handler is enabled, should we\n> >\n> > 1. Make configuration fail (that's the current behaviour)\n> \n> That would be my preference as\n> \n> > 2. Skip the IPA module but keep the pipeline handler enabled (that's\n> >    what this patch implements)\n> \n> Building a pipeline without the associated IPA, if any, doesn't make\n> much sense if not for testing and development\n\nI think this option makes the most sense. We support closed-source\nIPAs, which by extension means we support out-of-tree IPAs. This means\nthat we need to support building pipelines without also building their\nIPAs.\n\nWhen libcamera is run, it prints an error anyway if an IPA isn't found.\nI think that's sufficient for notifying the user why their\npipeline-without-IPA isn't working.\n\n> > 3. Disable the pipeline handler automatically (that would be similar to\n> >    the \"feature\" option type of meson)\n> \n> and this would possibly hide problems and puzzle users.\n> \n> Fail early and loudly seems more reasonable to me :)\n> \n> >\n> > For any of these options, we can add explicit warning or error messages.\n> >\n> > The second option is the one I like the least, as the pipeline handler\n> > will be unusable. The first option has the upside of notifying the user\n> > very explicitly that something went wrong, but the downside of not\n> > offering a nice way to only enable pipeline handlers that have their\n> > dependencies met. The third option is the opposite, it makes\n> > configuration more automatic, but at the expense of possibly confusing\n> > users who will wonder why libcamera doesn't work on their platform.\n> >\n> > There's a fourth option too, turning the pipelines option into\n> > individual pipeline-* feature options (name subject to bikeshedding),\n> > defaulting to auto. A user who wants to ensure support for their\n> > platform is enabled can set the corresponding optio to enabled, and the\n> > build will then fail if dependencies are not found.\n\nThat would work too :)\n\n\nPaul","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 493CBC3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 25 Sep 2020 01:21:57 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BCAEC63005;\n\tFri, 25 Sep 2020 03:21:56 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5E17360576\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 25 Sep 2020 03:21:55 +0200 (CEST)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 876052D7;\n\tFri, 25 Sep 2020 03:21:52 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"cZqkiIN5\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1600996914;\n\tbh=OHrjV2j8ZQukMZ8WgAjQkzJsNkKSGYnhZYTdKfYcVGk=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=cZqkiIN59pngY3jke7iy3WUhbyvSkuURHBGDa3MBUGxF1zMyCiGe5ehKLyJxg5I0p\n\t7Yd7btpvpZ+dTJEWEzDOTlB4fwrcQxmRy7kLdhTJTkY++QAfWp+8p8k0t4wZN/sKfU\n\tde83IuZ/tFsoddNTqTwb0s5qdRGdy/ar2jeQqXcE=","Date":"Fri, 25 Sep 2020 10:21:45 +0900","From":"paul.elder@ideasonboard.com","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20200925012145.GN45948@pyrite.rasen.tech>","References":"<20200924100201.353624-1-kieran.bingham@ideasonboard.com>\n\t<20200924102735.ektko2q3krozlib7@uno.localdomain>\n\t<20200924123545.GE502216@oden.dyn.berto.se>\n\t<20200924131230.GF3968@pendragon.ideasonboard.com>\n\t<20200924151207.imgqkj27xzgxz5vv@uno.localdomain>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200924151207.imgqkj27xzgxz5vv@uno.localdomain>","Subject":"Re: [libcamera-devel] [RFC PATCH] ipa: rpi: Make boost optional","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]