feat: Init

This commit is contained in:
Wanjohi
2026-04-03 00:33:36 +03:00
parent b743dab332
commit 13db20bad9
499 changed files with 2311 additions and 80039 deletions

View File

@@ -0,0 +1,418 @@
pkgbase=mesa
pkgname=(
mesa
vulkan-intel
vulkan-nouveau
vulkan-radeon
vulkan-virtio
vulkan-mesa-layers
vulkan-mesa-implicit-layers
)
pkgver=26.1.0
_pkgver=${pkgver/[a-z]/-&}
pkgrel=1
epoch=1
pkgdesc="Open-source OpenGL drivers"
url="https://gitlab.freedesktop.org/mesa/mesa"
arch=(x86_64)
license=("MIT AND BSD-3-Clause AND SGI-B-2.0")
makedepends=(
clang
directx-headers
expat
glibc
libdisplay-info
libdrm
libelf
libgcc
libglvnd
libpng
libstdc++
libva
libx11
libxcb
libxext
libxml2
libxrandr
libxshmfence
libxxf86vm
llvm
llvm-libs
lm_sensors
rust
spirv-llvm-translator
spirv-tools
systemd-libs
vulkan-icd-loader
wayland
xcb-util-keysyms
zlib
zstd
# shared between mesa and lib32-mesa
cbindgen
clang
cmake
elfutils
glslang
libclc
meson
python-mako
python-packaging
python-ply
python-pycparser
python-yaml
rust-bindgen
wayland-protocols
xorgproto
# mesa-only deps
libsysprof-capture
valgrind
# html-docs
python-sphinx
python-sphinx-hawkmoth
)
options=(
# GCC 14 LTO causes segfault in LLVM under si_llvm_optimize_module
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/11140
#
# In general, upstream considers LTO to be broken until explicit notice.
!lto
)
source=("${pkgname}::git+${url}.git#branch=main")
# Rust crates for NVK, used as Meson subprojects
declare -A _crates=(
bitflags 2.9.1
cfg-if 1.0.0
equivalent 1.0.1
errno 0.3.12
hashbrown 0.14.1
indexmap 2.2.6
libc 0.2.171
log 0.4.27
once_cell 1.8.0
paste 1.0.14
pest 2.8.0
pest_derive 2.8.0
pest_generator 2.8.0
pest_meta 2.8.0
proc-macro2 1.0.86
quote 1.0.35
remain 0.2.12
roxmltree 0.20.0
rustc-hash 2.1.1
rustix 1.1.2
syn 2.0.87
thiserror 2.0.11
thiserror-impl 2.0.11
ucd-trie 0.1.6
unicode-ident 1.0.12
windows-link 0.2.0
windows-sys 0.61.1
zerocopy 0.8.13
zerocopy-derive 0.8.13
)
# Used to generate the above table
_gencrates() {
grep '^source_url' subprojects/*-rs.wrap | \
sed -r 's|.*crates/([^/]+)/([0-9.]+)/download|\1 \2|' | \
column -t -S 2 | sed 's/^/ /'
}
for _crate in "${!_crates[@]}"; do
_ver="${_crates[$_crate]}"
source+=(
"$_crate-$_ver.tar.gz::https://crates.io/api/v1/crates/$_crate/$_ver/download"
)
done
# https://docs.mesa3d.org/relnotes.html
sha256sums=('SKIP')
prepare() {
cd mesa
local src
for src in "${source[@]}"; do
src="${src%%::*}"
src="${src##*/}"
src="${src%.zst}"
[[ $src = *.patch ]] || continue
echo "Applying patch $src..."
patch -Np1 < "../$src"
done
}
build() {
local meson_options=(
-D amdgpu-virtio=true
-D intel-virtio-experimental=true
-D android-libbacktrace=disabled
-D b_ndebug=true
-D gallium-drivers=all
-D gallium-extra-hud=true
-D gallium-mediafoundation=disabled
-D gallium-rusticl-enable-drivers=asahi,freedreno,radeonsi
-D gallium-rusticl=true
-D gles1=disabled
-D html-docs=enabled
-D intel-rt=enabled
-D libunwind=disabled
-D microsoft-clc=disabled
-D sysprof=true
-D valgrind=enabled
-D video-codecs=all
-D vulkan-drivers=all
-D vulkan-layers=device-select,intel-nullhw,overlay,screenshot,anti-lag,vram-report-limit
-D vulkan-manifest-per-architecture=false
)
# Build only minimal debug info to reduce size
CFLAGS+=" -g1"
CXXFLAGS+=" -g1"
# Inject subproject packages
export MESON_PACKAGE_CACHE_DIR="$srcdir"
arch-meson mesa build "${meson_options[@]}"
meson compile -C build
}
_pick() {
local p="$1" f d; shift
for f; do
d="$srcdir/$p/${f#$pkgdir/}"
mkdir -p "$(dirname "$d")"
mv -v "$f" "$d"
rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
done
}
package_mesa() {
depends=(
expat
glibc
libdrm
libelf
libgcc
libglvnd
libstdc++
libx11
libxcb
libxext
libxshmfence
libxxf86vm
llvm-libs
lm_sensors
spirv-tools
wayland
zlib
zstd
)
optdepends=("opengl-man-pages: for the OpenGL API man pages")
provides=(
"libva-mesa-driver=$epoch:$pkgver-$pkgrel"
"mesa-libgl=$epoch:$pkgver-$pkgrel"
libva-driver
opengl-driver
)
conflicts=(
'libva-mesa-driver<1:24.2.7-1'
'mesa-libgl<17.0.1-2'
)
replaces=(
'libva-mesa-driver<1:24.2.7-1'
'mesa-libgl<17.0.1-2'
)
meson install -C build --destdir "$pkgdir" --no-rebuild
(
local libdir=usr/lib
cd "$pkgdir"
_pick vkintel $libdir/libvulkan_intel{,_hasvk}.so
_pick vkintel usr/share/vulkan/icd.d/intel{,_hasvk}_icd.json
_pick vknvidia $libdir/libvulkan_nouveau.so
_pick vknvidia usr/share/vulkan/icd.d/nouveau_icd.json
_pick vkradeon $libdir/libvulkan_radeon.so
_pick vkradeon usr/share/drirc.d/00-radv-defaults.conf
_pick vkradeon usr/share/vulkan/icd.d/radeon_icd.json
_pick vkvirtio $libdir/libvulkan_virtio.so
_pick vkvirtio usr/share/vulkan/icd.d/virtio_icd.json
_pick vkdevice $libdir/libVkLayer_MESA_anti_lag.so
_pick vkdevice $libdir/libVkLayer_MESA_device_select.so
_pick vkdevice usr/share/vulkan/implicit_layer.d
_pick vklayer $libdir/libVkLayer_*.so
_pick vklayer usr/bin/mesa-*-control.py
_pick vklayer usr/share/vulkan/explicit_layer.d
# indirect rendering
ln -sr $libdir/libGLX_{mesa,indirect}.so.0
)
install -Dm644 mesa/docs/license.rst -t "$pkgdir/usr/share/licenses/$pkgname"
}
package_vulkan-intel() {
pkgdesc="Open-source Vulkan driver for Intel GPUs"
depends=(
expat
glibc
libdisplay-info
libdrm
libgcc
libstdc++
libx11
libxcb
libxshmfence
spirv-tools
systemd-libs
vulkan-icd-loader
vulkan-mesa-implicit-layers
wayland
xcb-util-keysyms
zlib
zstd
)
optdepends=("vulkan-mesa-layers: additional vulkan layers")
provides=(vulkan-driver)
mv vkintel/* "$pkgdir"
install -Dm644 mesa/docs/license.rst -t "$pkgdir/usr/share/licenses/$pkgname"
}
package_vulkan-nouveau() {
pkgdesc="Open-source Vulkan driver for Nvidia GPUs"
depends=(
expat
glibc
libdisplay-info
libdrm
libgcc
libstdc++
libx11
libxcb
libxshmfence
spirv-tools
systemd-libs
vulkan-icd-loader
vulkan-mesa-implicit-layers
wayland
xcb-util-keysyms
zlib
zstd
)
optdepends=("vulkan-mesa-layers: additional vulkan layers")
provides=(vulkan-driver)
mv vknvidia/* "$pkgdir"
install -Dm644 mesa/docs/license.rst -t "$pkgdir/usr/share/licenses/$pkgname"
}
package_vulkan-radeon() {
pkgdesc="Open-source Vulkan driver for AMD GPUs"
depends=(
expat
glibc
libdisplay-info
libdrm
libelf
libgcc
libstdc++
libx11
libxcb
libxshmfence
llvm-libs
spirv-tools
systemd-libs
vulkan-icd-loader
vulkan-mesa-implicit-layers
wayland
xcb-util-keysyms
zlib
zstd
)
optdepends=("vulkan-mesa-layers: additional vulkan layers")
provides=(vulkan-driver)
replaces=('amdvlk<=2025.Q2.1-1')
mv vkradeon/* "$pkgdir"
install -Dm644 mesa/docs/license.rst -t "$pkgdir/usr/share/licenses/$pkgname"
}
package_vulkan-virtio() {
pkgdesc="Open-source Vulkan driver for Virtio-GPU (Venus)"
depends=(
expat
glibc
libdisplay-info
libdrm
libgcc
libx11
libxcb
libxshmfence
systemd-libs
vulkan-icd-loader
vulkan-mesa-implicit-layers
wayland
xcb-util-keysyms
zlib
zstd
)
optdepends=("vulkan-mesa-layers: additional vulkan layers")
provides=(vulkan-driver)
mv vkvirtio/* "$pkgdir"
install -Dm644 mesa/docs/license.rst -t "$pkgdir/usr/share/licenses/$pkgname"
}
package_vulkan-mesa-layers() {
pkgdesc="Mesa's explicit Vulkan layers"
depends=(
glibc
libgcc
libpng
libstdc++
python
)
conflicts=(vulkan-mesa-layer)
replaces=(vulkan-mesa-layer)
mv vklayer/* "$pkgdir"
install -Dm644 mesa/docs/license.rst -t "$pkgdir/usr/share/licenses/$pkgname"
}
package_vulkan-mesa-implicit-layers() {
pkgdesc="Mesa's implicit Vulkan layers"
depends=(
glibc
libdrm
libxcb
wayland
)
conflicts=(vulkan-mesa-device-select)
replaces=(vulkan-mesa-device-select)
mv vkdevice/* "$pkgdir"
install -Dm644 mesa/docs/license.rst -t "$pkgdir/usr/share/licenses/$pkgname"
}
# vim:set sw=2 sts=-1 et: