File linux-lts66.spec of Package linux-lts66

# Maintainer: Chris Severance aur.severach aATt spamgourmet dott com
# Contributor: Andreas Radke <andyrtr@archlinux.org>
# Converted to .spec format for OBS (Open Build Service)

Name:           linux-lts66
Version:        6.6.119
Release:        1%{?dist}
Summary:        LTS Linux 6.6 kernel and modules
License:        (Apache-2.0 OR MIT) AND (BSD-2-Clause OR GPL-2.0-or-later) AND BSD-3-Clause AND (BSD-3-Clause OR GPL-2.0-only) AND (BSD-3-Clause OR GPL-2.0-or-later) AND BSD-3-Clause-Clear AND GPL-1.0-or-later AND (GPL-1.0-or-later OR BSD-3-Clause) AND GPL-2.0-only AND (GPL-2.0-only OR Apache-2.0) AND (GPL-2.0-only OR BSD-2-Clause) AND (GPL-2.0-only OR BSD-3-Clause) AND (GPL-2.0-only OR CDDL-1.0) AND (GPL-2.0-only OR Linux-OpenIB) AND (GPL-2.0-only OR MIT) AND (GPL-2.0-only OR MPL-1.1) AND (GPL-2.0-only OR X11) AND (GPL-2.0-only WITH Linux-syscall-note) AND GPL-2.0-or-later AND (GPL-2.0-or-later OR BSD-2-Clause) AND (GPL-2.0-or-later OR BSD-3-Clause) AND (GPL-2.0-or-later OR MIT) AND (GPL-2.0-or-later OR X11) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND ISC AND LGPL-2.0-or-later AND LGPL-2.1-only AND (LGPL-2.1-only OR BSD-2-Clause) AND LGPL-2.1-or-later AND MIT AND MPL-1.1 AND X11 AND Zlib

URL:            https://www.kernel.org
BuildRoot:      %{_tmppath}/%{name}-%{version}-root

# Source files (all must be uploaded to OBS project)
Source0:        linux-6.6.tar.xz
Source1:        linux-6.6.tar.sign
Source2:        patch-6.6.119.xz
Source3:        config

# Patches
Patch1:         0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
Patch2:         0002-skip-simpledrm-if-nvidia-drm.modeset=1-is.patch
Patch3:         0003-Default-to-maximum-amount-of-ASLR-bits.patch
Patch4:         0004-Sphinx-7.2.2-8.0-PosixPath.patch
Patch5:         0005-Sphinx-docutils-0.22-deprecated-SafeString-ErrorString.patch
Patch6:         0006-perl-5.41-precedence-warning-kernel-doc.patch

# Build requirements
BuildRequires:  bc cpio gettext libelf-devel pahole perl python tar xz
BuildRequires:  graphviz imagemagick python-sphinx texlive-latex

# Runtime requirements
Requires:       coreutils kmod initramfs
Requires:       /sbin/depmod

# Architecture
BuildArch:      x86_64

%description
LTS Linux 6.6 kernel and modules with arch-specific patches.
This package provides the Linux kernel and associated modules
for x86_64 architecture.

%package headers
Summary:        Headers and scripts for building modules for %{name}
Requires:       pahole

%description headers
Headers and scripts for building modules for the %{name} kernel.
These files are needed to compile kernel modules against this kernel.

%package docs
Summary:        Documentation for %{name}
License:        (BSD-3-Clause) AND GFDL-1.1-no-invariants-or-later AND (GPL-2.0-only AND various)

%description docs
Kernel documentation for %{name}.


%prep
%autosetup -n linux-6.6 -p1

echo "Setting version..."
echo "-%{release}" > localversion.10-pkgrel
echo "%{name#linux}" > localversion.20-pkgname

echo "Setting config..."
cp %{SOURCE3} .config
make olddefconfig
diff -u %{SOURCE3} .config || :

make -s kernelrelease > version
echo "Prepared %{name} version $(cat version)"


%build
export KBUILD_BUILD_HOST=archlinux
export KBUILD_BUILD_USER=%{name}
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"

# Build documentation in background
nice -n1 make -j1 htmldocs < /dev/null &
_pid_docs=$!

# Build kernel
nice -n2 make all

# Wait for documentation
wait ${_pid_docs}


%install
rm -rf %{buildroot}
cd linux-6.6

_version=$(cat version)
_modulesdir=%{buildroot}/usr/lib/modules/${_version}

echo "Installing boot image..."
install -Dm644 "$(make -s image_name)" "${_modulesdir}/vmlinuz"

echo "Using %{name} as kernel name..."
echo "%{name}" | install -Dm644 /dev/stdin "${_modulesdir}/pkgbase"

echo "Installing modules..."
ZSTD_CLEVEL=19 make INSTALL_MOD_PATH=%{buildroot}/usr INSTALL_MOD_STRIP=1 \
  DEPMOD=/doesnt/exist modules_install

rm "${_modulesdir}/build"

# Install licenses
install -Dm644 LICENSES/deprecated/GPL-1.0 %{buildroot}%{_licensedir}/%{name}/GPL-1.0
install -Dm644 LICENSES/deprecated/ISC %{buildroot}%{_licensedir}/%{name}/ISC
install -Dm644 LICENSES/deprecated/Linux-OpenIB %{buildroot}%{_licensedir}/%{name}/Linux-OpenIB
install -Dm644 LICENSES/deprecated/X11 %{buildroot}%{_licensedir}/%{name}/X11
install -Dm644 LICENSES/deprecated/Zlib %{buildroot}%{_licensedir}/%{name}/Zlib
install -Dm644 LICENSES/preferred/BSD-2-Clause %{buildroot}%{_licensedir}/%{name}/BSD-2-Clause
install -Dm644 LICENSES/preferred/BSD-3-Clause %{buildroot}%{_licensedir}/%{name}/BSD-3-Clause
install -Dm644 LICENSES/preferred/MIT %{buildroot}%{_licensedir}/%{name}/MIT

# Headers installation
_builddir=%{buildroot}/usr/lib/modules/${_version}/build

echo "Installing build files for headers..."
install -Dt "${_builddir}" -m644 .config Makefile Module.symvers System.map \
  localversion.* version vmlinux
install -Dt "${_builddir}/kernel" -m644 kernel/Makefile
install -Dt "${_builddir}/arch/x86" -m644 arch/x86/Makefile
cp -t "${_builddir}" -a scripts

install -Dt "${_builddir}/tools/objtool" tools/objtool/objtool
install -Dt "${_builddir}/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids

echo "Installing headers..."
cp -t "${_builddir}" -a include
cp -t "${_builddir}/arch/x86" -a arch/x86/include
install -Dt "${_builddir}/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s

install -Dt "${_builddir}/drivers/md" -m644 drivers/md/*.h
install -Dt "${_builddir}/net/mac80211" -m644 net/mac80211/*.h
install -Dt "${_builddir}/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
install -Dt "${_builddir}/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
install -Dt "${_builddir}/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
install -Dt "${_builddir}/drivers/media/tuners" -m644 drivers/media/tuners/*.h
install -Dt "${_builddir}/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h

echo "Installing KConfig files..."
find . -name 'Kconfig*' -exec install -Dm644 {} "${_builddir}/{}" \;

echo "Removing unneeded architectures..."
for arch in "${_builddir}"/arch/*/; do
  [[ $(basename "$arch") = x86 ]] && continue
  echo "Removing $(basename "$arch")"
  rm -r "$arch"
done

echo "Removing documentation..."
rm -r "${_builddir}/Documentation"

echo "Removing broken symlinks..."
find -L "${_builddir}" -type l -delete

echo "Removing loose objects..."
find "${_builddir}" -type f -name '*.o' -delete

echo "Stripping build tools..."
while read -rd '' file; do
  case "$(file -Sib "$file")" in
    application/x-sharedlib\;*)
      strip -s "$file" ;;
    application/x-archive\;*)
      strip -S "$file" ;;
    application/x-executable\;*)
      strip "$file" ;;
    application/x-pie-executable\;*)
      strip -s "$file" ;;
  esac
done < <(find "${_builddir}" -type f -perm -u+x ! -name vmlinux -print0)

echo "Stripping vmlinux..."
strip -S "${_builddir}/vmlinux"

echo "Creating headers symlink..."
mkdir -p %{buildroot}/usr/src
ln -sr "${_builddir}" %{buildroot}/usr/src/%{name}

# Install headers licenses
install -Dm644 LICENSES/deprecated/ISC %{buildroot}%{_licensedir}/%{name}-headers/ISC
install -Dm644 LICENSES/preferred/BSD-2-Clause %{buildroot}%{_licensedir}/%{name}-headers/BSD-2-Clause
install -Dm644 LICENSES/preferred/BSD-3-Clause %{buildroot}%{_licensedir}/%{name}-headers/BSD-3-Clause
install -Dm644 LICENSES/preferred/MIT %{buildroot}%{_licensedir}/%{name}-headers/MIT

# Documentation installation
echo "Installing documentation..."
_docdir=%{buildroot}/usr/lib/modules/${_version}/build/Documentation
while read -rd '' src; do
  dst="${src#Documentation/}"
  dst="${_docdir}/${dst#output/}"
  install -Dm644 "$src" "$dst"
done < <(find Documentation -name '.*' -prune -o ! -type d -print0)

mkdir -p %{buildroot}%{_docdir}/%{name}
ln -sr "${_docdir}" %{buildroot}%{_docdir}/%{name}/kernel-docs

install -Dm644 LICENSES/deprecated/X11 %{buildroot}%{_licensedir}/%{name}-docs/X11
install -Dm644 LICENSES/preferred/BSD-2-Clause %{buildroot}%{_licensedir}/%{name}-docs/BSD-2-Clause
install -Dm644 LICENSES/preferred/MIT %{buildroot}%{_licensedir}/%{name}-docs/MIT


%files
%license LICENSES/
/usr/lib/modules/*/vmlinuz
/usr/lib/modules/*/modules.*
/usr/lib/modules/*/kernel/
/usr/lib/modules/*/pkgbase

%files headers
%license LICENSES/
/usr/lib/modules/*/build
/usr/src/%{name}

%files docs
%license LICENSES/
%doc /usr/lib/modules/*/build/Documentation
%doc /usr/share/doc/%{name}/


%changelog
* Wed Dec 10 2025 Chris Severance <aur@severa.cc> - 6.6.119-1
- Initial OBS release
- Kernel 6.6.119 LTS with arch-specific patches

* Tue Dec 09 2025 Chris Severance <aur@severa.cc> - 6.6.118-1
- Previous AUR release
openSUSE Build Service is sponsored by