|
|
|
# Define the kmod package name here.
|
|
|
|
%define kmod_name anbox
|
|
|
|
|
|
|
|
# Source code patches
|
|
|
|
|
|
|
|
%define findpat %( echo "%""P" )
|
|
|
|
%define __find_requires /usr/lib/rpm/redhat/find-requires.ksyms
|
|
|
|
%define __find_provides /usr/lib/rpm/redhat/find-provides.ksyms %{kmod_name} %{?epoch:%{epoch}:}%{version}-%{release}
|
|
|
|
%define dup_state_dir %{_localstatedir}/lib/rpm-state/kmod-dups
|
|
|
|
%define kver_state_dir %{dup_state_dir}/kver
|
|
|
|
%define kver_state_file %{kver_state_dir}/%{kmod_kernel_version}.%{_arch}
|
|
|
|
%define dup_module_list %{dup_state_dir}/rpm-kmod-%{kmod_name}-modules
|
|
|
|
%define debug_package %{nil}
|
|
|
|
|
|
|
|
%global _use_internal_dependency_generator 0
|
|
|
|
%global kernel_source() %{_usrsrc}/kernels/%{kmod_kernel_version}.%{_arch}
|
|
|
|
|
|
|
|
|
|
|
|
# If kmod_kernel_version isn't defined on the rpmbuild line, define it here.
|
|
|
|
%{!?kmod_kernel_version: %define kmod_kernel_version 5.14.0-503.11.1.el9_5}
|
|
|
|
|
|
|
|
%{!?dist: %define dist .el9}
|
|
|
|
|
|
|
|
Name: kmod-%{kmod_name}
|
|
|
|
Version: 0.0.1
|
|
|
|
Release: 4.20240526git.ee4c25f0%{?dist}
|
|
|
|
Summary: %{kmod_name} kernel module(s)
|
|
|
|
License: GPLv2
|
|
|
|
URL: https://github.com/choff/anbox-modules
|
|
|
|
|
|
|
|
# Sources.
|
|
|
|
Source0: anbox-modules-ee4c25f0.tar.gz
|
|
|
|
Source5: GPL-v2.0.txt
|
|
|
|
|
|
|
|
Patch0: 0001-Fix-build-on-RedHat-9.5-kernel.patch
|
|
|
|
|
|
|
|
# Fix for the SB-signing issue caused by a bug in /usr/lib/rpm/brp-strip
|
|
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1967291
|
|
|
|
|
|
|
|
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
|
|
|
|
|
|
|
ExclusiveArch: x86_64
|
|
|
|
|
|
|
|
BuildRequires: elfutils-libelf-devel
|
|
|
|
BuildRequires: kernel-abi-stablelists
|
|
|
|
BuildRequires: kernel-devel = %{kmod_kernel_version}
|
|
|
|
BuildRequires: kernel-rpm-macros
|
|
|
|
BuildRequires: redhat-rpm-config
|
|
|
|
BuildRequires: rpm-build
|
|
|
|
BuildRequires: gcc
|
|
|
|
BuildRequires: make
|
|
|
|
|
|
|
|
Provides: kernel-modules >= %{kmod_kernel_version}.%{_arch}
|
|
|
|
Provides: kmod-%{kmod_name} = %{?epoch:%{epoch}:}%{version}-%{release}
|
|
|
|
|
|
|
|
Requires: kernel >= %{kmod_kernel_version}
|
|
|
|
Requires: kernel-core-uname-r >= %{kmod_kernel_version}
|
|
|
|
|
|
|
|
Requires(post): %{_sbindir}/depmod
|
|
|
|
Requires(postun): %{_sbindir}/depmod
|
|
|
|
Requires(post): %{_sbindir}/weak-modules
|
|
|
|
Requires(postun): %{_sbindir}/weak-modules
|
|
|
|
|
|
|
|
%description
|
|
|
|
This package provides the %{kmod_name} kernel module(s).
|
|
|
|
It is built to depend upon the specific ABI provided by a range of releases
|
|
|
|
of the same variant of the Linux kernel and not on any one specific build.
|
|
|
|
|
|
|
|
%prep
|
|
|
|
%autosetup -p1 -n anbox-ee4c25f064d89f08136d5814bf2368512973017f
|
|
|
|
echo "override ashmem_linux * weak-updates/ashmem_linux" > kmod-%{kmod_name}.conf
|
|
|
|
echo "override binder_linux * weak-updates/binder_linux" >> kmod-%{kmod_name}.conf
|
|
|
|
|
|
|
|
%build
|
|
|
|
for module in ashmem binder; do
|
|
|
|
pushd $module
|
|
|
|
%{__make} -C %{kernel_source} %{?_smp_mflags} M=$PWD
|
|
|
|
popd
|
|
|
|
done
|
|
|
|
|
|
|
|
whitelist="/lib/modules/kabi-current/kabi_stablelist_%{_target_cpu}"
|
|
|
|
for modules in $( find . -name "*.ko" -type f -printf "%{findpat}\n" | sed 's|\.ko$||' | sort -u ) ; do
|
|
|
|
# update greylist
|
|
|
|
nm -u ./$modules.ko | sed 's/.*U //' | sed 's/^\.//' | sort -u | while read -r symbol; do
|
|
|
|
grep -q "^\s*$symbol\$" $whitelist || echo "$symbol" >> ./greylist
|
|
|
|
done
|
|
|
|
done
|
|
|
|
sort -u greylist | uniq > greylist.txt
|
|
|
|
|
|
|
|
%install
|
|
|
|
install -d %{buildroot}/lib/modules/%{kmod_kernel_version}.%{_arch}/extra/%{kmod_name}/
|
|
|
|
install ashmem/ashmem_linux.ko %{buildroot}/lib/modules/%{kmod_kernel_version}.%{_arch}/extra/%{kmod_name}/
|
|
|
|
install binder/binder_linux.ko %{buildroot}/lib/modules/%{kmod_kernel_version}.%{_arch}/extra/%{kmod_name}/
|
|
|
|
install -d %{buildroot}%{_sysconfdir}/depmod.d/
|
|
|
|
install -m 0644 kmod-%{kmod_name}.conf %{buildroot}%{_sysconfdir}/depmod.d/
|
|
|
|
install -d %{buildroot}%{_defaultdocdir}/kmod-%{kmod_name}-%{version}/
|
|
|
|
install -m 0644 %{SOURCE5} %{buildroot}%{_defaultdocdir}/kmod-%{kmod_name}-%{version}/
|
|
|
|
install -m 0644 greylist.txt %{buildroot}%{_defaultdocdir}/kmod-%{kmod_name}-%{version}/
|
|
|
|
install -d %{buildroot}%{_udevrulesdir}
|
|
|
|
install -m 644 99-anbox.rules %{buildroot}%{_udevrulesdir}
|
|
|
|
install -d %{buildroot}%{_modulesloaddir}
|
|
|
|
install -m 644 anbox.conf %{buildroot}%{_modulesloaddir}
|
|
|
|
|
|
|
|
# strip the modules(s)
|
|
|
|
find %{buildroot} -name \*.ko -type f | xargs --no-run-if-empty %{__strip} --strip-debug
|
|
|
|
|
|
|
|
# Sign the modules(s)
|
|
|
|
%if %{?_with_modsign:1}%{!?_with_modsign:0}
|
|
|
|
# If the module signing keys are not defined, define them here.
|
|
|
|
%{!?privkey: %define privkey %{_sysconfdir}/pki/kmod/msvsphere_kmod.priv}
|
|
|
|
%{!?pubkey: %define pubkey %{_sysconfdir}/pki/kmod/msvsphere_kmod.pem}
|
|
|
|
for module in $(find %{buildroot} -type f -name \*.ko);
|
|
|
|
do %{_usrsrc}/kernels/%{kmod_kernel_version}.%{_arch}/scripts/sign-file \
|
|
|
|
sha256 %{privkey} %{pubkey} $module;
|
|
|
|
done
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%post
|
|
|
|
modules=( $(find /lib/modules/%{kmod_kernel_version}.x86_64/extra/%{kmod_name} | grep '\.ko$') )
|
|
|
|
printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --add-modules --no-initramfs
|
|
|
|
|
|
|
|
mkdir -p "%{kver_state_dir}"
|
|
|
|
touch "%{kver_state_file}"
|
|
|
|
|
|
|
|
exit 0
|
|
|
|
|
|
|
|
%posttrans
|
|
|
|
# We have to re-implement part of weak-modules here because it doesn't allow
|
|
|
|
# calling initramfs regeneration separately
|
|
|
|
if [ -f "%{kver_state_file}" ]; then
|
|
|
|
kver_base="%{kmod_kernel_version}"
|
|
|
|
kvers=$(ls -d "/lib/modules/${kver_base%%.*}"*)
|
|
|
|
|
|
|
|
for k_dir in $kvers; do
|
|
|
|
k="${k_dir#/lib/modules/}"
|
|
|
|
|
|
|
|
tmp_initramfs="/boot/initramfs-$k.tmp"
|
|
|
|
dst_initramfs="/boot/initramfs-$k.img"
|
|
|
|
|
|
|
|
# The same check as in weak-modules: we assume that the kernel present
|
|
|
|
# if the symvers file exists.
|
|
|
|
if [ -e "/$k_dir/symvers.gz" ]; then
|
|
|
|
/usr/bin/dracut -f "$tmp_initramfs" "$k" || exit 1
|
|
|
|
cmp -s "$tmp_initramfs" "$dst_initramfs"
|
|
|
|
if [ "$?" = 1 ]; then
|
|
|
|
mv "$tmp_initramfs" "$dst_initramfs"
|
|
|
|
else
|
|
|
|
rm -f "$tmp_initramfs"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
rm -f "%{kver_state_file}"
|
|
|
|
rmdir "%{kver_state_dir}" 2> /dev/null
|
|
|
|
fi
|
|
|
|
|
|
|
|
rmdir "%{dup_state_dir}" 2> /dev/null
|
|
|
|
|
|
|
|
exit 0
|
|
|
|
|
|
|
|
%preun
|
|
|
|
if rpm -q --filetriggers kmod 2> /dev/null| grep -q "Trigger for weak-modules call on kmod removal"; then
|
|
|
|
mkdir -p "%{kver_state_dir}"
|
|
|
|
touch "%{kver_state_file}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
mkdir -p "%{dup_state_dir}"
|
|
|
|
rpm -ql kmod-%{kmod_name}-%{version}-%{release}.%{_arch} | grep '\.ko$' > "%{dup_module_list}"
|
|
|
|
|
|
|
|
%postun
|
|
|
|
if rpm -q --filetriggers kmod 2> /dev/null| grep -q "Trigger for weak-modules call on kmod removal"; then
|
|
|
|
initramfs_opt="--no-initramfs"
|
|
|
|
else
|
|
|
|
initramfs_opt=""
|
|
|
|
fi
|
|
|
|
|
|
|
|
modules=( $(cat "%{dup_module_list}") )
|
|
|
|
rm -f "%{dup_module_list}"
|
|
|
|
printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --remove-modules $initramfs_opt
|
|
|
|
|
|
|
|
rmdir "%{dup_state_dir}" 2> /dev/null
|
|
|
|
|
|
|
|
exit 0
|
|
|
|
|
|
|
|
%files
|
|
|
|
%defattr(644,root,root,755)
|
|
|
|
/lib/modules/%{kmod_kernel_version}.%{_arch}/
|
|
|
|
%config /etc/depmod.d/kmod-%{kmod_name}.conf
|
|
|
|
%doc /usr/share/doc/kmod-%{kmod_name}-%{version}/
|
|
|
|
%{_udevrulesdir}/99-anbox.rules
|
|
|
|
%{_modulesloaddir}/anbox.conf
|
|
|
|
|
|
|
|
%changelog
|
|
|
|
* Sat Nov 16 2024 Arkady L. Shane <tigro@msvsphere-os.ru> - 0.0.1-4.20240526git.ee4c25f0
|
|
|
|
- Update to kernel kernel-5.14.0-503.11.1.el9_5
|
|
|
|
|
|
|
|
* Mon Oct 21 2024 Arkady L. Shane <tigro@msvsphere-os.ru> - 0.0.1-3.20240526git.ee4c25f0
|
|
|
|
- Update to 20240526git.ee4c25f0
|
|
|
|
|
|
|
|
* Mon Oct 21 2024 Arkady L. Shane <tigro@msvsphere-os.ru> - 0.0.1-2.20230505git.bead1deb
|
|
|
|
- Rebuilt for kernel-5.14.0-503.2.1.el9_5
|
|
|
|
|
|
|
|
* Tue Jul 23 2024 Arkady L. Shane <tigro@msvsphere-os.ru> - 0.0.1-1.20230505git.bead1deb.5
|
|
|
|
- Rebuilt for kernel-5.14.0-427.26.1.el9_4
|
|
|
|
|
|
|
|
* Thu May 02 2024 Arkady L. Shane <tigro@msvsphere-os.ru> - 0.0.1-1.20230505git.bead1deb.4
|
|
|
|
- Rebuilt for kernel-5.14.0-427.13.1.el9_4
|
|
|
|
|
|
|
|
* Tue Mar 19 2024 Arkady L. Shane <tigro@msvsphere-os.ru> - 0.0.1-1.20230505git.bead1deb.3
|
|
|
|
- Rebuilt for kernel-5.14.0-362.24.1.el9_3
|
|
|
|
|
|
|
|
* Wed Feb 14 2024 Arkady L. Shane <tigro@msvsphere-os.ru> - 0.0.1-1.20230505git.bead1deb.2
|
|
|
|
- Rebuilt for kernel 5.14.0-362.18.1.el9_3
|
|
|
|
|
|
|
|
* Sat Nov 18 2023 Arkady L. Shane <tigro@msvsphere-os.ru> - 0.0.1-1.20230505git.bead1deb.1
|
|
|
|
- Fix build for MSVSphere 9.3
|
|
|
|
|
|
|
|
* Wed Sep 06 2023 Arkady L. Shane <ashejn@msvsphere.ru> - 0.0.1-1.20230505git.bead1deb
|
|
|
|
- Rebuilt for MSVSphere 9.2
|
|
|
|
|
|
|
|
* Wed Sep 6 2023 Arkady L. Shane <ashejn@msvsphere.ru> - 0.0.1-1
|
|
|
|
- Initial build for MSVSPhere 9.2
|