From 113b291e1409b5fd24c8564ca5a9ea4faa3daab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=A5=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=D0=BE=D0=B2?= Date: Tue, 11 Nov 2025 00:22:57 +0300 Subject: [PATCH] =?UTF-8?q?-=20mesa=20(v25.2.6):=20OpenGL=20=D0=B8=20Vulka?= =?UTF-8?q?n=20=D0=B4=D1=80=D0=B0=D0=B9=D0=B2=D0=B5=D1=80=D1=8B=20=D1=81?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D0=BE=D0=B9?= =?UTF-8?q?=20AMD=20RDNA=204=20(RX=209070=20XT)=20=20=20*=20Gallium=20?= =?UTF-8?q?=D0=B4=D1=80=D0=B0=D0=B9=D0=B2=D0=B5=D1=80=D1=8B:=20r300,=20r60?= =?UTF-8?q?0,=20radeonsi,=20llvmpipe,=20softpipe,=20zink=20=20=20*=20Vulka?= =?UTF-8?q?n=20=D0=B4=D1=80=D0=B0=D0=B9=D0=B2=D0=B5=D1=80=D1=8B:=20amd,=20?= =?UTF-8?q?swrast=20=20=20*=20=D0=9F=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=BA=D0=B0=20VA-API=20=D0=B8=20VDPAU=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B0=D0=BF=D0=BF=D0=B0=D1=80=D0=B0=D1=82=D0=BD=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=B4=D0=B5=D0=BA=D0=BE=D0=B4=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=20=20*=20=D0=98=D1=81=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=B7=D1=83=D0=B5=D1=82=20LLVM=2018=20=20=20*=20?= =?UTF-8?q?=D0=97=D0=B0=D0=BC=D0=B5=D0=BD=D1=8F=D0=B5=D1=82=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=B4=D0=B0=D1=80=D1=82=D0=BD=D1=8B=D0=B5=20=D0=BF?= =?UTF-8?q?=D0=B0=D0=BA=D0=B5=D1=82=D1=8B=20mesa=20=D0=B8=D0=B7=20=D1=80?= =?UTF-8?q?=D0=B5=D0=BF=D0=BE=D0=B7=D0=B8=D1=82=D0=BE=D1=80=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - lib32-mesa (v25.2.6): 32-битная версия Mesa для поддержки 32-битных игр и приложений * Те же драйверы и функции что и в 64-битной версии * Кросс-компиляция с использованием meson cross-file * Устанавливается в /usr/lib (не конфликтует с 64-битной версией) - linux-xanmod-bin (v6.17.6): Prebuilt ядро Xanmod с оптимизациями * Автоопределение CPU микроархитектуры (x64v1-v4) * Поддержка BLS (Boot Loader Specification) с grubby * Автоматическое создание initramfs и регистрация в GRUB * Кеширование загруженных файлов --- lib32-mesa/alr.sh | 252 +++++++++++++++++++++++++++++++ linux-xanmode-bin/alr.sh | 209 +++++++++++++++++++++++++ linux-xanmode-bin/postinstall.sh | 93 ++++++++++++ linux-xanmode-bin/postremove.sh | 59 ++++++++ mesa/alr.sh | 218 ++++++++++++++++++++++++++ validate-alr.sh | 0 6 files changed, 831 insertions(+) create mode 100644 lib32-mesa/alr.sh create mode 100644 linux-xanmode-bin/alr.sh create mode 100644 linux-xanmode-bin/postinstall.sh create mode 100644 linux-xanmode-bin/postremove.sh create mode 100644 mesa/alr.sh mode change 100644 => 100755 validate-alr.sh diff --git a/lib32-mesa/alr.sh b/lib32-mesa/alr.sh new file mode 100644 index 0000000..b708708 --- /dev/null +++ b/lib32-mesa/alr.sh @@ -0,0 +1,252 @@ +name='lib32-mesa' +version='25.2.6' +release='1' +epoch='1' +desc='Open-source OpenGL and Vulkan drivers (32-bit) with AMD RDNA 4 (RX 9070 XT) support' +desc_ru='OpenGL и Vulkan драйверы (32-бит) с открытым исходным кодом с поддержкой AMD RDNA 4 (RX 9070 XT)' +homepage='https://www.mesa3d.org/' +maintainer='Evgeniy Khramov ' +maintainer_ru='Евгений Храмов ' +architectures=('amd64') +license=('MIT' 'BSD-3-Clause' 'SGI-B-2.0') +provides=( + 'lib32-mesa' + 'lib32-mesa-dri-drivers' + 'lib32-mesa-vulkan-drivers' + 'lib32-mesa-va-drivers' + 'lib32-mesa-vdpau-drivers' + 'lib32-mesa-libgbm' + 'lib32-mesa-libEGL' + 'lib32-mesa-libGL' + 'lib32-mesa-libGLES' + 'lib32-vulkan-radeon' + 'lib32-libva-mesa-driver' + 'lib32-opengl-driver' + 'lib32-vulkan-driver' +) +conflicts=( + 'lib32-mesa' + 'lib32-mesa-dri-drivers' + 'lib32-mesa-vulkan-drivers' + 'lib32-mesa-va-drivers' + 'lib32-mesa-vdpau-drivers' + 'lib32-mesa-libgbm' + 'lib32-mesa-libEGL' + 'lib32-mesa-libGL' + 'lib32-mesa-libGLES' +) + +# 32-битные зависимости +deps=( + 'expat.i686' + 'libdrm.i686' + 'libelf.i686' + 'libglvnd.i686' + 'libx11.i686' + 'libxcb.i686' + 'libxext.i686' + 'libxshmfence.i686' + 'libxxf86vm.i686' + 'llvm18-libs.i686' + 'lm_sensors.i686' + 'libwayland-client.i686' + 'libwayland-server.i686' + 'zlib.i686' + 'zstd.i686' + 'vulkan-icd-loader.i686' + 'mesa' +) + +# Зависимости для RedOS (32-бит) +deps_redos=( + 'expat.i686' + 'libdrm.i686' + 'elfutils-libelf.i686' + 'libglvnd.i686' + 'libX11.i686' + 'libxcb.i686' + 'libXext.i686' + 'libxshmfence.i686' + 'libXxf86vm.i686' + 'llvm18-libs.i686' + 'lm_sensors-libs.i686' + 'libwayland-client.i686' + 'libwayland-server.i686' + 'zlib.i686' + 'zstd.i686' + 'vulkan-loader.i686' + 'mesa+default' +) + +# Зависимости для сборки (в основном 64-бит tools + 32-бит libs) +build_deps=( + 'gcc' + 'clang' + 'meson' + 'ninja-build' + 'cmake' + 'python3' + 'python3-mako' + 'python3-packaging' + 'python3-pyyaml' + 'bison' + 'flex' + 'llvm18' + 'llvm18-devel' + 'clang-devel' + 'rust' + 'rust-bindgen-devel' + 'cbindgen' + 'glslang-devel' + 'spirv-tools-devel' + 'glibc-devel.i686' + 'libdrm-devel.i686' + 'libxcb-devel.i686' + 'libX11-devel.i686' + 'libXext-devel.i686' + 'libXxf86vm-devel.i686' + 'libXfixes-devel.i686' + 'libXdamage-devel.i686' + 'libxshmfence-devel.i686' + 'libXrandr-devel.i686' + 'elfutils-libelf-devel.i686' + 'libglvnd-devel.i686' + 'wayland-devel.i686' + 'wayland-protocols-devel' + 'libva-devel.i686' + 'libvdpau-devel.i686' + 'expat-devel.i686' + 'libxml2-devel.i686' + 'libzstd-devel.i686' + 'lm_sensors-devel.i686' + 'systemd-devel.i686' + 'libpng-devel.i686' + 'vulkan-headers' + 'vulkan-loader-devel.i686' + 'llvm18-libs.i686' +) + +build_deps_redos=("${build_deps[@]}") + +_pkgver="${version}" + +sources=("https://archive.mesa3d.org/mesa-${_pkgver}.tar.xz") +checksums=('361c97e8afa5fe20141c5362c5b489040751e12861c186a16c621a2fb182fc42') + +prepare() { + cd "$srcdir/mesa-${_pkgver}" + + # Установка версии для правильной идентификации + echo "${version}-alr${epoch}.${release}" > VERSION + + # Create wrapper for llvm-config-18 to report 32-bit paths + cat > "$srcdir/llvm-config-18-32" << 'EOF' +#!/bin/bash +/usr/bin/llvm-config-18 "$@" | sed \ + -e 's/lib64/lib/g' \ + -e 's/x86_64/i686/g' +EOF + chmod +x "$srcdir/llvm-config-18-32" + + # Create meson cross-file for 32-bit compilation + cat > "$srcdir/lib32-cross.ini" < Preparing Mesa ${version} (32-bit) for AMD RDNA 4 (RX 9070 XT) support..." +} + +build() { + cd "$srcdir/mesa-${_pkgver}" + + # Set environment for 32-bit build + export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig" + export LLVM_CONFIG="$srcdir/llvm-config-18-32" + + # 32-bit CFLAGS/CXXFLAGS + export CFLAGS="-m32 -O2 -g1" + export CXXFLAGS="-m32 -O2 -g1" + export LDFLAGS="-m32" + + echo "==> Configuring Mesa (32-bit) with Meson..." + meson setup builddir \ + --cross-file="$srcdir/lib32-cross.ini" \ + --prefix=/usr \ + --libdir=lib \ + --buildtype=release \ + -Db_ndebug=true \ + -Dplatforms=x11,wayland \ + -Dgallium-drivers=r300,r600,radeonsi,llvmpipe,softpipe,zink \ + -Dvulkan-drivers=amd,swrast \ + -Dvideo-codecs=all \ + -Dgallium-extra-hud=true \ + -Dgallium-rusticl=false \ + -Dgallium-va=enabled \ + -Dgallium-vdpau=enabled \ + -Dgbm=enabled \ + -Dgles1=disabled \ + -Dgles2=enabled \ + -Dglvnd=enabled \ + -Dglx=dri \ + -Degl=enabled \ + -Dllvm=enabled \ + -Dlmsensors=enabled \ + -Dvalgrind=disabled \ + -Dvulkan-layers=device-select,overlay \ + -Dintel-rt=disabled \ + -Dlibunwind=disabled \ + -Dmicrosoft-clc=disabled + + echo "==> Building Mesa (32-bit) - this may take 15-30 minutes..." + meson compile -C builddir -j$(nproc) +} + +package() { + cd "$srcdir/mesa-${_pkgver}" + + echo "==> Installing Mesa (32-bit)..." + DESTDIR="$pkgdir" meson install -C builddir --no-rebuild + + # Install license + install -Dm644 docs/license.rst "$pkgdir/usr/share/licenses/$name/LICENSE" + + # Remove files that conflict with 64-bit mesa + rm -rf "$pkgdir/usr/include" + rm -rf "$pkgdir/usr/share/drirc.d" + rm -rf "$pkgdir/usr/share/vulkan" + rm -rf "$pkgdir/usr/share/glvnd" + rm -rf "$pkgdir/usr/lib/pkgconfig" + rm -f "$pkgdir/usr/bin"/* + + echo "==> Mesa ${version} (32-bit) installed with AMD RDNA 4 support" +} + +files() { + # Find all installed 32-bit library files + if [ -d ./usr/lib ]; then + find ./usr/lib -type f -printf '%p\n' + find ./usr/lib -type l -printf '%p\n' + fi + + if [ -d ./usr/share/licenses ]; then + find ./usr/share/licenses -type f -printf '%p\n' + fi +} diff --git a/linux-xanmode-bin/alr.sh b/linux-xanmode-bin/alr.sh new file mode 100644 index 0000000..61235e5 --- /dev/null +++ b/linux-xanmode-bin/alr.sh @@ -0,0 +1,209 @@ +check_psabi() { + awk 'BEGIN { + while (!/flags/) if (getline < "/proc/cpuinfo" != 1) exit 1 + if (/lm/&&/cmov/&&/cx8/&&/fpu/&&/fxsr/&&/mmx/&&/syscall/&&/sse2/) level = 1 + if (level == 1 && /cx16/&&/lahf/&&/popcnt/&&/sse4_1/&&/sse4_2/&&/ssse3/) level = 2 + if (level == 2 && /avx/&&/avx2/&&/bmi1/&&/bmi2/&&/f16c/&&/fma/&&/abm/&&/movbe/&&/xsave/) level = 3 + if (level == 3 && /avx512f/&&/avx512bw/&&/avx512cd/&&/avx512dq/&&/avx512vl/) level = 4 + if (level > 0) { print "x64v" level } + }' 2>/dev/null||echo "x64v1" +} + +is_exe_exist() { command -v "$@" &>/dev/null ; } + +check_url_stat_code() { + set -o pipefail + if is_exe_exist curl + then curl -sL -o /dev/null -I -w "%{http_code}" "$@" 2>/dev/null + elif is_exe_exist wget + then wget --no-check-certificate --server-response \ + --spider "$@"|& awk '/^ HTTP/{print$2}'|tail -1 + else return 1 + fi +} + +is_url() { + [ ! -n "$1" ] && \ + return 1 + if [ -n "$2" ] + then [ "$(check_url_stat_code "$1")" == "$2" ] + else [ "$(check_url_stat_code "$1")" == "200" ] + fi +} + +name='linux-xanmod-bin' +version='6.17.6' +release='1' +branch='main' +pkgverdl="${version%-*}" +desc='The Linux kernel, modules and headers with Xanmod patches - Prebuilt version' +desc_ru='The Linux kernel, modules and headers with Xanmod patches - Prebuilt version' +homepage='http://www.xanmod.org/' +maintainer="Евгений Храмов (imported from AUR)" +maintainer_ru="Евгений Храмов (импортирован из AUR)" +architectures=('amd64') +license=('GPL2') +provides=('VIRTUALBOX-GUEST-MODULES' 'WIREGUARD-MODULE' 'KSMBD-MODULE' 'NTFS3-MODULE' ) +conflicts=('linux-xanmod-headers' 'linux-xanmod' ) + +# Базовые зависимости +deps=('coreutils' 'kmod') +build_deps=('curl' 'gawk' 'grep' 'tar' 'xz' 'jq' 'binutils') + +# Зависимости для конкретных дистрибутивов +deps_arch=('coreutils' 'kmod' 'mkinitcpio' 'pahole') +deps_debian=('coreutils' 'kmod' 'initramfs-tools' 'pahole') +deps_altlinux=('coreutils' 'kmod' 'make-initrd' 'dwarves') +deps_alpine=('coreutils' 'kmod' 'mkinitfs' 'pahole') +deps_redos=('coreutils' 'kmod' 'dracut' 'dwarves') +deps_fedora=('coreutils' 'kmod' 'dracut' 'dwarves') +deps_rhel=('coreutils' 'kmod' 'dracut' 'dwarves') +deps_rosa=('coreutils' 'kmod' 'dracut' 'dwarves') + +# Опциональные зависимости +opt_deps=( + 'crda' + 'linux-firmware' +) + +scripts=( + ['postinstall']='postinstall.sh' + ['postremove']='postremove.sh' +) + +prepare() { + cd "$srcdir" + + # Determine CPU capabilities + detected_psabi="$(check_psabi)" + + # Determine best available psabi and construct URLs + for v in ${detected_psabi/x64v/} 3 2 1; do + [[ "$v" -le "${detected_psabi/x64v/}" && "$_psabi" != "x64v$v" ]] || continue + _psabi="x64v$v" + _url="https://sourceforge.net/projects/xanmod/files/releases/$branch/${pkgverdl}-xanmod1/${pkgverdl}-${_psabi}-xanmod1" + if is_url "$_url"; then + detected_psabi="$_psabi" + break + fi + done + + echo "==> Определена архитектура процессора: $detected_psabi" + + # Get download URLs + url_info="$(curl -sL "$_url" | grep "net.sf.files" | sed 's|net.sf.files = ||g;s|;$||' | jq -r '.[].download_url' | grep -v '\-dbg_')" + url_image="$(echo "$url_info" | grep -o "https:.*/linux-image.*deb" | head -1)" + url_headers="$(echo "$url_info" | grep -o "https:.*/linux-headers.*deb" | head -1)" + file_image="${url_image##*/}" + file_headers="${url_headers##*/}" + + # Download files if not already present (caching in $srcdir) + if [ ! -f "$file_image" ]; then + echo "==> Загрузка образа ядра: $file_image" + curl -L -o "$file_image" "$url_image" + else + echo "==> Использование кешированного образа ядра: $file_image" + fi + + if [ ! -f "$file_headers" ]; then + echo "==> Загрузка заголовков ядра: $file_headers" + curl -L -o "$file_headers" "$url_headers" + else + echo "==> Использование кешированных заголовков ядра: $file_headers" + fi + + # Extract packages using ar and tar + echo "==> Распаковка образа ядра..." + ar x "$file_image" data.tar.xz + mkdir -p .extract && tar --no-same-owner --no-same-permissions -C .extract -xf data.tar.xz + cp -af .extract/* . 2>/dev/null || true + rm -rf .extract data.tar.xz + + echo "==> Распаковка заголовков ядра..." + ar x "$file_headers" data.tar.xz + mkdir -p .extract && tar --no-same-owner --no-same-permissions -C .extract -xf data.tar.xz + cp -af .extract/* . 2>/dev/null || true + rm -rf .extract data.tar.xz + + # Save psabi for package() function + echo "$detected_psabi" > "$srcdir/.psabi" +} + +# Бинарный пакет - сборка не требуется + +package() { + cd "$srcdir" + + # Read psabi from file + detected_psabi="$(cat "$srcdir/.psabi")" + kernver="${pkgverdl}-${detected_psabi}-xanmod1" + modulesdir="$pkgdir/usr/lib/modules/${kernver}" + + echo "==> Установка модулей ядра для ${kernver}..." + mkdir -p "${modulesdir}" + + # Copy modules directory + if [ -d "lib/modules/${kernver}" ]; then + cp -r --no-preserve=ownership "lib/modules/${kernver}"/* "${modulesdir}/" || \ + cp -R "lib/modules/${kernver}"/* "${modulesdir}/" + fi + + # Установка образа ядра в /boot для загрузки + echo "==> Установка образа ядра в /boot..." + mkdir -p "$pkgdir/boot" + install -Dm755 "boot/vmlinuz-${kernver}" "$pkgdir/boot/vmlinuz-${kernver}" + + # systemd expects to find the kernel here to allow hibernation + # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344 + install -Dm755 "boot/vmlinuz-${kernver}" "$modulesdir/vmlinuz" + + # Used by mkinitcpio to name the kernel + echo "${name%-bin}" | install -Dm644 /dev/stdin "$modulesdir/pkgbase" + + # Установка System.map если есть + if [ -f "boot/System.map-${kernver}" ]; then + install -Dm644 "boot/System.map-${kernver}" "$pkgdir/boot/System.map-${kernver}" + fi + + # Установка конфигурации ядра если есть + if [ -f "boot/config-${kernver}" ]; then + install -Dm644 "boot/config-${kernver}" "$modulesdir/config" + fi + + # Установка заголовков из usr если есть + if [ -d usr ]; then + echo "==> Установка заголовков ядра..." + mkdir -p "$pkgdir/usr" + # Copy recursively with fallback for different cp versions + cp -r --no-preserve=ownership usr/* "$pkgdir/usr/" 2>/dev/null || \ + cp -R usr/* "$pkgdir/usr/" 2>/dev/null || \ + (cd usr && find . -type f -exec install -Dm644 {} "$pkgdir/usr"/{} \;) + fi +} + +files() { + # Find all files recursively in boot + if [ -d ./boot ]; then + find ./boot -type f -printf '%p\n' + fi + + # Find all files in modules directory + if [ -d ./usr/lib/modules ]; then + find ./usr/lib/modules -type f -printf '%p\n' + find ./usr/lib/modules -type l -printf '%p\n' + fi + + # Find additional files in /usr + if [ -d ./usr/include ]; then + find ./usr/include -type f -printf '%p\n' + fi + + if [ -d ./usr/share ]; then + find ./usr/share -type f -printf '%p\n' + fi + + if [ -d ./usr/src ]; then + find ./usr/src -type f -printf '%p\n' + find ./usr/src -type l -printf '%p\n' + fi +} \ No newline at end of file diff --git a/linux-xanmode-bin/postinstall.sh b/linux-xanmode-bin/postinstall.sh new file mode 100644 index 0000000..1a733ce --- /dev/null +++ b/linux-xanmode-bin/postinstall.sh @@ -0,0 +1,93 @@ +#!/bin/bash +# Post-install script for linux-xanmod-bin + +set -e + +# Get kernel version from the installed files +kernel_version=$(basename /usr/lib/modules/*-xanmod1 2>/dev/null | head -n 1) + +if [ -z "$kernel_version" ]; then + echo "Error: Could not determine kernel version" + exit 1 +fi + +if [ ! -f "/boot/vmlinuz-$kernel_version" ]; then + echo "Error: Kernel image /boot/vmlinuz-$kernel_version not found" + exit 1 +fi + +echo "Detected kernel $kernel_version, running system hooks..." + +# For RedOS/RHEL/Fedora systems with dracut +if command -v dracut >/dev/null 2>&1; then + initramfs_img="/boot/initramfs-$kernel_version.img" + echo "Creating initramfs for $kernel_version using dracut..." + dracut --force --kmoddir "/usr/lib/modules/$kernel_version" "$initramfs_img" "$kernel_version" + echo "Initramfs created: $initramfs_img" +fi + +# For Arch-based systems with mkinitcpio +if command -v mkinitcpio >/dev/null 2>&1; then + echo "Creating initramfs for $kernel_version using mkinitcpio..." + mkinitcpio -k "$kernel_version" -g "/boot/initramfs-$kernel_version.img" +fi + +# For Debian-based systems with update-initramfs +if command -v update-initramfs >/dev/null 2>&1; then + echo "Creating initramfs for $kernel_version using update-initramfs..." + update-initramfs -c -k "$kernel_version" +fi + +# For Alpine Linux with mkinitfs +if command -v mkinitfs >/dev/null 2>&1; then + echo "Creating initramfs for $kernel_version using mkinitfs..." + mkinitfs -o "/boot/initramfs-$kernel_version" "$kernel_version" +fi + +# Update GRUB configuration +echo "Updating bootloader configuration..." + +# For RHEL/Fedora/RedOS with grubby (BLS - Boot Loader Specification) +if command -v grubby >/dev/null 2>&1; then + echo "Adding kernel to bootloader using grubby..." + kernel_path="/boot/vmlinuz-$kernel_version" + initrd_path="/boot/initramfs-$kernel_version.img" + + # Check if kernel already exists in grubby + if grubby --info="$kernel_path" >/dev/null 2>&1; then + echo "Kernel already registered in bootloader" + else + # Add kernel entry + grubby --add-kernel="$kernel_path" \ + --initrd="$initrd_path" \ + --title="Red OS Linux ($kernel_version) - Xanmod" \ + --copy-default + echo "Kernel added to bootloader" + fi + +# For Debian/Ubuntu with update-grub +elif command -v update-grub >/dev/null 2>&1; then + echo "Updating GRUB configuration..." + update-grub + +# For other systems with grub2-mkconfig +elif command -v grub2-mkconfig >/dev/null 2>&1; then + echo "Updating GRUB2 configuration..." + grub2-mkconfig -o /boot/grub2/grub.cfg + +# For systems with grub-mkconfig +elif command -v grub-mkconfig >/dev/null 2>&1; then + echo "Updating GRUB configuration..." + grub-mkconfig -o /boot/grub/grub.cfg +else + echo "Warning: No bootloader configuration tool found. Please update your bootloader manually." +fi + +echo "" +echo "==========================================" +echo "Kernel $kernel_version installed successfully!" +echo "" +echo "To boot into this kernel:" +echo "1. Reboot your system" +echo "2. Select 'linux-xanmod' from the GRUB menu" +echo "==========================================" \ No newline at end of file diff --git a/linux-xanmode-bin/postremove.sh b/linux-xanmode-bin/postremove.sh new file mode 100644 index 0000000..d38379d --- /dev/null +++ b/linux-xanmode-bin/postremove.sh @@ -0,0 +1,59 @@ +#!/bin/bash +# Post-remove script for linux-xanmod-bin + +# Get kernel version from boot files (since modules may already be removed) +kernel_version=$(ls /boot/vmlinuz-*-xanmod1 2>/dev/null | head -n 1 | sed 's|/boot/vmlinuz-||') + +if [ -z "$kernel_version" ]; then + echo "Kernel version could not be determined, cleanup may be incomplete" + exit 0 +fi + +echo "Cleaning up after removal of kernel $kernel_version..." + +kernel_path="/boot/vmlinuz-$kernel_version" + +# Remove from bootloader first +echo "Removing kernel from bootloader..." +if command -v grubby >/dev/null 2>&1; then + # For RHEL/Fedora/RedOS with grubby + if grubby --info="$kernel_path" >/dev/null 2>&1; then + echo "Removing kernel entry using grubby..." + grubby --remove-kernel="$kernel_path" + echo "Kernel removed from bootloader" + fi +fi + +# Remove initramfs if it exists +initramfs_img="/boot/initramfs-$kernel_version.img" +if [ -f "$initramfs_img" ]; then + echo "Removing initramfs: $initramfs_img" + rm -f "$initramfs_img" +fi + +# Remove kernel image from /boot if it still exists +if [ -f "$kernel_path" ]; then + echo "Removing kernel image: $kernel_path" + rm -f "$kernel_path" +fi + +# Remove System.map if it exists +if [ -f "/boot/System.map-$kernel_version" ]; then + echo "Removing System.map: /boot/System.map-$kernel_version" + rm -f "/boot/System.map-$kernel_version" +fi + +# Update GRUB configuration (for non-BLS systems) +if command -v update-grub >/dev/null 2>&1; then + echo "Updating GRUB configuration..." + update-grub +elif command -v grub2-mkconfig >/dev/null 2>&1 && ! command -v grubby >/dev/null 2>&1; then + echo "Updating GRUB2 configuration..." + grub2-mkconfig -o /boot/grub2/grub.cfg +elif command -v grub-mkconfig >/dev/null 2>&1 && ! command -v grubby >/dev/null 2>&1; then + echo "Updating GRUB configuration..." + grub-mkconfig -o /boot/grub/grub.cfg +fi + +echo "Kernel $kernel_version has been removed." +echo "Please ensure you have another kernel installed before rebooting." diff --git a/mesa/alr.sh b/mesa/alr.sh new file mode 100644 index 0000000..9b02b28 --- /dev/null +++ b/mesa/alr.sh @@ -0,0 +1,218 @@ +name='mesa' +version='25.2.6' +release='3' +epoch='1' +desc='Open-source OpenGL and Vulkan drivers with AMD RDNA 4 (RX 9070 XT) support' +desc_ru='OpenGL и Vulkan драйверы с открытым исходным кодом с поддержкой AMD RDNA 4 (RX 9070 XT)' +homepage='https://www.mesa3d.org/' +maintainer='Evgeniy Khramov ' +maintainer_ru='Евгений Храмов ' +architectures=('amd64') +license=('MIT' 'BSD-3-Clause' 'SGI-B-2.0') +provides=( + 'mesa' + 'mesa-dri-drivers' + 'mesa-vulkan-drivers' + 'mesa-va-drivers' + 'mesa-vdpau-drivers' + 'mesa-libgbm' + 'mesa-libEGL' + 'mesa-libGL' + 'mesa-libGLES' + 'vulkan-radeon' + 'libva-mesa-driver' + 'opengl-driver' + 'vulkan-driver' +) +conflicts=( + 'mesa' + 'mesa-dri-drivers' + 'mesa-vulkan-drivers' + 'mesa-va-drivers' + 'mesa-vdpau-drivers' + 'mesa-libgbm' + 'mesa-libEGL' + 'mesa-libGL' + 'mesa-libGLES' +) + +# Базовые зависимости +deps=( + 'expat' + 'libdrm' + 'libelf' + 'libglvnd' + 'libx11' + 'libxcb' + 'libxext' + 'libxshmfence' + 'libxxf86vm' + 'llvm18-libs' + 'lm_sensors' + 'libwayland-client' + 'libwayland-server' + 'zlib' + 'zstd' + 'vulkan-icd-loader' +) + +# Зависимости для RedOS +deps_redos=( + 'expat' + 'libdrm' + 'elfutils-libelf' + 'libglvnd' + 'libX11' + 'libxcb' + 'libXext' + 'libxshmfence' + 'libXxf86vm' + 'llvm18-libs' + 'lm_sensors-libs' + 'libwayland-client' + 'libwayland-server' + 'zlib' + 'zstd' + 'vulkan-loader' +) + +# Зависимости для сборки +build_deps=( + 'gcc' + 'clang' + 'meson' + 'ninja-build' + 'cmake' + 'python3' + 'python3-mako' + 'python3-packaging' + 'python3-pyyaml' + 'bison' + 'flex' + 'llvm18' + 'llvm18-devel' + 'clang-devel' + 'rust' + 'rust-bindgen-devel' + 'cbindgen' + 'glslang-devel' + 'spirv-tools-devel' + 'libdrm-devel' + 'libxcb-devel' + 'libX11-devel' + 'libXext-devel' + 'libXxf86vm-devel' + 'libXfixes-devel' + 'libXdamage-devel' + 'libxshmfence-devel' + 'libXrandr-devel' + 'elfutils-libelf-devel' + 'libglvnd-devel' + 'wayland-devel' + 'wayland-protocols-devel' + 'libva-devel' + 'libvdpau-devel' + 'expat-devel' + 'libxml2-devel' + 'libzstd-devel' + 'lm_sensors-devel' + 'systemd-devel' + 'libpng-devel' + 'vulkan-headers' + 'vulkan-loader-devel' +) + +build_deps_redos=("${build_deps[@]}") + +_pkgver="${version}" + +sources=("https://archive.mesa3d.org/mesa-${_pkgver}.tar.xz") +checksums=('361c97e8afa5fe20141c5362c5b489040751e12861c186a16c621a2fb182fc42') + +prepare() { + cd "$srcdir/mesa-${_pkgver}" + + # Установка версии для правильной идентификации + echo "${version}-alr${epoch}.${release}" > VERSION + + echo "==> Preparing Mesa ${version} for AMD RDNA 4 (RX 9070 XT) support..." +} + +build() { + cd "$srcdir/mesa-${_pkgver}" + + # Set LLVM 18 paths + export LLVM_CONFIG="/usr/bin/llvm-config-18" + + echo "==> Configuring Mesa with Meson..." + meson setup builddir \ + --prefix=/usr \ + --libdir=lib64 \ + --buildtype=release \ + -Db_ndebug=true \ + -Dplatforms=x11,wayland \ + -Dgallium-drivers=r300,r600,radeonsi,llvmpipe,softpipe,zink \ + -Dvulkan-drivers=amd,swrast \ + -Dvideo-codecs=all \ + -Dgallium-extra-hud=true \ + -Dgallium-rusticl=false \ + -Dgallium-va=enabled \ + -Dgallium-vdpau=enabled \ + -Dgbm=enabled \ + -Dgles1=disabled \ + -Dgles2=enabled \ + -Dglvnd=enabled \ + -Dglx=dri \ + -Degl=enabled \ + -Dllvm=enabled \ + -Dlmsensors=enabled \ + -Dvalgrind=disabled \ + -Dvulkan-layers=device-select,overlay \ + -Dintel-rt=disabled \ + -Dlibunwind=disabled \ + -Dmicrosoft-clc=disabled + + echo "==> Building Mesa (this may take 15-30 minutes)..." + meson compile -C builddir -j$(nproc) +} + +package() { + cd "$srcdir/mesa-${_pkgver}" + + echo "==> Installing Mesa..." + DESTDIR="$pkgdir" meson install -C builddir --no-rebuild + + # Install license + install -Dm644 docs/license.rst "$pkgdir/usr/share/licenses/$name/LICENSE" + + echo "==> Mesa ${_pkgver} installed with AMD RDNA 4 support" +} + +files() { + # Find all installed files + if [ -d ./usr/lib64 ]; then + find ./usr/lib64 -type f -printf '%p\n' + find ./usr/lib64 -type l -printf '%p\n' + fi + + if [ -d ./usr/lib ]; then + find ./usr/lib -type f -printf '%p\n' + find ./usr/lib -type l -printf '%p\n' + fi + + if [ -d ./usr/include ]; then + find ./usr/include -type f -printf '%p\n' + fi + + if [ -d ./usr/share ]; then + find ./usr/share -type f -printf '%p\n' + fi + + if [ -d ./usr/bin ]; then + find ./usr/bin -type f -printf '%p\n' + fi + + if [ -d ./etc ]; then + find ./etc -type f -printf '%p\n' + fi +} diff --git a/validate-alr.sh b/validate-alr.sh old mode 100644 new mode 100755