File linux-cachyos.spec of Package linux-cachyos

#
# linux-cachyos.spec — CachyOS kernel BORE + LTO + Cachy Sauce
# openSUSE Tumbleweed / Slowroll
#
# Generato manualmente — versione con fix vdso
# Sorgente: home:misotolar:linux-cachyos/linux-cachyos
#

# ─── Versioni ─────────────────────────────────────────────────────────────────
%define _major    6.19
%define _minor    6
%define _cachy    1

%define _kernver  %{_major}.%{_minor}
%define _srctag   cachyos-%{_major}.%{_minor}-%{_cachy}
%define kbuild_flags  CC=clang LD=ld.lld LLVM=1 LLVM_IAS=1

# ─── Header RPM ───────────────────────────────────────────────────────────────
Name:           linux-cachyos
Version:        %{_kernver}
Release:        %{_cachy}.1
Summary:        Linux BORE + LTO + Cachy Sauce Kernel by CachyOS
License:        GPL-2.0-only
URL:            https://github.com/misotolar/linux-cachyos
ExclusiveArch:  x86_64

# ─── Sorgenti ─────────────────────────────────────────────────────────────────
Source0:        cachyos-6.19.6-1.tar.gz
Source1:        config
Source2:        config.sh
Source3:        config.trinity.sh
Source20:       linux-cachyos.rpmlintrc
Source10:       0101-CACHYOS-bore-cachy.patch
Source11:       0102-CACHYOS-dkms-clang.patch

# ─── Dipendenze di build ──────────────────────────────────────────────────────
BuildRequires:  bc
BuildRequires:  clang
BuildRequires:  cpio
BuildRequires:  lld
BuildRequires:  llvm
BuildRequires:  pahole
BuildRequires:  perl
BuildRequires:  python3
BuildRequires:  rust
BuildRequires:  rust-bindgen
BuildRequires:  cargo
BuildRequires:  tar
BuildRequires:  xz
BuildRequires:  zstd
BuildRequires:  dracut
BuildRequires:  flex
BuildRequires:  bison
BuildRequires:  openssl-devel
BuildRequires:  libelf-devel
BuildRequires:  pkgconfig(libssl)

%description
Linux kernel %{version} con BORE scheduler, LTO Clang e patch CachyOS.
Compilato con Clang/LLVM per openSUSE Tumbleweed.
BORE (Burst-Oriented Response Enhancer) migliora la responsività del desktop.

%package headers
Summary:  Headers per il kernel linux-cachyos
Requires: %{name} = %{version}-%{release}
Requires: clang llvm lld pahole

%description headers
Headers e script per la compilazione di moduli out-of-tree.

# ─── Preparazione ─────────────────────────────────────────────────────────────
%prep
%setup -q -n %{_srctag}

echo "-%{release}" > localversion.10-pkgrel
echo "-cachyos"    > localversion.20-pkgname

echo "Applying patch bore-cachy..."
patch -Np1 < %{SOURCE10}
echo "Applying patch dkms-clang..."
patch -Np1 < %{SOURCE11}

cp %{SOURCE1} .config
sh %{SOURCE2}

export KBUILD_BUILD_USER="%{name}"
export KBUILD_BUILD_HOST="opensuse"

make %{kbuild_flags} prepare
yes "" | make %{kbuild_flags} config > /dev/null
make -s kernelrelease > version
echo "Preparato %{name} versione $(cat version)"

# ─── Build ────────────────────────────────────────────────────────────────────
%build
export KBUILD_BUILD_USER="%{name}"
export KBUILD_BUILD_HOST="opensuse"
export KBUILD_BUILD_TIMESTAMP="$(date -Ru)"

make %{kbuild_flags} %{?_smp_mflags} all
make -C tools/bpf/bpftool vmlinux.h feature-clang-bpf-co-re=1

# ─── Installazione ────────────────────────────────────────────────────────────
%install
export KBUILD_BUILD_USER="%{name}"
export KBUILD_BUILD_HOST="opensuse"

_kver="$(cat version)"
_modulesdir="%{buildroot}/usr/lib/modules/${_kver}"
_builddir="${_modulesdir}/build"

install -Dm644 "$(make -s image_name)" "%{buildroot}/boot/vmlinuz-${_kver}"
install -Dm644 System.map              "%{buildroot}/boot/System.map-${_kver}"
install -Dm644 .config                 "%{buildroot}/boot/config-${_kver}"
install -Dm644 "$(make -s image_name)" "${_modulesdir}/vmlinuz"
echo "%{name}" | install -Dm644 /dev/stdin "${_modulesdir}/pkgbase"
install -Dm644 version "%{buildroot}/usr/lib/modules/${_kver}/kernelversion"

