[libcamera-devel] [PATCH] meson: Tag all installed files

Jacopo Mondi jacopo.mondi at ideasonboard.com
Wed Dec 6 17:07:56 CET 2023


Hi Laurent

On Wed, Dec 06, 2023 at 02:45:14AM +0200, Laurent Pinchart via libcamera-devel wrote:
> Meson uses tags to sort installed files in categories, and makes it
> possible to install a subset of the files using the '--tags' argument to
> 'meson install'. This is typically used by distributions to split the
> runtime, development and documentation files into separate packages.
>
> By default, meson tries to guess the correct tag for installed files,
> but can't always do so properly. Mark the install targets that meson
> can't guess with the correct install_tag.
>
> As the feature has been introduced in meson 0.60, bump the minimum meson
> version. The latest LTS release of all major distributions that
> libcamera currently targets ship a recent enough meson version.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
>  Documentation/meson.build                       | 6 ++++--
>  README.rst                                      | 2 +-
>  meson.build                                     | 2 +-
>  src/apps/cam/meson.build                        | 3 ++-
>  src/apps/lc-compliance/meson.build              | 3 ++-
>  src/apps/qcam/meson.build                       | 1 +
>  src/ipa/ipu3/data/meson.build                   | 3 ++-
>  src/ipa/meson.build                             | 3 ++-
>  src/ipa/rkisp1/data/meson.build                 | 3 ++-
>  src/ipa/rpi/vc4/data/meson.build                | 3 ++-
>  src/ipa/vimc/data/meson.build                   | 3 ++-
>  src/libcamera/pipeline/rpi/vc4/data/meson.build | 3 ++-
>  src/py/libcamera/meson.build                    | 5 ++++-
>  src/v4l2/meson.build                            | 3 ++-
>  14 files changed, 29 insertions(+), 14 deletions(-)
>
> diff --git a/Documentation/meson.build b/Documentation/meson.build
> index 3eb2897e6b2b..7a58fec8dc29 100644
> --- a/Documentation/meson.build
> +++ b/Documentation/meson.build
> @@ -49,7 +49,8 @@ if doxygen.found() and dot.found()
>                    output : 'api-html',
>                    command : [doxygen, doxyfile],
>                    install : true,
> -                  install_dir : doc_install_dir)
> +                  install_dir : doc_install_dir,
> +                  install_tag : 'doc')
>  endif
>
>  #
> @@ -91,7 +92,8 @@ if sphinx.found()
>                    output : 'html',
>                    build_by_default : true,
>                    install : true,
> -                  install_dir : doc_install_dir)
> +                  install_dir : doc_install_dir,
> +                  install_tag : 'doc')
>
>      custom_target('documentation-linkcheck',
>                    command : [sphinx, '-W', '-b', 'linkcheck', meson.current_source_dir(), '@OUTPUT@'],
> diff --git a/README.rst b/README.rst
> index 4cb996375a9a..4db454de4e02 100644
> --- a/README.rst
> +++ b/README.rst
> @@ -47,7 +47,7 @@ A C++ toolchain: [required]
>          Either {g++, clang}
>
>  Meson Build system: [required]
> -        meson (>= 0.57) ninja-build pkg-config
> +        meson (>= 0.60) ninja-build pkg-config
>
>  for the libcamera core: [required]
>          libyaml-dev python3-yaml python3-ply python3-jinja2
> diff --git a/meson.build b/meson.build
> index ee57cb780149..e49de4c259f2 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1,7 +1,7 @@
>  # SPDX-License-Identifier: CC0-1.0
>
>  project('libcamera', 'c', 'cpp',
> -    meson_version : '>= 0.57',
> +    meson_version : '>= 0.60',
>      version : '0.1.0',
>      default_options : [
>          'werror=true',
> diff --git a/src/apps/cam/meson.build b/src/apps/cam/meson.build
> index 48c834ace71b..c70ca3cd2f8f 100644
> --- a/src/apps/cam/meson.build
> +++ b/src/apps/cam/meson.build
> @@ -58,4 +58,5 @@ cam  = executable('cam', cam_sources,
>                        libyaml,
>                    ],
>                    cpp_args : cam_cpp_args,
> -                  install : true)
> +                  install : true,
> +                  install_tag : 'bin')
> diff --git a/src/apps/lc-compliance/meson.build b/src/apps/lc-compliance/meson.build
> index 51d9075ac30b..dd7b73abbcef 100644
> --- a/src/apps/lc-compliance/meson.build
> +++ b/src/apps/lc-compliance/meson.build
> @@ -26,4 +26,5 @@ lc_compliance  = executable('lc-compliance', lc_compliance_sources,
>                                  libevent,
>                                  libgtest,
>                              ],
> -                            install : true)
> +                            install : true,
> +                            install_tag : 'bin-devel')
> diff --git a/src/apps/qcam/meson.build b/src/apps/qcam/meson.build
> index 2e77146cf73c..6cf4c171e668 100644
> --- a/src/apps/qcam/meson.build
> +++ b/src/apps/qcam/meson.build
> @@ -63,6 +63,7 @@ resources = qt5.preprocess(moc_headers : qcam_moc_headers,
>
>  qcam  = executable('qcam', qcam_sources, resources,
>                     install : true,
> +                   install_tag : 'bin',
>                     link_with : apps_lib,
>                     dependencies : [
>                         libatomic,
> diff --git a/src/ipa/ipu3/data/meson.build b/src/ipa/ipu3/data/meson.build
> index 1f50b6301f77..0f7cd5c64caa 100644
> --- a/src/ipa/ipu3/data/meson.build
> +++ b/src/ipa/ipu3/data/meson.build
> @@ -5,4 +5,5 @@ conf_files = files([
>  ])
>
>  install_data(conf_files,
> -             install_dir : ipa_data_dir / 'ipu3')
> +             install_dir : ipa_data_dir / 'ipu3',
> +             install_tag : 'runtime')
> diff --git a/src/ipa/meson.build b/src/ipa/meson.build
> index 903eb52ba60f..48793e07e04c 100644
> --- a/src/ipa/meson.build
> +++ b/src/ipa/meson.build
> @@ -72,5 +72,6 @@ if ipa_sign_module
>      # install time, which invalidates the signatures.
>      meson.add_install_script('ipa-sign-install.sh',
>                               ipa_priv_key.full_path(),
> -                             enabled_ipa_modules)
> +                             enabled_ipa_modules,
> +                             install_tag : 'runtime')
>  endif
> diff --git a/src/ipa/rkisp1/data/meson.build b/src/ipa/rkisp1/data/meson.build
> index f5e9fa75eaa1..7150e1550422 100644
> --- a/src/ipa/rkisp1/data/meson.build
> +++ b/src/ipa/rkisp1/data/meson.build
> @@ -8,4 +8,5 @@ conf_files = files([
>  ])
>
>  install_data(conf_files,
> -             install_dir : ipa_data_dir / 'rkisp1')
> +             install_dir : ipa_data_dir / 'rkisp1',
> +             install_tag : 'runtime')
> diff --git a/src/ipa/rpi/vc4/data/meson.build b/src/ipa/rpi/vc4/data/meson.build
> index bcf5658ba5d2..b4e45ad8d204 100644
> --- a/src/ipa/rpi/vc4/data/meson.build
> +++ b/src/ipa/rpi/vc4/data/meson.build
> @@ -23,4 +23,5 @@ conf_files = files([
>  ])
>
>  install_data(conf_files,
> -             install_dir : ipa_data_dir / 'rpi' / 'vc4')
> +             install_dir : ipa_data_dir / 'rpi' / 'vc4',
> +             install_tag : 'runtime')
> diff --git a/src/ipa/vimc/data/meson.build b/src/ipa/vimc/data/meson.build
> index 42ec651ce81f..628d6a29e3ed 100644
> --- a/src/ipa/vimc/data/meson.build
> +++ b/src/ipa/vimc/data/meson.build
> @@ -5,4 +5,5 @@ conf_files = files([
>  ])
>
>  install_data(conf_files,
> -             install_dir : ipa_data_dir / 'vimc')
> +             install_dir : ipa_data_dir / 'vimc',
> +             install_tag : 'runtime')
> diff --git a/src/libcamera/pipeline/rpi/vc4/data/meson.build b/src/libcamera/pipeline/rpi/vc4/data/meson.build
> index cca5e3885a4e..179feebc136d 100644
> --- a/src/libcamera/pipeline/rpi/vc4/data/meson.build
> +++ b/src/libcamera/pipeline/rpi/vc4/data/meson.build
> @@ -5,4 +5,5 @@ conf_files = files([
>  ])
>
>  install_data(conf_files,
> -             install_dir : pipeline_data_dir / 'rpi' / 'vc4')
> +             install_dir : pipeline_data_dir / 'rpi' / 'vc4',
> +             install_tag : 'runtime')
> diff --git a/src/py/libcamera/meson.build b/src/py/libcamera/meson.build
> index 31af63ec0dc6..4807ca7d75ed 100644
> --- a/src/py/libcamera/meson.build
> +++ b/src/py/libcamera/meson.build
> @@ -90,6 +90,7 @@ pycamera = shared_module('_libcamera',
>                           pycamera_sources,
>                           install : true,
>                           install_dir : destdir,
> +                         install_tag : 'python-runtime',
>                           name_prefix : '',
>                           dependencies : pycamera_deps,
>                           cpp_args : pycamera_args)
> @@ -105,7 +106,9 @@ run_command('ln', '-fsrT', meson.current_source_dir() / 'utils',
>              meson.current_build_dir() / 'utils',
>              check : true)
>
> -install_data(['__init__.py'], install_dir : destdir)
> +install_data(['__init__.py'],
> +             install_dir : destdir,
> +             install_tag : 'python-runtime')
>
>  # \todo Generate stubs when building. See https://peps.python.org/pep-0484/#stub-files
>  # Note: Depends on pybind11-stubgen. To generate pylibcamera stubs:
> diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
> index ab4b35dd0e6b..e88e0b33c51c 100644
> --- a/src/v4l2/meson.build
> +++ b/src/v4l2/meson.build
> @@ -44,4 +44,5 @@ cdata.set('LIBCAMERA_V4L2_SO', get_option('prefix') / libcamera_libexecdir / 'v4
>  configure_file(input : 'libcamerify.in',
>                 output : 'libcamerify',
>                 configuration : cdata,
> -               install_dir : get_option('bindir'))
> +               install_dir : get_option('bindir'),
> +               install_tag : 'bin')
>
Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>

> base-commit: 4eba2dc73c096d037a8a6390ff4a91ebbf1cedd4
> --
> Regards,
>
> Laurent Pinchart
>


More information about the libcamera-devel mailing list