From 8d2c63d87c605abb95aa59e809bfb8ae6a9af34b Mon Sep 17 00:00:00 2001 From: Kyle Gospodnetich Date: Fri, 3 Apr 2026 17:31:35 -0700 Subject: [PATCH] feat: Add sc0710 kmod for Elgato capture cards (#11038) * feat: Add sc0710 kmod * fix: Correct provides in xpadneo-kmod spec file --- anda/system/sc0710/akmod/anda.hcl | 9 +++ anda/system/sc0710/akmod/sc0710-kmod.spec | 55 ++++++++++++++++++ anda/system/sc0710/akmod/update.rhai | 12 ++++ anda/system/sc0710/dkms/anda.hcl | 10 ++++ anda/system/sc0710/dkms/dkms-sc0710.conf | 6 ++ anda/system/sc0710/dkms/dkms-sc0710.spec | 60 ++++++++++++++++++++ anda/system/sc0710/dkms/no-weak-modules.conf | 1 + anda/system/sc0710/dkms/update.rhai | 12 ++++ anda/system/sc0710/kmod-common/anda.hcl | 9 +++ anda/system/sc0710/kmod-common/sc0710.spec | 32 +++++++++++ anda/system/sc0710/kmod-common/update.rhai | 5 ++ anda/system/xpadneo/akmod/xpadneo-kmod.spec | 3 +- 12 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 anda/system/sc0710/akmod/anda.hcl create mode 100644 anda/system/sc0710/akmod/sc0710-kmod.spec create mode 100644 anda/system/sc0710/akmod/update.rhai create mode 100644 anda/system/sc0710/dkms/anda.hcl create mode 100644 anda/system/sc0710/dkms/dkms-sc0710.conf create mode 100644 anda/system/sc0710/dkms/dkms-sc0710.spec create mode 100644 anda/system/sc0710/dkms/no-weak-modules.conf create mode 100644 anda/system/sc0710/dkms/update.rhai create mode 100644 anda/system/sc0710/kmod-common/anda.hcl create mode 100644 anda/system/sc0710/kmod-common/sc0710.spec create mode 100644 anda/system/sc0710/kmod-common/update.rhai diff --git a/anda/system/sc0710/akmod/anda.hcl b/anda/system/sc0710/akmod/anda.hcl new file mode 100644 index 0000000000..9082dd68d0 --- /dev/null +++ b/anda/system/sc0710/akmod/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + rpm { + spec = "sc0710-kmod.spec" + } + labels { + mock = 1 + updbranch = 1 + } +} diff --git a/anda/system/sc0710/akmod/sc0710-kmod.spec b/anda/system/sc0710/akmod/sc0710-kmod.spec new file mode 100644 index 0000000000..dd3c4d811c --- /dev/null +++ b/anda/system/sc0710/akmod/sc0710-kmod.spec @@ -0,0 +1,55 @@ +%global commit f1f5a722ccbdfc571450d9397e5e1b85da31f9d3 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global commitdate 20260321 +%global ver 0 +%define buildforkernels akmod +%global debug_package %{nil} +%global modulename sc0710 + +Name: %{modulename}-kmod +Version: %{ver}^%{commitdate}git.%{shortcommit} +Release: 1%{?dist} +Summary: Elgato 4K60 Pro MK.2 / 4K Pro capture card driver +License: GPL-2.0-only +URL: https://github.com/Nakildias/sc0710 +Source0: https://github.com/Nakildias/sc0710/archive/%{commit}.tar.gz#/sc0710-%{shortcommit}.tar.gz +BuildRequires: kmodtool +Requires: akmods +Requires: %{modulename} = %{?epoch:%{epoch}:}%{version} +Conflicts: dkms-%{modulename} +Packager: Kyle Gospodnetich + +%{expand:%(kmodtool --target %{_target_cpu} --repo terra.fyralabs.com --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null) } + +%description +Elgato 4K60 Pro MK.2 / 4K Pro capture card driver. + +%prep +%{?kmodtool_check} +kmodtool --target %{_target_cpu} --repo terra.fyralabs.com --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null + +%autosetup -p1 -n %{modulename}-%{commit} + +for kernel_version in %{?kernel_versions}; do + mkdir _kmod_build_${kernel_version%%___*} + cp -fr lib Makefile _kmod_build_${kernel_version%%___*} +done + +%build +for kernel_version in %{?kernel_versions}; do + pushd _kmod_build_${kernel_version%%___*}/ + %make_build -C "${kernel_version##*___}" M=$(pwd) VERSION="v%{version}" modules + popd +done + +%install +for kernel_version in %{?kernel_versions}; do + mkdir -p %{buildroot}/%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/ + install -p -m 0755 _kmod_build_${kernel_version%%___*}/*.ko \ + %{buildroot}/%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/ +done +%{?akmod_install} + +%changelog +* Fri Apr 03 2026 Kyle Gospodnetich +- Initial package diff --git a/anda/system/sc0710/akmod/update.rhai b/anda/system/sc0710/akmod/update.rhai new file mode 100644 index 0000000000..4969eb372d --- /dev/null +++ b/anda/system/sc0710/akmod/update.rhai @@ -0,0 +1,12 @@ +let c = sh("cat anda/system/sc0710/kmod-common/sc0710.spec | grep '%global commit ' | sed -E 's/.+commit //'", #{"stdout": "piped"}).ctx.stdout; +c.pop(); +rpm.global("commit", c); +if rpm.changed() { + rpm.release(); + let d = sh("cat anda/system/sc0710/kmod-common/sc0710.spec | grep '%global commitdate' | sed -E 's/.+commitdate //'", #{"stdout": "piped"}).ctx.stdout; + d.pop(); + rpm.global("commitdate", d); + let v = sh("cat anda/system/sc0710/kmod-common/sc0710.spec | grep '%global ver' | sed -E 's/.+ver //'", #{"stdout": "piped"}).ctx.stdout; + v.pop(); + rpm.global("ver", v); +} diff --git a/anda/system/sc0710/dkms/anda.hcl b/anda/system/sc0710/dkms/anda.hcl new file mode 100644 index 0000000000..d0e2b9a8af --- /dev/null +++ b/anda/system/sc0710/dkms/anda.hcl @@ -0,0 +1,10 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "dkms-sc0710.spec" + } + labels { + mock = 1 + updbranch = 1 + } +} diff --git a/anda/system/sc0710/dkms/dkms-sc0710.conf b/anda/system/sc0710/dkms/dkms-sc0710.conf new file mode 100644 index 0000000000..c508e1ac24 --- /dev/null +++ b/anda/system/sc0710/dkms/dkms-sc0710.conf @@ -0,0 +1,6 @@ +PACKAGE_NAME="sc0710" +PACKAGE_VERSION="__VERSION_STRING" +AUTOINSTALL="yes" + +BUILT_MODULE_NAME[0]="sc0710" +DEST_MODULE_LOCATION[0]="/kernel/drivers/media/pci/" diff --git a/anda/system/sc0710/dkms/dkms-sc0710.spec b/anda/system/sc0710/dkms/dkms-sc0710.spec new file mode 100644 index 0000000000..644f20b85b --- /dev/null +++ b/anda/system/sc0710/dkms/dkms-sc0710.spec @@ -0,0 +1,60 @@ +%global commit f1f5a722ccbdfc571450d9397e5e1b85da31f9d3 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global commitdate 20260321 +%global ver 0 +%global debug_package %{nil} +%global modulename sc0710 + +Name: dkms-%{modulename} +Version: %{ver}^%{commitdate}git.%{shortcommit} +Release: 1%{?dist} +Summary: Elgato 4K60 Pro MK.2 / 4K Pro capture card driver (DKMS) +License: GPL-2.0-only +URL: https://github.com/Nakildias/%{modulename} +Source0: https://github.com/Nakildias/%{modulename}/archive/%{commit}.tar.gz#/%{modulename}-%{shortcommit}.tar.gz +Source1: %{name}.conf +Source2: no-weak-modules.conf +Requires: %{modulename} = %{?epoch:%{epoch}:}%{version} +Requires: dkms +Conflicts: akmod-%{modulename} +Provides: %{modulename}-kmod +BuildArch: noarch +Packager: Kyle Gospodnetich + +%description +Elgato 4K60 Pro MK.2 / 4K Pro capture card driver (DKMS). + +%prep +%autosetup -p1 -n %{modulename}-%{commit} + +cp -f %{SOURCE1} dkms.conf + +sed -i -e 's/__VERSION_STRING/%{version}/g' dkms.conf + +%build + +%install +mkdir -p %{buildroot}%{_usrsrc}/%{modulename}-%{version}/ +cp -fr lib Makefile dkms.conf %{buildroot}%{_usrsrc}/%{modulename}-%{version}/ + +%if 0%{?fedora} +install -Dpm644 %{SOURCE2} %{buildroot}%{_sysconfdir}/dkms/%{modulename}.conf +%endif + +%post +dkms add -m %{modulename} -v %{version} -q --rpm_safe_upgrade || : +dkms build -m %{modulename} -v %{version} -q || : +dkms install -m %{modulename} -v %{version} -q --force || : + +%preun +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 Apr 03 2026 Kyle Gospodnetich +- Initial package diff --git a/anda/system/sc0710/dkms/no-weak-modules.conf b/anda/system/sc0710/dkms/no-weak-modules.conf new file mode 100644 index 0000000000..24f6f95c96 --- /dev/null +++ b/anda/system/sc0710/dkms/no-weak-modules.conf @@ -0,0 +1 @@ +NO_WEAK_MODULES="yes" diff --git a/anda/system/sc0710/dkms/update.rhai b/anda/system/sc0710/dkms/update.rhai new file mode 100644 index 0000000000..4969eb372d --- /dev/null +++ b/anda/system/sc0710/dkms/update.rhai @@ -0,0 +1,12 @@ +let c = sh("cat anda/system/sc0710/kmod-common/sc0710.spec | grep '%global commit ' | sed -E 's/.+commit //'", #{"stdout": "piped"}).ctx.stdout; +c.pop(); +rpm.global("commit", c); +if rpm.changed() { + rpm.release(); + let d = sh("cat anda/system/sc0710/kmod-common/sc0710.spec | grep '%global commitdate' | sed -E 's/.+commitdate //'", #{"stdout": "piped"}).ctx.stdout; + d.pop(); + rpm.global("commitdate", d); + let v = sh("cat anda/system/sc0710/kmod-common/sc0710.spec | grep '%global ver' | sed -E 's/.+ver //'", #{"stdout": "piped"}).ctx.stdout; + v.pop(); + rpm.global("ver", v); +} diff --git a/anda/system/sc0710/kmod-common/anda.hcl b/anda/system/sc0710/kmod-common/anda.hcl new file mode 100644 index 0000000000..af7d62c918 --- /dev/null +++ b/anda/system/sc0710/kmod-common/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "sc0710.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/system/sc0710/kmod-common/sc0710.spec b/anda/system/sc0710/kmod-common/sc0710.spec new file mode 100644 index 0000000000..dd4e4697f8 --- /dev/null +++ b/anda/system/sc0710/kmod-common/sc0710.spec @@ -0,0 +1,32 @@ +%global commit f1f5a722ccbdfc571450d9397e5e1b85da31f9d3 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global commitdate 20260321 +%global ver 0 + +Name: sc0710 +Version: %{ver}^%{commitdate}git.%{shortcommit} +Release: 1%{?dist} +Summary: Elgato 4K60 Pro MK.2 / 4K Pro capture card driver common files +License: GPL-2.0-only +URL: https://github.com/Nakildias/%{name} +Source0: %{url}/archive/%{commit}.tar.gz#/%{name}-%{shortcommit}.tar.gz +Requires: %{name}-kmod = %{?epoch:%{epoch}:}%{version} +Provides: %{name}-kmod-common = %{?epoch:%{epoch}:}%{version} +BuildArch: noarch +Packager: Kyle Gospodnetich + +%description +Elgato 4K60 Pro MK.2 / 4K Pro capture card driver common files. + +%prep +%autosetup -p1 -n %{name}-%{commit} + +%install + +%files +%license LICENSE +%doc README.md + +%changelog +* Fri Apr 03 2026 Kyle Gospodnetich +- Initial package diff --git a/anda/system/sc0710/kmod-common/update.rhai b/anda/system/sc0710/kmod-common/update.rhai new file mode 100644 index 0000000000..23c41b09cc --- /dev/null +++ b/anda/system/sc0710/kmod-common/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("Nakildias/sc0710")); +if rpm.changed() { + rpm.release(); + rpm.global("commitdate", date()); +} diff --git a/anda/system/xpadneo/akmod/xpadneo-kmod.spec b/anda/system/xpadneo/akmod/xpadneo-kmod.spec index 7b88ad76f0..fb2e41390e 100644 --- a/anda/system/xpadneo/akmod/xpadneo-kmod.spec +++ b/anda/system/xpadneo/akmod/xpadneo-kmod.spec @@ -8,7 +8,7 @@ Name: %{modulename}-kmod Version: %{ver}^%{commitdate}git.%{shortcommit} -Release: 1%{?dist} +Release: 2%{?dist} Summary: Advanced Linux Driver for Xbox One Wireless Gamepad License: GPL-3.0 URL: https://atar-axis.github.io/xpadneo @@ -21,6 +21,7 @@ Requires: bluez-tools Requires: %{modulename} = %{?epoch:%{epoch}:}%{version} Requires: %{modulename}-akmod-modules = %{?epoch:%{epoch}:}%{version} Conflicts: dkms-%{modulename} +Provides: %{modulename}-kmod Packager: Gilver E. %{expand:%(kmodtool --target %{_target_cpu} --repo terra.fyralabs.com --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null) }