ZSTD_CLEVEL=-1 make %{kbuild_flags} \
    INSTALL_MOD_PATH="%{buildroot}/usr" \
    INSTALL_MOD_STRIP=1 \
    DEPMOD=/doesnt/exist \
    modules_install

rm -f "${_modulesdir}/build"

install -Dt "${_builddir}" -m644 \
    .config Makefile Module.symvers System.map \
    localversion.* version vmlinux \
    tools/bpf/bpftool/vmlinux.h
install -Dt "${_builddir}/kernel"   -m644 kernel/Makefile
install -Dt "${_builddir}/arch/x86" -m644 arch/x86/Makefile
cp -a scripts "${_builddir}/"
ln -srt "${_builddir}" "${_builddir}/scripts/gdb/vmlinux-gdb.py" 2>/dev/null || true
install -Dt "${_builddir}/tools/objtool" tools/objtool/objtool

if [ -f tools/bpf/resolve_btfids/resolve_btfids ]; then
    install -Dt "${_builddir}/tools/bpf/resolve_btfids" \
        tools/bpf/resolve_btfids/resolve_btfids
fi

cp -a include                              "${_builddir}/"
cp -a arch/x86/include                     "${_builddir}/arch/x86/"
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
find . -name 'Kconfig*' -exec install -Dm644 {} "${_builddir}/{}" \;

if compgen -G "rust/*.rmeta" > /dev/null 2>&1; then
    install -Dt "${_builddir}/rust" -m644 rust/*.rmeta
fi
if compgen -G "rust/*.so" > /dev/null 2>&1; then
    install -Dt "${_builddir}/rust" rust/*.so
fi

make %{kbuild_flags} INSTALL_MOD_PATH="%{buildroot}/usr" vdso_install link=

for arch in "${_builddir}"/arch/*/; do
    [[ "$arch" == */x86/ ]] && continue
    rm -rf "$arch"
done
rm -rf "${_builddir}/Documentation"
find -L "${_builddir}" -type l -delete
find "${_builddir}" -type f -name '*.o' -delete

mkdir -p "%{buildroot}/usr/src"
ln -sr "${_builddir}" "%{buildroot}/usr/src/%{name}"

# ─── Post-installazione ───────────────────────────────────────────────────────
%post
_kver=""
for f in /usr/lib/modules/*/kernelversion; do
    _candidate=$(cat "$f" 2>/dev/null || true)
    if echo "$_candidate" | grep -q "cachyos"; then
        _kver="$_candidate"; break
    fi
done
[ -z "$_kver" ] && { echo "%post: versione kernel non trovata" >&2; exit 0; }
/sbin/depmod -a "${_kver}" || true
if [ -x /usr/bin/dracut ]; then
    dracut --force --kver "${_kver}" "/boot/initrd-${_kver}" 2>/dev/null \
        || echo "%post: dracut fallito per ${_kver}" >&2
else
    echo "%post: dracut non trovato" >&2
fi
[ -x /usr/sbin/grub2-mkconfig ] && grub2-mkconfig -o /boot/grub2/grub.cfg 2>/dev/null || true

# ─── Post-rimozione ───────────────────────────────────────────────────────────
%postun
[ -x /usr/sbin/grub2-mkconfig ] && grub2-mkconfig -o /boot/grub2/grub.cfg 2>/dev/null || true

# ─── File list ────────────────────────────────────────────────────────────────
%files
%license COPYING
/boot/vmlinuz-*cachyos*
/boot/System.map-*cachyos*
/boot/config-*cachyos*
%dir /usr/lib/modules/*cachyos*/
/usr/lib/modules/*/vmlinuz
/usr/lib/modules/*/pkgbase
/usr/lib/modules/*/kernelversion
/usr/lib/modules/*/kernel/
/usr/lib/modules/*/modules.*
/usr/lib/modules/*/vdso/

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

# ─── Changelog ────────────────────────────────────────────────────────────────
%changelog
* Fri Mar 14 2026 cachyos-obs-update.sh <obs@opensuse.org> - 6.19.6-1.1
- Aggiornamento automatico a kernel CachyOS 6.19.6-1
- Fix: aggiunta /usr/lib/modules/*/vdso/ alla %files list
- cachyos_hash: fce577750ec855408ecdf31cf1bfed087db36b03
- patches_hash: 776ee4906c343ffb826afc390a923b0958617383
openSUSE Build Service is sponsored by