commit: 9835f706326f56924f35fadb00760c470a60ec01 Author: James Le Cuirot <chewi <AT> gentoo <DOT> org> AuthorDate: Tue Dec 12 15:47:03 2023 +0000 Commit: James Le Cuirot <chewi <AT> gentoo <DOT> org> CommitDate: Tue Dec 12 17:21:58 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9835f706
media-libs/libv4l: Version bump to 1.26.0 This version switches from Autotools to Meson. We are folding media-tv/v4l-utils into this package because the split has become infeasible with Meson. It was already a little messy before. The utilities require the libraries anyway. The utilities will now be optionally installable with the "utils" USE flag. The upstream project is called v4l-utils rather than libv4l, but naming the package v4l-utils with a "libs" USE flag would be odd, and hardly any packages need the utilities. Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org> media-libs/libv4l/Manifest | 1 + media-libs/libv4l/files/libv4l-1.26.0-meson.patch | 86 ++++++++++++++ media-libs/libv4l/libv4l-1.26.0.ebuild | 135 ++++++++++++++++++++++ media-libs/libv4l/metadata.xml | 5 + 4 files changed, 227 insertions(+) diff --git a/media-libs/libv4l/Manifest b/media-libs/libv4l/Manifest index 9a88ad1c15fe..6eb43655daa4 100644 --- a/media-libs/libv4l/Manifest +++ b/media-libs/libv4l/Manifest @@ -1,2 +1,3 @@ DIST v4l-utils-1.22.1.tar.bz2 2086238 BLAKE2B a3f01a17ea7c8925c74dd883d30b42f54b7926d253dac79e4cadaba43abc33672804257b3b92e5aa640ead6b5aaaa2458f05e21642044d7dea77e5580a8dbe9a SHA512 8a634d8995d13f453dfaf90ca5d0dfb26f2f4b10a0d200d76a949c46f77040d12fc0a5b35e05d7b1ba68bcfc85a445be5a5ab1d4a7d4eabfe3a254038ccc6170 DIST v4l-utils-1.24.1.tar.bz2 2238340 BLAKE2B 1702918699d47b17467e012c2b1875c58851175c1007351a3b40d0b0fa40437eb695efa9e21afe3351f66780899d45798eef7f23c90a4831bface70a245b8a54 SHA512 1e82ba125285e875bf4a216adedab9147009e6af1aadd79a3a1770231d3c96ec29245b33e75f69a9ce1b25011e71746db242c778ac3369148de1e9de2e318663 +DIST v4l-utils-1.26.0.tar.xz 1191988 BLAKE2B 8a4899f7b0d71ca6fd4b296ce9f154c3125c59389130df2db772d66984652b135178d712cc7b39e9f53b6587a4e128e2240d28382ab3ce7d1172d939260b15e2 SHA512 7820a91beb5cfc8e3ecf54145f2503fbbbf879abf1551d5bba5d8454f5a93242daaa51ff4636959d3434aa0d352bdf35afcd5f56e0eb9ab50c8191e8f6283f4a diff --git a/media-libs/libv4l/files/libv4l-1.26.0-meson.patch b/media-libs/libv4l/files/libv4l-1.26.0-meson.patch new file mode 100644 index 000000000000..0c993dd0da96 --- /dev/null +++ b/media-libs/libv4l/files/libv4l-1.26.0-meson.patch @@ -0,0 +1,86 @@ +From 11ca2682040d14ba1a3d65e95a6f0dfded5e4365 Mon Sep 17 00:00:00 2001 +From: James Le Cuirot <[email protected]> +Date: Tue, 12 Dec 2023 13:39:21 +0000 +Subject: [PATCH 1/2] meson: Fix building with -Dv4l-utils=false + +ir_bpf_enabled was referenced without being defined. +--- + meson.build | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/meson.build b/meson.build +index ab632976..7495a9c2 100644 +--- a/meson.build ++++ b/meson.build +@@ -358,6 +358,8 @@ subdir('lib') + if get_option('v4l-utils') + subdir('utils') + subdir('contrib') ++else ++ ir_bpf_enabled = false + endif + + subdir('doc') +-- +2.42.1 + +From 15343c83e43805223c098e4c5efe9e176343e801 Mon Sep 17 00:00:00 2001 +From: James Le Cuirot <[email protected]> +Date: Tue, 12 Dec 2023 13:59:13 +0000 +Subject: [PATCH 2/2] meson: Allow documentation directory to be specified with + -Ddocdir + +This is needed by Gentoo Linux QA. + +Signed-off-by: James Le Cuirot <[email protected]> +--- + doc/meson.build | 2 +- + meson.build | 5 +++++ + meson_options.txt | 2 ++ + 3 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/doc/meson.build b/doc/meson.build +index 8f4437e7..4b23c3de 100644 +--- a/doc/meson.build ++++ b/doc/meson.build +@@ -20,7 +20,7 @@ doxygen_install_dirs = [] + doxygen_output = [] + if get_option('doxygen-html') + doxygen_output += 'html' +- doxygen_install_dirs += get_option('datadir') / 'doc' / '@0@'.format(meson.project_name()) ++ doxygen_install_dirs += docdir + endif + if get_option('doxygen-man') + doxygen_output += 'man' +diff --git a/meson.build b/meson.build +index 7495a9c2..0348b43b 100644 +--- a/meson.build ++++ b/meson.build +@@ -289,6 +289,11 @@ if udevdir == '' + udevdir = '/lib/udev' + endif + ++docdir = get_option('docdir') ++if docdir == '' ++ docdir = get_option('datadir') / 'doc' / '@0@'.format(meson.project_name()) ++endif ++ + qt5_opengl_test = ''' + #define GL_GLEXT_PROTOTYPES + #define QT_NO_OPENGL_ES_2 +diff --git a/meson_options.txt b/meson_options.txt +index 2fa046c0..53cf832f 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -32,6 +32,8 @@ option('v4l2-ctl-stream-to', type : 'boolean', + description : 'Enable use of --stream-to in v4l2-ctl') + + # Directories ++option('docdir', type : 'string', ++ description : 'Set documentation directory') + option('gconvsysdir', type : 'string', + description : 'Set system gconv directory (default is to autodetect)') + option('libv4l1subdir', type : 'string', value : 'libv4l', +-- +2.42.1 + diff --git a/media-libs/libv4l/libv4l-1.26.0.ebuild b/media-libs/libv4l/libv4l-1.26.0.ebuild new file mode 100644 index 000000000000..2913916767cc --- /dev/null +++ b/media-libs/libv4l/libv4l-1.26.0.ebuild @@ -0,0 +1,135 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit linux-info meson-multilib systemd udev xdg + +MY_P="v4l-utils-${PV}" + +DESCRIPTION="v4l-utils libraries and optional utilities" +HOMEPAGE="https://git.linuxtv.org/v4l-utils.git" +SRC_URI="https://linuxtv.org/downloads/v4l-utils/${MY_P}.tar.xz" + +LICENSE="LGPL-2.1+" +SLOT="0/0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" +IUSE="bpf doc dvb jpeg qt5 tracer +utils" + +REQUIRED_USE=" + bpf? ( utils ) + qt5? ( utils ) + tracer? ( utils ) +" + +RDEPEND=" + dvb? ( virtual/libudev[${MULTILIB_USEDEP}] ) + jpeg? ( media-libs/libjpeg-turbo:=[${MULTILIB_USEDEP}] ) + utils? ( + !elibc_glibc? ( sys-libs/argp-standalone ) + bpf? ( + dev-libs/libbpf:= + virtual/libelf:= + ) + qt5? ( + dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtopengl:5[-gles2(-)] + dev-qt/qtwidgets:5 + media-libs/alsa-lib + virtual/opengl + ) + tracer? ( dev-libs/json-c:= ) + virtual/libudev + ) + !<media-tv/v4l-utils-1.26 +" + +DEPEND=" + ${RDEPEND} +" + +BDEPEND=" + sys-devel/gettext + virtual/pkgconfig + bpf? ( sys-devel/clang:*[llvm_targets_BPF] ) + doc? ( app-doc/doxygen ) + utils? ( + dev-lang/perl + qt5? ( dev-qt/qtcore:5 ) + ) +" + +# Not really prebuilt but BPF objects make our QA checks go crazy. +QA_PREBUILT="*/rc_keymaps/protocols/*.o" + +S="${WORKDIR}/${MY_P}" + +PATCHES=( + "${FILESDIR}"/${PN}-1.26.0-meson.patch +) + +check_llvm() { + if [[ ${MERGE_TYPE} != binary ]] && use bpf; then + local clang=${ac_cv_prog_CLANG:-${CLANG:-clang}} + ${clang} -target bpf -print-supported-cpus &>/dev/null || + die "${clang} does not support the BPF target. Please check LLVM_TARGETS." + fi +} + +pkg_pretend() { + has_version -b sys-devel/clang && check_llvm +} + +pkg_setup() { + check_llvm + CONFIG_CHECK="~SHMEM" linux-info_pkg_setup +} + +multilib_src_configure() { + local emesonargs=( + $(meson_native_use_feature bpf) + -Dgconv=disabled + $(meson_feature jpeg) + $(meson_feature dvb libdvbv5) + $(meson_native_use_feature qt5 qv4l2) + $(meson_native_use_feature qt5 qvidcap) + $(meson_native_use_feature tracer v4l2-tracer) + $(meson_native_use_bool utils v4l-utils) + -Ddocdir="${EPREFIX}/usr/share/doc/${PF}" + -Dsystemdsystemunitdir="$(systemd_get_systemunitdir)" + -Dudevdir="$(get_udevdir)" + $(meson_native_use_feature doc doxygen-doc) + $(meson_native_use_bool doc doxygen-html) + $(meson_native_use_bool doc doxygen-man) + ) + meson_src_configure +} + +multilib_src_install_all() { + dodoc ChangeLog README.lib* TODO + + if use utils; then + dodoc README.md + newdoc utils/dvb/README README.dvb + newdoc utils/libv4l2util/TODO TODO.libv4l2util + newdoc utils/libmedia_dev/README README.libmedia_dev + newdoc utils/v4l2-compliance/fixme.txt fixme.txt.v4l2-compliance + fi +} + +pkg_postinst() { + xdg_pkg_postinst + use utils && udev_reload + + if use utils && [[ -n ${REPLACING_VERSIONS} ]] && ver_test 1.20.0 -ge ${REPLACING_VERSIONS%% *}; then + ewarn "WARNING! ir-keytable has changed significantly from version 1.20.0 so" + ewarn "you may need to take action to avoid breakage. See" + ewarn "https://bugs.gentoo.org/767175 for more details." + fi +} + +pkg_postrm() { + xdg_pkg_postrm + use utils && udev_reload +} diff --git a/media-libs/libv4l/metadata.xml b/media-libs/libv4l/metadata.xml index cfda73acc478..05b7d499b3fc 100644 --- a/media-libs/libv4l/metadata.xml +++ b/media-libs/libv4l/metadata.xml @@ -23,4 +23,9 @@ libv4l2 offers the v4l2 API on top of v4l2 devices, while adding for the application transparent libv4lconvert conversion where necessary. </longdescription> + <use> + <flag name="bpf">Enable support for IR BPF decoders</flag> + <flag name="tracer">Build the v4l2-tracer tool and library</flag> + <flag name="utils">Build the v4l-utils collection of utilities</flag> + </use> </pkgmetadata>
