commit 58f3835f950ae7c9bf32f0ec2f0b3813b2af6584 Author: Jakub Bogusz <qbo...@pld-linux.org> Date: Tue Oct 25 21:50:42 2022 +0200
- added bpf patch (fixes build with libbpf 1+); release 2 v4l-utils-bpf.patch | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++ v4l-utils.spec | 6 ++- 2 files changed, 122 insertions(+), 2 deletions(-) --- diff --git a/v4l-utils.spec b/v4l-utils.spec index 86e07eb..8a6d940 100644 --- a/v4l-utils.spec +++ b/v4l-utils.spec @@ -7,11 +7,12 @@ Summary: Collection of Video4Linux utilities Summary(pl.UTF-8): Zbiór narzędzi do urządzeń Video4Linux Name: v4l-utils Version: 1.22.1 -Release: 1 +Release: 2 License: GPL v2+ (utilities), LGPL v2.1+ (libraries) Group: Applications/System Source0: https://linuxtv.org/downloads/v4l-utils/%{name}-%{version}.tar.bz2 # Source0-md5: 8aa73287320a49e9170a8255d7b2c7e6 +Patch0: %{name}-bpf.patch URL: https://linuxtv.org/wiki/index.php/V4l-utils BuildRequires: OpenGL-devel BuildRequires: OpenGL-GLU-devel @@ -31,7 +32,7 @@ BuildRequires: automake >= 1:1.9 BuildRequires: clang BuildRequires: elfutils-devel BuildRequires: gettext-tools >= 0.19.8 -BuildRequires: libbpf-devel +BuildRequires: libbpf-devel >= 0.6 BuildRequires: libjpeg-devel BuildRequires: libstdc++-devel BuildRequires: libtool @@ -141,6 +142,7 @@ Statyczne biblioteki libv4l. %prep %setup -q +%patch0 -p1 %build %{__libtoolize} diff --git a/v4l-utils-bpf.patch b/v4l-utils-bpf.patch new file mode 100644 index 0000000..60fd42d --- /dev/null +++ b/v4l-utils-bpf.patch @@ -0,0 +1,118 @@ +--- v4l-utils-1.22.1/utils/keytable/bpf_load.c.orig 2022-10-25 21:46:09.072545347 +0200 ++++ v4l-utils-1.22.1/utils/keytable/bpf_load.c 2022-10-25 21:46:15.542510296 +0200 +@@ -63,19 +63,21 @@ struct bpf_file { + + static int load_and_attach(int lirc_fd, struct bpf_file *bpf_file, struct bpf_insn *prog, int size) + { +- struct bpf_load_program_attr load_attr; ++ struct bpf_prog_load_opts load_opts; + int fd, err; + +- memset(&load_attr, 0, sizeof(struct bpf_load_program_attr)); ++ memset(&load_opts, 0, sizeof(struct bpf_prog_load_opts)); + +- load_attr.prog_type = BPF_PROG_TYPE_LIRC_MODE2; +- load_attr.expected_attach_type = BPF_LIRC_MODE2; +- load_attr.name = bpf_file->name; +- load_attr.insns = prog; +- load_attr.insns_cnt = size / sizeof(struct bpf_insn); +- load_attr.license = bpf_file->license; +- +- fd = bpf_load_program_xattr(&load_attr, bpf_log_buf, LOG_BUF_SIZE); ++ load_opts.sz = sizeof(struct bpf_prog_load_opts); ++ load_opts.expected_attach_type = BPF_LIRC_MODE2; ++ load_opts.log_size = LOG_BUF_SIZE; ++ load_opts.log_buf = bpf_log_buf; ++ ++ fd = bpf_prog_load(BPF_PROG_TYPE_LIRC_MODE2, ++ bpf_file->name, ++ bpf_file->license, ++ prog, size / sizeof(struct bpf_insn), ++ &load_opts); + if (fd < 0) { + printf("bpf_load_program() err=%m\n%s", bpf_log_buf); + return -1; +@@ -95,6 +97,7 @@ static int build_raw_map(struct bpf_map_ + int no_patterns, value_size, fd, key, i; + struct raw_entry *e; + struct raw_pattern *p; ++ struct bpf_map_create_opts map_opts; + + no_patterns = 0; + +@@ -110,13 +113,17 @@ static int build_raw_map(struct bpf_map_ + + value_size = sizeof(struct raw_pattern) + max_length * sizeof(short); + +- fd = bpf_create_map_node(map->def.type, +- map->name, +- map->def.key_size, +- value_size, +- no_patterns, +- map->def.map_flags, +- numa_node); ++ memset(&map_opts, 0, sizeof(struct bpf_map_create_opts)); ++ map_opts.sz = sizeof(struct bpf_map_create_opts); ++ map_opts.map_flags = map->def.map_flags; ++ map_opts.numa_node = numa_node; ++ ++ fd = bpf_map_create(map->def.type, ++ map->name, ++ map->def.key_size, ++ value_size, ++ no_patterns, ++ &map_opts); + + if (fd < 0) { + printf(_("failed to create a map: %d %s\n"), +@@ -167,6 +174,10 @@ static int load_maps(struct bpf_file *bp + { + struct bpf_map_data *maps = bpf_file->map_data; + int i, numa_node; ++ struct bpf_map_create_opts map_opts; ++ ++ memset(&map_opts, 0, sizeof(struct bpf_map_create_opts)); ++ map_opts.sz = sizeof(struct bpf_map_create_opts); + + for (i = 0; i < bpf_file->nr_maps; i++) { + numa_node = maps[i].def.map_flags & BPF_F_NUMA_NODE ? +@@ -174,27 +185,31 @@ static int load_maps(struct bpf_file *bp + + if (maps[i].def.type == BPF_MAP_TYPE_ARRAY_OF_MAPS || + maps[i].def.type == BPF_MAP_TYPE_HASH_OF_MAPS) { +- int inner_map_fd = bpf_file->map_fd[maps[i].def.inner_map_idx]; ++ map_opts.inner_map_fd = bpf_file->map_fd[maps[i].def.inner_map_idx]; ++ map_opts.map_flags = maps[i].def.map_flags; ++ map_opts.numa_node = numa_node; + +- bpf_file->map_fd[i] = bpf_create_map_in_map_node( ++ bpf_file->map_fd[i] = bpf_map_create( + maps[i].def.type, + maps[i].name, + maps[i].def.key_size, +- inner_map_fd, ++ 0, + maps[i].def.max_entries, +- maps[i].def.map_flags, +- numa_node); ++ &map_opts); + } else if (!strcmp(maps[i].name, "raw_map")) { + bpf_file->map_fd[i] = build_raw_map(&maps[i], raw, numa_node); + } else { +- bpf_file->map_fd[i] = bpf_create_map_node( ++ map_opts.inner_map_fd = 0; ++ map_opts.map_flags = maps[i].def.map_flags; ++ map_opts.numa_node = numa_node; ++ ++ bpf_file->map_fd[i] = bpf_map_create( + maps[i].def.type, + maps[i].name, + maps[i].def.key_size, + maps[i].def.value_size, + maps[i].def.max_entries, +- maps[i].def.map_flags, +- numa_node); ++ &map_opts); + } + + if (bpf_file->map_fd[i] < 0) { ================================================================ ---- gitweb: http://git.pld-linux.org/gitweb.cgi/packages/v4l-utils.git/commitdiff/58f3835f950ae7c9bf32f0ec2f0b3813b2af6584 _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit