aa353fab03
At the moment, every device that wants to make use of mesa-git needs to depend on all relevant mesa-git subpackages. We can simplify this by adding these directly as depends for the -dri- package that most devices will be depending on. That way, the fact that you need to depend on all relevant subpackages is mostly hidden away as "implementation detail" in the mesa-git package, and no special care is required when using mesa-git.
362 lines
9.2 KiB
Text
362 lines
9.2 KiB
Text
# Forked from Alpine Linux to provide latest git builds, useful for bleeding
|
|
# edge driver support
|
|
#
|
|
# Any new drivers should be upstreamed to Alpine Linux once they appear in a
|
|
# new Mesa stable release
|
|
pkgname=mesa-git
|
|
pkgver=0_git20200116
|
|
pkgrel=1
|
|
_commit="68abc0731715b2ec3048d0944250b96a5302b4bc"
|
|
pkgdesc="Mesa DRI OpenGL library (Git)"
|
|
url="https://www.mesa3d.org"
|
|
arch="all"
|
|
license="MIT SGI-B-2.0 BSL-1.0"
|
|
subpackages="
|
|
$pkgname-dev
|
|
$pkgname-dri-classic:_dri
|
|
$pkgname-dri-gallium:_dri
|
|
$pkgname-va-gallium:_va
|
|
$pkgname-vdpau-gallium:_vdpau
|
|
$pkgname-glapi $pkgname-egl $pkgname-gl $pkgname-gles
|
|
$pkgname-xatracker $pkgname-osmesa $pkgname-gbm
|
|
$pkgname-vulkan-ati:_vulkan
|
|
$pkgname-dri-ati:_dri_deprecated
|
|
$pkgname-dri-nouveau:_dri_deprecated
|
|
"
|
|
_llvmver=9
|
|
depends_dev="
|
|
libdrm-dev
|
|
libxext-dev
|
|
libxdamage-dev
|
|
libxcb-dev
|
|
libxshmfence-dev
|
|
"
|
|
# FIXME: Remove glslang when pmbootstrap can handle the conditional makedepends below
|
|
makedepends="
|
|
$depends_dev
|
|
bison
|
|
eudev-dev
|
|
expat-dev
|
|
findutils
|
|
flex
|
|
gettext
|
|
glslang
|
|
elfutils-dev
|
|
libtool
|
|
libxfixes-dev
|
|
libva-dev
|
|
libvdpau-dev
|
|
libx11-dev
|
|
libxrandr-dev
|
|
libxt-dev
|
|
libxvmc-dev
|
|
libxxf86vm-dev
|
|
llvm$_llvmver-dev
|
|
makedepend
|
|
meson
|
|
py3-mako
|
|
py3-libxml2
|
|
python3
|
|
talloc-dev
|
|
wayland-dev
|
|
wayland-protocols
|
|
xorgproto
|
|
zlib-dev
|
|
"
|
|
source="
|
|
$pkgname-$_commit.tar.gz::https://gitlab.freedesktop.org/mesa/mesa/-/archive/$_commit.tar.gz
|
|
adjust-cache-deflate-buffer.patch
|
|
musl-fix-includes.patch
|
|
add-use-elf-tls.patch
|
|
time-fix.patch
|
|
"
|
|
provides="mesa"
|
|
replaces="mesa-dricore mesa"
|
|
builddir="$srcdir/mesa-$_commit"
|
|
pcprefix="mesa-git"
|
|
|
|
if [ "$CARCH" = x86 ]; then
|
|
# Bug upstream that needs to be fixed
|
|
options="$options textrels"
|
|
fi
|
|
|
|
_dri_driverdir=/usr/lib/xorg/modules/dri
|
|
_dri_drivers="r100,r200,nouveau"
|
|
_gallium_drivers="r300,r600,radeonsi,nouveau,swrast,virgl"
|
|
_gallium_provides="
|
|
$pkgname-dri-swrast=$pkgver-r$pkgrel
|
|
$pkgname-dri-virtio=$pkgver-r$pkgrel
|
|
"
|
|
_vulkan_drivers="amd"
|
|
_arch_opts=""
|
|
_vulkan_overlay_layer=false
|
|
case "$CARCH" in
|
|
x86*)
|
|
_dri_drivers="${_dri_drivers},i915,i965"
|
|
_gallium_drivers="${_gallium_drivers},svga,iris"
|
|
_vulkan_drivers="${_vulkan_drivers},intel"
|
|
_vulkan_overlay_layer=true
|
|
makedepends="$makedepends glslang"
|
|
subpackages="$subpackages \
|
|
$pkgname-dri-intel:_dri_deprecated \
|
|
$pkgname-vulkan-intel:_vulkan \
|
|
$pkgname-vulkan-layer:_vulkan_layer"
|
|
_gallium_provides="$_gallium_provides $pkgname-dri-vmwgfx=$pkgver-r$pkgrel"
|
|
_arch_opts="-Ddri3=true"
|
|
case "$CARCH" in
|
|
x86)
|
|
_arch_opts="$_arch_opts -Dglx-read-only-text=true -Dasm=false";;
|
|
esac
|
|
;;
|
|
armhf|armv7|aarch64)
|
|
_gallium_drivers="${_gallium_drivers},vc4,v3d,freedreno,kmsro,lima,panfrost,etnaviv,tegra"
|
|
_gallium_provides="$_gallium_provides
|
|
$pkgname-dri-vc4=$pkgver-r$pkgrel
|
|
$pkgname-dri-v3d=$pkgver-r$pkgrel
|
|
$pkgname-dri-freedreno=$pkgver-r$pkgrel
|
|
$pkgname-dri-kmsro=$pkgver-r$pkgrel
|
|
$pkgname-dri-lima=$pkgver-r$pkgrel
|
|
$pkgname-dri-panfrost=$pkgver-r$pkgrel
|
|
$pkgname-dri-etnaviv=$pkgver-r$pkgrel
|
|
$pkgname-dri-tegra=$pkgver-r$pkgrel
|
|
"
|
|
;;
|
|
esac
|
|
|
|
build() {
|
|
export CFLAGS="$CFLAGS -D_XOPEN_SOURCE=700"
|
|
export PATH=/usr/lib/llvm${_llvmver}/bin:$PATH
|
|
meson \
|
|
--prefix=/usr \
|
|
--sysconfdir=/etc \
|
|
--mandir=/usr/share/man \
|
|
--localstatedir=/var \
|
|
--buildtype=debugoptimized \
|
|
-Ddri-drivers-path=$_dri_driverdir \
|
|
-Dgallium-drivers=$_gallium_drivers \
|
|
-Ddri-drivers=$_dri_drivers \
|
|
-Dvulkan-drivers=$_vulkan_drivers \
|
|
-Dvulkan-overlay-layer=$_vulkan_overlay_layer \
|
|
-Dplatforms=x11,drm,wayland \
|
|
-Dllvm=true \
|
|
-Dshared-llvm=true \
|
|
-Dshared-glapi=true \
|
|
-Dgbm=true \
|
|
-Dglx=dri \
|
|
-Dopengl=true \
|
|
-Dosmesa=gallium \
|
|
-Dgles1=false \
|
|
-Dgles2=true \
|
|
-Degl=true \
|
|
-Dgallium-xa=true \
|
|
-Dgallium-vdpau=true \
|
|
-Dgallium-va=true \
|
|
-Dgallium-xvmc=false \
|
|
-Dglx-use-tls=false \
|
|
-Dgallium-nine=false \
|
|
-Db_ndebug=true \
|
|
$_arch_opts \
|
|
. output
|
|
# parallel build workaround
|
|
ninja -C output src/compiler/nir/nir_intrinsics.h src/git_sha1.h
|
|
|
|
ninja -C output
|
|
}
|
|
|
|
package() {
|
|
DESTDIR="$pkgdir" ninja -C output install
|
|
|
|
# Make abuild's version check happy (#386)
|
|
sed -i s/-devel//g "$pkgdir"/usr/lib/pkgconfig/*.pc
|
|
}
|
|
|
|
egl() {
|
|
pkgdesc="Mesa libEGL runtime libraries"
|
|
depends="$pkgname"
|
|
replaces="mesa-egl"
|
|
provides="mesa-egl"
|
|
|
|
install -d "$subpkgdir"/usr/lib
|
|
mv "$pkgdir"/usr/lib/libEGL.so* "$subpkgdir"/usr/lib/
|
|
}
|
|
|
|
gl() {
|
|
pkgdesc="Mesa libGL runtime libraries"
|
|
depends="$pkgname"
|
|
replaces="mesa-gl"
|
|
provides="mesa-gl"
|
|
|
|
install -d "$subpkgdir"/usr/lib
|
|
mv "$pkgdir"/usr/lib/libGL.so* "$subpkgdir"/usr/lib/
|
|
}
|
|
|
|
glapi() {
|
|
pkgdesc="Mesa shared glapi"
|
|
depends="$pkgname"
|
|
replaces="mesa-gles mesa-glapi"
|
|
provides="mesa-glapi"
|
|
|
|
install -d "$subpkgdir"/usr/lib
|
|
mv "$pkgdir"/usr/lib/libglapi.so.* "$subpkgdir"/usr/lib/
|
|
}
|
|
|
|
gles() {
|
|
pkgdesc="Mesa libGLESv2 runtime libraries"
|
|
depends="$pkgname"
|
|
replaces="mesa-gles"
|
|
provides="mesa-gles"
|
|
|
|
install -d "$subpkgdir"/usr/lib
|
|
mv "$pkgdir"/usr/lib/libGLES*.so* "$subpkgdir"/usr/lib/
|
|
}
|
|
|
|
xatracker() {
|
|
pkgdesc="Mesa XA state tracker for vmware"
|
|
depends="$pkgname"
|
|
replaces="mesa-xatracker"
|
|
provides="mesa-xatracker"
|
|
|
|
install -d "$subpkgdir"/usr/lib
|
|
mv "$pkgdir"/usr/lib/libxatracker*.so.* "$subpkgdir"/usr/lib/
|
|
}
|
|
|
|
osmesa() {
|
|
pkgdesc="Mesa offscreen rendering libraries"
|
|
depends="$pkgname"
|
|
replaces="mesa-osmesa"
|
|
provides="mesa-osmesa"
|
|
|
|
install -d "$subpkgdir"/usr/lib
|
|
mv "$pkgdir"/usr/lib/libOSMesa.so.* "$subpkgdir"/usr/lib/
|
|
}
|
|
|
|
gbm() {
|
|
pkgdesc="Mesa gbm library"
|
|
depends="$pkgname"
|
|
replaces="mesa-gbm"
|
|
provides="mesa-gbm"
|
|
|
|
install -d "$subpkgdir"/usr/lib
|
|
mv "$pkgdir"/usr/lib/libgbm.so.* "$subpkgdir"/usr/lib/
|
|
}
|
|
|
|
# Move links referencing the same file to the subpackage.
|
|
# Usage: _mv_links <base directory> <example>
|
|
# where <example> is one of the libraries covered by the megadriver.
|
|
# The example is used to find other links that point to the same file.
|
|
_mv_links() {
|
|
install -d "$subpkgdir"/$1
|
|
find -L "$pkgdir"/$1 -samefile "$pkgdir"/$1/$2 -print0 \
|
|
| xargs -0 -I{} mv {} "$subpkgdir"/$1/
|
|
}
|
|
|
|
_mv_vulkan() {
|
|
local i
|
|
install -d "$subpkgdir"/usr/lib
|
|
install -d "$subpkgdir"/usr/share/vulkan/icd.d
|
|
for i in "$@"; do
|
|
mv "$pkgdir"/usr/lib/libvulkan_$i.so "$subpkgdir"/usr/lib/
|
|
mv "$pkgdir"/usr/share/vulkan/icd.d/${i}* "$subpkgdir"/usr/share/vulkan/icd.d/
|
|
done
|
|
}
|
|
|
|
# Mesa uses "megadrivers" where multiple drivers are linked into one shared
|
|
# library. This library is then hard-linked to separate files (one for each driver).
|
|
# Each subpackage contains one megadriver so that all the hard-links are preserved.
|
|
|
|
_dri() {
|
|
local n=${subpkgname##*-dri-}
|
|
pkgdesc="Mesa $n DRI drivers (Git)"
|
|
|
|
# List all relevant subpackages to avoid conflicts with main mesa package.
|
|
depends="$pkgname $pkgname-gl $pkgname-glapi $pkgname-gles $pkgname-egl $pkgname-gbm"
|
|
provides="mesa-dri-$n"
|
|
replaces="mesa-dri-$n"
|
|
|
|
case $n in
|
|
classic)
|
|
# libmesa_dri_drivers.so
|
|
_mv_links $_dri_driverdir radeon_dri.so ;;
|
|
gallium)
|
|
# libgallium_dri.so
|
|
_mv_links $_dri_driverdir swrast_dri.so
|
|
provides="$provides $_gallium_provides"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Compatibility packages for upgrading from the old (driver-specific) subpackages
|
|
_dri_deprecated() {
|
|
local n=${subpkgname##*-dri-}
|
|
pkgdesc="Mesa DRI drivers for $n (DEPRECATED, Git)"
|
|
depends="$pkgname-dri-classic $pkgname-dri-gallium"
|
|
provides="mesa-dri-$n"
|
|
replaces="mesa-dri-$n"
|
|
|
|
case $n in
|
|
ati|nouveau)
|
|
depends="$depends $pkgname-va-gallium $pkgname-vdpau-gallium" ;;
|
|
esac
|
|
|
|
mkdir "$subpkgdir"
|
|
}
|
|
|
|
_va() {
|
|
local n=${subpkgname##*-va-}
|
|
pkgdesc="Mesa $n VAAPI drivers (Git)"
|
|
depends="$pkgname libva"
|
|
provides="mesa-va-$n"
|
|
replaces="mesa-va-$n"
|
|
|
|
case $n in
|
|
gallium)
|
|
# libgallium_drv_video.so
|
|
_mv_links /usr/lib/dri radeonsi_drv_video.so ;;
|
|
esac
|
|
}
|
|
|
|
_vdpau() {
|
|
local n=${subpkgname##*-vdpau-}
|
|
pkgdesc="Mesa $n VDPAU drivers (Git)"
|
|
depends="$pkgname libvdpau"
|
|
provides="mesa-vdpau-$n"
|
|
replaces="mesa-vdpau-$n"
|
|
|
|
case $n in
|
|
gallium)
|
|
# libvdpau_gallium.so.1.0.0
|
|
_mv_links /usr/lib/vdpau libvdpau_radeonsi.so.1.0.0 ;;
|
|
esac
|
|
}
|
|
|
|
_vulkan() {
|
|
local n=${subpkgname##*-vulkan-}
|
|
pkgdesc="Mesa Vulkan API driver for $n (Git)"
|
|
depends="$pkgname"
|
|
replaces="mesa-vulkan-$n"
|
|
provides="mesa-vulkan-$n"
|
|
|
|
case $n in
|
|
ati)
|
|
_mv_vulkan radeon ;;
|
|
intel)
|
|
_mv_vulkan intel ;;
|
|
esac
|
|
}
|
|
|
|
_vulkan_layer() {
|
|
pkgdesc="Vulkan overlay layer to display information about the application"
|
|
depends="$pkgname"
|
|
replaces="mesa-vulkan-layer"
|
|
provides="mesa-vulkan-layer"
|
|
|
|
mkdir -p "$subpkgdir"/usr/share/vulkan "$subpkgdir"/usr/lib
|
|
mv "$pkgdir"/usr/share/vulkan/explicit_layer.d "$subpkgdir"/usr/share/vulkan
|
|
mv "$pkgdir"/usr/lib/libVkLayer_MESA_overlay.so "$subpkgdir"/usr/lib
|
|
}
|
|
|
|
sha512sums="c8a47a898a5d6f94a5b3d7f80ee1f0872265f578ab23d2e70d04a1397a9555c734a488cfa1cc349191150323e5ba166608b152970de2c056f677fe5129bf9319 mesa-git-68abc0731715b2ec3048d0944250b96a5302b4bc.tar.gz
|
|
cdf22d2da3328e116c379264886bd01fd3ad5cc45fe03dc6fd97bdc4794502598ee195c0b9d975fa264d6ac31c6fa108c0535c91800ecf4fcabfd308e53074cc adjust-cache-deflate-buffer.patch
|
|
cf849044d6cc7d2af4ff015208fb09d70bf9660538699797da21bda2ecb7c1892d312af83d05116afd826708d9caafb1d05a13f09139c558aea6fee931e3eee7 musl-fix-includes.patch
|
|
9aa207a38d538abbd8e7a7210e3081508563e85e8c27b2269b8f40fd62d9fc6fee0cb2f573a0e62c42f8ba0fb85740459b761f009d5991cfd9813d7614541908 add-use-elf-tls.patch
|
|
6a42ef5d60ccad7e39dee7b3a09b8a884548ce65af3fb17cd1bbd453cee0df7b367968b179e4b54fbc606b29753a1bab74f8c6136b1efaf4cfb9f084d9e76c66 time-fix.patch"
|