aboutsummaryrefslogtreecommitdiffstats
path: root/community/v4l-utils
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2018-03-04 15:39:22 -0600
committerWilliam Pitcock <nenolod@dereferenced.org>2018-03-06 00:47:06 +0000
commit689327e79503480e774cff04560f8e4c695f5824 (patch)
treef4516475a192dea73413073ae968cadcae465c75 /community/v4l-utils
parent0075bd7b734812cf61f33f0d3fcab79624f4e60c (diff)
{main => community}/v4l-utils: move, use Qt 5
Diffstat (limited to 'community/v4l-utils')
-rw-r--r--community/v4l-utils/0001-ir-ctl-fixes-for-musl-compile.patch37
-rw-r--r--community/v4l-utils/APKBUILD96
-rw-r--r--community/v4l-utils/fix-compliance.patch77
-rw-r--r--community/v4l-utils/getsubopt.patch36
-rw-r--r--community/v4l-utils/qv4l2.desktop12
-rw-r--r--community/v4l-utils/qv4l2.svg31
6 files changed, 289 insertions, 0 deletions
diff --git a/community/v4l-utils/0001-ir-ctl-fixes-for-musl-compile.patch b/community/v4l-utils/0001-ir-ctl-fixes-for-musl-compile.patch
new file mode 100644
index 00000000000..5391d815b57
--- /dev/null
+++ b/community/v4l-utils/0001-ir-ctl-fixes-for-musl-compile.patch
@@ -0,0 +1,37 @@
+diff --git a/utils/ir-ctl/ir-ctl.c b/utils/ir-ctl/ir-ctl.c
+index bc58cee..1a44011 100644
+--- a/utils/ir-ctl/ir-ctl.c
++++ b/utils/ir-ctl/ir-ctl.c
+@@ -42,6 +42,16 @@
+ # define _(string) string
+ #endif
+
++/* taken from glibc unistd.h */
++#ifndef TEMP_FAILURE_RETRY
++#define TEMP_FAILURE_RETRY(expression) \
++ (__extension__ \
++ ({ long int __result; \
++ do __result = (long int) (expression); \
++ while (__result == -1L && errno == EINTR); \
++ __result; }))
++#endif
++
+ # define N_(string) string
+
+
+@@ -344,12 +354,14 @@ static struct file *read_scancode(const char *name)
+ return NULL;
+ }
+
+- pstr = strndupa(name, p - name);
++ pstr = strndup(name, p - name);
+
+ if (!protocol_match(pstr, &proto)) {
+ fprintf(stderr, _("error: protocol '%s' not found\n"), pstr);
++ free(pstr);
+ return NULL;
+ }
++ free(pstr);
+
+ if (!strtoscancode(p + 1, &scancode)) {
+ fprintf(stderr, _("error: invalid scancode '%s'\n"), p + 1);
diff --git a/community/v4l-utils/APKBUILD b/community/v4l-utils/APKBUILD
new file mode 100644
index 00000000000..cff94a44ba1
--- /dev/null
+++ b/community/v4l-utils/APKBUILD
@@ -0,0 +1,96 @@
+# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
+# Maintainer: Francesco Colista <fcolista@alpinelinux.org>
+pkgname=v4l-utils
+pkgver=1.12.6
+pkgrel=1
+pkgdesc="Userspace tools and conversion library for Video 4 Linux"
+url="http://freshmeat.net/projects/libv4l"
+arch="all"
+license="LGPL-2.0-or-later"
+makedepends="qt5-qtbase-dev libjpeg-turbo-dev argp-standalone linux-headers
+ eudev-dev alsa-lib-dev"
+subpackages="$pkgname-dev $pkgname-doc qv4l2 $pkgname-dvbv5 $pkgname-libs ir_keytable"
+source="http://linuxtv.org/downloads/v4l-utils/$pkgname-$pkgver.tar.bz2
+ qv4l2.svg
+ qv4l2.desktop
+ 0001-ir-ctl-fixes-for-musl-compile.patch
+ getsubopt.patch
+ "
+builddir="$srcdir"/$pkgname-$pkgver
+
+build() {
+ cd "$builddir"
+ [ "$CLIBC" = "musl" ] && export CFLAGS="$CFLAGS -D__off_t=off_t"
+ export LIBS="-largp -lintl"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --enable-libdvbv5 \
+ --disable-static
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make -j1 DESTDIR="$pkgdir" install
+ install -Dm644 "$srcdir"/qv4l2.desktop \
+ "$pkgdir"/usr/share/applications/qv4l2.desktop
+ install -Dm644 "$srcdir"/qv4l2.svg \
+ "$pkgdir"/usr/share/icons/hicolor/scalable/apps/qv4l2.svg
+}
+
+qv4l2() {
+ pkgdesc="QT v4l2 test control and streaming test application"
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/qv4l2 "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/share "$subpkgdir"/usr/
+}
+
+dvbv5() {
+ pkgdesc="Backwards compatible DVBv5 command line utilities"
+ mkdir -p "$subpkgdir"/usr/bin \
+ "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/bin/dvb* \
+ "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/lib/libdvbv5.* \
+ "$subpkgdir"/usr/lib/
+}
+
+libs() {
+ pkgdesc="Collection of video4linux support libraries"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/* \
+ "$subpkgdir"/usr/lib
+}
+
+ir_keytable() {
+ pkgdesc="Alter keymaps of Remote Controller devices"
+ mkdir -p "$subpkgdir"/lib/udev/rc_keymaps \
+ "$subpkgdir"/lib/udev/rules.d \
+ "$subpkgdir"/usr/bin \
+ "$subpkgdir"/etc
+ mv "$pkgdir"/lib/udev/rc_keymaps/* \
+ "$subpkgdir"/lib/udev/rc_keymaps
+ mv "$pkgdir"/lib/udev/rules.d/* \
+ "$subpkgdir"/lib/udev/rules.d
+ mv "$pkgdir"/usr/bin/ir-keytable \
+ "$subpkgdir"/usr/bin
+ mv "$pkgdir"/etc/rc_maps.cfg \
+ "$subpkgdir"/etc
+}
+
+sha512sums="1f6e7ba9513ea836d6536eaf2f148588e9a2beaab62c49fb295e60aae41382781f76d536e854bbe6fc601f00034e3239b551874dc99a1f6afa788ee94976b332 v4l-utils-1.12.6.tar.bz2
+bc18280046c15b19984103f7c2bb44a0aea79715803c64f0c64bc932499c09022c956914c3b15ae59499adc09f6fbff5378be45707fe851250f495a26b63d682 qv4l2.svg
+6f74aa524b3de420eeb8de788ff3f717020732a3f1f6530caee50e63aae7eddbe5f551ffc50065c9f5d6078c13bace089948ecdcacf01f8b82c1a44960e06315 qv4l2.desktop
+f93d18b282d52c6cccbedc489e201a19b59f44b5e0aeb74b96537c3f5797c0b3c3f1499cd6ae822715c712e92b5ec5749749394f004ae1887a8bae3bac117c5b 0001-ir-ctl-fixes-for-musl-compile.patch
+9a4f6d0a44d30bb7afe4db8b40074d362f240cae1f1b13feb0eb2b1b666479fc6f73ef27542f6f80fb1b922c9540feadc9ff8563890ff3041d3f7fc62e504e29 getsubopt.patch"
diff --git a/community/v4l-utils/fix-compliance.patch b/community/v4l-utils/fix-compliance.patch
new file mode 100644
index 00000000000..34b85eeb559
--- /dev/null
+++ b/community/v4l-utils/fix-compliance.patch
@@ -0,0 +1,77 @@
+--- a/lib/libv4l1/v4l1compat.c
++++ b/lib/libv4l1/v4l1compat.c
+@@ -62,7 +62,7 @@
+ return fd;
+ }
+
+-#ifdef linux
++#ifdef __GLIBC__
+ LIBV4L_PUBLIC int open64(const char *file, int oflag, ...)
+ {
+ int fd;
+@@ -94,7 +94,11 @@
+ return v4l1_dup(fd);
+ }
+
++#ifdef __GLIBC__
+ LIBV4L_PUBLIC int ioctl(int fd, unsigned long int request, ...)
++#else
++LIBV4L_PUBLIC int ioctl(int fd, int request, ...)
++#endif
+ {
+ void *arg;
+ va_list ap;
+@@ -117,7 +121,7 @@
+ return v4l1_mmap(start, length, prot, flags, fd, offset);
+ }
+
+-#ifdef linux
++#ifdef __GLIBC__
+ LIBV4L_PUBLIC void *mmap64(void *start, size_t length, int prot, int flags, int fd,
+ __off64_t offset)
+ {
+--- a/lib/libv4l2/v4l2convert.c
++++ b/lib/libv4l2/v4l2convert.c
+@@ -86,7 +86,7 @@
+ return fd;
+ }
+
+-#ifdef linux
++#ifdef __GLIBC__
+ LIBV4L_PUBLIC int open64(const char *file, int oflag, ...)
+ {
+ int fd;
+@@ -121,7 +121,11 @@
+ return v4l2_dup(fd);
+ }
+
++#ifdef __GLIBC__
+ LIBV4L_PUBLIC int ioctl(int fd, unsigned long int request, ...)
++#else
++LIBV4L_PUBLIC int ioctl(int fd, int request, ...)
++#endif
+ {
+ void *arg;
+ va_list ap;
+@@ -144,7 +148,7 @@
+ return v4l2_mmap(start, length, prot, flags, fd, offset);
+ }
+
+-#ifdef linux
++#ifdef __GLIBC__
+ LIBV4L_PUBLIC void *mmap64(void *start, size_t length, int prot, int flags, int fd,
+ __off64_t offset)
+ {
+--- a/lib/libv4lconvert/libv4lsyscall-priv.h
++++ b/lib/libv4lconvert/libv4lsyscall-priv.h
+@@ -41,7 +41,9 @@
+ #include <linux/ioctl.h>
+ /* On 32 bits archs we always use mmap2, on 64 bits archs there is no mmap2 */
+ #ifdef __NR_mmap2
++#ifndef SYS_mmap2
+ #define SYS_mmap2 __NR_mmap2
++#endif
+ #define MMAP2_PAGE_SHIFT 12
+ #else
+ #define SYS_mmap2 SYS_mmap
+
diff --git a/community/v4l-utils/getsubopt.patch b/community/v4l-utils/getsubopt.patch
new file mode 100644
index 00000000000..c476e5ed7e7
--- /dev/null
+++ b/community/v4l-utils/getsubopt.patch
@@ -0,0 +1,36 @@
+POSIX says that behavior when subopts list is empty is undefined.
+musl libs will set value to NULL which leads to crash.
+
+Simply avoid getsubopt, since we cannot rely on it.
+
+diff --git a/utils/v4l2-ctl/v4l2-ctl-common.cpp b/utils/v4l2-ctl/v4l2-ctl-common.cpp
+index 3ea6cd3..291fb3e 100644
+--- a/utils/v4l2-ctl/v4l2-ctl-common.cpp
++++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp
+@@ -692,16 +692,17 @@ static bool parse_subset(char *optarg)
+
+ static bool parse_next_subopt(char **subs, char **value)
+ {
+- static char *const subopts[] = {
+- NULL
+- };
+- int opt = getsubopt(subs, subopts, value);
++ char *p = *subs;
++ *value = *subs;
+
+- if (opt < 0 || *value)
+- return false;
+- fprintf(stderr, "No value given to suboption <%s>\n",
+- subopts[opt]);
+- return true;
++ while (*p && *p != ',')
++ p++;
++
++ if (*p)
++ *p++ = '\0';
++
++ *subs = p;
++ return false;
+ }
+
+ void common_cmd(int ch, char *optarg)
diff --git a/community/v4l-utils/qv4l2.desktop b/community/v4l-utils/qv4l2.desktop
new file mode 100644
index 00000000000..55e369c7c51
--- /dev/null
+++ b/community/v4l-utils/qv4l2.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=QT V4L2 test Utility
+Name[pt]=Utilitário de teste V4L2
+Comment=Allow testing Video4Linux devices
+Comment[pt]=Permite testar dispositivos Video4Linux
+Exec=qv4l2
+Icon=qv4l2
+Terminal=false
+Type=Application
+Categories=Application;AudioVideo;
+
diff --git a/community/v4l-utils/qv4l2.svg b/community/v4l-utils/qv4l2.svg
new file mode 100644
index 00000000000..3d4f375cc2b
--- /dev/null
+++ b/community/v4l-utils/qv4l2.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:version="0.47 r22583" version="1.1" id="svg2839" height="297mm" width="210mm" sodipodi:docname="Novo documento 3">
+ <defs id="defs2841">
+ <linearGradient id="linearGradient2963">
+ <stop style="stop-color: rgb(255, 236, 187); stop-opacity: 1;" offset="0" id="stop2965"/>
+ <stop id="stop2971" offset="1" style="stop-color: rgb(0, 0, 0); stop-opacity: 0.498039;"/>
+ </linearGradient>
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" id="perspective2847"/>
+ <inkscape:perspective id="perspective2935" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2963" id="linearGradient2969" x1="-719.14288" y1="494.69958" x2="-324.21902" y2="968.98529" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0512, 0, 0, 1.05137, 651.058, -25.2444)"/>
+ <inkscape:perspective id="perspective2992" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+ </defs>
+ <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.7" inkscape:cx="376.9721" inkscape:cy="468.42546" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" inkscape:window-width="1513" inkscape:window-height="1044" inkscape:window-x="1941" inkscape:window-y="0" inkscape:window-maximized="0"/>
+ <metadata id="metadata2844">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g inkscape:label="Camada 1" inkscape:groupmode="layer" id="layer1">
+ <rect style="fill: rgb(173, 160, 127); fill-opacity: 1;" id="rect2959" width="498.57132" height="402.52496" x="101.42867" y="345.21906" ry="15.848869"/>
+ <rect style="fill: rgb(214, 207, 189); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 1.09651px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;" id="rect2955" width="366.37466" height="268.80539" x="172.03215" y="409.8259" ry="24.860613"/>
+ <path style="fill: url(&quot;#linearGradient2969&quot;) rgb(0, 0, 0); fill-opacity: 1;" d="m 111.92284,745.80915 c -1.7443,-0.70488 -4.61634,-3.11878 -6.38231,-5.3642 l -3.21086,-4.08259 0,-189.14299 c 0,-136.34795 0.46823,-190.05871 1.67748,-192.42365 0.92263,-1.80438 3.11889,-4.44845 4.8806,-5.87571 3.00442,-2.43405 17.98923,-2.5971 241.57759,-2.62843 l 238.37448,-0.0334 4.90427,4.38251 4.90429,4.3825 0.39257,189.41161 c 0.43575,210.24489 1.09242,196.30432 -9.4544,200.71175 -4.34407,1.81535 -40.20923,2.12038 -239.80015,2.0394 -129.08065,-0.0523 -236.11926,-0.67193 -237.86356,-1.37681 z m 413.94314,-69.49552 c 4.39946,-2.22093 7.85143,-5.43895 10.06966,-9.38725 l 3.37535,-6.00784 -0.36571,-118.16973 c -0.36124,-116.72035 -0.4037,-118.22058 -3.46195,-122.31682 -4.69144,-6.28374 -10.15101,-9.79936 -17.39001,-11.19809 -8.54594,-1.65125 -316.90144,-1.65125 -325.4474,0 -7.68,1.48394 -13.16379,5.20817 -17.88452,12.146 l -3.40519,5.00442 0.40173,119.03503 c 0.39878,118.15286 0.42505,119.06645 3.54637,123.27494 1.72955,2.33195 5.7842,5.74954 9.01033,7.59462 l 5.8657,3.35471 164.49565,0.0248 164.49566,0.0246 6.69433,-3.3794 z" id="path2961"/>
+ <rect style="fill: rgb(25, 20, 8); fill-opacity: 1;" id="rect2980" width="63.072273" height="39.050926" x="499.38467" y="744.74005" ry="0"/>
+ <rect style="fill: rgb(25, 20, 8); fill-opacity: 1;" id="rect2980-1" width="63.072273" height="39.050926" x="130.56888" y="744.74005" ry="0"/>
+ </g>
+</svg> \ No newline at end of file