gasket-driver/gasket-driver.spec
Chris Bradbury 80d4279a8b Accepting request 1086841 from home:chrBrd:branches:hardware
Rename patch to adhere to oS patching guidelines.

As source and patch files have been added to the package rather than 
being downloaded from GitHub it's worth adhering to the patching guidelines as 
specified here:
https://en.opensuse.org/openSUSE:Packaging_Patches_guidelines

OBS-URL: https://build.opensuse.org/request/show/1086841
OBS-URL: https://build.opensuse.org/package/show/hardware/gasket-driver?expand=0&rev=7
2023-05-12 22:45:43 +00:00

140 lines
5.1 KiB
RPMSpec

#
# spec file for package gasket-driver
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
#
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#===
# Packaging Notes:
#
# For information on building KMPs see:
# https://documentation.suse.com/sbp/all/single-html/SBP-KMP-Manual-SLE12SP2
# https://en.opensuse.org/Kernel_Module_Packages
#
# For information on `sysusers` macros used to create the `apex` group see:
# https://en.opensuse.org/openSUSE:Packaging_guidelines#Users_and_Groups
#---
# The following directive ensures the package will build correctly on OBS if it
# builds locally without problems. See:
# https://en.opensuse.org/openSUSE:Build_Service_Tips_and_Tricks#Permission_denied_errors
#
# norootforbuild
Name: gasket-driver
Version: 1.0.18
Release: 0
Summary: The Coral Gasket Driver allows usage of the Coral EdgeTPU on Linux systems
License: GPL-2.0-only
Group: System/Kernel
URL: https://github.com/google/gasket-driver
Source0: %{name}-%{version}.tar.xz
Source1: group.conf
Source2: preamble
Source3: gasket-driver-rpmlintrc
BuildRequires: %kernel_module_package_buildreqs
BuildRequires: sysuser-tools
BuildRequires: pesign-obs-integration
Requires: %{name}-kmp
%sysusers_requires
# The dma-buf symbols used by this driver were moved into their own `DMA_BUF`
# module namespace in kernel 5.16. Consequently, the upstream source conditionally
# imports the `DMA_BUF` module namespace if the kernel version is >= 5.16.
# This patch removes that condition, allowing this module to be built for kernels
# that have backported the `DMA_BUF` namespace changes.
# See:
# https://github.com/google/gasket-driver/pull/10
# https://github.com/google/gasket-driver/commit/a87c105c14e826dafd4b25c36fa7c7c657a7ad03.patch
# PATCH-FIX-OPENSUSE fix-for-backported-dma-buf-ns.patch gh#google/gasket-driver!10
Patch0: fix-for-backported-dma-buf-ns.patch
# This directive instructs the build service to temporarily save the project's
# certificate as %%_sourcedir/_projectcert.crt. See:
# https://github.com/openSUSE/pesign-obs-integration
# https://documentation.suse.com/sbp/all/html/SBP-KMP-Manual/index.html#sec-signing-module-object
# https://documentation.suse.com/sbp/all/html/SBP-KMP-Manual/index.html#sec-appendix-a1
#
# needssslcertforbuild
#
# Having included the above directive, using the `-c` flag below will cause
# the "ueficert" package to get built. `%%_sourcedir` must be prefixed as the
# working dir is changed before the build service attempts to source the certificate.
%kernel_module_package -p preamble -c %_sourcedir/_projectcert.crt
%description
The Coral Gasket Driver allows usage of the Coral EdgeTPU on Linux systems.
The driver contains two modules:
- Gasket (Google ASIC Software, Kernel Extensions, and Tools) is a top level driver
for lightweight communication with Google ASICs.
- Apex refers to the EdgeTPU v1.
# This magic "KMP" subpackage is documented in
# https://en.opensuse.org/Kernel_Module_Packages#Specfile_mechanisms
%package KMP
Summary: Gasket Driver kernel modules
Group: System/Kernel
%description KMP
The Linux Kernel Module Package for the Coral Gasket Driver.
%prep
%setup -q
mkdir -p obj
# The `DMA_BUF` module namespace has been backported to the 5.14 kernel used
# in Leap 15.5, so apply the relevant patch.
%if 0%{?sle_version} == 150500
%patch0 -p1
%endif
%build
# Build the kernel modules.
for flavor in %flavors_to_build; do
rm -rf obj/$flavor
cp -r src obj/$flavor
make -C %{kernel_source $flavor} modules M=$PWD/obj/$flavor
done
# Generate content to be used by the `%%pre` scriptlet.
%sysusers_generate_pre %{SOURCE1} group group.conf
# Execute the system group scriptlet generated at build time.
%pre -f group.pre
%install
# Install the kernel modules.
export INSTALL_MOD_PATH=%{buildroot}
export INSTALL_MOD_DIR=updates
for flavor in %flavors_to_build; do
make -C %{kernel_source $flavor} modules_install M=$PWD/obj/$flavor
done
# Install the system group used by the driver.
mkdir -p %{buildroot}%{_sysusersdir}
install -m 0644 %{SOURCE1} -D %{buildroot}%{_sysusersdir}/group-apex.conf
# Install the udev rules defined in the module source.
install -D -m 644 debian/gasket-dkms.udev %buildroot%{_udevrulesdir}/70-apex.rules
# These env vars are used by the `pesign-obs-integration` package when signing
# the modules for Secure Boot.
export BRP_PESIGN_FILES='*.ko'
export BRP_PESIGN_COMPRESS_MODULE="xz"
%files
%license LICENSE
%doc README.md CONTRIBUTING.md
%{_sysusersdir}/group-apex.conf
%{_udevrulesdir}/70-apex.rules
%changelog