From 9ba0c3fef81dd952dcc3913f82a98b961a81d643 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Wed, 6 Dec 2023 02:22:54 +0200 Subject: [PATCH] meson: Tag all installed files 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 Reviewed-by: Jacopo Mondi --- 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 3eb2897e6..7a58fec8d 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 4cb996375..4db454de4 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 ee57cb780..e49de4c25 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 48c834ace..c70ca3cd2 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 51d9075ac..dd7b73abb 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 2e77146cf..6cf4c171e 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 1f50b6301..0f7cd5c64 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 903eb52ba..48793e07e 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 f5e9fa75e..7150e1550 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 bcf5658ba..b4e45ad8d 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 42ec651ce..628d6a29e 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 cca5e3885..179feebc1 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 31af63ec0..4807ca7d7 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 ab4b35dd0..e88e0b33c 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')