From f1db84f48db9058a6b422bae475551f4cd6b2c1a Mon Sep 17 00:00:00 2001 From: Raboneko <119771935+raboneko@users.noreply.github.com> Date: Sat, 8 Mar 2025 23:35:40 -0800 Subject: [PATCH] feat(v4l2loopback): DKMS package (#3786) (#3841) * Add files * Waaaaaaaa * Fixes * Bruh Signed-off-by: Gilver * No way they just changed the URL TODAY * Should probably be that Signed-off-by: Gilver * Only build noarch package once * ?????????????????? * Also no * Nevermind I guess * Modules file source --------- Signed-off-by: Gilver (cherry picked from commit 8f2ff70819619037419ce063ce6b586702491fc6) Co-authored-by: Gilver --- anda/system/v4l2loopback/akmod/anda.hcl | 1 + .../akmod/modules-load-d-v4l2loopback.conf | 1 - anda/system/v4l2loopback/akmod/update.rhai | 4 +- .../v4l2loopback/akmod/v4l2loopback-kmod.spec | 35 +++++------- anda/system/v4l2loopback/dkms/anda.hcl | 10 ++++ .../v4l2loopback/dkms/dkms-v4l2loopback.spec | 55 +++++++++++++++++++ .../v4l2loopback/dkms/no-weak-modules.conf | 1 + anda/system/v4l2loopback/dkms/update.rhai | 3 + .../v4l2loopback/{ => kmod-common}/anda.hcl | 4 +- .../modprobe-d-98-v4l2loopback.conf | 0 .../v4l2loopback/kmod-common/update.rhai | 1 + .../{ => kmod-common}/v4l2loopback.spec | 38 +++++++------ anda/system/v4l2loopback/update.rhai | 1 - 13 files changed, 111 insertions(+), 43 deletions(-) delete mode 100644 anda/system/v4l2loopback/akmod/modules-load-d-v4l2loopback.conf create mode 100644 anda/system/v4l2loopback/dkms/anda.hcl create mode 100644 anda/system/v4l2loopback/dkms/dkms-v4l2loopback.spec create mode 100644 anda/system/v4l2loopback/dkms/no-weak-modules.conf create mode 100644 anda/system/v4l2loopback/dkms/update.rhai rename anda/system/v4l2loopback/{ => kmod-common}/anda.hcl (63%) rename anda/system/v4l2loopback/{akmod => kmod-common}/modprobe-d-98-v4l2loopback.conf (100%) create mode 100644 anda/system/v4l2loopback/kmod-common/update.rhai rename anda/system/v4l2loopback/{ => kmod-common}/v4l2loopback.spec (60%) delete mode 100644 anda/system/v4l2loopback/update.rhai diff --git a/anda/system/v4l2loopback/akmod/anda.hcl b/anda/system/v4l2loopback/akmod/anda.hcl index b47f435690..f646d65261 100644 --- a/anda/system/v4l2loopback/akmod/anda.hcl +++ b/anda/system/v4l2loopback/akmod/anda.hcl @@ -4,5 +4,6 @@ project pkg { } labels { mock = 1 + updbranch = 1 } } diff --git a/anda/system/v4l2loopback/akmod/modules-load-d-v4l2loopback.conf b/anda/system/v4l2loopback/akmod/modules-load-d-v4l2loopback.conf deleted file mode 100644 index d394e47bc8..0000000000 --- a/anda/system/v4l2loopback/akmod/modules-load-d-v4l2loopback.conf +++ /dev/null @@ -1 +0,0 @@ -v4l2loopback diff --git a/anda/system/v4l2loopback/akmod/update.rhai b/anda/system/v4l2loopback/akmod/update.rhai index fd9dec4b15..15672a87c9 100644 --- a/anda/system/v4l2loopback/akmod/update.rhai +++ b/anda/system/v4l2loopback/akmod/update.rhai @@ -1 +1,3 @@ -rpm.version(gh_tag("umlaeute/v4l2loopback")); +import "andax/bump_extras.rhai" as bump; + +rpm.version(bump::madoguchi("v4l2loopback", labels.branch)); diff --git a/anda/system/v4l2loopback/akmod/v4l2loopback-kmod.spec b/anda/system/v4l2loopback/akmod/v4l2loopback-kmod.spec index 99d650fd71..38fb51cdee 100644 --- a/anda/system/v4l2loopback/akmod/v4l2loopback-kmod.spec +++ b/anda/system/v4l2loopback/akmod/v4l2loopback-kmod.spec @@ -7,38 +7,40 @@ %global buildforkernels akmod %global debug_package %{nil} - %global commit 2c9b67072b15d903fecde67c7f269abeafee4c25 %global commitdate 20230503 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global modulename v4l2loopback +%global _description %{expand: +This module allows you to create \"virtual video devices.\" Normal \(v4l2\) applications will read these devices as if they were ordinary video devices, but the video will not be read from e.g. a capture card but instead it is generated by another application.} + + Name: %{modulename}-kmod Summary: Kernel module (kmod) for V4L2 loopback devices Version: 0.14.0 Release: 2%?dist -License: GPLv2+ -URL: https://github.com/umlaeute/v4l2loopback +License: GPL-2.0-or-later +URL: https://github.com/v4l2loopback/v4l2loopback Source0: %{url}/archive/v%{version}/%{modulename}-%{version}.tar.gz -Source1: modprobe-d-98-v4l2loopback.conf -Source2: modules-load-d-v4l2loopback.conf -Packager: Cappy Ishihara - BuildRequires: gcc BuildRequires: make BuildRequires: help2man BuildRequires: systemd-rpm-macros BuildRequires: kmodtool +Requires: akmods +Requires: %{modulename} = %{?epoch:%{epoch}:}%{version} +Requires: %{modulename}-akmod-modules = %{?epoch:%{epoch}:}%{version} Requires: kernel-devel +Conflicts: dkms-%{modulename} +Packager: Cappy Ishihara -%{expand:%(kmodtool --target %{_target_cpu} --kmodname %{modulename} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null) } - -%description -This module allows you to create "virtual video devices". Normal (v4l2) applications will read these devices as if they were ordinary video devices, but the video will not be read from e.g. a capture card but instead it is generated by another application. +%{expand:%(kmodtool --target %{_target_cpu} --repo terra --kmodname %{modulename} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null) } +%description %_description %prep %{?kmodtool_check} -kmodtool --target %{_target_cpu} --kmodname %{modulename} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null +kmodtool --target %{_target_cpu} --repo terra --kmodname %{modulename} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null %autosetup -p1 -n %{modulename}-%{version} @@ -59,14 +61,5 @@ done %{?akmod_install} -install -D -m 0644 %{SOURCE1} %{buildroot}%{_modprobedir}/98-v4l2loopback.conf -install -D -m 0644 %{SOURCE2} %{buildroot}%{_modulesloaddir}/v4l2loopback.conf - -%files -%doc README.md AUTHORS NEWS -%license COPYING -%{_modprobedir}/98-v4l2loopback.conf -%{_modulesloaddir}/v4l2loopback.conf - %changelog %autochangelog diff --git a/anda/system/v4l2loopback/dkms/anda.hcl b/anda/system/v4l2loopback/dkms/anda.hcl new file mode 100644 index 0000000000..74c2e9914c --- /dev/null +++ b/anda/system/v4l2loopback/dkms/anda.hcl @@ -0,0 +1,10 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "dkms-v4l2loopback.spec" + } + labels { + mock = 1 + updbranch = 1 + } +} diff --git a/anda/system/v4l2loopback/dkms/dkms-v4l2loopback.spec b/anda/system/v4l2loopback/dkms/dkms-v4l2loopback.spec new file mode 100644 index 0000000000..2945881096 --- /dev/null +++ b/anda/system/v4l2loopback/dkms/dkms-v4l2loopback.spec @@ -0,0 +1,55 @@ +%global debug_package %{nil} +%global modulename v4l2loopback +%global _description %{expand: +This module allows you to create \"virtual video devices.\" Normal \(v4l2\) applications will read these devices as if they were ordinary video devices, but the video will not be read from e.g. a capture card but instead it is generated by another application.} + +Name: dkms-%{modulename} +Version: 0.14.0 +Release: 1%?dist +Summary: Utils for V4L2 loopback devices +License: GPL-2.0-or-later +URL: https://github.com/v4l2loopback/v4l2loopback +Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz +Source1: no-weak-modules.conf +BuildRequires: systemd-rpm-macros +Requires: %{modulename} = %{?epoch:%{epoch}:}%{version} +Requires: dkms +Conflicts: akmod-%{modulename} +BuildArch: noarch +Packager: Gilver E. + +%description %_description + +%prep +%autosetup -p1 -n %{modulename}-%{version} + +%build + +%install +mkdir -p %{buildroot}%{_usrsrc}/%{modulename}-%{version} +cp -fr v4l2loopback.h v4l2loopback.c v4l2loopback_formats.h dkms.conf Kbuild Makefile %{buildroot}%{_usrsrc}/%{modulename}-%{version}/ + +%if 0%{?fedora} +# Do not enable weak modules support in Fedora (no kABI): +install -Dpm644 %{SOURCE1} %{buildroot}%{_sysconfdir}/dkms/%{modulename}.conf +%endif + +%post +dkms add -m %{modulename} -v %{version} -q --rpm_safe_upgrade || : +# Rebuild and make available for the currently running kernel: +dkms build -m %{modulename} -v %{version} -q || : +dkms install -m %{modulename} -v %{version} -q --force || : + +%preun +# Remove all versions from DKMS registry: +dkms remove -m %{modulename} -v %{version} -q --all --rpm_safe_upgrade || : + +%files +%{_usrsrc}/%{modulename}-%{version} +%if 0%{?fedora} +%{_sysconfdir}/dkms/%{modulename}.conf +%endif + +%changelog +* Fri Mar 07 2025 Gilver E. +- Initial package diff --git a/anda/system/v4l2loopback/dkms/no-weak-modules.conf b/anda/system/v4l2loopback/dkms/no-weak-modules.conf new file mode 100644 index 0000000000..24f6f95c96 --- /dev/null +++ b/anda/system/v4l2loopback/dkms/no-weak-modules.conf @@ -0,0 +1 @@ +NO_WEAK_MODULES="yes" diff --git a/anda/system/v4l2loopback/dkms/update.rhai b/anda/system/v4l2loopback/dkms/update.rhai new file mode 100644 index 0000000000..15672a87c9 --- /dev/null +++ b/anda/system/v4l2loopback/dkms/update.rhai @@ -0,0 +1,3 @@ +import "andax/bump_extras.rhai" as bump; + +rpm.version(bump::madoguchi("v4l2loopback", labels.branch)); diff --git a/anda/system/v4l2loopback/anda.hcl b/anda/system/v4l2loopback/kmod-common/anda.hcl similarity index 63% rename from anda/system/v4l2loopback/anda.hcl rename to anda/system/v4l2loopback/kmod-common/anda.hcl index 14eb49b671..ca17cc3b34 100644 --- a/anda/system/v4l2loopback/anda.hcl +++ b/anda/system/v4l2loopback/kmod-common/anda.hcl @@ -1,8 +1,6 @@ project pkg { + arches = ["x86_64", "aarch64"] rpm { spec = "v4l2loopback.spec" } - labels { - mock = 1 - } } diff --git a/anda/system/v4l2loopback/akmod/modprobe-d-98-v4l2loopback.conf b/anda/system/v4l2loopback/kmod-common/modprobe-d-98-v4l2loopback.conf similarity index 100% rename from anda/system/v4l2loopback/akmod/modprobe-d-98-v4l2loopback.conf rename to anda/system/v4l2loopback/kmod-common/modprobe-d-98-v4l2loopback.conf diff --git a/anda/system/v4l2loopback/kmod-common/update.rhai b/anda/system/v4l2loopback/kmod-common/update.rhai new file mode 100644 index 0000000000..609ecb5f33 --- /dev/null +++ b/anda/system/v4l2loopback/kmod-common/update.rhai @@ -0,0 +1 @@ +rpm.version(gh_tag("v4l2loopback/v4l2loopback")); diff --git a/anda/system/v4l2loopback/v4l2loopback.spec b/anda/system/v4l2loopback/kmod-common/v4l2loopback.spec similarity index 60% rename from anda/system/v4l2loopback/v4l2loopback.spec rename to anda/system/v4l2loopback/kmod-common/v4l2loopback.spec index d9c46e3ce8..37bb386f78 100644 --- a/anda/system/v4l2loopback/v4l2loopback.spec +++ b/anda/system/v4l2loopback/kmod-common/v4l2loopback.spec @@ -1,6 +1,4 @@ -%global buildforkernels akmod %global debug_package %{nil} - %global commit 2c9b67072b15d903fecde67c7f269abeafee4c25 %global commitdate 20230503 %global shortcommit %(c=%{commit}; echo ${c:0:7}) @@ -8,48 +6,53 @@ Name: v4l2loopback Summary: Utils for V4L2 loopback devices Version: 0.14.0 -Release: 2%?dist -License: GPLv2+ -URL: https://github.com/umlaeute/v4l2loopback +Release: 3%?dist +License: GPL-2.0-or-later +URL: https://github.com/v4l2loopback/v4l2loopback Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz -Packager: Cappy Ishihara - +Source1: modprobe-d-98-v4l2loopback.conf BuildRequires: gcc BuildRequires: make BuildRequires: help2man +BuildRequires: sed BuildRequires: systemd-rpm-macros -BuildRequires: kmodtool -BuildRequires: systemd-rpm-macros -Requires: %{name}-kmod -Provides: %{name}-kmod-common = %{version}-%{release} +Requires: (akmod-%{name} = %{?epoch:%{epoch}:}%{version} or dkms-%{name} = %{?epoch:%{epoch}:}%{version}) +Provides: %{name}-kmod-common = %{?epoch:%{epoch}:}%{version} ### For compatibility with older names Provides: %{name}-utils = %{version}-%{release} Obsoletes: %{name}-utils < 0.12.5-2 +Packager: Cappy Ishihara %description Allows you to create "virtual video devices". Normal (v4l2) applications will read these devices as if they were ordinary video devices, but the video will not be read from e.g. a capture card but instead it is generated by another application. +%package akmod-modules +Summary: Modules for Akmods +Requires: akmod-%{name} +BuildArch: noarch + +%description akmod-modules +Akmods modules for the akmod-%{name} package. %prep - %autosetup -p1 -n %{name}-%{version} -%build +/usr/bin/sed -nE '/^PACKAGE_NAME/{s@^.+"(.+)"@\1@; s|-|_|g; p}' dkms.conf > %{name}.conf +%build %{set_build_flags} %make_build utils %install - - %{set_build_flags} %make_build utils make V=1 %{?_smp_mflags} install-utils DESTDIR=%{buildroot} PREFIX=%{_prefix} make V=1 %{?_smp_mflags} install-man DESTDIR=%{buildroot} PREFIX=%{_prefix} - +install -Dm644 %{SOURCE1} %{buildroot}%{_modprobedir}/98-v4l2loopback.conf +install -Dm644 %{name}.conf -t %{buildroot}%{_modulesloaddir} %files @@ -57,7 +60,10 @@ make V=1 %{?_smp_mflags} install-man DESTDIR=%{buildroot} PREFIX=%{_prefix} %license COPYING %attr(0755,root,root) %{_bindir}/v4l2loopback-ctl %attr(0644,root,root) %{_mandir}/man1/v4l2loopback-ctl.1* +%{_modprobedir}/98-v4l2loopback.conf +%files akmod-modules +%{_modulesloaddir}/v4l2loopback.conf %changelog %autochangelog diff --git a/anda/system/v4l2loopback/update.rhai b/anda/system/v4l2loopback/update.rhai deleted file mode 100644 index fd9dec4b15..0000000000 --- a/anda/system/v4l2loopback/update.rhai +++ /dev/null @@ -1 +0,0 @@ -rpm.version(gh_tag("umlaeute/v4l2loopback"));