Files
alr-repo/lib32-mesa/alr.sh
Евгений Храмов edafb34091 lib32-mesa: использование 32-битного llvm-config
Изменён LLVM_CONFIG на /usr/bin/llvm-config-18-32 для использования
32-битных библиотек LLVM вместо 64-битных. Это исправляет ошибку
линковки с неопределёнными ссылками на символы LLVM.
2025-11-22 14:39:25 +03:00

256 lines
6.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name='lib32-mesa'
version='25.2.6'
release='8'
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 <xpamych@yandex.ru>'
maintainer_ru='Евгений Храмов <xpamych@yandex.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-64)'
'wayland-devel(x86-32)'
'wayland-protocols-devel'
'libva-devel(x86-64)'
'libvdpau-devel(x86-64)'
'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" <<EOF
[binaries]
c = ['gcc', '-m32']
cpp = ['g++', '-m32']
ar = 'gcc-ar'
strip = 'strip'
pkg-config = 'pkg-config'
[built-in options]
c_args = ['-m32']
c_link_args = ['-m32']
cpp_args = ['-m32']
cpp_link_args = ['-m32']
[host_machine]
system = 'linux'
cpu_family = 'x86'
cpu = 'i686'
endian = 'little'
EOF
echo "==> 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"
# 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
}