From: Daniel Golle Date: Fri, 4 Jul 2025 15:20:37 +0000 (+0100) Subject: v4l-utils: merge with edid-decode X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=9327007085c399a0e706382e9f0976ea4d7ea642;p=feed%2Fpackages.git v4l-utils: merge with edid-decode Make PKG_NAME and folder name consistent (v4l-utils) and build edid-decode as subpackage. Unfortunately LTO breaks build of some of the utils, so disable it. Signed-off-by: Daniel Golle --- diff --git a/libs/libv4l/Makefile b/libs/libv4l/Makefile deleted file mode 100644 index 7f23f4de00..0000000000 --- a/libs/libv4l/Makefile +++ /dev/null @@ -1,121 +0,0 @@ -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=v4l-utils -PKG_VERSION:=1.28.0 -PKG_RELEASE:=1 - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_SOURCE_URL:=https://www.linuxtv.org/downloads/v4l-utils -PKG_HASH:=fcb1ac1f22c1673e932b1779384f61cd6b7dd76e0e500bfb57e7a598588980b4 - -PKG_MAINTAINER:=Ted Hess - -PKG_BUILD_FLAGS:=no-mips16 - -PKG_BUILD_DEPENDS:=!USE_GLIBC:argp-standalone -PKG_CONFIG_DEPENDS:= \ - CONFIG_BUILD_NLS \ - CONFIG_PACKAGE_v4l-utils - -include $(INCLUDE_DIR)/package.mk -include $(INCLUDE_DIR)/meson.mk -include $(INCLUDE_DIR)/nls.mk - -define Package/libv4l/Default - TITLE:=Video 4 Linux - URL:=https://www.linuxtv.org/ -endef - -define Package/libv4l/Default/description - libv4l is a collection of libraries which adds a thin abstraction layer on - top of video4linux2 devices. The purpose of this (thin) layer is to make it - easy for application writers to support a wide variety of devices without - having to write separate code for different devices in the same class. libv4l - consists of 3 different libraries: libv4lconvert, libv4l1 and libv4l2. - - libv4l1 offers the (deprecated) v4l1 API on top of v4l2 devices, independent - of the drivers for those devices supporting v4l1 compatibility (which many - v4l2 drivers do not). - - libv4l2 offers the v4l2 API on top of v4l2 devices, while adding for the - application transparent libv4lconvert conversion where necessary. -endef - -define Package/libv4l - $(call Package/libv4l/Default) - SECTION:=libs - CATEGORY:=Libraries - TITLE+= wrapper libraries - DEPENDS:=$(ICONV_DEPENDS) - LICENSE:=LGPL-2.1-or-later - LICENSE_FILES:=COPYING.libv4l -endef - -define Package/libv4l/description - $(call Package/libv4l/Default/description) -endef - -define Package/v4l-utils - $(call Package/libv4l/Default) - SECTION:=utils - CATEGORY:=Utilities - TITLE+= utilities - DEPENDS:=+libudev +libv4l +libstdcpp $(ICONV_DEPENDS) $(INTL_DEPENDS) - LICENSE:=GPL-2.0-or-later - LICENSE_FILES:=COPYING -endef - -define Package/v4l-utils/description - $(call Package/libv4l/Default/description) - This package contains the video4linux utilities. -endef - -MESON_ARGS += \ - -Db_lto=true \ - -Ddefault_library=both \ - -Dbpf=disabled \ - -Dgconv=disabled \ - -Djpeg=disabled \ - -Dlibdvbv5=disabled \ - -Dqv4l2=disabled \ - -Dqvidcap=disabled \ - -Dv4l-utils=$(if $(CONFIG_PACKAGE_v4l-utils),true,false) \ - -Ddoxygen-doc=disabled - -TARGET_LDFLAGS += -Wl,--gc-sections - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/include - $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/ - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libv4l{1,2,convert,2rds}.{a,so*} $(1)/usr/lib/ - $(INSTALL_DIR) $(1)/usr/lib/pkgconfig - $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libv4l{1,2,convert,2rds}.pc $(1)/usr/lib/pkgconfig/ -endef - -define Package/libv4l/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libv4l{1,2,convert,2rds}.so.* $(1)/usr/lib/ - $(INSTALL_DIR) $(1)/usr/lib/libv4l - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libv4l/v4l{1compat,2convert}.so $(1)/usr/lib/libv4l/ -endef - -define Package/v4l-utils/install - $(INSTALL_DIR) $(1)/etc - $(CP) $(PKG_INSTALL_DIR)/etc/rc_maps.cfg $(1)/etc/ - $(CP) $(PKG_INSTALL_DIR)/etc/rc_keymaps $(1)/etc/ - $(INSTALL_DIR) $(1)/usr/bin - $(CP) $(PKG_INSTALL_DIR)/usr/bin/{rds,media,cx18,ivtv}-ctl $(1)/usr/bin/ - $(CP) $(PKG_INSTALL_DIR)/usr/bin/decode_tm6000 $(1)/usr/bin/ - $(CP) $(PKG_INSTALL_DIR)/usr/bin/ir-{ctl,keytable} $(1)/usr/bin/ - $(CP) $(PKG_INSTALL_DIR)/usr/bin/v4l2-{compliance,ctl,sysfs-path} $(1)/usr/bin/ - $(CP) $(PKG_INSTALL_DIR)/usr/bin/cec-{compliance,ctl,follower} $(1)/usr/bin/ -endef - -$(eval $(call BuildPackage,libv4l)) -$(eval $(call BuildPackage,v4l-utils)) diff --git a/libs/libv4l/patches/010-intl.patch b/libs/libv4l/patches/010-intl.patch deleted file mode 100644 index b541f46bd6..0000000000 --- a/libs/libv4l/patches/010-intl.patch +++ /dev/null @@ -1,50 +0,0 @@ ---- a/lib/libdvbv5/meson.build -+++ b/lib/libdvbv5/meson.build -@@ -124,6 +124,7 @@ install_headers(libdvbv5_api, subdir: 'l - - libdvbv5_deps = [ - dep_iconv, -+ dep_intl, - dep_libm, - dep_librt, - dep_libudev, ---- a/meson.build -+++ b/meson.build -@@ -202,6 +202,8 @@ size_t iconv (iconv_t cd, char * *inbuf, - endif - endif - -+dep_intl = dependency('intl') -+ - have_gconv = cc.has_header('gconv.h', required : get_option('gconv')) - - # Detect system gconv directory ---- a/utils/dvb/meson.build -+++ b/utils/dvb/meson.build -@@ -1,5 +1,6 @@ - dvb_common_deps = [ - dep_argp, -+ dep_intl, - dep_libdvbv5, - dep_libudev, - dep_threads, ---- a/utils/ir-ctl/meson.build -+++ b/utils/ir-ctl/meson.build -@@ -12,6 +12,7 @@ ir_ctl_sources = files( - - ir_ctl_deps = [ - dep_argp, -+ dep_intl, - ] - - ir_ctl = executable('ir-ctl', ---- a/utils/keytable/meson.build -+++ b/utils/keytable/meson.build -@@ -11,6 +11,7 @@ ir_keytable_sources = files( - - ir_keytable_deps = [ - dep_argp, -+ dep_intl, - ] - - ir_keytable_system_dir = udevdir diff --git a/libs/libv4l/patches/020-musl.patch b/libs/libv4l/patches/020-musl.patch deleted file mode 100644 index b96113eba6..0000000000 --- a/libs/libv4l/patches/020-musl.patch +++ /dev/null @@ -1,50 +0,0 @@ ---- a/utils/v4l2-tracer/retrace.cpp -+++ b/utils/v4l2-tracer/retrace.cpp -@@ -10,10 +10,7 @@ extern struct retrace_context ctx_retrac - void retrace_mmap(json_object *mmap_obj, bool is_mmap64) - { - json_object *mmap_args_obj; -- if (is_mmap64) -- json_object_object_get_ex(mmap_obj, "mmap64", &mmap_args_obj); -- else -- json_object_object_get_ex(mmap_obj, "mmap", &mmap_args_obj); -+ json_object_object_get_ex(mmap_obj, "mmap", &mmap_args_obj); - - json_object *len_obj; - json_object_object_get_ex(mmap_args_obj, "len", &len_obj); -@@ -46,10 +43,7 @@ void retrace_mmap(json_object *mmap_obj, - return; - - void *buf_address_retrace_pointer = nullptr; -- if (is_mmap64) -- buf_address_retrace_pointer = mmap64(0, len, prot, flags, fd_retrace, off); -- else -- buf_address_retrace_pointer = mmap(0, len, prot, flags, fd_retrace, off); -+ buf_address_retrace_pointer = mmap(0, len, prot, flags, fd_retrace, off); - - if (buf_address_retrace_pointer == MAP_FAILED) { - if (is_mmap64) -@@ -116,10 +110,7 @@ void retrace_open(json_object *jobj, boo - int fd_trace = json_object_get_int(fd_trace_obj); - - json_object *open_args_obj; -- if (is_open64) -- json_object_object_get_ex(jobj, "open64", &open_args_obj); -- else -- json_object_object_get_ex(jobj, "open", &open_args_obj); -+ json_object_object_get_ex(jobj, "open", &open_args_obj); - - json_object *path_obj; - std::string path_trace; -@@ -148,10 +139,7 @@ void retrace_open(json_object *jobj, boo - mode = s2number(json_object_get_string(mode_obj)); - - int fd_retrace = 0; -- if (is_open64) -- fd_retrace = open64(path_retrace.c_str(), oflag, mode); -- else -- fd_retrace = open(path_retrace.c_str(), oflag, mode); -+ fd_retrace = open(path_retrace.c_str(), oflag, mode); - - if (fd_retrace <= 0) { - line_info("\n\tCan't open: %s", path_retrace.c_str()); diff --git a/libs/v4l-utils/Makefile b/libs/v4l-utils/Makefile new file mode 100644 index 0000000000..3e4d091aee --- /dev/null +++ b/libs/v4l-utils/Makefile @@ -0,0 +1,139 @@ +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=v4l-utils +PKG_VERSION:=1.30.1 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_URL:=https://www.linuxtv.org/downloads/v4l-utils +PKG_HASH:=c1cf549c2ec3cf39eb5ec7bf15731349e61b26a21b5e963922db422333bae197 + +PKG_MAINTAINER:=Ted Hess + +PKG_BUILD_FLAGS:=no-mips16 + +PKG_BUILD_DEPENDS:=!USE_GLIBC:argp-standalone +PKG_CONFIG_DEPENDS:= \ + CONFIG_BUILD_NLS \ + CONFIG_PACKAGE_v4l-utils + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/meson.mk +include $(INCLUDE_DIR)/nls.mk + +define Package/libv4l/Default + TITLE:=Video 4 Linux + URL:=https://www.linuxtv.org/ +endef + +define Package/libv4l/Default/description + libv4l is a collection of libraries which adds a thin abstraction layer on + top of video4linux2 devices. The purpose of this (thin) layer is to make it + easy for application writers to support a wide variety of devices without + having to write separate code for different devices in the same class. libv4l + consists of 3 different libraries: libv4lconvert, libv4l1 and libv4l2. + + libv4l1 offers the (deprecated) v4l1 API on top of v4l2 devices, independent + of the drivers for those devices supporting v4l1 compatibility (which many + v4l2 drivers do not). + + libv4l2 offers the v4l2 API on top of v4l2 devices, while adding for the + application transparent libv4lconvert conversion where necessary. +endef + +define Package/libv4l + $(call Package/libv4l/Default) + SECTION:=libs + CATEGORY:=Libraries + TITLE+= wrapper libraries + DEPENDS:=$(ICONV_DEPENDS) + LICENSE:=LGPL-2.1-or-later + LICENSE_FILES:=COPYING.libv4l +endef + +define Package/libv4l/description + $(call Package/libv4l/Default/description) +endef + +define Package/v4l-utils + $(call Package/libv4l/Default) + SECTION:=utils + CATEGORY:=Utilities + TITLE+= utilities + DEPENDS:=+libudev +libv4l +libstdcpp $(ICONV_DEPENDS) $(INTL_DEPENDS) + LICENSE:=GPL-2.0-or-later + LICENSE_FILES:=COPYING +endef + +define Package/v4l-utils/description + $(call Package/libv4l/Default/description) + This package contains the video4linux utilities. +endef + +define Package/edid-decode + $(call Package/libv4l/Default) + SECTION:=utils + CATEGORY:=Utilities + TITLE:=EDID decode + DEPENDS:=+libstdcpp +endef + +define Package/edid-decode/description + Display EDID decoder application +endef + +MESON_ARGS += \ + -Db_lto=false \ + -Ddefault_library=both \ + -Dbpf=disabled \ + -Dgconv=disabled \ + -Djpeg=disabled \ + -Dlibdvbv5=disabled \ + -Dqv4l2=disabled \ + -Dqvidcap=disabled \ + -Dv4l-utils=$(if $(CONFIG_PACKAGE_v4l-utils)$(CONFIG_PACKAGE_edid-decode),true,false) \ + -Ddoxygen-doc=disabled + +TARGET_LDFLAGS += -Wl,--gc-sections + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libv4l{1,2,convert,2rds}.{a,so*} $(1)/usr/lib/ + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libv4l{1,2,convert,2rds}.pc $(1)/usr/lib/pkgconfig/ +endef + +define Package/libv4l/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libv4l{1,2,convert,2rds}.so.* $(1)/usr/lib/ + $(INSTALL_DIR) $(1)/usr/lib/libv4l + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libv4l/v4l{1compat,2convert}.so $(1)/usr/lib/libv4l/ +endef + +define Package/v4l-utils/install + $(INSTALL_DIR) $(1)/etc + $(CP) $(PKG_INSTALL_DIR)/etc/rc_maps.cfg $(1)/etc/ + $(CP) $(PKG_INSTALL_DIR)/etc/rc_keymaps $(1)/etc/ + $(INSTALL_DIR) $(1)/usr/bin + $(CP) $(PKG_INSTALL_DIR)/usr/bin/{rds,media,cx18,ivtv}-ctl $(1)/usr/bin/ + $(CP) $(PKG_INSTALL_DIR)/usr/bin/decode_tm6000 $(1)/usr/bin/ + $(CP) $(PKG_INSTALL_DIR)/usr/bin/ir-{ctl,keytable} $(1)/usr/bin/ + $(CP) $(PKG_INSTALL_DIR)/usr/bin/v4l2-{compliance,ctl,sysfs-path} $(1)/usr/bin/ + $(CP) $(PKG_INSTALL_DIR)/usr/bin/cec-{compliance,ctl,follower} $(1)/usr/bin/ +endef + +define Package/edid-decode/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/edid-decode $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,libv4l)) +$(eval $(call BuildPackage,v4l-utils)) +$(eval $(call BuildPackage,edid-decode)) diff --git a/libs/v4l-utils/patches/020-musl.patch b/libs/v4l-utils/patches/020-musl.patch new file mode 100644 index 0000000000..b96113eba6 --- /dev/null +++ b/libs/v4l-utils/patches/020-musl.patch @@ -0,0 +1,50 @@ +--- a/utils/v4l2-tracer/retrace.cpp ++++ b/utils/v4l2-tracer/retrace.cpp +@@ -10,10 +10,7 @@ extern struct retrace_context ctx_retrac + void retrace_mmap(json_object *mmap_obj, bool is_mmap64) + { + json_object *mmap_args_obj; +- if (is_mmap64) +- json_object_object_get_ex(mmap_obj, "mmap64", &mmap_args_obj); +- else +- json_object_object_get_ex(mmap_obj, "mmap", &mmap_args_obj); ++ json_object_object_get_ex(mmap_obj, "mmap", &mmap_args_obj); + + json_object *len_obj; + json_object_object_get_ex(mmap_args_obj, "len", &len_obj); +@@ -46,10 +43,7 @@ void retrace_mmap(json_object *mmap_obj, + return; + + void *buf_address_retrace_pointer = nullptr; +- if (is_mmap64) +- buf_address_retrace_pointer = mmap64(0, len, prot, flags, fd_retrace, off); +- else +- buf_address_retrace_pointer = mmap(0, len, prot, flags, fd_retrace, off); ++ buf_address_retrace_pointer = mmap(0, len, prot, flags, fd_retrace, off); + + if (buf_address_retrace_pointer == MAP_FAILED) { + if (is_mmap64) +@@ -116,10 +110,7 @@ void retrace_open(json_object *jobj, boo + int fd_trace = json_object_get_int(fd_trace_obj); + + json_object *open_args_obj; +- if (is_open64) +- json_object_object_get_ex(jobj, "open64", &open_args_obj); +- else +- json_object_object_get_ex(jobj, "open", &open_args_obj); ++ json_object_object_get_ex(jobj, "open", &open_args_obj); + + json_object *path_obj; + std::string path_trace; +@@ -148,10 +139,7 @@ void retrace_open(json_object *jobj, boo + mode = s2number(json_object_get_string(mode_obj)); + + int fd_retrace = 0; +- if (is_open64) +- fd_retrace = open64(path_retrace.c_str(), oflag, mode); +- else +- fd_retrace = open(path_retrace.c_str(), oflag, mode); ++ fd_retrace = open(path_retrace.c_str(), oflag, mode); + + if (fd_retrace <= 0) { + line_info("\n\tCan't open: %s", path_retrace.c_str());