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>

Reply via email to