[{"id":28259,"web_url":"https://patchwork.libcamera.org/comment/28259/","msgid":"<qahvgrdvps75ttwb2wvsjtwtxpatvnwh3zre6vcpbd4raitihd@2jgjeavnpfys>","date":"2023-12-06T16:07:56","subject":"Re: [libcamera-devel] [PATCH] meson: Tag all installed files","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Laurent\n\nOn Wed, Dec 06, 2023 at 02:45:14AM +0200, Laurent Pinchart via libcamera-devel wrote:\n> Meson uses tags to sort installed files in categories, and makes it\n> possible to install a subset of the files using the '--tags' argument to\n> 'meson install'. This is typically used by distributions to split the\n> runtime, development and documentation files into separate packages.\n>\n> By default, meson tries to guess the correct tag for installed files,\n> but can't always do so properly. Mark the install targets that meson\n> can't guess with the correct install_tag.\n>\n> As the feature has been introduced in meson 0.60, bump the minimum meson\n> version. The latest LTS release of all major distributions that\n> libcamera currently targets ship a recent enough meson version.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  Documentation/meson.build                       | 6 ++++--\n>  README.rst                                      | 2 +-\n>  meson.build                                     | 2 +-\n>  src/apps/cam/meson.build                        | 3 ++-\n>  src/apps/lc-compliance/meson.build              | 3 ++-\n>  src/apps/qcam/meson.build                       | 1 +\n>  src/ipa/ipu3/data/meson.build                   | 3 ++-\n>  src/ipa/meson.build                             | 3 ++-\n>  src/ipa/rkisp1/data/meson.build                 | 3 ++-\n>  src/ipa/rpi/vc4/data/meson.build                | 3 ++-\n>  src/ipa/vimc/data/meson.build                   | 3 ++-\n>  src/libcamera/pipeline/rpi/vc4/data/meson.build | 3 ++-\n>  src/py/libcamera/meson.build                    | 5 ++++-\n>  src/v4l2/meson.build                            | 3 ++-\n>  14 files changed, 29 insertions(+), 14 deletions(-)\n>\n> diff --git a/Documentation/meson.build b/Documentation/meson.build\n> index 3eb2897e6b2b..7a58fec8dc29 100644\n> --- a/Documentation/meson.build\n> +++ b/Documentation/meson.build\n> @@ -49,7 +49,8 @@ if doxygen.found() and dot.found()\n>                    output : 'api-html',\n>                    command : [doxygen, doxyfile],\n>                    install : true,\n> -                  install_dir : doc_install_dir)\n> +                  install_dir : doc_install_dir,\n> +                  install_tag : 'doc')\n>  endif\n>\n>  #\n> @@ -91,7 +92,8 @@ if sphinx.found()\n>                    output : 'html',\n>                    build_by_default : true,\n>                    install : true,\n> -                  install_dir : doc_install_dir)\n> +                  install_dir : doc_install_dir,\n> +                  install_tag : 'doc')\n>\n>      custom_target('documentation-linkcheck',\n>                    command : [sphinx, '-W', '-b', 'linkcheck', meson.current_source_dir(), '@OUTPUT@'],\n> diff --git a/README.rst b/README.rst\n> index 4cb996375a9a..4db454de4e02 100644\n> --- a/README.rst\n> +++ b/README.rst\n> @@ -47,7 +47,7 @@ A C++ toolchain: [required]\n>          Either {g++, clang}\n>\n>  Meson Build system: [required]\n> -        meson (>= 0.57) ninja-build pkg-config\n> +        meson (>= 0.60) ninja-build pkg-config\n>\n>  for the libcamera core: [required]\n>          libyaml-dev python3-yaml python3-ply python3-jinja2\n> diff --git a/meson.build b/meson.build\n> index ee57cb780149..e49de4c259f2 100644\n> --- a/meson.build\n> +++ b/meson.build\n> @@ -1,7 +1,7 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>\n>  project('libcamera', 'c', 'cpp',\n> -    meson_version : '>= 0.57',\n> +    meson_version : '>= 0.60',\n>      version : '0.1.0',\n>      default_options : [\n>          'werror=true',\n> diff --git a/src/apps/cam/meson.build b/src/apps/cam/meson.build\n> index 48c834ace71b..c70ca3cd2f8f 100644\n> --- a/src/apps/cam/meson.build\n> +++ b/src/apps/cam/meson.build\n> @@ -58,4 +58,5 @@ cam  = executable('cam', cam_sources,\n>                        libyaml,\n>                    ],\n>                    cpp_args : cam_cpp_args,\n> -                  install : true)\n> +                  install : true,\n> +                  install_tag : 'bin')\n> diff --git a/src/apps/lc-compliance/meson.build b/src/apps/lc-compliance/meson.build\n> index 51d9075ac30b..dd7b73abbcef 100644\n> --- a/src/apps/lc-compliance/meson.build\n> +++ b/src/apps/lc-compliance/meson.build\n> @@ -26,4 +26,5 @@ lc_compliance  = executable('lc-compliance', lc_compliance_sources,\n>                                  libevent,\n>                                  libgtest,\n>                              ],\n> -                            install : true)\n> +                            install : true,\n> +                            install_tag : 'bin-devel')\n> diff --git a/src/apps/qcam/meson.build b/src/apps/qcam/meson.build\n> index 2e77146cf73c..6cf4c171e668 100644\n> --- a/src/apps/qcam/meson.build\n> +++ b/src/apps/qcam/meson.build\n> @@ -63,6 +63,7 @@ resources = qt5.preprocess(moc_headers : qcam_moc_headers,\n>\n>  qcam  = executable('qcam', qcam_sources, resources,\n>                     install : true,\n> +                   install_tag : 'bin',\n>                     link_with : apps_lib,\n>                     dependencies : [\n>                         libatomic,\n> diff --git a/src/ipa/ipu3/data/meson.build b/src/ipa/ipu3/data/meson.build\n> index 1f50b6301f77..0f7cd5c64caa 100644\n> --- a/src/ipa/ipu3/data/meson.build\n> +++ b/src/ipa/ipu3/data/meson.build\n> @@ -5,4 +5,5 @@ conf_files = files([\n>  ])\n>\n>  install_data(conf_files,\n> -             install_dir : ipa_data_dir / 'ipu3')\n> +             install_dir : ipa_data_dir / 'ipu3',\n> +             install_tag : 'runtime')\n> diff --git a/src/ipa/meson.build b/src/ipa/meson.build\n> index 903eb52ba60f..48793e07e04c 100644\n> --- a/src/ipa/meson.build\n> +++ b/src/ipa/meson.build\n> @@ -72,5 +72,6 @@ if ipa_sign_module\n>      # install time, which invalidates the signatures.\n>      meson.add_install_script('ipa-sign-install.sh',\n>                               ipa_priv_key.full_path(),\n> -                             enabled_ipa_modules)\n> +                             enabled_ipa_modules,\n> +                             install_tag : 'runtime')\n>  endif\n> diff --git a/src/ipa/rkisp1/data/meson.build b/src/ipa/rkisp1/data/meson.build\n> index f5e9fa75eaa1..7150e1550422 100644\n> --- a/src/ipa/rkisp1/data/meson.build\n> +++ b/src/ipa/rkisp1/data/meson.build\n> @@ -8,4 +8,5 @@ conf_files = files([\n>  ])\n>\n>  install_data(conf_files,\n> -             install_dir : ipa_data_dir / 'rkisp1')\n> +             install_dir : ipa_data_dir / 'rkisp1',\n> +             install_tag : 'runtime')\n> diff --git a/src/ipa/rpi/vc4/data/meson.build b/src/ipa/rpi/vc4/data/meson.build\n> index bcf5658ba5d2..b4e45ad8d204 100644\n> --- a/src/ipa/rpi/vc4/data/meson.build\n> +++ b/src/ipa/rpi/vc4/data/meson.build\n> @@ -23,4 +23,5 @@ conf_files = files([\n>  ])\n>\n>  install_data(conf_files,\n> -             install_dir : ipa_data_dir / 'rpi' / 'vc4')\n> +             install_dir : ipa_data_dir / 'rpi' / 'vc4',\n> +             install_tag : 'runtime')\n> diff --git a/src/ipa/vimc/data/meson.build b/src/ipa/vimc/data/meson.build\n> index 42ec651ce81f..628d6a29e3ed 100644\n> --- a/src/ipa/vimc/data/meson.build\n> +++ b/src/ipa/vimc/data/meson.build\n> @@ -5,4 +5,5 @@ conf_files = files([\n>  ])\n>\n>  install_data(conf_files,\n> -             install_dir : ipa_data_dir / 'vimc')\n> +             install_dir : ipa_data_dir / 'vimc',\n> +             install_tag : 'runtime')\n> diff --git a/src/libcamera/pipeline/rpi/vc4/data/meson.build b/src/libcamera/pipeline/rpi/vc4/data/meson.build\n> index cca5e3885a4e..179feebc136d 100644\n> --- a/src/libcamera/pipeline/rpi/vc4/data/meson.build\n> +++ b/src/libcamera/pipeline/rpi/vc4/data/meson.build\n> @@ -5,4 +5,5 @@ conf_files = files([\n>  ])\n>\n>  install_data(conf_files,\n> -             install_dir : pipeline_data_dir / 'rpi' / 'vc4')\n> +             install_dir : pipeline_data_dir / 'rpi' / 'vc4',\n> +             install_tag : 'runtime')\n> diff --git a/src/py/libcamera/meson.build b/src/py/libcamera/meson.build\n> index 31af63ec0dc6..4807ca7d75ed 100644\n> --- a/src/py/libcamera/meson.build\n> +++ b/src/py/libcamera/meson.build\n> @@ -90,6 +90,7 @@ pycamera = shared_module('_libcamera',\n>                           pycamera_sources,\n>                           install : true,\n>                           install_dir : destdir,\n> +                         install_tag : 'python-runtime',\n>                           name_prefix : '',\n>                           dependencies : pycamera_deps,\n>                           cpp_args : pycamera_args)\n> @@ -105,7 +106,9 @@ run_command('ln', '-fsrT', meson.current_source_dir() / 'utils',\n>              meson.current_build_dir() / 'utils',\n>              check : true)\n>\n> -install_data(['__init__.py'], install_dir : destdir)\n> +install_data(['__init__.py'],\n> +             install_dir : destdir,\n> +             install_tag : 'python-runtime')\n>\n>  # \\todo Generate stubs when building. See https://peps.python.org/pep-0484/#stub-files\n>  # Note: Depends on pybind11-stubgen. To generate pylibcamera stubs:\n> diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build\n> index ab4b35dd0e6b..e88e0b33c51c 100644\n> --- a/src/v4l2/meson.build\n> +++ b/src/v4l2/meson.build\n> @@ -44,4 +44,5 @@ cdata.set('LIBCAMERA_V4L2_SO', get_option('prefix') / libcamera_libexecdir / 'v4\n>  configure_file(input : 'libcamerify.in',\n>                 output : 'libcamerify',\n>                 configuration : cdata,\n> -               install_dir : get_option('bindir'))\n> +               install_dir : get_option('bindir'),\n> +               install_tag : 'bin')\n>\nReviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\n> base-commit: 4eba2dc73c096d037a8a6390ff4a91ebbf1cedd4\n> --\n> Regards,\n>\n> Laurent Pinchart\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 25D0FC322E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  6 Dec 2023 16:08:01 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6150761D9E;\n\tWed,  6 Dec 2023 17:08:00 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 942F461D9E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  6 Dec 2023 17:07:59 +0100 (CET)","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 A09F4720;\n\tWed,  6 Dec 2023 17:07:18 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1701878880;\n\tbh=cmXT+GdFk9OSRpkW5aCyEToDHZeVkvAl7R0Cq08GH0c=;\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=25463sLcm/Ak9wh7gpEIv0cqlX6ztqBR0Fu+JzpiKH40olm3EWiDn3fJzyAVT2AM8\n\tlWCqKEJFWY2mYUHmGa5mmObZpO9TVZNQnm6jFpi6qUjJnDs8AdiMAagrgSP6Psr5+o\n\t3+Sv7GpYMB2++deIIc4mpWCBwGeBDjlOLbtN05gkDIcDDjA4irAz5qU42/dV2gm/0g\n\tMBstTyGWdnAHm2xNkNcDPYLaSfuxpH+tOLmNsDpuHcX7lXOaXVtjCdf8P/qkvJQoa8\n\tzZn3Fk2daEeVOlvA/Ykqjbe/2Q5Y0rHB1hSaEbw4IvHS5LaQK6w+fLSa+H0UfmLNIk\n\tI91rLdXQuY5eQ==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1701878838;\n\tbh=cmXT+GdFk9OSRpkW5aCyEToDHZeVkvAl7R0Cq08GH0c=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=mAYm1Zp4AtqqAo6YPWExe3rbnu3gXKmR4jtmH+guAvfyX4IihR70P86MvlAxej1w8\n\tH3b6cDCxc2mQHEEPxfn8smhA43ZVO9n3aR3K0/lMEjtwh2C/gFbMkN/tCji+T7Ma0f\n\tczCMUFFlgGlZwyKR/lcOQ5A5YZd3a+LS2I5CqOQE="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"mAYm1Zp4\"; dkim-atps=neutral","Date":"Wed, 6 Dec 2023 17:07:56 +0100","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<qahvgrdvps75ttwb2wvsjtwtxpatvnwh3zre6vcpbd4raitihd@2jgjeavnpfys>","References":"<20231206004514.18474-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20231206004514.18474-1-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] meson: Tag all installed files","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>"}}]