[libcamera-devel] meson: Tag all installed files
diff mbox series

Message ID 20231206004514.18474-1-laurent.pinchart@ideasonboard.com
State Accepted
Commit 9ba0c3fef81dd952dcc3913f82a98b961a81d643
Headers show
Series
  • [libcamera-devel] meson: Tag all installed files
Related show

Commit Message

Laurent Pinchart Dec. 6, 2023, 12:45 a.m. UTC
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@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(-)


base-commit: 4eba2dc73c096d037a8a6390ff4a91ebbf1cedd4

Comments

Jacopo Mondi Dec. 6, 2023, 4:07 p.m. UTC | #1
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@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@ideasonboard.com>

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

Patch
diff mbox series

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')