File intel-ipu6.spec of Package intel-ipu6

%global ipu6_commit 9369b88ec1ea03670fb2dbfe7abdff411683d462
%global ipu6_commitdate 20240718
%global ipu6_shortcommit %(c=%{ipu6_commit}; echo ${c:0:7})

%global ivsc_commit 73a044d9633212fac54ea96cdd882ff5ab40573e
%global ivsc_commitdate 20231222
%global ivsc_shortcommit %(c=%{ivsc_commit}; echo ${c:0:7})
%if 0%{?suse_version} > 1500
%define gccver %nil
%define gccbin gcc
%else
%define gccver 11
%define gccbin gcc-%{gccver}
%endif

Name:           intel-ipu6
Summary:        Kernel module for ipu6
Version:        1.0.1+git%{ipu6_commitdate}.%{ipu6_shortcommit}
Release:        0
License:        GPL-2.0-or-later
Group:          System/Kernel
URL:            https://github.com/intel

Source0:        %{url}/ipu6-drivers/archive/%{ipu6_commit}/ipu6-drivers-%{ipu6_shortcommit}.tar.gz
Source2:        %{name}-preamble
# From https://git.launchpad.net/ubuntu/+source/ipu6-drivers/commit/?h=ubuntu/oracular-proposed&id=7d9b555acb895b600079e584785fd108e4612c3c
Patch1:        0001-dkms-use-debian-package-version-as-PACKAGE_VERSION.patch
Patch2:        0003-build-fix-kernel-feature-macro-definitions.patch
Patch3:        0004-build-drop-inlined-vsc-builds.patch
Patch4:        0005-ivsc-import-headers.patch
Patch5:        0006-ivsc-load-symbols-by-kprobe.patch
Patch6:        fix-ftbfs-v5.19.patch
Patch7:        0007-dkms-add-CONFIG_VIDEO_V4L2_I2C-to-BUILD_EXCLUSIVE_CO.patch
Patch8:        0008-dkms-ensure-no-hole-in-modules-list.patch
Patch9:        0011-UBUNTU-SAUCE-i2c-compile-omitted-sensor-drivers.patch
Patch10:        0013-backport-Switch-to-stream-aware-state-functions.patch
Patch11:        0014-backport-media-v4l2-subdev-Rename-.init_cfg-operatio.patch
Patch12:        0022-UBUNTU-SAUCE-IPU6-skip-hwcfg-checking-for-platforms-.patch
Patch13:        0023-UBUNTU-SAUCE-media-ipu6-Fix-compilation-with-kernels.patch
Patch14:        0024-ov08x40-add-driver-source-from-v6.9.patch
Patch15:        0025-ov08x40-add-build-config.patch
Patch16:        0026-ov08x40-add-handshake-pin-support.patch
Patch17:        0027-ov08x40-fix-build-against-kernel-6.8.patch
Patch18:        0028-UBUNTU-SAUCE-media-ipu6-Fix-compilation-with-kernels.patch

BuildRequires:  %{kernel_module_package_buildreqs}
BuildRequires:  gcc%{gccver}
%kernel_module_package -p %_sourcedir/%{name}-preamble

%description
This enables intel IPU6 image processor. The package includes Intel IPU6 and iVSC drivers
The source can be found from the following URL.
https://github.com/intel/ipu6-drivers

This package contains the kmp module for intel-ipu6.

%prep
%autosetup -p1 -n ipu6-drivers-%{ipu6_commit}
sed -i 's|"#MODULE_VERSION#"|%{version}|' dkms.conf

set -- *
mkdir -p source/ipu6-drivers-%{ipu6_commit}
mv "$@" source/ipu6-drivers-%{ipu6_commit}
mkdir obj

%build
for flavor in %{flavors_to_build}; do
        rm -rf obj/$flavor
        cp -r source obj/$flavor
        make V=1 CC=%{gccbin} %{?_smp_mflags} -C %{kernel_source $flavor} %{?linux_make_arch} modules M=$PWD/obj/$flavor/ipu6-drivers-%{ipu6_commit}
done

%install
export INSTALL_MOD_PATH="%buildroot"
for flavor in %flavors_to_build; do
        make V=1 CC=%{gccbin} %{?_smp_mflags} -C %{kernel_source $flavor} %{?linux_make_arch} modules M=$PWD/obj/$flavor/ipu6-drivers-%{ipu6_commit} modules_install
done
mkdir -p %{buildroot}%{_sysconfdir}/dracut.conf.d
echo -n 'omit_drivers+=" ' >%{buildroot}%{_sysconfdir}/dracut.conf.d/50-ipu6.conf
for module in $(find . -name "*.ko") ; do
    NAME=$(strings $module | awk '$1~/^name=/{print substr($1,index($1,"=")+1)}')
    [[ ! $NAME ]] && NAME=$(basename $module .ko)
    echo -n $NAME\  >>%{buildroot}%{_sysconfdir}/dracut.conf.d/50-ipu6.conf
done
echo '"' >>%{buildroot}%{_sysconfdir}/dracut.conf.d/50-ipu6.conf

%files
%dir %{_sysconfdir}/dracut.conf.d
%config %{_sysconfdir}/dracut.conf.d/50-ipu6.conf

%changelog
openSUSE Build Service is sponsored by