name='lib32-mesa' version='25.2.6' release='5' epoch='1' desc='Open-source OpenGL and Vulkan drivers (32-bit) with AMD RDNA 4 support for gaming' desc_ru='OpenGL и Vulkan драйверы (32-бит) с открытым исходным кодом с поддержкой AMD RDNA 4 для игр' homepage='https://www.mesa3d.org/' maintainer='Evgeniy Khramov ' maintainer_ru='Евгений Храмов ' architectures=('amd64') license=('MIT' 'BSD-3-Clause' 'SGI-B-2.0') provides=( 'mesa-dri-drivers(x86-32)' 'mesa-vulkan-drivers(x86-32)' 'mesa-va-drivers(x86-32)' 'mesa-vdpau-drivers(x86-32)' 'mesa-libgbm(x86-32)' 'mesa-libEGL(x86-32)' 'mesa-libGL(x86-32)' 'mesa-libGLES(x86-32)' 'libglvnd-gles(x86-32)' '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' 'libGLESv1_CM.so.1' 'libGLESv2.so.2' ) conflicts=( 'mesa-dri-drivers(x86-32) < 25.2.6' 'mesa-vulkan-drivers(x86-32) < 25.2.6' 'mesa-va-drivers(x86-32) < 25.2.6' 'mesa-vdpau-drivers(x86-32) < 25.2.6' 'mesa-libgbm(x86-32) < 25.2.6' 'mesa-libEGL(x86-32) < 25.2.6' 'mesa-libGL(x86-32) < 25.2.6' 'mesa-libGLES(x86-32) < 25.2.6' 'libglvnd-gles(x86-32) < 25.2.6' ) # 32-битные зависимости deps=( 'expat(x86-32)' 'libdrm(x86-32)' 'libelf(x86-32)' 'libglvnd(x86-32)' 'libx11(x86-32)' 'libxcb(x86-32)' 'libxext(x86-32)' 'libxshmfence(x86-32)' 'libxxf86vm(x86-32)' 'libwayland-client(x86-32)' 'libwayland-server(x86-32)' 'zlib(x86-32)' 'libzstd(x86-32)' 'vulkan-icd-loader(x86-32)' ) # Зависимости для RedOS (32-бит) deps_redos=( 'expat(x86-32)' 'lib32-libdrm' 'elfutils-libelf(x86-32)' 'libglvnd(x86-32)' 'libX11(x86-32)' 'libxcb(x86-32)' 'libXext(x86-32)' 'libxshmfence(x86-32)' 'libXxf86vm(x86-32)' 'libwayland-client(x86-32)' 'libwayland-server(x86-32)' 'zlib(x86-32)' 'libzstd(x86-32)' 'vulkan-loader(x86-32)' 'lib32-llvm18' 'lib32-lm_sensors' ) # Зависимости для сборки (в основном 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(x86-32)' 'lib32-libdrm' 'libxcb-devel(x86-32)' 'libX11-devel(x86-32)' 'libXext-devel(x86-32)' 'libXxf86vm-devel(x86-32)' 'libXfixes-devel(x86-32)' 'libXdamage-devel(x86-32)' 'libxshmfence-devel(x86-32)' 'libXrandr-devel(x86-32)' 'elfutils-libelf-devel(x86-32)' 'libglvnd-devel(x86-32)' 'wayland-devel(x86-32)' 'wayland-protocols-devel' 'libva-devel(x86-32)' 'libvdpau-devel(x86-32)' 'expat-devel(x86-32)' 'libxml2-devel(x86-32)' 'libzstd-devel(x86-32)' 'lm_sensors-devel' 'lib32-lm_sensors' 'systemd-devel(x86-32)' 'libpng-devel(x86-32)' 'vulkan-headers' 'vulkan-loader-devel(x86-32)' 'lib32-llvm18' ) 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 llvm-config-i386.h for 32-bit LLVM support echo "==> Creating llvm-config-i386.h for 32-bit LLVM..." sudo cp /usr/lib64/llvm18/include/llvm/Config/llvm-config-x86_64.h /usr/lib64/llvm18/include/llvm/Config/llvm-config-i386.h sudo sed -i 's/x86_64-redsoft-linux-gnu/i686-redsoft-linux-gnu/g' /usr/lib64/llvm18/include/llvm/Config/llvm-config-i386.h # Create meson cross-file for 32-bit compilation cat > "$srcdir/lib32-cross.ini" < Preparing Mesa ${version} (32-bit) with LLVM for AMD RDNA 4 gaming 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="/usr/bin/llvm-config-18" # 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 LLVM and AMD RDNA 4 gaming 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 }