From 94a8836eee25a644f69d5e1ffac387eb390b9a2d Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 30 Nov 2019 18:54:16 -0800 Subject: v4l-utils: Update to 1.18.0 - Fix build on 32bit arches with 64bit time_t - Forward port patches Signed-off-by: Khem Raj --- .../0003-v4l2-ctl-Do-not-use-getsubopt.patch | 47 ------------------ ...05-Define-error_t-and-include-sys-types.h.patch | 45 +++++++++++++++++ ...x-build-on-32bit-arches-with-64bit-time_t.patch | 41 ++++++++++++++++ .../v4l-utils/0007-Do-not-use-getsubopt.patch | 48 +++++++++++++++++++ .../v4l2apps/v4l-utils_1.16.5.bb | 54 --------------------- .../v4l2apps/v4l-utils_1.18.0.bb | 56 ++++++++++++++++++++++ 6 files changed, 190 insertions(+), 101 deletions(-) delete mode 100644 meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-v4l2-ctl-Do-not-use-getsubopt.patch create mode 100644 meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0005-Define-error_t-and-include-sys-types.h.patch create mode 100644 meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch create mode 100644 meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch delete mode 100644 meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.5.bb create mode 100644 meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.18.0.bb (limited to 'meta-oe/recipes-multimedia') diff --git a/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-v4l2-ctl-Do-not-use-getsubopt.patch b/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-v4l2-ctl-Do-not-use-getsubopt.patch deleted file mode 100644 index 5b84af2c32..0000000000 --- a/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-v4l2-ctl-Do-not-use-getsubopt.patch +++ /dev/null @@ -1,47 +0,0 @@ -From f7a4b79b3323534460a63b3e6c58ebaf06adf207 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Fri, 14 Jul 2017 13:20:05 -0700 -Subject: [PATCH] v4l2-ctl: Do not use getsubopt - -POSIX says that behavior when subopts list is empty is undefined. -musl libs will set value to NULL which leads to crash. - -Taken from AlpineLinux - -Signed-off-by: Khem Raj - ---- - utils/v4l2-ctl/v4l2-ctl-common.cpp | 19 ++++++++++--------- - 1 file changed, 10 insertions(+), 9 deletions(-) - -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/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0005-Define-error_t-and-include-sys-types.h.patch b/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0005-Define-error_t-and-include-sys-types.h.patch new file mode 100644 index 0000000000..57948add6e --- /dev/null +++ b/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0005-Define-error_t-and-include-sys-types.h.patch @@ -0,0 +1,45 @@ +From 137ce23ae677b11e5483ef810751edae7bf96bb9 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 30 Nov 2019 18:40:06 -0800 +Subject: [PATCH] Define error_t and include sys/types.h + +Fix 'unknown type name' for error_t and u_int32_t. +u_int32_t is defined in sys/type.h + +Signed-off-by: Khem Raj +--- + utils/ir-ctl/keymap.h | 4 ++++ + utils/keytable/keymap.h | 5 +++++ + 2 files changed, 9 insertions(+) + +diff --git a/utils/ir-ctl/keymap.h b/utils/ir-ctl/keymap.h +index f2b2963..1f8a3f8 100644 +--- a/utils/ir-ctl/keymap.h ++++ b/utils/ir-ctl/keymap.h +@@ -2,6 +2,10 @@ + #ifndef __KEYMAP_H + #define __KEYMAP_H + ++#include ++#ifndef error_t ++typedef int error_t; ++#endif + struct keymap { + struct keymap *next; + char *name; +diff --git a/utils/keytable/keymap.h b/utils/keytable/keymap.h +index f2b2963..345d55d 100644 +--- a/utils/keytable/keymap.h ++++ b/utils/keytable/keymap.h +@@ -2,6 +2,11 @@ + #ifndef __KEYMAP_H + #define __KEYMAP_H + ++#include ++#ifndef error_t ++typedef int error_t; ++#endif ++ + struct keymap { + struct keymap *next; + char *name; diff --git a/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch new file mode 100644 index 0000000000..a8926762ed --- /dev/null +++ b/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch @@ -0,0 +1,41 @@ +From b213da2d5fcc93cd24fc880c71c717d8e2ce2968 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 30 Nov 2019 18:43:21 -0800 +Subject: [PATCH] Fix build on 32bit arches with 64bit time_t + +time element is deprecated on new input_event structure in kernel's +input.h [1] + +[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f + +Upstream-Status: Pending +Signed-off-by: Khem Raj +--- + utils/keytable/keytable.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/utils/keytable/keytable.c b/utils/keytable/keytable.c +index 6cb0217..59ff1ee 100644 +--- a/utils/keytable/keytable.c ++++ b/utils/keytable/keytable.c +@@ -53,6 +53,11 @@ + + # define N_(string) string + ++#ifndef input_event_sec ++#define input_event_sec time.tv_sec ++#define input_event_usec time.tv_usec ++#endif ++ + struct input_keymap_entry_v2 { + #define KEYMAP_BY_INDEX (1 << 0) + u_int8_t flags; +@@ -1533,7 +1538,7 @@ static void test_event(struct rc_device *rc_dev, int fd) + + for (i = 0; i < rd / sizeof(struct input_event); i++) { + printf(_("%ld.%06ld: event type %s(0x%02x)"), +- ev[i].time.tv_sec, ev[i].time.tv_usec, ++ ev[i].input_event_sec, ev[i].input_event_usec, + get_event_name(events_type, ev[i].type), ev[i].type); + + switch (ev[i].type) { diff --git a/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch b/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch new file mode 100644 index 0000000000..ac704c72dc --- /dev/null +++ b/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch @@ -0,0 +1,48 @@ +From 4a10eab0e31d69948161241b1801c41201a5d081 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 30 Nov 2019 18:50:34 -0800 +Subject: [PATCH] Do not use getsubopt + +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. + +Imported from Alpine Linux + +Upstream-Status: Pending +Signed-off-by: Khem Raj +--- + utils/v4l2-ctl/v4l2-ctl-common.cpp | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +diff --git a/utils/v4l2-ctl/v4l2-ctl-common.cpp b/utils/v4l2-ctl/v4l2-ctl-common.cpp +index 651917e..cea57b7 100644 +--- a/utils/v4l2-ctl/v4l2-ctl-common.cpp ++++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp +@@ -782,15 +782,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, "Missing suboption value\n"); +- return true; ++ while (*p && *p != ',') ++ p++; ++ ++ if (*p) ++ *p++ = '\0'; ++ ++ *subs = p; ++ return false; + } + + void common_cmd(const std::string &media_bus_info, int ch, char *optarg) diff --git a/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.5.bb b/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.5.bb deleted file mode 100644 index 415446844d..0000000000 --- a/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.5.bb +++ /dev/null @@ -1,54 +0,0 @@ -SUMMARY = "v4l2 and IR applications" -LICENSE = "GPLv2 & LGPLv2.1" -LIC_FILES_CHKSUM = "file://COPYING;md5=48da9957849056017dc568bbc43d8975 \ - file://COPYING.libv4l;md5=d749e86a105281d7a44c2328acebc4b0" -PROVIDES = "libv4l media-ctl" - -DEPENDS = "jpeg \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/libx11', '', d)}" -DEPENDS_append_libc-musl = " argp-standalone" -DEPENDS_append_class-target = " udev" -LDFLAGS_append = " -pthread" - -inherit autotools gettext pkgconfig - -PACKAGECONFIG ??= "media-ctl" -PACKAGECONFIG[media-ctl] = "--enable-v4l-utils,--disable-v4l-utils,," - -SRC_URI = "http://linuxtv.org/downloads/v4l-utils/v4l-utils-${PV}.tar.bz2 \ - file://0001-Revert-media-ctl-Don-t-install-libmediactl-and-libv4.patch \ - file://mediactl-pkgconfig.patch \ - file://export-mediactl-headers.patch \ - file://0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch \ - file://0003-v4l2-ctl-Do-not-use-getsubopt.patch \ - " -SRC_URI[md5sum] = "de272817133c0dca000a78a5c8c8ec8b" -SRC_URI[sha256sum] = "ed80242510385017a1dc566e17a285a77222bb301f5bc19386badfcc2c19df1b" - -EXTRA_OECONF = "--disable-qv4l2 --enable-shared --with-udevdir=${base_libdir}/udev" - -VIRTUAL-RUNTIME_ir-keytable-keymaps ?= "rc-keymaps" - -PACKAGES =+ "media-ctl ir-keytable rc-keymaps libv4l libv4l-dev" - -RPROVIDES_${PN}-dbg += "libv4l-dbg" - -FILES_media-ctl = "${bindir}/media-ctl ${libdir}/libmediactl.so.*" - -FILES_ir-keytable = "${bindir}/ir-keytable ${base_libdir}/udev/rules.d/*-infrared.rules" -RDEPENDS_ir-keytable += "${VIRTUAL-RUNTIME_ir-keytable-keymaps}" - -FILES_rc-keymaps = "${sysconfdir}/rc* ${base_libdir}/udev/rc*" - -FILES_${PN} = "${bindir} ${sbindir}" - -FILES_libv4l += "${libdir}/libv4l*${SOLIBS} ${libdir}/libv4l/*.so ${libdir}/libv4l/plugins/*.so \ - ${libdir}/libdvbv5*${SOLIBS} \ - ${libdir}/libv4l/*-decomp" - -FILES_libv4l-dev += "${includedir} ${libdir}/pkgconfig \ - ${libdir}/libv4l*${SOLIBSDEV} ${libdir}/*.la \ - ${libdir}/v4l*${SOLIBSDEV} ${libdir}/libv4l/*.la ${libdir}/libv4l/plugins/*.la" - -PARALLEL_MAKE_class-native = "" -BBCLASSEXTEND = "native" diff --git a/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.18.0.bb b/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.18.0.bb new file mode 100644 index 0000000000..9cc2a8e5b4 --- /dev/null +++ b/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.18.0.bb @@ -0,0 +1,56 @@ +SUMMARY = "v4l2 and IR applications" +LICENSE = "GPLv2 & LGPLv2.1" +LIC_FILES_CHKSUM = "file://COPYING;md5=48da9957849056017dc568bbc43d8975 \ + file://COPYING.libv4l;md5=d749e86a105281d7a44c2328acebc4b0" +PROVIDES = "libv4l media-ctl" + +DEPENDS = "jpeg \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/libx11', '', d)}" +DEPENDS_append_libc-musl = " argp-standalone" +DEPENDS_append_class-target = " udev" +LDFLAGS_append = " -pthread" + +inherit autotools gettext pkgconfig + +PACKAGECONFIG ??= "media-ctl" +PACKAGECONFIG[media-ctl] = "--enable-v4l-utils,--disable-v4l-utils,," + +SRC_URI = "http://linuxtv.org/downloads/v4l-utils/v4l-utils-${PV}.tar.bz2 \ + file://0001-Revert-media-ctl-Don-t-install-libmediactl-and-libv4.patch \ + file://mediactl-pkgconfig.patch \ + file://export-mediactl-headers.patch \ + file://0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch \ + file://0005-Define-error_t-and-include-sys-types.h.patch \ + file://0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch \ + file://0007-Do-not-use-getsubopt.patch \ + " +SRC_URI[md5sum] = "18996bd5e9d83d47055c05de376708cd" +SRC_URI[sha256sum] = "6cb60d822eeed20486a03cc23e0fc65956fbc1e85e0c1a7477f68bbd9802880d" + +EXTRA_OECONF = "--disable-qv4l2 --enable-shared --with-udevdir=${base_libdir}/udev" + +VIRTUAL-RUNTIME_ir-keytable-keymaps ?= "rc-keymaps" + +PACKAGES =+ "media-ctl ir-keytable rc-keymaps libv4l libv4l-dev" + +RPROVIDES_${PN}-dbg += "libv4l-dbg" + +FILES_media-ctl = "${bindir}/media-ctl ${libdir}/libmediactl.so.*" + +FILES_ir-keytable = "${bindir}/ir-keytable ${base_libdir}/udev/rules.d/*-infrared.rules" +RDEPENDS_ir-keytable += "${VIRTUAL-RUNTIME_ir-keytable-keymaps}" + +FILES_rc-keymaps = "${sysconfdir}/rc* ${base_libdir}/udev/rc*" + +FILES_${PN} = "${bindir} ${sbindir}" + +FILES_libv4l += "${libdir}/libv4l*${SOLIBS} ${libdir}/libv4l/*.so ${libdir}/libv4l/plugins/*.so \ + ${libdir}/libdvbv5*${SOLIBS} \ + ${libdir}/libv4l/*-decomp" + +FILES_libv4l-dev += "${includedir} ${libdir}/pkgconfig \ + ${libdir}/libv4l*${SOLIBSDEV} ${libdir}/*.la \ + ${libdir}/v4l*${SOLIBSDEV} ${libdir}/libv4l/*.la ${libdir}/libv4l/plugins/*.la" + +PARALLEL_MAKE_class-native = "" +BBCLASSEXTEND = "native" -- cgit 1.2.3-korg